IntlPull
Guide
12 min read

Bonnes pratiques i18n : 15 règles pour l'internationalisation en 2026

Maîtrisez l'internationalisation avec ces 15 bonnes pratiques essentielles. De l'architecture de code à la gestion de la traduction, construisez des applications qui s'adaptent mondialement.

IntlPull Team
IntlPull Team
03 Feb 2026, 11:44 AM [PST]
On this page
Summary

Après avoir aidé des milliers d'équipes à internationaliser leurs applications, nous avons identifié les pratiques qui séparent les implémentations i18n fluides et évolutives de celles qui sont pénibles et buggées. Voici 15 règles à suivre pour une internationalisation réussie.

Introduction

Après avoir aidé des milliers d'équipes à internationaliser leurs applications, nous avons identifié les pratiques qui séparent les implémentations i18n fluides et évolutives de celles qui sont pénibles et buggées.

Voici 15 règles à suivre pour une internationalisation réussie.

Architecture de code

1. Extraire toutes les chaînes visibles par l'utilisateur dès le premier jour

N'attendez pas de "devoir traduire". D'ici là, vous aurez des milliers de chaînes codées en dur.

JavaScript
1// Mauvais - chaîne codée en dur
2<button>Submit</button>
3
4// Bon - extrait dès le départ
5<button>{t('form.submit')}</button>

Astuce : Utilisez le CLI d'IntlPull pour vérifier le statut de la traduction :

Terminal
npx @intlpullhq/cli status

2. Ne jamais concaténer les chaînes

Différentes langues ont différents ordres de mots. La concaténation brise les traductions.

JavaScript
1// Mauvais - casse en allemand, japonais, arabe...
2const message = "Hello " + name + ", you have " + count + " messages";
3
4// Bon - utilise l'interpolation
5const message = t('greeting', { name, count });
6// en: "Hello {name}, you have {count} messages"
7// de: "Hallo {name}, Sie haben {count} Nachrichten"
8// ja: " {name}さん、{count}件のメッセージがあります"

3. Utiliser le format de message ICU pour les chaînes complexes

ICU gère les pluriels, le genre et la sélection élégamment :

{count, plural,
  =0 {No messages}
  one {# message}
  other {# messages}
}

{gender, select,
  male {He liked your post}
  female {She liked your post}
  other {They liked your post}
}

4. Garder les clés de traduction sémantiques

Les clés doivent décrire le contenu, pas l'emplacement :

JavaScript
1// Mauvais - lié à l'emplacement UI
2"homepage_header_title"
3"sidebar_menu_item_3"
4
5// Bon - décrit le contenu
6"welcome.title"
7"navigation.settings"
8"error.network_unavailable"

5. Organiser les clés par fonctionnalité, pas par fichier

Structurez les traductions par domaine de fonctionnalité :

/locales/en.json
{
  "auth": {
    "login": { ... },
    "signup": { ... }
  },
  "dashboard": {
    "overview": { ... },
    "settings": { ... }
  },
  "checkout": {
    "cart": { ... },
    "payment": { ... }
  }
}

Formatage

6. Utiliser les API de formatage natives

Ne codez jamais en dur les formats de nombre, date ou devise :

JavaScript
1// Mauvais - format US uniquement
2const date = `${month}/${day}/${year}`;
3const price = `$${amount}`;
4
5// Bon - conscient de la locale
6const date = new Intl.DateTimeFormat(locale).format(dateObj);
7const price = new Intl.NumberFormat(locale, {
8  style: 'currency',
9  currency: userCurrency
10}).format(amount);

Différences de locale :

USAllemagneJapon
Date12/31/202631.12.20262026/12/31
Nombre1,234.561.234,561,234.56
Devise$99.9999,99 €¥100

7. Gérer la pluralisation correctement

Différentes langues ont différentes règles de pluriel :

LangueFormes plurielles
Anglais2 (one, other)
Français2+ (one, other, many)
Russe3 (one, few, many)
Arabe6 (zero, one, two, few, many, other)
JavaScript
// Utiliser le format pluriel ICU
t('items', { count: 5 })
// La config gère les règles par langue

8. Supporter les langues RTL

L'arabe, l'hébreu, le persan et l'urdu se lisent de droite à gauche :

CSS
1/* Utiliser des propriétés logiques */
2.card {
3  margin-inline-start: 1rem;  /* Pas margin-left */
4  padding-inline-end: 1rem;   /* Pas padding-right */
5}
6
7/* Laisser l'attribut dir gérer la mise en page */
8[dir="rtl"] .icon {
9  transform: scaleX(-1);
10}
JSX
<html dir={isRTL ? 'rtl' : 'ltr'}>

Qualité de la traduction

9. Fournir un contexte pour les traducteurs

Les traducteurs ont besoin de savoir où et comment les chaînes sont utilisées :

JSON
1{
2  "save": {
3    "value": "Save",
4    "context": "Button to save user profile changes, appears at bottom of form",
5    "maxLength": 10,
6    "screenshot": "save-button.png"
7  }
8}

10. Utiliser un glossaire

Maintenez une terminologie cohérente à travers les traductions :

AnglaisEspagnolAllemandContexte
DashboardPanel de controlDashboardMain user interface
SettingsConfiguraciónEinstellungenUser preferences
SubmitEnviarAbsendenForm submission button

11. Exploiter la mémoire de traduction

Ne traduisez pas la même phrase deux fois. La TM capture :

  • Correspondances exactes : "Save changes" = "Save changes"
  • Correspondances floues : "Save changes" ≈ "Save all changes"

ROI : Réduction de 30-60 % des coûts de traduction au fil du temps.

Processus

12. Automatiser la synchronisation des traductions

La synchronisation manuelle gaspille du temps et mène à des traductions obsolètes :

Terminal
1# Synchroniser les traductions dans CI
2npx @intlpullhq/cli upload
3npx @intlpullhq/cli download
4
5# Ou utiliser le mode watch pour le développement local
6npx @intlpullhq/cli sync --watch

13. Utiliser la localisation continue

Ne groupez pas les traductions. Localisez en continu :

YAML
1# Exemple GitHub Action
2on:
3  push:
4    branches: [main]
5    paths:
6      - 'src/**'
7      - 'locales/en.json'
8
9jobs:
10  sync:
11    runs-on: ubuntu-latest
12    steps:
13      - uses: actions/checkout@v3
14      - run: npx @intlpullhq/cli upload
15      - run: npx @intlpullhq/cli download
16      - uses: stefanzweifel/git-auto-commit-action@v4

14. Tester avec la pseudo-localisation

Avant les vraies traductions, testez avec des pseudo-traductions :

"Welcome" → "[Ẃéĺćőḿé !!!!!!]"

La pseudo-localisation révèle :

  • Chaînes codées en dur (non transformées)
  • Problèmes de mise en page (expansion du texte)
  • Problèmes de troncature
  • Problèmes d'encodage de caractères

15. Implémenter les mises à jour OTA pour Mobile

N'attendez pas les versions de l'App Store pour corriger les traductions :

Swift
// Avec OTA, les mises à jour de traduction sont instantanées
let message = IntlPull.t("welcome.message")
// Changement dans le tableau de bord → les utilisateurs le voient immédiatement

Sans OTA : Délai de 1-2 semaines pour tout changement de traduction Avec OTA : Mises à jour instantanées, aucune version d'application nécessaire

Anti-Patterns à éviter

À ne pas faire : Utiliser la concaténation de chaînes

JavaScript
// Ne jamais faire ceci
"Welcome, " + name

À ne pas faire : Coder en dur le formatage

JavaScript
// Ne jamais faire ceci
date.toLocaleDateString('en-US')

À ne pas faire : Diviser les phrases

JavaScript
1// Ne jamais faire ceci
2<span>{t('click')}</span>
3<Link>{t('here')}</Link>
4<span>{t('to_continue')}</span>

À ne pas faire : Supposer que Langue = Pays

JavaScript
// Ne jamais faire ceci
if (country === 'US') language = 'en';
// Hispanophones aux US, lusophones aux US, etc.

À ne pas faire : Oublier l'expansion du texte

CSS
1/* Ne jamais faire ceci */
2.button {
3  width: 100px; /* Casse en allemand */
4}

Liste de contrôle

Avant de lancer dans une nouvelle langue :

  • Toutes les chaînes extraites et traduites
  • Pluralisation testée
  • Formatage date/nombre/devise correct
  • Mise en page RTL fonctionne (si applicable)
  • Images et icônes localisées
  • Métadonnées SEO traduites
  • Messages d'erreur traduits
  • Modèles d'e-mail traduits
  • Pages juridiques traduites
  • Testé par des locuteurs natifs

Outils qui aident

BesoinOutil
Gestion de la traductionIntlPull
Extraction de chaînesIntlPull CLI
Transformation de codeIntlPull CLI
Traduction IAIntlPull (GPT-4, Claude)
Mises à jour OTAIntlPull SDK
Pseudo-localisationIntlPull

Conclusion

Une bonne i18n concerne :

  1. Architecture propre : Extraire les chaînes tôt, utiliser l'interpolation
  2. Formatage approprié : Laisser les API gérer les différences de locale
  3. Traductions de qualité : Contexte, glossaires, TM
  4. Processus intelligent : Automatisation, flux continu, tests

Suivez ces 15 pratiques et vous construirez des applications qui s'adaptent mondialement sans la douleur typique de l'i18n.

Prêt à améliorer votre i18n ? Essayez IntlPull gratuitement et implémentez ces bonnes pratiques avec les bons outils.

Tags
i18n
best-practices
internationalization
guide
tips
IntlPull Team
IntlPull Team
Engineering

Building tools to help teams ship products globally. Follow us for more insights on localization and i18n.