IntlPull
Guide
15 min read

Mondialisation vs Localisation vs Internationalisation : Guide du Développeur (2026)

Comprenez la différence entre i18n, L10n et G11n. Apprenez comment implémenter chacun dans React, Next.js et Vue avec des exemples de code.

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

Comprenez la différence entre i18n, L10n et G11n. Apprenez comment implémenter chacun dans React, Next.js et Vue avec des exemples de code.

La Confusion

Les développeurs entendent ces termes lancés autour d'eux :

  • "Nous devons mondialiser l'application"
  • "Ajouter la localisation pour l'Europe"
  • "La base de code est-elle internationalisée ?"

Quelle est la différence ? Est-ce la même chose ?

Non. Ils sont liés mais distincts. Voici la répartition simple :

TermeAbréviationSignificationQui le fait
Internationalisationi18nConcevoir votre application pour supporter plusieurs languesDéveloppeurs
LocalisationL10nTraduire le contenu pour des marchés spécifiquesTraducteurs
MondialisationG11nLa stratégie globaleProduit + Marketing

Pensez-y de cette façon :

  • i18n = Construire une voiture avec une direction modulaire (gauche ou droite)
  • L10n = Installer la direction à gauche pour le Royaume-Uni, à droite pour les États-Unis
  • G11n = Décider dans quels pays vendre des voitures

Décomposons chacun d'eux.

Internationalisation (i18n)

Définition : Concevoir une architecture logicielle pour prendre en charge plusieurs langues et régions sans modifications de code.

C'est ce que font les développeurs avant de traduire quoi que ce soit.

Ce que comprend l'i18n

1. Extraire le texte visible par l'utilisateur du code :

JSX
1// ❌ Pas internationalisé
2<button>Save</button>
3
4// ✅ Internationalisé
5<button>{t('save')}</button>

2. Supporter différents formats de données :

  • Dates : US (MM/JJ/AAAA) vs Europe (JJ/MM/AAAA) vs ISO (AAAA-MM-JJ)
  • Nombres : 1,234.56 (US) vs 1.234,56 (Allemagne)
  • Devises : 99 $ vs 99 € vs 100 ¥

3. Gérer la directionnalité du texte :

  • Gauche-à-droite (LTR) : Anglais, Espagnol, Français
  • Droite-à-gauche (RTL) : Arabe, Hébreu, Persan

4. Supporter la pluralisation :

  • Anglais : 1 article, 2 articles (2 formes)
  • Polonais : 1 przedmiot, 2 przedmioty, 5 przedmiotów (3 formes)
  • Arabe : 0, 1, 2, 3-10, 11-99, 100+ (6 formes !)

5. Permettre l'expansion du texte :

  • L'allemand est ~30 % plus long que l'anglais
  • L'UI doit s'adapter : "Save" → "Speichern" (10 carac. vs 4)

i18n en Pratique

Exemple React :

TSX
1import { useTranslation } from 'react-i18next';
2import { useFormatter } from '@/lib/intl';
3
4function ProductCard({ product }) {
5  const { t } = useTranslation('common');
6  const { formatCurrency, formatDate } = useFormatter();
7
8  return (
9    <div>
10      <h3>{product.name}</h3>
11      {/* Chaîne internationalisée */}
12      <p>{t('product.price_label')}: {formatCurrency(product.price)}</p>
13
14      {/* Date internationalisée */}
15      <time>{formatDate(product.releaseDate)}</time>
16
17      {/* Pluriel internationalisé */}
18      <span>{t('product.reviews', { count: product.reviewCount })}</span>
19    </div>
20  );
21}

Fichiers de traduction :

JSON
1// en.json
2{
3    "product": {
4    "price_label": "Price",
5    "reviews": "{{count}} review",
6    "reviews_plural": "{{count}} reviews"
7    }
8}
9
10// de.json
11{
12    "product": {
13    "price_label": "Preis",
14    "reviews": "{{count}} Bewertung",
15    "reviews_plural": "{{count}} Bewertungen"
16    }
17}

Vous faites l'internationalisation une fois. Ensuite, vous pouvez ajouter des langues sans toucher au code.

Localisation (L10n)

Définition : Adapter le contenu pour une locale spécifique (langue + région).

C'est ce que font les traducteurs. Mais c'est plus que de la simple traduction.

Ce que comprend la L10n

1. Traduction (évident)

  • "Save" → "Guardar" (Espagnol)
  • "Hello" → "你好" (Chinois)

2. Adaptation culturelle

  • Couleurs : Blanc = pureté (Occident), deuil (Chine)
  • Images : Montrer de la peau sur les marchés conservateurs
  • Icônes : Pouce en l'air 👍 offensant au Moyen-Orient
  • Exemples : Utiliser des noms locaux, pas "John Smith"

3. Formatage régional

  • Devise : $ aux US, € en Europe, £ au Royaume-Uni (même si tout est en anglais)
  • Adresses : Les US ont un ZIP, le Royaume-Uni a un code postal
  • Numéros de téléphone : Différents formats mondialement

4. Juridique/Conformité

  • RGPD pour l'UE
  • Politiques de confidentialité différentes par région
  • Variations des conditions d'utilisation

5. Changements de contenu

  • Noms de produits : Coca-Cola est 可口可乐 (Kěkǒukělè, "plaisir savoureux") en chinois
  • Slogans adaptés, pas traduits littéralement
  • Fonctionnalités différentes par marché (WeChat Pay pour la Chine, pas les US)

Exemple L10n : Espagnol pour l'Espagne vs le Mexique

Même langue, locale différente :

ChaîneEspagne (es-ES)Mexique (es-MX)
"Computer""Ordenador""Computadora"
"Car""Coche""Carro"
"You (formal)""Usted""Tú" (plus informel)
Devise€ (Euro)$ (Peso)

Vous avez besoin de fichiers es-ES.json et es-MX.json séparés.

L10n dans le Code

TSX
1// Charger le contenu spécifique à la locale
2import { getLocale } from 'next-intl/server';
3
4async function getLocalizedContent() {
5  const locale = await getLocale();
6
7  // Contenu différent par locale
8  const pricing = {
9    'en-US': { currency: 'USD', price: 99 },
10    'en-GB': { currency: 'GBP', price: 79 },
11    'es-ES': { currency: 'EUR', price: 89 },
12    'es-MX': { currency: 'MXN', price: 1799 }
13  };
14
15  return pricing[locale];
16}

Quand la L10n tourne mal

Pepsi en Chine :

  • Slogan anglais : "Come alive with Pepsi"
  • Traduction chinoise : "Pepsi ramène vos ancêtres d'entre les morts"
  • Échec épique.

KFC en Chine :

  • Anglais : "Finger-lickin' good"
  • Chinois : "Mangez vos doigts"
  • Aussi un échec épique.

La L10n n'est pas juste de la traduction ; c'est une adaptation culturelle.

Mondialisation (G11n)

Définition : La stratégie commerciale globale de s'implanter à l'échelle mondiale.

C'est ce que font les équipes produit et marketing.

Ce que comprend la G11n

1. Étude de marché

  • Quels pays cibler ?
  • Quel est le TAM (marché total adressable) ?
  • Concurrence locale ?

2. Adaptation produit

  • Avons-nous besoin de fonctionnalités différentes par région ?
  • Devrions-nous supprimer des fonctionnalités qui ne fonctionneront pas localement ?

3. Stratégie de distribution

  • Comment atteignons-nous les clients ? (App stores, web, partenariats)
  • Méthodes de paiement : Cartes de crédit (US), Alipay (Chine), Paytm (Inde)
  • Canaux marketing : Google Ads (mondial), Baidu (Chine), Yandex (Russie)

4. Conformité

  • RGPD (UE)
  • CCPA (Californie)
  • Exigences de résidence des données (Russie, Chine)

5. Opérations

  • Support client local
  • Documentation localisée
  • Bureaux régionaux

Exemple G11n : Uber

Stratégie de mondialisation d'Uber :

  • Produit principal : Le même dans le monde entier (VTC)
  • Fonctionnalités localisées : Paiements en espèces en Inde (faible adoption des cartes de crédit)
  • Tarification localisée : Dynamique, par ville
  • Partenaires localisés : Intégration différente des chauffeurs par région
  • Marketing localisé : Campagnes différentes par pays

Ils n'ont pas juste traduit l'application ; ils ont adapté leur modèle économique.

Comment ils travaillent ensemble

Voici un flux réel :

Phase 1 : Internationaliser (Développeurs)

Terminal
1# Mois 1-2
2- Extraire toutes les chaînes codées en dur
3- Utiliser une bibliothèque i18n (react-i18next, next-intl)
4- Supporter le formatage date/nombre/devise
5- Tester avec les langues RTL
6- Gérer l'expansion du texte

Sortie : L'application est prête pour la traduction. Toujours uniquement en anglais, mais architecturée pour le multilingue.

Phase 2 : Localiser (Traducteurs)

Terminal
1# Mois 3
2- Traduire les chaînes en espagnol, français, allemand
3- Adapter les images/icônes pour l'ajustement culturel
4- Localiser la copie marketing (pas de traduction littérale)
5- L'équipe juridique adapte les Conditions d'utilisation

Sortie : L'application fonctionne maintenant en 4 langues.

Phase 3 : Mondialiser (Business)

Terminal
1# Mois 4-6
2- Lancer sur les marchés cibles
3- Campagnes marketing locales
4- Partenariat avec des fournisseurs de paiement locaux
5- Mettre en place un support client régional
6- Surveiller et itérer

Sortie : Vous vendez mondialement.

Glocalisation (L'approche moderne)

Glocalisation = Mondialisation + Localisation

Penser globalement, agir localement.

Exemples

McDonald's :

  • Marque mondiale, cœur de menu mondial (Big Mac)
  • Adaptations locales : McSpicy Paneer (Inde), Teriyaki Burger (Japon)

Netflix :

  • Plateforme mondiale, bibliothèque de contenu mondiale
  • Contenu local : Dramas coréens, séries espagnoles, films français
  • Tarification locale : 199 ₹/mois (Inde) vs 15,99 $/mois (US)

Airbnb :

  • Plateforme mondiale
  • Réglementations locales : Règles différentes par ville
  • Méthodes de paiement locales : Alipay, virements bancaires locaux

Glocalisation dans le Code

TSX
1// Indicateurs de fonctionnalité par marché
2const features = {
3  'us': { paymentMethods: ['card', 'paypal'], showTipping: true },
4  'cn': { paymentMethods: ['alipay', 'wechat'], showTipping: false },
5  'in': { paymentMethods: ['card', 'upi', 'paytm'], showTipping: false }
6};
7
8function CheckoutPage() {
9  const locale = useLocale();
10  const marketFeatures = features[locale.split('-')[1].toLowerCase()];
11
12  return (
13    <div>
14      {marketFeatures.paymentMethods.map(method => (
15        <PaymentOption key={method} type={method} />
16      ))}
17      {marketFeatures.showTipping && <TipSelector />}
18    </div>
19  );
20}

Implémentation technique

Construisons une application React correctement internationalisée, localisée et mondialisée.

Étape 1 : Internationalisation (Architecture de code)

Terminal
npm install react-i18next i18next
TSX
1// i18n.ts
2import i18n from 'i18next';
3import { initReactI18next } from 'react-i18next';
4
5i18n.use(initReactI18next).init({
6  resources: {
7    en: { translation: require('./locales/en.json') },
8    es: { translation: require('./locales/es.json') },
9    de: { translation: require('./locales/de.json') },
10  },
11  lng: 'en',
12  fallbackLng: 'en',
13  interpolation: { escapeValue: false }
14});
15
16export default i18n;
TSX
1// Composant avec i18n approprié
2import { useTranslation } from 'react-i18next';
3
4function HomePage() {
5  const { t, i18n } = useTranslation('common');
6
7  // Internationalisé : supporte n'importe quelle langue
8  return (
9    <div dir={i18n.dir()}> {/* Support RTL */}
10      <h1>{t('home.title')}</h1>
11      <p>{t('home.subtitle', { name: 'Utilisateur' })}</p>
12
13      {/* Formatage de date */}
14      <time>{new Intl.DateTimeFormat(i18n.language).format(new Date())}</time>
15
16      {/* Formatage de nombre */}
17      <span>{new Intl.NumberFormat(i18n.language).format(1234567)}</span>
18    </div>
19  );
20}

Étape 2 : Localisation (Contenu)

Créez du contenu spécifique à la locale :

JSON
1// locales/en-US.json
2{
3  "home": {
4    "title": "Welcome to Our App",
5    "cta": "Get Started Free",
6    "features": {
7      "speed": "Lightning fast",
8      "security": "Bank-level security"
9    }
10  },
11  "pricing": {
12    "currency": "USD",
13    "monthly": "$99/month"
14  }
15}
JSON
1// locales/en-GB.json
2{
3  "home": {
4    "title": "Welcome to Our App",
5    "cta": "Get Started Free",  // Même que US
6    "features": {
7      "speed": "Lightning fast",
8      "security": "Bank-level security"
9    }
10  },
11  "pricing": {
12    "currency": "GBP",
13    "monthly": "£79/month"  // Prix/devise différents
14  }
15}
JSON
1// locales/es-MX.json
2{
3  "home": {
4    "title": "Bienvenido a Nuestra App",
5    "cta": "Comienza Gratis",
6    "features": {
7      "speed": "Increíblemente rápido",
8      "security": "Seguridad de nivel bancario"
9    }
10  },
11  "pricing": {
12    "currency": "MXN",
13    "monthly": "$1,799/mes"
14  }
15}

Étape 3 : Mondialisation (Fonctionnalités spécifiques au marché)

TSX
1// Configuration du marché
2const markets = {
3  'us': {
4    paymentMethods: ['stripe', 'paypal'],
5    supportedCurrencies: ['USD'],
6    complianceDocuments: ['privacy-policy-ccpa'],
7    features: {
8      tipping: true,
9      cashPayments: false
10    }
11  },
12  'eu': {
13    paymentMethods: ['stripe'],
14    supportedCurrencies: ['EUR', 'GBP'],
15    complianceDocuments: ['privacy-policy-gdpr', 'cookie-policy'],
16    features: {
17      tipping: false,
18      cashPayments: false
19    }
20  },
21  'in': {
22    paymentMethods: ['razorpay', 'paytm', 'upi'],
23    supportedCurrencies: ['INR'],
24    complianceDocuments: ['privacy-policy'],
25    features: {
26      tipping: false,
27      cashPayments: true
28    }
29  }
30};
31
32// Composant
33function CheckoutPage() {
34  const locale = useLocale(); // 'en-US', 'en-GB', 'fr-FR', etc.
35  const market = locale.split('-')[1].toLowerCase();
36  const config = markets[market] || markets['us'];
37
38  return (
39    <div>
40      <PaymentMethods methods={config.paymentMethods} />
41      {config.features.cashPayments && <CashOption />}
42      {config.features.tipping && <TipSelector />}
43    </div>
44  );
45}

Erreurs courantes

1. Confondre i18n avec L10n

Faux : "Nous avons internationalisé l'application en espagnol."

Vrai : "Nous avons internationalisé l'application (elle supporte maintenant plusieurs langues), puis l'avons localisée en espagnol."

L'internationalisation est agnostique à la langue. La localisation est spécifique à la langue.

2. Ignorer les variantes régionales

Ne traitez pas l'"espagnol" comme une seule chose. C'est :

  • es-ES (Espagne)
  • es-MX (Mexique)
  • es-AR (Argentine)
  • es-CO (Colombie)

Chacun a des différences de vocabulaire.

3. Traduire littéralement

Mauvaise localisation : Anglais : "Don't put all your eggs in one basket" Allemand (littéral) : "Lege nicht alle Eier in einen Korb" (sans signification) Allemand (localisé) : "Setze nicht alles auf eine Karte" (idiome correct)

Utilisez des traducteurs professionnels qui comprennent le contexte culturel.

4. Oublier la détection de locale

TSX
1// ❌ Mauvais : Forcer l'anglais
2const locale = 'en';
3
4// ✅ Bon : Détecter depuis le navigateur
5const locale = navigator.language || 'en';
6
7// ✅ Mieux : Laisser l'utilisateur choisir, se souvenir de la préférence
8const locale = localStorage.getItem('locale') || navigator.language || 'en';

5. Ne pas tester le RTL

Si vous supportez l'arabe/hébreu, testez le RTL :

CSS
/* Utiliser des propriétés logiques */
margin-inline-start: 1rem;  /* Pas margin-left */
padding-inline-end: 1rem;   /* Pas padding-right */
TSX
// Définir l'attribut de direction
<html dir={i18n.dir()}> {/* 'ltr' ou 'rtl' */}

Bonnes pratiques

1. Espaces de noms pour les traductions

JSON
1// ❌ Structure plate (difficile à gérer)
2{
3  "button_save": "Save",
4  "button_cancel": "Cancel",
5  "button_delete": "Delete"
6}
7
8// ✅ Avec espaces de noms
9{
10  "buttons": {
11    "save": "Save",
12    "cancel": "Cancel",
13    "delete": "Delete"
14  },
15  "forms": {
16    "email_label": "Email",
17    "password_label": "Password"
18  }
19}

2. Utiliser des routes spécifiques à la locale

/en/pricing      (Anglais)
/es/precios      (Espagnol - URL traduite)
/de/preise       (Allemand - URL traduite)

Configuration Next.js :

TypeScript
1// next.config.ts
2export default {
3  i18n: {
4    locales: ['en', 'es', 'de'],
5    defaultLocale: 'en',
6    localeDetection: true
7  }
8};

3. Implémenter des replis

TSX
1// Si la clé manque en espagnol, repli vers l'anglais
2i18n.init({
3  fallbackLng: 'en',
4  // Si 'es-MX' manque, essayer 'es', puis 'en'
5  fallbackLng: {
6    'es-MX': ['es', 'en'],
7    'es-AR': ['es', 'en'],
8    'default': ['en']
9  }
10});

4. Contrôle de version des traductions

Stockez les traductions dans Git. Suivez les changements :

Terminal
git log locales/es.json
# Voir qui a changé quelle traduction quand

Ou utilisez un TMS avec synchronisation Git (comme IntlPull).

5. Automatiser les flux de traduction

Terminal
1# Exemple IntlPull
2npx @intlpullhq/cli upload  # Télécharger les nouvelles chaînes anglaises
3# Les traducteurs travaillent dans l'interface web
4npx @intlpullhq/cli download  # Télécharger les chaînes traduites

Évite l'édition manuelle de JSON par les traducteurs.

Étude de cas réelle : Application SaaS

Scénario : Application SaaS React, lancement aux US, Europe, Amérique latine.

Phase 1 : Internationalisation (Semaine 1-2)

Terminal
npm install next-intl
  • Extrait 1 200 chaînes des composants
  • Configuré next-intl avec détection de locale
  • Implémenté le formatage date/nombre avec l'API Intl
  • Testé avec pseudo-localisation (détecté des bugs UI)

Résultat : Application prête pour la traduction.

Phase 2 : Localisation (Semaine 3-4)

  • Embauché des traducteurs pour ES, FR, DE
  • Traduit les chaînes (1 200 × 3 = 3 600 traductions)
  • Adapté la copie marketing (pas de traduction littérale)
  • Localisé les images (photos différentes pour le marché UE)

Coût : 0,08 $/mot × 1 200 mots × 3 langues = 288 $

Résultat : Application disponible en 4 langues.

Phase 3 : Mondialisation (Semaine 5-8)

  • Intégré Stripe pour US/UE, MercadoPago pour l'Amérique latine
  • Configuré la conformité RGPD pour l'UE (bannières de cookies, suppression de données)
  • Localisé la tarification ($ pour US, € pour UE, MXN pour le Mexique)
  • Lancé des campagnes marketing régionales

Impact sur les revenus : +180 % provenant des marchés internationaux au T1.

Quand faire quoi

ÉtapeQuand
i18nJour 1 (ou refactoriser l'application existante avant de traduire)
L10nAvant le lancement sur un nouveau marché
G11nContinu (au fur et à mesure que vous vous étendez à de nouveaux marchés)

Ne traduisez pas avant d'internationaliser. Vous devrez tout refactoriser plus tard.

Outils pour chaque phase

Internationalisation (i18n) :

  • React : react-i18next, react-intl
  • Next.js : next-intl, next-i18next
  • Vue : vue-i18n
  • Svelte : svelte-i18n

Localisation (L10n) :

  • Traduction : API DeepL, ChatGPT, traducteurs humains
  • Gestion : IntlPull, Lokalise, Phrase, Crowdin

Mondialisation (G11n) :

  • Paiements : Stripe (mondial), MercadoPago (LATAM), Razorpay (Inde)
  • Analytique : Mixpanel, Amplitude (support multi-région)
  • Conformité : OneTrust (RGPD), TrustArc

Prêt à vous mondialiser ?

Essayez IntlPull. Gère les chaînes i18n, les flux de travail L10n et le déploiement G11n avec des mises à jour OTA. Commencez à traduire en 5 minutes.

Ou construisez votre propre système i18n si vous êtes à l'aise avec la gestion manuelle des fichiers de traduction.

Tags
globalization
localization
internationalization
i18n
L10n
G11n
IntlPull Team
IntlPull Team
Engineering

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