Posez votre question et obtenez un résumé du document en referencant cette page et le Provider AI de votre choix
En intégrant le serveur MCP Intlayer à votre assistant AI, vous pouvez récupérer tous les documents directement depuis ChatGPT, DeepSeek, Cursor, VSCode, etc.
Voir la documentation du serveur MCPLe 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
react-Intl VS react-i18next VS intlayer | Internationalisation React (i18n)
Ce guide compare trois options i18n établies pour React : react-intl (FormatJS), react-i18next (i18next), et Intlayer. Nous nous concentrons sur les applications React pures (par exemple, Vite, CRA, SPA). Si vous utilisez Next.js, consultez notre comparaison dédiée à Next.js.
Nous évaluons :
- Architecture et organisation du contenu
- TypeScript et sécurité
- Gestion des traductions manquantes
- Contenu riche et capacités de formatage
- Performance et comportement de chargement
- Expérience développeur (DX), outils et maintenance
- SEO/routage (dépendant du framework)
En résumé : Les trois solutions peuvent localiser une application React. Si vous souhaitez un contenu scoped par composant, des types TypeScript stricts, des vérifications des clés manquantes à la compilation, des dictionnaires optimisés par tree-shaking, ainsi qu’un outil éditorial intégré (Éditeur Visuel/CMS + traduction IA optionnelle), Intlayer est le choix le plus complet pour des bases de code React modulaires.
Positionnement général
- react-intl - Formatage priorisant ICU, conforme aux standards (dates/nombres/pluriels) avec une API mature. Les catalogues sont généralement centralisés ; la sécurité des clés et la validation à la compilation dépendent en grande partie de vous.
- react-i18next - Extrêmement populaire et flexible ; namespaces, détecteurs, et de nombreux plugins (ICU, backends). Puissant, mais la configuration peut devenir complexe à mesure que les projets grandissent.
- Intlayer - Modèle de contenu centré sur les composants pour React, typage TS strict, vérifications à la compilation, tree-shaking, plus éditeur visuel/CMS et traductions assistées par IA. Fonctionne avec React Router, Vite, CRA, etc.
Matrice des fonctionnalités (focus React)
Fonctionnalité | react-intlayer (Intlayer) | react-i18next (i18next) | react-intl (FormatJS) |
---|---|---|---|
Traductions Près des Composants | ✅ Oui, contenu collé avec chaque composant | ❌ Non | ❌ Non |
Intégration TypeScript | ✅ Avancée, types stricts auto-générés | ⚠️ Basique ; configuration supplémentaire pour la sécurité | ✅ Bonne, mais moins stricte |
Détection des Traductions Manquantes | ✅ Mise en évidence des erreurs TypeScript et erreur/avertissement à la compilation | ⚠️ Principalement des chaînes de secours à l'exécution | ⚠️ Chaînes de secours |
Contenu Riche (JSX/Markdown/composants) | ✅ Support direct | ⚠️ Limité / interpolation uniquement | ⚠️ Syntaxe ICU, pas de vrai JSX |
Traduction alimentée par IA | ✅ Oui, prend en charge plusieurs fournisseurs d'IA. Utilisable avec vos propres clés API. Prend en compte le contexte de votre application et la portée du contenu | ❌ Non | ❌ Non |
Éditeur Visuel | ✅ Oui, éditeur visuel local + CMS optionnel ; peut externaliser le contenu de la base de code ; intégrable | ❌ Non / disponible via des plateformes de localisation externes | ❌ Non / disponible via des plateformes de localisation externes |
Routage localisé | ✅ Oui, prend en charge les chemins localisés nativement (fonctionne avec Next.js & Vite) | ⚠️ Pas intégré, nécessite des plugins (ex. next-i18next) ou une configuration personnalisée du routeur | ❌ Non, uniquement le formatage des messages, le routage doit être manuel |
Génération dynamique de routes | ✅ Oui | ⚠️ Plugin/écosystème ou configuration manuelle | ❌ Non fourni |
Pluriel | ✅ Modèles basés sur des énumérations | ✅ Configurable (plugins comme i18next-icu) | ✅ (ICU) |
Formatage (dates, nombres, devises) | ✅ Formateurs optimisés (Intl en interne) | ⚠️ Via des plugins ou usage personnalisé d’Intl | ✅ Formateurs ICU |
Format de contenu | ✅ .tsx, .ts, .js, .json, .md, .txt, (.yaml en cours de développement) | ⚠️ .json | ✅ .json, .js |
Support ICU | ⚠️ En cours de développement | ⚠️ Via plugin (i18next-icu) | ✅ Oui |
Aides SEO (hreflang, sitemap) | ✅ Outils intégrés : aides pour sitemap, robots.txt, métadonnées | ⚠️ Plugins communautaires / manuel | ❌ Pas dans le cœur |
Écosystème / Communauté | ⚠️ Plus petit mais en croissance rapide et réactif | ✅ Le plus grand et mature | ✅ Important |
Rendu côté serveur & Composants Serveur | ✅ Oui, optimisé pour SSR / Composants Serveur React | ⚠️ Pris en charge au niveau de la page mais nécessite de passer les fonctions t dans l'arbre des composants pour les composants serveur enfants | ❌ Non pris en charge, nécessite de passer les fonctions t dans l'arbre des composants pour les composants serveur enfants |
Tree-shaking (chargement uniquement du contenu utilisé) | ✅ Oui, par composant au moment de la compilation via les plugins Babel/SWC | ⚠️ Charge généralement tout (peut être amélioré avec des namespaces / découpage du code) | ⚠️ Charge généralement tout |
Chargement paresseux | ✅ Oui, par locale / par dictionnaire | ✅ Oui (par exemple, backends/namespaces à la demande) | ✅ Oui (bundles de locale séparés) |
Purge du contenu inutilisé | ✅ Oui, par dictionnaire au moment de la compilation | ❌ Non, uniquement via une segmentation manuelle des namespaces | ❌ Non, tous les messages déclarés sont inclus dans le bundle |
Gestion des grands projets | ✅ Encourage la modularité, adapté aux design-systems | ⚠️ Nécessite une bonne discipline des fichiers | ⚠️ Les catalogues centraux peuvent devenir volumineux |
Comparaison approfondie
1) Architecture et évolutivité
- react-intl / react-i18next : La plupart des configurations maintiennent des dossiers de locale centralisés par langue, parfois divisés par espaces de noms (namespaces) (i18next). Cela fonctionne bien au début mais devient une surface partagée à mesure que les applications grandissent.
- Intlayer : Favorise les dictionnaires par composant (ou par fonctionnalité) co-localisés avec l’interface utilisateur qu’ils servent. Cela maintient une propriété claire, facilite la duplication/migration des composants, et réduit les changements de clés entre équipes. Le contenu inutilisé est plus facile à identifier et à supprimer.
Pourquoi c’est important : Le contenu modulaire reflète une interface modulaire. Les grandes bases de code React restent plus propres lorsque les traductions vivent avec les composants auxquels elles appartiennent.
2) TypeScript & sécurité
- react-intl : Typages solides, mais pas de typage automatique des clés ; vous devez appliquer vous-même les bonnes pratiques de sécurité.
- react-i18next : Typages forts pour les hooks ; un typage strict des clés nécessite généralement une configuration supplémentaire ou des générateurs.
- Intlayer : Génère automatiquement des types stricts à partir de votre contenu. L’autocomplétion de l’IDE et les erreurs à la compilation détectent les fautes de frappe et les clés manquantes avant l’exécution.
Pourquoi c’est important : Déplacer les erreurs en amont (vers la compilation/CI) réduit les problèmes en production et accélère les boucles de retour pour les développeurs.
3) Gestion des traductions manquantes
- react-intl / react-i18next : Par défaut, recours aux solutions de repli à l’exécution (répétition de la clé ou locale par défaut). Vous pouvez ajouter du linting/plugins, mais ce n’est pas garanti à la compilation.
- Intlayer : Détection à la compilation avec avertissements ou erreurs lorsque des locales/clés requises sont manquantes.
Pourquoi c’est important : Un CI qui échoue sur les chaînes manquantes empêche la fuite d’« anglais mystère » dans les interfaces non anglophones.
4) Contenu riche & formatage
- react-intl : Excellente prise en charge de ICU pour les pluriels, sélections, dates/nombres et composition de messages. JSX peut être utilisé, mais le modèle mental reste centré sur le message.
- react-i18next : Interpolation flexible et <Trans> pour intégrer des éléments/composants ; ICU disponible via un plugin.
- Intlayer : Les fichiers de contenu peuvent inclure des nœuds riches (JSX/Markdown/composants) et des métadonnées. Le formatage utilise Intl en interne ; les modèles de pluriels sont ergonomiques.
Pourquoi c’est important : Les textes UI complexes (liens, parties en gras, composants en ligne) sont plus faciles à gérer lorsque la bibliothèque intègre proprement les nœuds React.
5) Performance et comportement de chargement
- react-intl / react-i18next : Vous gérez généralement la division des catalogues et le chargement paresseux manuellement (espaces de noms/importations dynamiques). Efficace mais demande de la rigueur.
- Intlayer : Effectue un tree-shaking des dictionnaires inutilisés et prend en charge le chargement paresseux par dictionnaire/par langue prêt à l'emploi.
Pourquoi c'est important : Des bundles plus petits et moins de chaînes inutilisées améliorent les performances au démarrage et lors de la navigation.
6) DX, outils & maintenance
- react-intl / react-i18next : Large écosystème communautaire ; pour les flux éditoriaux, vous adoptez généralement des plateformes de localisation externes.
- Intlayer : Propose un éditeur visuel gratuit et un CMS optionnel (conservez le contenu dans Git ou externalisez-le). Offre également une extension VSCode pour la rédaction de contenu et une traduction assistée par IA utilisant vos propres clés de fournisseur.
Pourquoi c’est important : Les outils intégrés raccourcissent la boucle entre les développeurs et les auteurs de contenu - moins de code de liaison, moins de dépendances externes.
Quand choisir lequel ?
- Choisissez react-intl si vous souhaitez un formatage de messages priorisant ICU avec une API simple et conforme aux standards, et que votre équipe est à l’aise pour maintenir manuellement les catalogues et les vérifications de sécurité.
- Choisissez react-i18next si vous avez besoin de l’écosystème étendu d’i18next (détecteurs, backends, plugin ICU, intégrations) et acceptez plus de configuration pour gagner en flexibilité.
- Choisissez Intlayer si vous valorisez le contenu scoped par composant, le TypeScript strict, les garanties à la compilation, le tree-shaking, et les outils éditoriaux tout-en-un - particulièrement pour les applications React grandes et modulaires.
Notes pratiques de migration (react-intl / react-i18next → Intlayer)
- Migrez de manière incrémentale : Commencez par une fonctionnalité ou une route ; conservez les catalogues hérités en parallèle pendant la transition.
- Adoptez des dictionnaires par composant : Placez le contenu au même endroit que les composants pour réduire le couplage.
- Activez les vérifications strictes : Laissez les erreurs à la compilation révéler tôt les clés/locales manquantes dans l’intégration continue.
- Mesurez les bundles : Attendez-vous à des réductions à mesure que les chaînes inutilisées sont éliminées.
Conclusion
Les trois bibliothèques permettent de localiser React efficacement. Ce qui fait la différence, c’est la quantité d’infrastructure que vous devez construire pour atteindre une configuration sûre et évolutive :
- Avec Intlayer, le contenu modulaire, la typage strict en TS, la sécurité à la compilation, les bundles optimisés par tree-shaking et les outils éditoriaux sont des standards - pas des corvées.
- Si votre équipe valorise la maintenabilité et la rapidité dans des applications React multi-langues et pilotées par composants, Intlayer offre aujourd’hui le flux de travail développeur et contenu le plus complet.