Internationalisation (i18n) en JavaScript (Node.js) : la bibliothèque i18next

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) : la bibliothèque i18next

\n\n

L'internationalisation (abrégée 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 permettant de les adapter à différentes langues et particularités régionales sans modifier le code source. Dans le développement web moderne avec Node.js, créer des applications multilingues est une nécessité pour accéder au marché mondial.

\n\n

L'une des bibliothèques les plus populaires et les plus puissantes pour implémenter l'i18n dans l'écosystème JavaScript (y compris Node.js) est i18next. Elle offre une architecture flexible, la prise en charge de multiples formats de fichiers de traduction, l'interpolation, la pluralisation et les traductions contextuelles. Dans cet article, nous allons détailler l'installation, la configuration et l'utilisation d'i18next côté serveur.

\n\n

Installation et configuration

\n\n

Pour commencer à utiliser i18next dans un projet Node.js, installez la bibliothèque via npm :

\n\n
npm install i18next
\n\n

Il est également recommandé d'installer le paquet i18next-fs-backend pour charger les fichiers de traduction depuis le système de fichiers :

\n\n
npm install i18next-fs-backend
\n\n

Après l'installation, créez un fichier d'initialisation, par exemple i18n.js :

\n\n
const i18next = require('i18next');\nconst Backend = require('i18next-fs-backend');\n\ni18next.use(Backend).init({\n  lng: 'ru', // langue par défaut\n  fallbackLng: 'en', // langue de secours\n  backend: {\n    loadPath: './locales/{{lng}}/{{ns}}.json' // chemin vers les fichiers de traduction\n  },\n  interpolation: {\n    escapeValue: false // ne pas échapper le HTML (pour Node.js)\n  }\n});\n\nmodule.exports = i18next;
\n\n

Structure des fichiers de traduction

\n\n

Créez un dossier locales à la racine du projet. À l'intérieur, pour chaque langue, créez un sous-dossier (par exemple, en, ru, de). Dans chaque sous-dossier, placez des fichiers JSON contenant les traductions. On utilise généralement un seul fichier translation.json par langue, mais il est possible de les diviser en espaces de noms (namespaces) pour plus de modularité.

\n\n

Exemple de fichier locales/ru/translation.json :

\n\n
{\n  "welcome": "Добро пожаловать на наш сайт!",\n  "greeting": "Привет, {{name}}!",\n  "items": "{{count}} элемент",\n  "items_plural": "{{count}} элементов",\n  "menu": {\n    "home": "Главная",\n    "about": "О нас",\n    "contact": "Контакты"\n  }\n}
\n\n

Exemple de fichier locales/en/translation.json :

\n\n
{\n  "welcome": "Welcome to our website!",\n  "greeting": "Hello, {{name}}!",\n  "items": "{{count}} item",\n  "items_plural": "{{count}} items",\n  "menu": {\n    "home": "Home",\n    "about": "About",\n    "contact": "Contact"\n  }\n}
\n\n

Fonctionnalités principales d'i18next

\n\n

Traduction simple

\n\n

Pour obtenir une traduction, utilisez la fonction t() (de "translate") :

\n\n
const i18next = require('./i18n');\n\n// Initialisation asynchrone (dans un projet réel, attendez que ce soit prêt)\ni18next.t('welcome'); // "Добро пожаловать на наш сайт!" (si lng: 'ru')
\n\n

Interpolation de variables

\n\n

Insérez des valeurs dynamiques dans les chaînes à l'aide de doubles accolades :

\n\n
i18next.t('greeting', { name: 'Алексей' });\n// Résultat : "Привет, Алексей!"
\n\n

Pluralisation

\n\n

La bibliothèque sélectionne automatiquement la forme plurielle correcte en fonction des règles de la langue. Pour cela, ajoutez des clés avec le suffixe _plural :

\n\n
i18next.t('items', { count: 1 }); // "1 элемент"\ni18next.t('items', { count: 5 }); // "5 элементов"
\n\n

Pour l'anglais, la règle est plus simple (un élément — item, plusieurs — items). Pour le russe, i18next utilise des règles de pluralisation intégrées qui prennent en compte les nombres 1, 2-4, 5-20, etc.

\n\n

Clés imbriquées et es

Recommendations