Bonnes pratiques de localisation logicielle : 10 étapes avec des exemples

Ce guide vous accompagne tout au long du processus de localisation logicielle, du début à la fin, avec des meilleures pratiques et des exemples de code concrets.

Votre application vient d’être lancée en France. Les inscriptions affluent, puis les tickets de support commencent à inonder votre boîte de réception. Les utilisateurs ne peuvent pas cliquer sur le bouton « Acheter maintenant » car il est coupé. Les menus de navigation s’affichent sur deux lignes. Votre interface utilisateur, pourtant soigneusement conçue, semble complètement cassée.

C’est ce qui arrive lorsque vous passez directement à la traduction sans localiser correctement votre logiciel. Le texte est traduit, mais l’application n’a pas été conçue pour le gérer.

Ce guide couvre tout ce dont vous avez besoin pour réussir la localisation de vos logiciels. Vous apprendrez :

Qu’est-ce que la localisation logicielle ?

La localisation logicielle est le processus d’adaptation de votre logiciel à un marché spécifique. Cela va au-delà de la simple traduction de texte. Cela signifie ajuster tout ce qui affecte la manière dont les utilisateurs du marché cible perçoivent votre logiciel : formats de date et de nombre, devise, mise en page de l’interface utilisateur, images et références culturelles.

L’objectif est de faire en sorte que votre logiciel donne l’impression d’avoir été conçu pour ce marché dès le départ.

Voici un exemple qui montre comment une même date peut signifier deux choses différentes selon l’endroit où se trouve votre utilisateur :

Emplacement de l’utilisateur Voit Le lit comme
États-Unis 04/05/2025 5 avril 2025
Royaume-Uni 04/05/2025 4 mai 2025

C’est un petit exemple de ce que gère la localisation logicielle. Multipliez cela par les dates, les devises, les formats et les références culturelles, et vous commencerez à voir l’ampleur du travail.

Localisation logicielle vs Traduction vs Internationalisation

Beaucoup de gens utilisent ces trois termes de manière interchangeable, mais ils signifient des choses différentes et interviennent à différentes étapes du développement.

Traduction Localisation Internationalisation
Ce que c’est Convertir un texte d’une langue à une autre Adapter le logiciel à une région spécifique Concevoir le logiciel pour qu’il puisse être localisé
Qui le fait Traducteurs Traducteurs, designers, développeurs Développeurs
Quand cela se produit Pendant la localisation Après l’internationalisation Avant la localisation
Portée Mots et expressions Devises, formats, mise en page, images, références culturelles, contenu juridique Architecture du code, fichiers de ressources, support des formats
Exemple « Settings » → « Paramètres » Mise en page ajustée pour l’expansion du texte allemand, devise €, format de date JJ/MM Chaînes stockées dans des fichiers externes, interface utilisateur flexible selon la longueur du texte

Le processus de localisation logicielle

La localisation logicielle n’est pas une étape unique que vous terminez avant le lancement. C’est un processus continu qui accompagne le développement. Voici un aperçu de son déroulement habituel :

Étape Ce qui se passe
Internationalisation Les développeurs préparent la base de code en externalisant les chaînes, en rendant les mises en page de l’interface utilisateur flexibles et en s’assurant que la gestion des formats est intégrée
Extraction du contenu Les chaînes localisables sont extraites des fichiers de ressources et envoyées pour traduction
Traduction Les chaînes sont traduites, soit par des traducteurs humains, soit par traduction automatique, soit par une combinaison des deux
Intégration Les fichiers traduits sont fusionnés à nouveau dans la base de code
Tests Chaque version localisée est testée pour sa mise en page, ses fonctionnalités et sa précision
Sortie La version localisée est livrée en même temps que la version en langue source ou après celle-ci

La plupart des équipes gèrent le processus de l’une des trois manières suivantes :

  1. Waterfall (en cascade)
    La localisation commence une fois le développement terminé. Vous finissez la construction, puis vous transmettez tout pour traduction en un seul lot. C’est simple à gérer, mais cela retarde votre sortie dans d’autres langues et rend la correction des bugs coûteuse à ce stade.
  2. Localisation agile
    La localisation se déroule parallèlement au développement. Au lieu d’un seul gros lot à la fin, vous envoyez des chaînes pour traduction tout au long du cycle de développement. Le timing est meilleur, mais le processus reste manuel. Quelqu’un dans votre équipe doit exporter les chaînes, gérer les transmissions et réimporter les traductions.
  3. Localisation continue
    La localisation est entièrement automatisée. Votre dépôt se connecte directement à votre outil de traduction, de sorte que lorsqu’une chaîne change, elle est envoyée automatiquement pour traduction. Lorsque la traduction est prête, elle est fusionnée automatiquement.

Meilleures pratiques de localisation logicielle

Chaque projet est différent et vos besoins en localisation dépendront de votre stack technique, de vos marchés cibles et de votre équipe. Cette liste couvre l’essentiel de ce qui fait fonctionner la localisation logicielle.

01

Stockez tout votre texte traduisible dans des fichiers séparés

Lorsque vous codez du texte en dur directement dans votre code source, les outils de traduction ne peuvent pas le trouver. Ces outils fonctionnent en scannant des fichiers de ressources comme JSON, PO ou YAML pour y trouver des chaînes à traduire. Si votre texte est enfoui dans vos fichiers JavaScript, PHP ou Ruby, le scan revient vide.

C’est la raison la plus courante de l’échec des projets de localisation. Les équipes ne découvrent le problème que lorsqu’elles essaient de traduire et réalisent qu’elles doivent d’abord refactoriser des milliers de chaînes.

C’est pourquoi il est préférable de déplacer tout le texte destiné aux utilisateurs dans des fichiers de ressources dédiés dès le départ. Cela inclut tout ce que vos utilisateurs peuvent voir :

  • Étiquettes d’interface utilisateur, boutons et éléments de menu
  • Messages d’erreur et texte de validation
  • Modèles d’e-mails et notifications
  • Texte d’aide, info-bulles et placeholder
  • Messages de succès et de confirmation

Le format de fichier que vous utilisez dépend de votre framework :

Format Utilisé pour
.json Frameworks JavaScript (React, Vue, Angular)
.po/.pot WordPress, PHP, Python
.yaml/.yml Ruby on Rails
.xml Android
.xcstrings iOS/macOS

Voici un avant et un après pour chaque framework majeur.

React :

Before
<button>Submit</button>
After, using react-intl
<button>{t('submit_button')}</button>

WordPress :

Before
echo 'Submit';
After, WordPress i18n
echo __( 'Submit', 'your-textdomain' );

Ruby on Rails :

Before
flash[:notice] = "Profile updated successfully"
After, using Rails I18n:
flash[:notice] = t('profile.update_success')

Il est également important de donner à vos chaînes des clés claires et descriptives. Une clé nommée checkout.submit_button indique exactement au traducteur où cette chaîne apparaît et ce qu’elle fait. En revanche, string_147 ne lui dit rien, ce qui conduit à des erreurs de traduction. Des clés descriptives permettent également à votre propre équipe de suivre plus facilement les chaînes qui ont été externalisées et de repérer celles qui manquent.

02

Utilisez des placeholders pour les noms, les nombres et les dates

Lorsque votre texte inclut des données variables comme le nom d’un utilisateur ou un numéro de commande, il est tentant de construire la phrase en joignant des morceaux de texte dans votre code. Cela ne fonctionne pas dans d’autres langues.

Voici pourquoi :

const message = 'Hello, ' + name + '!';

Cet exemple divise la phrase en trois fragments. En anglais, l’ordre des mots fonctionne. Mais dans des langues comme le japonais, le nom se place à une position différente dans la phrase. Vos traducteurs ne peuvent pas réorganiser les fragments, la phrase finit donc par être grammaticalement incorrecte.

Les placeholders résolvent ce problème en gardant la phrase entière. Vos traducteurs ou votre outil de traduction reçoivent la phrase complète, y compris un marqueur indiquant l’emplacement de la variable. Ils peuvent placer ce marqueur là où la grammaire de leur langue l’exige.

Voici à quoi ressemblent les placeholders dans différents formats de fichiers :

JSON :

{ "greeting": "Hello, {name}!" }

YAML :

greeting: "Hello, %{name}!"

PO :

msgid "Hello, %s!"

La syntaxe varie selon le format, mais le principe reste le même.

03

Concevez votre interface utilisateur pour gérer des textes plus longs

La plupart des langues sont plus longues que l’anglais. Un bouton qui s’intègre parfaitement dans votre interface en anglais sera souvent coupé en allemand, en français ou en espagnol. Si vous avez conçu votre mise en page autour de largeurs fixes, votre interface sera cassée dans chaque langue que vous ajouterez.

Voici les taux d’expansion typiques avec lesquels vous travaillez :

Langue Expansion typique par rapport à l’anglais
Allemand +30-35 %
Français +15-20 %
Espagnol +15-25 %
Finnois +30-40 %
Chinois Souvent plus court, mais espacement des caractères différent

Certains mots peuvent s’étendre bien au-delà de ces moyennes. « FAQ » devient « Preguntas frecuentes » en espagnol — c’est une augmentation de 567 %.

La solution est de construire des mises en page flexibles plutôt que fixes. Au lieu de définir une largeur fixe sur un bouton, laissez-le s’agrandir avec son contenu :

Before — fixed width breaks in longer languages
button { width: 120px; }
After — grows with the translated text
button { 
  min-width: 120px;
  width: auto;
  padding: 8px 16px;
}

Pensez-y dès la phase de conception. Si vous concevez d’abord pour l’anglais et traduisez plus tard, vous passerez plus de temps à déboguer des problèmes de mise en page dans chaque langue que vous n’en auriez passé à intégrer de la flexibilité dès le départ.

04

Rédigez des textes faciles à traduire

La façon dont vous rédigez votre texte source affecte la qualité de la traduction. Les formulations vagues, les expressions idiomatiques et les jeux de mots astucieux produisent souvent des traductions confuses ou incorrectes.

Les problèmes les plus courants à éviter :

Phrases incomplètes

Une chaîne comme « No items » pourrait signifier plusieurs choses. N’y a-t-il aucun article dans le panier ? Une recherche n’a-t-elle donné aucun résultat ? Votre traducteur doit deviner, et une mauvaise supposition signifie une mauvaise traduction.

Rédigez des phrases complètes avec un sujet et un verbe clairs.

Before — ambiguous
"No items"
After — clear meaning
"You have no items in your cart."

Expressions idiomatiques

« This is a piece of cake » a du sens pour un anglophone natif. Traduit littéralement en allemand, vos utilisateurs se demanderont pourquoi votre application parle de dessert. La plupart des expressions ne fonctionnent que dans la langue donnée, il est donc préférable de les éviter complètement.

Vocabulaire complexe

Les mots simples se traduisent de manière plus fiable. Écrivez « supprimer » au lieu d’« éliminer » et « utiliser » au lieu d’« utiliser ». En cas de doute, choisissez le mot le plus court et le plus courant.

05

Gérez correctement les dates, les nombres et les devises

Les formats de date et de nombre varient considérablement d’un pays à l’autre. Coder ces formats en dur cause le même problème que coder du texte en dur : cela fonctionne sur un marché et échoue sur d’autres.

Élément Format US Format européen
Date 04/05/2025 05/04/2025
Grand nombre 1,000,000.00 1 000 000,00
Devise $1,000 1 000 €

Utilisez les utilitaires de localisation intégrés de votre framework pour formater ces éléments automatiquement en fonction des paramètres régionaux de l’utilisateur.

JavaScript :

Before
const price = '$' + amount.toFixed(2);
After
const price = new Intl.NumberFormat(userLocale, {
  style: 'currency',
  currency: currencyCode
}).format(amount);

Ruby on Rails :

Before
"$#{price}"
After
number_to_currency(price, locale: I18n.locale)

De cette façon, le même code gère correctement le formatage pour chaque paramètre régional que vous supportez.

06

Prévoyez les paramètres régionaux, pas seulement la langue

La langue et les paramètres régionaux ne sont pas la même chose. L’espagnol est une langue. L’espagnol du Mexique (es-MX), l’espagnol d’Espagne (es-ES) et l’espagnol d’Argentine (es-AR) sont des paramètres régionaux. Les différences entre eux vont au-delà du vocabulaire. Les formats de date, la devise, les références culturelles et le ton peuvent tous varier.

Si vous spécifiez uniquement un code de langue sans paramètres régionaux, vous risquez d’afficher le mauvais contenu aux utilisateurs de régions spécifiques.

Prenons l’exemple du français :

Code de paramètres régionaux Variante
fr-FR Français parlé en France
fr-CA Français canadien
fr-BE Français de Belgique
fr-CH Français de Suisse

Lorsque vous configurez vos fichiers de langue, utilisez des codes de paramètres régionaux complets plutôt que des codes de langue seuls. Cela vous donne la flexibilité de servir des contenus différents à des régions différentes sans avoir à restructurer votre configuration plus tard.

07

Donnez aux traducteurs le contexte dont ils ont besoin

Si vous décidez de travailler avec des traducteurs humains, gardez à l’esprit qu’ils travaillent directement à partir de vos fichiers de ressources. Sans informations supplémentaires, tout ce qu’ils voient est la chaîne elle-même. Ils n’ont aucun moyen de savoir où elle apparaît dans l’interface utilisateur, à quoi elle se réfère ou de quel espace dispose la traduction.

Une chaîne comme « Cancel » pourrait se référer à l’annulation d’une commande, d’un abonnement ou de l’envoi d’un formulaire. Chacun de ces cas pourrait se traduire différemment selon la langue.

Ajoutez des commentaires à vos fichiers de ressources pour expliquer ce que fait chaque chaîne et où elle apparaît :

JSON with context comments
{
  // Button in the checkout flow. Cancels the current order. Keep short.
  "checkout.cancel_button": "Cancel",

  // Error message shown when login fails. Followed by a link to reset password.
  "auth.login_error": "Incorrect email or password."
}

Si vous utilisez un outil de traduction, la plupart des plateformes vous permettent de joindre des captures d’écran montrant où ces chaînes apparaissent. Cela permet aux outils de traduction de produire des traductions nettement plus précises que lorsqu’ils travaillent uniquement à partir du texte.

08

Configurez la détection de la langue

Une fois que vos chaînes sont dans des fichiers de ressources et que votre interface utilisateur est flexible, vous devez afficher automatiquement la bonne langue à chaque utilisateur. La plupart des frameworks gèrent cela avec des bibliothèques i18n intégrées.

React avec react-i18next :

i18n
  .use(LanguageDetector)
  .use(initReactI18next)
  .init({
    resources,
    fallbackLng: 'en',
    detection: {
      order: ['navigator', 'localStorage']
    }
  });

Ruby on Rails :

before_action :set_locale

def set_locale
  I18n.locale = extract_locale_from_accept_language_header || I18n.default_locale
end

Définissez toujours une langue de secours (fallback). Lorsqu’un fichier de traduction est manquant ou qu’une chaîne n’a pas encore été traduite, votre application affiche la langue de secours au lieu d’une clé cassée comme auth.login_error.

Pour les applications web, vous pouvez également laisser les utilisateurs outrepasser manuellement la langue détectée. Enregistrez leur choix pour qu’il persiste d’une session à l’autre :

// Save the user's choice
localStorage.setItem('userLanguage', selectedLanguage);

// Check for a saved choice first, then fall back to the browser language
const userLanguage = localStorage.getItem('userLanguage') || navigator.language;

Les applications mobiles n’ont généralement pas besoin de sélecteur de langue. Les utilisateurs s’attendent à ce que les applications mobiles suivent les paramètres de leur appareil.

09

Configurez la détection de la langue

Un flux de travail de localisation manuel ressemble à ceci : exporter les chaînes vers une feuille de calcul, l’envoyer à un traducteur, attendre plusieurs jours, la récupérer, copier les traductions dans vos fichiers, découvrir qu’il manque 12 chaînes et recommencer. Ce n’est pas évolutif.

Un outil de localisation logicielle gère l’ensemble du flux de travail pour vous. Un bon outil saura :

  • Se connecter à votre dépôt, détecter les chaînes nouvelles et modifiées, et maintenir les traductions à jour en continu
  • Donner à votre équipe un endroit centralisé pour gérer toutes les traductions
  • Inclure des fonctionnalités de TAO intégrées comme la mémoire de traduction, la détection des limites de longueur et la gestion de la terminologie

PTC fait tout cela. De plus, vous pouvez traduire gratuitement les 20 000 premiers mots dans 2 langues, et la mise en route prend moins de 5 minutes.

10

Testez chaque version localisée avant le lancement

La traduction n’est pas l’étape finale. Avant de livrer une version localisée, testez-la de la même manière que vous testeriez n’importe quelle autre version.

Mise en page : Le texte s’insère-t-il sans être coupé ? La navigation fonctionne-t-elle toujours ou voyez-vous des débordements ?
Fonctionnalité : Les formulaires sont-ils envoyés correctement ? Les messages d’erreur apparaissent-ils dans la bonne langue ? La recherche gère-t-elle les caractères accentués comme é, ñ et ü ?
Formatage : Les dates sont-elles au bon format pour les paramètres régionaux ? Les nombres et les devises sont-ils formatés correctement ? Le symbole de la devise est-il à la bonne position ?
Langues s’écrivant de droite à gauche : Si vous supportez l’arabe ou l’hébreu, testez séparément la mise en page RTL complète. Le support RTL affecte plus que la direction du texte. Il affecte toute la mise en page de votre interface utilisateur.

Intégrez les tests de localisation dans votre processus d’assurance qualité dès le départ. Découvrir un flux de paiement cassé en allemand via des avis d’utilisateurs coûte nettement plus cher que de le repérer avant le lancement.

Combien coûte la localisation logicielle ?

Une bonne localisation logicielle n’a pas besoin d’être coûteuse. Le facteur le plus important de votre budget n’est pas le nombre de langues que vous supportez. C’est la façon dont vous traduisez.

La traduction humaine professionnelle pour les logiciels coûte généralement entre 0,10 $ et 0,30 $ par mot. Pour une application de taille moyenne de 15 000 mots, cela représente 1 500 $ à 4 500 $ par langue, avant de prendre en compte les tests, la gestion de projet ou les futures mises à jour à chaque modification de votre produit.

La traduction par IA avec un outil comme PTC coûte une fraction de ce prix :

Traduction humaine PTC
15 000 mots, 1 langue 1 500 $ à 4 500 $ ~37 €

Après l’essai gratuit, PTC fonctionne sur un modèle de paiement à l’utilisation. Vos 500 premiers mots chaque mois sont gratuits. Plus vous traduisez, plus votre tarif par mot diminue, et une fois que vous atteignez un tarif inférieur, vous le conservez pendant trois mois même si votre volume baisse.

Pour obtenir un chiffre exact pour votre projet, utilisez le calculateur de prix de PTC ou téléchargez directement votre fichier de ressources pour voir le coût avant de vous engager.

Configurez votre processus de localisation logicielle en 3 étapes

Les meilleures pratiques de localisation logicielle ci-dessus couvrent beaucoup de terrain. Certaines, comme la rédaction de textes traduisibles ou la planification des paramètres régionaux, nécessitent des décisions délibérées de la part de votre équipe. Mais une grande partie du travail technique, comme la détection des changements de chaînes, la gestion des fichiers de traduction, le signalement des problèmes de longueur et la synchronisation des traductions, peut être automatisée avec le bon outil.

Voici comment mettre en place un processus de localisation fonctionnel avec PTC.

01

S’inscrire à PTC

Créez un projet dans PTC, téléchargez vos fichiers de ressources et sélectionnez vos langues de traduction. Pendant l’essai gratuit, vous pouvez sélectionner 2 langues.

Ensuite, ajoutez du contexte sur votre application : ce qu’elle fait et à qui elle s’adresse. C’est ce qui rend les traductions de PTC précises plutôt que génériques. Vous pouvez également ajouter un glossaire de termes qui doivent toujours être traduits d’une manière spécifique, comme les noms de produits ou la terminologie technique.

PTC les traduit automatiquement, en appliquant votre contexte et votre glossaire à chaque chaîne. Toute la configuration prend moins de 5 minutes.

02

Visualisez et affinez les traductions

Une fois les traductions prêtes, examinez-les depuis votre tableau de bord. Vous pouvez modifier manuellement des chaînes individuelles ou ajouter des membres d’équipe pour gérer les révisions dans des langues spécifiques.

Si vous remarquez une traduction qui pourrait être améliorée, signalez-la et indiquez à PTC quel est le problème. PTC la retraduit gratuitement et applique ce qu’il a appris aux futures traductions de votre projet.

PTC vérifie également automatiquement la longueur de la traduction. Les chaînes qui pourraient être trop longues pour votre interface utilisateur sont surlignées en jaune. Vous pouvez demander à PTC de les retraduire pour qu’elles s’adaptent, ou ajuster les limites de longueur pour correspondre à ce que permet votre interface utilisateur.

Traductions longues signalées dans PTC

03

Connectez votre flux de travail de développement

Lorsque vous êtes à l’aise avec le fonctionnement de PTC, connectez-le à votre dépôt GitHub, GitLab ou Bitbucket. À partir de là, PTC détecte automatiquement les chaînes nouvelles et modifiées et maintient vos traductions à jour sans téléchargement manuel de fichiers.

Si vous souhaitez aller plus loin, l’API PTC vous permet d’intégrer la traduction directement dans votre pipeline CI/CD, de sorte que les versions localisées soient toujours prêtes à être livrées en même temps que votre langue source.

Exemple de localisation logicielle : Traduire WPML avec PTC

WPML est l’une des extensions multilingues les plus utilisées pour WordPress. Le maintenir traduit dans 23 langues n’est pas facultatif. Cela fait partie de chaque version.

Pendant des années, l’équipe a procédé de manière traditionnelle : embauche de traducteurs humains professionnels, gestion de fichiers de glossaire et coordination des mises à jour dans toutes les langues pour chaque version. À chaque fois, ils devaient réexpliquer le produit, la terminologie et les attentes à partir de zéro. Le coût variait de 1 000 $ à 8 000 $ par version.

Ils ont essayé des alternatives : crowdsourcing, flux de travail automatisés et modèles hybrides. Rien n’a résolu le problème.

Depuis le passage à PTC, les versions sortent à temps. Les traductions sont complètes, précises et cohérentes dans les 23 langues, sans gel des chaînes, sans frais de coordination et sans retard.

Avant PTC

Après PTC

Commencez à localiser votre logiciel dès aujourd’hui

PTC est gratuit pour vos 20 000 premiers mots dans 2 langues. La mise en route prend moins de 5 minutes.

Faire défiler vers le haut