Posez votre question et obtenez un résumé du document en referencant cette page et le Provider AI de votre choix
Le contenu de cette page a été traduit à l'aide d'une IA.
Voir la dernière version du contenu original en anglaisSi vous avez une idée d’amélioration pour améliorer cette documentation, n’hésitez pas à contribuer en submitant une pull request sur GitHub.
Lien GitHub de la documentationCopier le Markdown du doc dans le presse-papiers
i18next est-il obsolète en 2026 ?
Lancé en 2011, bien avant l'avènement des composants React, du bundling Webpack ou de TypeScript, i18next s'est imposé grâce à sa flexibilité et son omniprésence. Il bénéficie d'une réponse sur StackOverflow pour presque chaque question et d'adaptateurs pour tous les frameworks.
Le projet n'est pas abandonné, des correctifs sont publiés de temps en temps. Cependant, maintenir un moteur ancien en état de marche diffère fondamentalement d'une évolution adaptée aux architectures frontend actuelles.
Ces dernières années, le frontend s'est orienté vers la compilation au build, les React Server Components (RSC), le tree-shaking agressif et les outils pilotés par l'IA. De son côté, le cœur d'i18next reste inchangé : un singleton runtime qui résout des clés textuelles côté client.
Points clés
Mode maintenance :
Au cours de l'année écoulée, next-i18next a enregistré environ 63 commits (près d'un par semaine) et react-i18next environ 157, principalement pour des montées de versions et des correctifs mineurs.
Poids runtime élevé :
react-i18next et next-i18next injectent environ 17 à 18 Ko gzippés (~60 Ko minifiés) avant même d'afficher le premier mot traduit, soit presque 4 fois plus que next-intlayer (~4.7 Ko).
Fuite importante de traductions :
Avec la configuration statique par défaut, jusqu'à 89.8% des données de traduction envoyées sur une page appartiennent en réalité à d'autres pages ou à des langues inutilisées.
Tree-shaking impossible :
Les clés dynamiques comme t("home.hero.title") ne peuvent pas être analysées par les bundlers, forçant l'inclusion intégrale des fichiers JSON dans le bundle client.
Alignement commercial :
Les mainteneurs exploitent Locize. Intégrer un pipeline de traduction par IA local et sans surcoût au sein de la CLI entrerait en concurrence directe avec leur service commercial payant.
Maintenance ou évolution active
Le nombre d'étoiles GitHub reflète une adoption historique plutôt qu'une dynamique technique moderne.
Ouvrir le tableau dans une fenêtre modale pour voir tout le contenu clairement
Activité sur les douze derniers mois :
Ouvrir le tableau dans une fenêtre modale pour voir tout le contenu clairement
| Projet | Commits totaux | 12 derniers mois | Priorités |
|---|---|---|---|
next-i18next | 1 311 | 63 | Mises à jour Next.js et correctifs |
react-i18next | 1 988 | 157 | Types et maintenance |
i18next core | 2 626 | 259 | Correctifs mineurs |
| Intlayer | 7 156 | 4 343 | Compilateur, tooling IDE et moteur d'IA |
Une bibliothèque concise peut être mature et stable. Mais les outils d'i18n évoluent vite : les bundlers modernes éliminent le contenu inutile au build, les LLMs traduisent automatiquement en CI, et les éditeurs reposent sur des serveurs de langage (LSP) et des agents IA. L'architecture runtime d'i18next limite sa capacité à adopter ces nouveautés.
Évaluation de l'impact sur le bundle
Chargement JSON dynamique
Charge les traductions à la volée
JSON scopé (espaces de noms)
Espaces de noms de traduction par page
Benchmark de Performance I18n
Quelle est cette métrique ?
La taille totale compressée en gzip du bundle de la bibliothèque d’internationalisation. Elle n’inclut que le fournisseur et la logique de récupération de contenu après tree-shaking et minification.
Pourquoi est-ce important ?
Une taille de bibliothèque plus petite réduit la charge utile JavaScript initiale, ce qui accélère le téléchargement et le temps d’exécution sur le client.
Voir comme
Mesures effectuées sur un build de production avec 10 routes et 10 locales, compression gzip activée. Détails dans le rapport de benchmark i18n.
Poids initial des bibliothèques
Poids de base avant l'ajout du moindre contenu traduit :
Ouvrir le tableau dans une fenêtre modale pour voir tout le contenu clairement
| Bibliothèque | Gzippé | Minifié |
|---|---|---|
next-i18next@16.0.5 | 17.8 Ko | 61.2 Ko |
react-i18next@17.0.2 | 17.3 Ko | 59.8 Ko |
intlayer@8.7.12 | 4.7 Ko | 12.8 Ko |
Poids des pages et fuite de contenu
Testé sous React / TanStack Start (stratégie statique) :
Ouvrir le tableau dans une fenêtre modale pour voir tout le contenu clairement
| Bibliothèque | JS moyen / page (gz) | Fuite de langues | Fuite autres pages | Composant moyen (gz) | Hydratation |
|---|---|---|---|---|---|
react-i18next | 180.3 Ko | 50.0% | 89.8% | 24.3 Ko | 85.1 ms |
| Intlayer | 127.8 Ko | 50.0% | 0.8% | 7.1 Ko | 24.1 ms |
| Intlayer (scoped dyn) | 118.1 Ko | 0.0% | 0.8% | 4.6 Ko | 23.7 ms |
Sur Next.js :
Ouvrir le tableau dans une fenêtre modale pour voir tout le contenu clairement
| Bibliothèque | JS moyen / page (gz) | Fuite autres pages | Composant moyen (gz) |
|---|---|---|---|
| Base (sans i18n) | 150.8 Ko | 0.0% | 0.7 Ko |
next-i18next | 227.5 Ko | 89.8% | 24.5 Ko |
next-intlayer | 152.1 Ko | 0.0% | 7.2 Ko |
Constats majeurs
Poids des pages :
Sur Next.js, next-i18next ajoute 76.7 Ko gzippés par rapport au projet de base (+50%). next-intlayer n'ajoute que 1.3 Ko.
Fuites de contenu :
Par défaut, près de 90% des traductions envoyées sur une page concernent d'autres sections du site. La séparation manuelle par namespaces est fastidieuse et source d'erreurs.
Temps d'hydratation :
L'hydratation des composants prend 85 ms avec react-i18next contre 24 ms avec Intlayer. Transmettre de volumineux arbres JSON aux composants ralentit la réactivité.
Pourquoi i18next est-il lourd ?
Accumulation de fonctionnalités au runtime
Fonctionner intégralement dans le navigateur oblige à charger l'ensemble des modules dès le départ : interpolation, règles de pluriels, gestion de contextes, formats et bus d'événements. Même une simple chaîne de texte embarque tout le moteur.
Les clés dynamiques bloquent le tree-shaking
Puisque la clé "hero.title" est résolue au runtime, les bundlers ne peuvent pas vérifier quelles chaînes sont réellement utilisées. Les textes inutilisés restent donc inclus dans les bundles clients.
Copier le code dans le presse-papiers
Copier le code dans le presse-papiers
Le compilateur Intlayer identifie ce que Hero.tsx utilise réellement et élimine les champs non référencés avant de produire les bundles clients. Consultez l'optimisation de bundle pour en savoir plus.
Expérience développeur
Fichiers JSON distants ou co-localisation
Avec i18next, les traductions sont dispersées dans des dossiers JSON séparés du code. Intlayer regroupe les déclarations de contenu directement à côté des composants.
Copier le code dans le presse-papiers
Copier le code dans le presse-papiers
Copier le code dans le presse-papiers
Copier le code dans le presse-papiers
Copier le code dans le presse-papiers
Lorsque vous déplacez ou supprimez Hero.tsx, ses traductions suivent automatiquement.
Autocomplétion ou sécurité de typage stricte
L'extension de CustomTypeOptions offre l'autocomplétion des clés, mais ne garantit pas la présence effective des textes. La suppression d'une clé dans fr/home.json ne bloque pas votre build, elle entraîne simplement un fallback au runtime.
Intlayer déduit les types à partir des déclarations de contenu, et le strictMode convertit les traductions manquantes en erreurs strictes au build.
Comparatif d'outillage
Ouvrir le tableau dans une fenêtre modale pour voir tout le contenu clairement
| Fonctionnalité | Écosystème i18next | Intlayer |
|---|---|---|
| Extension VS Code | Tierce uniquement | ✅ Extension officielle |
| Serveur de langage (LSP) | ❌ Aucun | ✅ LSP dédié |
| Serveur MCP (pour IA) | ❌ Aucun | ✅ Serveur MCP intégré |
| Compétences agents (Skills) | ❌ Aucune | ✅ Compétences prêtes à l'emploi |
| CMS visuel en contexte | Locize (SaaS payant) | ✅ Gratuit et open source |
Traduction et modèle économique de Locize
Locize est la plateforme commerciale officielle créée par les auteurs d'i18next. Bien que le financement de l'open source soit essentiel, ce modèle engendre un arbitrage : un projet monétisé via un SaaS de traduction a peu d'intérêt à fournir gratuitement un outil de traduction IA local et autonome dans sa CLI.
Intlayer privilégie un modèle ouvert :
intlayer fillcomplète les traductions manquantes en local ou en CI avec vos propres clés API (OpenAI, Anthropic, Mistral, Gemini).- Le CMS Intlayer est open source et auto-hébergeable via Docker Compose.
- Le compilateur, la CLI, l'éditeur et le CMS sont tous sous licence Apache 2.0.
Dans quels cas i18next reste-t-il pertinent ?
Si votre application fonctionne sans difficulté et que la taille du bundle n'est pas critique, une réécriture n'est pas nécessaire.
Le catalogue d'extensions d'i18next couvre des configurations particulières (Electron, anciennes applications jQuery, bridges natifs sur mesure) que les compilateurs récents ne ciblent pas forcément.
L'historique accumulé sur StackOverflow et GitHub facilite la résolution de cas rares.
Comment améliorer ma configuration i18next existante ?
Intlayer propose des packages de compatibilité prêts à l'emploi qui reprennent à l'identique les signatures de fonctions des bibliothèques i18next (i18next, react-i18next et next-i18next). Vous n'avez pas besoin de réécrire vos composants pour bénéficier d'une architecture optimisée par compilateur.
L'installation s'effectue en une seule commande :
Copier le code dans le presse-papiers
Cette CLI interactive :
- Installe le package de compatibilité
@intlayer/i18next. - Configure les alias du bundler afin que vos imports habituels (
useTranslation,Trans,t) pointent directement vers Intlayer, permettant de retirer l'ancienne bibliothèque de votrepackage.json. - Active immédiatement le support du serveur de langage (LSP) dans l'IDE, l'optimisation du bundle (tree-shaking complet) et les flux de traduction IA locale.
Pour aller plus loin, consultez nos guides détaillés :
- Couches de compatibilité : Conservez votre code existant avec les adaptateurs pour i18next, react-i18next et next-i18next.
- Migration des dictionnaires : Convertissez vos catalogues JSON en structures typées : depuis i18next, depuis react-i18next ou depuis next-i18next.
- Approche hybride : Gardez votre runtime i18next tout en associant Intlayer à i18next pour générer, typer et traduire automatiquement vos dictionnaires.
Analysez votre site en production avec le scanner SEO i18n gratuit :
Lectures recommandées
Commentaires
Aucun commentaire pour le moment. Soyez le premier à partager vos pensées.
