L’internationalisation (i18n) est le travail d’ingénierie qui rend la traduction possible. La localisation (l10n) est la traduction elle-même. L’une est réalisée par les développeurs, une fois par fonctionnalité ; l’autre est réalisée par les traducteurs, une fois par langue.
La distinction paraît académique jusqu’au jour où un projet dérape ; c’est alors qu’elle devient l’outil de diagnostic le plus utile dont vous disposez. Presque tous les problèmes du type « nos traductions sont cassées » sont en réalité des problèmes d’internationalisation qui refont surface pendant la localisation.
Internationalisation (i18n)
L’internationalisation consiste à extraire le texte traduisible de vos vues pour le placer dans un fichier linguistique, et à le remplacer par un appel de fonction qui référence le texte extrait. Le résultat est que le texte s’affiche normalement dans la langue source et comme une traduction dans chaque langue cible.
# Before: not internationalized
<h1>Welcome back</h1>
<p>You have <%= count %> unread messages</p>
# After: internationalized
<h1><%= t("dashboard.welcome") %></h1>
<p><%= t("dashboard.unread", count: count) %></p>
Voilà pour la partie visible. Le reste de l’i18n consiste à retirer les hypothèses que votre langue source vous laissait faire sans conséquence :
- Le texte s’allonge ou se raccourcit. L’allemand et le finnois sont 20 à 30 % plus longs que l’anglais ; le chinois et le coréen sont plus courts. Un bouton dimensionné pour « Save » ne conviendra pas à « Speichern ».
- L’ordre des mots n’est pas universel. Tout ce qui est construit en concaténant des fragments —
"Deleted " + count + " files"— suppose la syntaxe anglaise et ne peut pas être traduit correctement. - Les règles de pluriel varient énormément. L’anglais a besoin de deux formes, le polonais de quatre, l’arabe de six.
if count == 1est faux en français, où le singulier couvre aussi le zéro. - Les dates, les nombres et les devises dépendent de la locale.
03/04/2026désigne le 4 mars aux États-Unis et le 3 avril presque partout ailleurs. Les séparateurs décimaux, les séparateurs de milliers et le positionnement du symbole monétaire varient tous. - Le tri dépend de la locale. Le suédois trie ä après z ; l’allemand le trie avec a. Un tri par ordre des octets est faux dans les deux cas.
- Le texte a un sens de lecture. L’arabe et l’hébreu s’écrivent de droite à gauche, ce qui affecte la mise en page, le sens des icônes et le rendu des chaînes à direction mixte.
- L’encodage des caractères doit être Unicode de bout en bout, sans exception.
L’internationalisation couvre aussi l’adaptation culturelle non linguistique : unités de mesure, formats d’adresse, ordre des noms, formats de numéros de téléphone, formats de papier, et le fait qu’une flèche rouge orientée vers le haut ne signifie pas la même chose dans un contexte financier chinois que dans un contexte occidental.
C’est un travail de développeur, il touche à beaucoup de code, et il est parfois réellement difficile.
Localisation (l10n)
La localisation consiste à traduire le fichier linguistique dans d’autres langues. Fondamentalement, il s’agit de remplacer le texte source par sa traduction — simple en principe, et ingérable à grande échelle sans outillage.
Les problèmes arrivent avec le volume plutôt qu’avec la complexité :
- Traduire vers n langues signifie coordonner au moins n traducteurs.
- Une chaîne ambiguë sans contexte génère la même question n fois, une fois par traducteur, à moins qu’il existe un endroit partagé où y répondre.
- Les fichiers linguistiques sont mis à jour de manière itérative au fil des livraisons du produit, et garder n copies synchronisées à la main ne fonctionne pas.
- Les outils de traduction généralistes sont souvent incapables d’ouvrir des formats techniques comme YAML, JSON,
.stringsou.po. - Les traducteurs n’ont pas accès à votre code, ils ne peuvent donc pas voir le contexte dans lequel une chaîne apparaît.
- Sans système, « envoyer des fichiers aux traducteurs » signifie des pièces jointes par e-mail ou un dossier partagé, et l’historique des versions vit dans la boîte de réception de quelqu’un.
- La vérification est difficile. Ce segment à taille limitée a-t-il été traduit en moins de 20 caractères dans chaque langue ? devrait se répondre en quelques secondes, et prend généralement à quelqu’un une après-midi.
La localisation est un travail linguistique, mais la difficulté est logistique.
Où la frontière passe réellement
Le test utile : un traducteur qui n’a jamais vu votre code pourrait-il accomplir cette tâche ?
| Tâche | De quel côté |
|---|---|
Extraire « Welcome back » dans en.yml |
i18n |
| Traduire « Welcome back » en français | l10n |
| Faire en sorte qu’un bouton s’agrandisse pour un texte plus long | i18n |
| Décider si Speichern ou Sichern convient mieux | l10n |
| Ajouter les catégories de pluriel du polonais au format de fichier | i18n |
| Écrire les quatre formes plurielles polonaises | l10n |
| Formater une date selon la locale de l’utilisateur | i18n |
| Choisir le registre adapté pour une langue à forme d’adresse formelle | l10n |
| Ajouter la prise en charge d’une feuille de style RTL | i18n |
| Traduire en arabe | l10n |
Le principe : l’i18n rend le logiciel capable d’exister dans une autre langue. La l10n l’y installe.
Pourquoi l’ordre n’est pas négociable
Vous ne pouvez pas localiser ce qui n’a pas été internationalisé. Il n’y a pas de fichier qu’un traducteur puisse ouvrir. Cela paraît évident, et pourtant c’est la façon la plus courante dont les projets de localisation s’enlisent — une équipe s’engage à lancer le produit en quatre langues, embauche des traducteurs, et découvre alors seulement qu’un tiers des chaînes de l’interface est codé en dur dans les templates.
Un enchaînement utile :
- Auditer. Trouver chaque chaîne visible par l’utilisateur. Grepper le texte entre guillemets dans les vues, puis dans les composants, puis dans les messages côté serveur, les e-mails, les PDF et les pages d’erreur. Ces quatre derniers sont toujours oubliés.
- Extraire. Les déplacer vers des fichiers linguistiques avec des clés hiérarchiques et parlantes.
checkout.payment.card_declinedvaut mieux queerror_17. - Corriger les hypothèses. Concaténation, formats codés en dur, mises en page à largeur fixe,
count == 1. - Pseudo-localiser. Afficher l’application avec un texte de substitution accentué et allongé pour révéler ce qui reste codé en dur et toute mise en page qui casse sous l’expansion — avant de payer pour la traduction.
- Puis localiser. Les traducteurs disposent désormais d’un fichier, et vous avez la certitude qu’il est complet.
L’étape 4 est celle que les équipes sautent, et qu’elles regrettent ensuite. La pseudo-localisation trouve en une après-midi ce qui reviendrait sinon sous forme de rapports de bugs dans une langue que personne dans l’équipe ne lit.
Le coût continu
L’internationalisation est surtout un projet ponctuel, mais pas entièrement. Chaque nouvelle fonctionnalité ajoute des chaînes, et chaque chaîne ajoutée est une petite tâche d’i18n qu’on peut sauter sous la pression d’une échéance. Six mois à sauter cette étape produisent une base de code internationalisée à 90 %, ce qui, pour un traducteur, est indissociable d’une base cassée.
Les équipes qui restent à niveau automatisent la vérification : une règle de lint ou une étape de CI qui fait échouer le build sur une chaîne visible codée en dur. C’est un petit investissement qui transforme une régression lente et invisible en un problème immédiat et évident.
Le volet localisation a un coût continu équivalent, et c’est là qu’un système de gestion de la traduction trouve sa place — pas pour le premier lancement, mais pour la centième semaine de petits changements continus. Ce modèle, c’est la localisation continue : le processus de traduction ne s’arrête jamais parce que le produit ne s’arrête jamais de livrer.
Le reste des numéronymes
Vous croiserez toute la famille tôt ou tard, et ils sont tous formés de la même manière — première lettre, nombre de lettres omises, dernière lettre :
| Abréviation | Mot | Ce qu’elle couvre |
|---|---|---|
| i18n | internationalisation | Rendre le logiciel capable de n’importe quelle langue |
| l10n | localisation | L’adapter à une langue et une région spécifiques |
| g11n | globalisation | Le terme générique : i18n + l10n + stratégie de marché, légale et commerciale |
| t9n | traduction | La conversion du texte seule, un sous-ensemble de la l10n |
| m17n | multilinguisation | Gérer plusieurs langues simultanément, pas une à la fois |
| a11y | accessibilité | Sans rapport avec la langue, même convention de nommage |
En pratique, les équipes d’ingénierie ont besoin de l’i18n et de la l10n et peuvent ignorer le reste. Le g11n apparaît dans les contextes de fournisseurs et d’entreprise ; le t9n est utile quand on veut précisément dire « les mots » par opposition au travail d’adaptation environnant.
En bref
- i18n = le code peut accueillir n’importe quelle langue. Développeurs. Surtout en amont, un peu pour toujours.
- l10n = le code accueille désormais le français. Traducteurs. En continu, par langue.
- Faites l’i18n d’abord, pseudo-localisez pour prouver que ça a fonctionné, puis localisez.
- Quand les traductions semblent cassées, suspectez l’internationalisation.
Frequently asked questions
- Que signifie i18n ?
- Internationalisation, abrégé en remplaçant les 18 lettres entre le premier i et le dernier n. l10n est la localisation selon le même procédé, et a11y est l’accessibilité. Cette convention du numéronyme existe parce que ces mots sont longs, répétitifs à taper et faciles à mal orthographier.
- Qui vient en premier, i18n ou l10n ?
- L’internationalisation vient en premier, et c’est un ordre imposé plutôt qu’une préférence. La localisation consiste à remplacer le texte source d’un fichier linguistique par sa traduction : donc tant que le texte n’a pas été extrait dans un fichier linguistique, il n’y a rien sur quoi un traducteur puisse travailler.
- L’i18n est-elle un travail ponctuel ?
- La majeure partie l’est, mais pas tout. L’extraction initiale des chaînes codées en dur est un projet unique et important. Ensuite, chaque nouvelle fonctionnalité apporte un peu de travail d’i18n, et ce coût continu explique pourquoi les équipes finissent par ajouter des règles de lint ou des vérifications en CI qui font échouer le build sur une chaîne visible codée en dur.
- Qu’est-ce que le g11n, et quel est son rapport ?
- La globalisation (g11n) est le terme générique qui couvre à la fois l’i18n et la l10n, plus le volet commercial : sélection des marchés, tarification, conformité légale et support dans chaque région. Vous le rencontrerez surtout dans des contextes d’entreprise et de fournisseurs ; les équipes d’ingénierie ont rarement besoin de faire la distinction.
Keep reading
-
La localisation continue expliquée
Comment mener la traduction comme un processus continu en parallèle du développement, que faire des branches de fonctionnalités, et quand la localisation agile convient mieux.
-
Qu’est-ce qu’une locale ? Les balises de langue expliquées (BCP 47)
Une locale est plus qu’une langue. Voici ce qu’elle contrôle — dates, nombres, devises, tri, pluriels — et comment les balises de langue BCP 47 sont construites et mises en correspondance.
-
Qu’est-ce qu’un système de gestion de traduction ?
Ce qu’un TMS fait concrètement, les problèmes qu’il résout et qu’un tableur ne résout pas, et comment savoir si votre équipe a dépassé le stade de l’échange de fichiers par e-mail.
-
Localisation continue : le flux i18n (documentation)
Comment les deux moitiés s’articulent en pratique, avec des stratégies de branches de fonctionnalités.
Translate your app without the spreadsheet round-trip
WebTranslateIt reads the file formats and placeholder syntax described on this page, validates them as translators work, and syncs the results straight back into your repository.