Internationalisation (i18n) dans Node.js : i18next et polyglot

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Internationalisation (i18n) en JavaScript (Node.js)

L'internationalisation (en abrégé i18n — de l'anglais « internationalization », où 18 représente le nombre de lettres entre le premier « i » et le dernier « n ») est le processus de conception et de développement de logiciels de manière à pouvoir les adapter facilement à différentes langues et régions sans modifier le code. Dans l'écosystème Node.js, il existe plusieurs bibliothèques puissantes qui simplifient considérablement cette tâche. Dans cet article, nous examinerons les deux plus populaires : i18next et node-polyglot.



Pourquoi l'internationalisation est-elle nécessaire ?

Les applications web modernes et les services serveur travaillent souvent avec des utilisateurs de différents pays. La prise en charge de plusieurs langues améliore l'expérience utilisateur (UX) et élargit l'audience. Sans i18n, les développeurs devraient coder en dur les chaînes dans une seule langue, ce qui rend la gestion du multilinguisme extrêmement laborieuse et sujette aux erreurs.

Les principales tâches résolues par les bibliothèques i18n dans Node.js :

  • Prise en charge des fichiers de traduction (généralement JSON ou YAML).
  • Pluralisation (déclinaison correcte des mots en fonction du nombre : « 1 café », « 2 cafés », « 5 cafés »).
  • Interpolation de variables dans les chaînes (par exemple, « Bonjour, {{name}} ! »).
  • Prise en charge des clés imbriquées pour organiser la structure des traductions.
  • Détection automatique de la langue de l'utilisateur (via les en-têtes HTTP, les cookies, les sous-domaines).


Bibliothèque i18next

i18next est sans doute la bibliothèque d'internationalisation la plus populaire et la plus fonctionnelle dans le monde JavaScript. Elle fonctionne à la fois dans le navigateur et sur le serveur Node.js. i18next offre un riche écosystème de plugins, y compris l'intégration avec React, Vue, Express et d'autres frameworks.



Installation et configuration de base

// Installation via npmnpm install i18next

Créons les fichiers de traduction. Ils sont généralement stockés dans le dossier locales :

locales/fr/translation.json

{  "greeting": "Bonjour, {{name}} !",  "coffee": "Vous avez bu {{count}} tasse de café",  "coffee_plural": "Vous avez bu {{count}} tasses de café",  "menu": {    "home": "Accueil",    "about": "À propos"  }}

locales/en/translation.json

{  "greeting": "Hello, {{name}}!",  "coffee": "You drank {{count}} cup of coffee",  "coffee_plural": "You drank {{count}} cups of coffee",  "menu": {    "home": "Home",    "about": "About us"  }}

Maintenant, initialisons i18next dans l'application :

const i18next = require('i18next');const fs = require('fs');const path = require('path');

// Chargement des traductions depuis les fichiersfunction loadTranslation(lng) { const filePath = path.join(__dirname, 'locales', lng, 'translation.json'); return JSON.parse(fs.readFileSync(filePath, 'utf8'));}

i18next.init({ lng: 'fr', // langue par défaut fallbackLng: 'en', // langue de secours resources: { fr: { translation: loadTranslation('fr') }, en: { translation: loadTranslation('en') } }, interpolation: { escapeValue: false // pour Node.js, pas besoin d'échapper le HTML }});

// Utilisationconsole.log(i18next.t('greeting', { name: 'Alexandre' }));// Affichage : Bonjour, Alexandre !

console.log(i18next.t('coffee', { count: 1 }));// Affichage : Vous avez bu 1 tasse de café

console.log(i18next.t('coffee', { count: 5 }));// Affichage : Vous avez bu 5 tasses de café

console.log(i18next.t('menu.home'));// Affichage : Accueil


Changement de langue à la volée

i18next.changeLanguage('en');console.log(i18next.t('greeting', { name: 'Alex' }));// Affichage : Hello, Alex!


Bibliothèque node-polyglot

node-polyglot est une alternative légère et simple à i18next. Elle est idéale pour les petits projets ou lorsque

Recommendations