Creation:2024-08-14Last update:2026-05-31

    Pourquoi devriez-vous envisager Intlayer ?

    Qu'est-ce qu'Intlayer ?

    Intlayer est une bibliothèque d'internationalisation conçue spécifiquement pour les développeurs JavaScript. Elle permet la déclaration de votre contenu partout dans votre code. Elle convertit les déclarations de contenu multilingue en dictionnaires structurés pour s'intégrer facilement dans votre code. En utilisant TypeScript, Intlayer rend votre développement plus robuste et plus efficace.

    Pourquoi Intlayer plutôt que des alternatives ?

    Par rapport aux solutions principales telles que next-intl ou i18next, Intlayer est une solution dotée d'optimisations intégrées telles que :

    Au lieu de charger de lourds fichiers JSON dans vos pages, ne chargez que le contenu strictement nécessaire. Intlayer vous aide à réduire la taille de votre bundle et de vos pages jusqu'à 50 %.

    Déclarer le contenu directement au plus près de vos composants facilite la maintenance des applications de grande envergure. Vous pouvez dupliquer ou supprimer le dossier d'une fonctionnalité sans le fardeau mental de devoir passer en revue toute votre base de code de contenu. De plus, Intlayer est entièrement typé pour garantir l'exactitude de vos traductions.

    La colocalisation du contenu réduit le contexte nécessaire aux grands modèles de langage (LLM). Intlayer est également livré avec une suite d'outils, tels qu'une CLI pour vérifier les traductions manquantes, un LSP, un MCP et des agent skills, afin de rendre l'expérience développeur (DX) encore plus fluide pour les agents IA.

    Intlayer offre un ensemble de fonctionnalités supplémentaires que les autres solutions i18n n'ont pas, telles que le support de Markdown, la récupération de contenu externe, le chargement de contenu de fichiers, la mise à jour en direct du contenu, l'éditeur visuel et plus encore.

    Automatisez les traductions dans votre pipeline CI/CD en utilisant le LLM de votre choix au coût de votre propre fournisseur d'IA. Intlayer propose également un compilateur pour automatiser l'extraction de contenu, ainsi qu'une plateforme web pour vous aider à traduire en arrière-plan.

    Associer de gros fichiers JSON à vos composants peut ralentir les performances et impacter la réactivité. Intlayer optimise le chargement du contenu directement au moment du build.

    Bien plus qu'une simple solution i18n, Intlayer propose un éditeur visuel auto-hébergé et un CMS complet pour gérer votre contenu multilingue en temps réel. Cela rend la collaboration avec les traducteurs, concepteurs-rédacteurs et autres membres de l'équipe extrêmement simple. Le contenu peut être stocké localement et/ou à distance.

    Si vous utilisez différents frameworks pour différentes parties de votre application (par exemple, React, React-native, Vue, Angular, Svelte, etc.), Intlayer fournit un moyen d'utiliser une syntaxe et une implémentation communes dans tous les principaux frameworks frontaux. Vous pourrez également partager votre déclaration de contenu sur votre système de conception, vos applications, votre backend, etc.

    Pourquoi Intlayer a-t-il été créé ?

    Intlayer a été créé pour résoudre un problème courant qui affecte toutes les bibliothèques i18n habituelles telles que next-intl, react-i18next, react-intl, next-i18next, react-intl et vue-i18n.

    Toutes ces solutions adoptent une approche centralisée pour répertorier et gérer votre contenu. Par exemple :

    bash
    .├── locales│   ├── en.json│   ├── es.json│   └── fr.json├── i18n.ts└── src    └── components        └── MyComponent            └── index.tsx

    Ou ici en utilisant des espaces de noms (namespaces) :

    bash
    .├── locales│   ├── en│   │  ├── footer.json│   │  └── navbar.json│   ├── fr│   │  ├── footer.json│   │  └── navbar.json│   └── es│      ├── footer.json│      └── navbar.json├── i18n.ts└── src    └── components        └── MyComponent            └── index.tsx

    Ce type d'architecture ralentit le processus de développement et rend la base de code plus complexe à maintenir pour plusieurs raisons :

    1. Pour chaque nouveau composant créé, vous devez :

      • Créer la nouvelle ressource/espace de noms dans le dossier locales
      • Vous rappeler d'importer le nouvel espace de noms dans votre page
      • Traduire votre contenu (souvent fait manuellement par copier-coller depuis des outils d'IA)
    2. Pour chaque changement apporté à vos composants, vous devez :

      • Rechercher la ressource/espace de noms associé (loin du composant)
      • Traduire votre contenu
      • Vous assurer que votre contenu est à jour pour chaque langue
      • Vérifier que votre espace de noms ne contient pas de clés/valeurs inutilisées
      • Vous assurer que la structure de vos fichiers JSON est identique pour toutes les langues

    Sur les projets professionnels utilisant ces solutions, des plateformes de localisation sont souvent utilisées pour aider à gérer la traduction de votre contenu. Cependant, cela peut rapidement devenir coûteux pour les grands projets.

    Pour résoudre ce problème, Intlayer adopte une approche qui délimite votre contenu par composant et le garde à proximité du composant, comme on le fait souvent avec le CSS (styled-components), les types, la documentation (storybook) ou les tests unitaires (jest).

    bash
    .└── components    └── MyComponent        ├── index.content.ts        ├── index.test.tsx        ├── index.stories.tsx        └── index.tsx
    ./components/MyComponent/index.content.ts
    import { t, type Dictionary } from "intlayer";
    
    const componentExampleContent = {
      key: "component-example",
      content: {
        myTranslatedContent: t({
          en: "Hello World",
          es: "Hola Mundo",
          fr: "Bonjour le monde",
        }),
      },
    } satisfies Dictionary;
    
    export default componentExampleContent;
    ./components/MyComponent/index.tsx
    import { useIntlayer } from "react-intlayer";
    
    export const ComponentExample = () => {
      const { myTranslatedContent } = useIntlayer("component-example");
    
      return <span>{myTranslatedContent}</span>;
    };

    Cette approche vous permet de :

    1. Augmenter la vitesse de développement

      • Les fichiers .content.{{ts|mjs|cjs|json}} peuvent être créés à l'aide d'une extension VSCode
      • Les outils d'autocomplétion IA de votre IDE (tels que GitHub Copilot) peuvent vous aider à déclarer votre contenu, réduisant le copier-coller
    2. Nettoyer votre base de code

      • Réduire la complexité
      • Augmenter la maintenabilité
    3. Dupliquer vos composants et leur contenu associé plus facilement (Exemple : composants de connexion/inscription, etc.)

      • En limitant le risque d'impacter le contenu d'autres composants
      • En copiant-collant votre contenu d'une application à une autre sans dépendances externes
    4. Éviter de polluer votre base de code avec des clés/valeurs inutilisées pour des composants non utilisés

      • Si vous n'utilisez pas un composant, Intlayer n'importera pas son contenu associé
      • Si vous supprimez un composant, vous vous souviendrez plus facilement de supprimer son contenu associé car il sera présent dans le même dossier
    5. Réduire le coût de raisonnement pour les agents IA pour déclarer votre contenu multilingue

      • L'agent IA n'aura pas à parcourir toute votre base de code pour savoir où implémenter votre contenu
      • Les traductions peuvent facilement être effectuées par des outils d'autocomplétion IA dans votre IDE (tels que GitHub Copilot)
    6. Optimiser les performances de chargement

      • Si un composant est chargé à la demande (lazy-loaded), son contenu associé sera chargé en même temps

    Fonctionnalités supplémentaires d'Intlayer

    Fonctionnalité Description
    Feature Support multi-frameworks

    Intlayer est compatible avec tous les frameworks et bibliothèques majeurs, y compris Next.js, React, Vite, Vue.js, Nuxt, Preact, Express et plus encore.
    Feature Gestion de contenu propulsée par JavaScript

    Exploitez la flexibilité de JavaScript pour définir et gérer efficacement votre contenu.

    - Déclaration de contenu
    Feature Compilateur

    Le compilateur d'Intlayer extrait automatiquement le contenu des composants et génère les fichiers de dictionnaire.

    - Compilateur
    Feature Fichier de déclaration de contenu par langue

    Accélérez votre développement en déclarant votre contenu une seule fois, avant la génération automatique.

    - Fichier de déclaration de contenu par langue
    Feature Environnement sécurisé par typage

    Bénéficiez de TypeScript pour vous assurer que vos définitions de contenu et votre code sont exempts d'erreurs, tout en profitant de l'autocomplétion de votre IDE.

    - Configuration de TypeScript
    Feature Configuration simplifiée

    Démarrez rapidement avec une configuration minimale. Ajustez facilement les paramètres d'internationalisation, de routage, d'IA, de build et de gestion du contenu.

    - Explorer l'intégration Next.js
    Feature Récupération simplifiée du contenu

    Pas besoin d'appeler votre fonction t pour chaque élément de contenu. Récupérez tout votre contenu directement à l'aide d'un seul hook.

    - Intégration React
    Feature Implémentation cohérente des composants serveur

    Parfaitement adapté aux composants serveur de Next.js, utilisez la même implémentation pour les composants client et serveur, pas besoin de passer votre fonction t à travers chaque composant serveur.

    - Composants serveur
    Feature Base de code organisée

    Gardez votre base de code plus organisée : 1 composant = 1 dictionnaire dans le même dossier. Les traductions proches de leurs composants respectifs améliorent la maintenabilité et la clarté.

    - Comment fonctionne Intlayer
    Feature Routage amélioré

    Prise en charge complète du routage d'applications, s'adaptant parfaitement aux structures d'applications complexes, pour Next.js, React, Vite, Vue.js, etc.

    - Explorer l'intégration Next.js
    Feature Support de Markdown

    Importez et interprétez des fichiers locaux et du Markdown distant pour du contenu multilingue tel que les politiques de confidentialité, la documentation, etc. Interprétez et rendez les métadonnées Markdown accessibles dans votre code.

    - Fichiers de contenu
    Feature Éditeur visuel et CMS gratuits

    Un éditeur visuel et un CMS gratuits sont disponibles pour les rédacteurs de contenu, éliminant le besoin d'une plateforme de localisation. Gardez votre contenu synchronisé avec Git, ou externalisez-le totalement ou partiellement avec le CMS.

    - Éditeur Intlayer
    - CMS Intlayer
    Feature Contenu éliminable au build (Tree-shakable)

    Contenu éliminable au build, réduisant la taille du bundle final. Charge le contenu par composant, excluant tout contenu inutilisé de votre bundle. Prend en charge le chargement différé (lazy loading) pour améliorer l'efficacité du chargement de l'application.

    - Optimisation du build de l'application
    Feature Rendu statique

    Ne bloque pas le rendu statique.

    - Intégration Next.js
    Feature Traduction propulsée par l'IA

    Transformez votre site Web en 231 langues en un seul clic à l'aide des outils de traduction IA avancés d'Intlayer avec votre propre fournisseur d'IA/clé API.

    - Intégration CI/CD
    - CLI Intlayer
    - Remplissage automatique
    Feature Intégration du serveur MCP

    Fournit un serveur MCP (Model Context Protocol) pour l'automatisation de l'IDE, permettant une gestion transparente du contenu et des flux de travail i18n directement dans votre environnement de développement.

    - Serveur MCP
    Feature Extension VSCode

    Intlayer fournit une extension VSCode pour vous aider à gérer votre contenu et vos traductions, à construire vos dictionnaires, à traduire votre contenu, et plus encore.

    - Extension VSCode
    Feature Interopérabilité

    Permet l'interopérabilité avec react-i18next, next-i18next, next-intl et react-intl.

    - Intlayer et react-intl
    - Intlayer et next-intl
    - Intlayer et next-i18next
    Tester les traductions manquantes (CLI/CI) ✅ CLI : npx intlayer content test (audit compatible CI)

    Comparaison d'Intlayer avec d'autres solutions

    Fonctionnalité intlayer react-i18next react-intl (FormatJS) lingui next-intl next-i18next vue-i18n
    Traductions proches des composants ✅ Oui, contenu colocalisé avec chaque composant ❌ Non ❌ Non ❌ Non ❌ Non ❌ Non ✅ Oui - en utilisant les Single File Components (SFC)
    Intégration TypeScript ✅ Avancée, types stricts auto-générés ⚠️ De base ; configuration supplémentaire pour la sécurité ✅ Bonne, mais moins stricte ⚠️ Typages, nécessite une configuration ✅ Bonne ⚠️ De base ✅ Bonne (types disponibles ; la sécurité des clés nécessite une configuration)
    Détection des traductions manquantes ✅ Erreur TypeScript affichée et erreur/avertissement au build ⚠️ Principalement des chaînes de secours au runtime ⚠️ Chaînes de secours ⚠️ Nécessite une configuration supplémentaire ⚠️ Secours au runtime ⚠️ Secours au runtime ⚠️ Secours/avertissements au runtime (configurable)
    Contenu riche (JSX/Markdown/composants) ✅ Support direct ⚠️ Limité / interpolation uniquement ⚠️ Syntaxe ICU, pas du vrai JSX ⚠️ Limité ❌ Non conçu pour les nœuds riches ⚠️ Limité ⚠️ Limité (composants via <i18n-t>, Markdown via plugins)
    Traduction propulsée par l'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 ❌ Non ❌ Non ❌ 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 ❌ Non / disponible via des plateformes de localisation externes ❌ Non / disponible via des plateformes de localisation externes ❌ 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 dès le départ (fonctionne avec Next.js & Vite) ⚠️ Non intégré, nécessite des plugins (ex. next-i18next) ou une config de routeur personnalisée ❌ Non, uniquement le formatage des messages, le routage doit être manuel ⚠️ Non intégré, nécessite des plugins ou une config manuelle ✅ Intégré, App Router prend en charge le segment [locale] ✅ Intégré ✅ Intégré
    Génération de routes dynamiques ✅ Oui ⚠️ Plugin/écosystème ou configuration manuelle ❌ Non fourni ⚠️ Plugin/manuel ✅ Oui ✅ Oui ❌ Non fourni (Nuxt i18n le fournit)
    Pluralisation ✅ Modèles basés sur des énumérations ✅ Configurable (plugins comme i18next-icu) ✅ (ICU) ✅ (ICU/messageformat) ✅ Bonne ✅ Bonne ✅ Règles de pluralisation intégrées
    Formatage (dates, nombres, devises) ✅ Formateurs optimisés (Intl sous le capot) ⚠️ Via des plugins ou l'utilisation personnalisée d'Intl ✅ Formateurs ICU ✅ Assistants ICU/CLI ✅ Bon (assistants Intl) ✅ Bon (assistants Intl) ✅ Formateurs date/nombre intégrés (Intl)
    Format de contenu ✅ .tsx, .ts, .js, .json, .md, .txt, (.yaml WIP) ⚠️ .json ✅ .json, .js ⚠️ .po, .json ✅ .json, .js, .ts ⚠️ .json ✅ .json, .js
    Support ICU ⚠️ WIP ⚠️ Via plugin (i18next-icu) ✅ Oui ✅ Oui ✅ Oui ⚠️ Via plugin (i18next-icu) ⚠️ Via formateur/compilateur personnalisé
    Assistants SEO (hreflang, sitemap) ✅ Outils intégrés : assistants pour sitemap, robots.txt, métadonnées ⚠️ Plugins communautaires/manuel ❌ Non central ❌ Non central ✅ Bon ✅ Bon ❌ Non central (Nuxt i18n fournit des assistants)
    Écosystème / Communauté ⚠️ Plus petit mais en croissance rapide et réactif ✅ Le plus grand et mature ✅ Grand ⚠️ Plus petit ✅ Taille moyenne, axé sur Next.js ✅ Taille moyenne, axé sur Next.js ✅ Grand dans l'écosystème Vue
    Rendu côté serveur & Composants serveur ✅ Oui, rationalisé pour le SSR / React Server Components ⚠️ Pris en charge au niveau de la page mais nécessite de passer les fonctions t sur l'arborescence des composants pour les composants serveur enfants ⚠️ Pris en charge au niveau de la page avec une configuration supplémentaire, mais nécessite de passer les fonctions t sur l'arborescence des composants pour les composants serveur enfants ✅ Pris en charge, configuration requise ⚠️ Pris en charge au niveau de la page mais nécessite de passer les fonctions t sur l'arborescence des composants pour les composants serveur enfants ⚠️ Pris en charge au niveau de la page mais nécessite de passer les fonctions t sur l'arborescence des composants pour les composants serveur enfants ✅ SSR via Nuxt/Vue SSR (pas de RSC)
    Tree-shaking (charger uniquement le contenu utilisé) ✅ Oui, par composant au build via des plugins Babel/SWC ⚠️ Charge généralement tout (peut être amélioré avec des espaces de noms/découpage de code) ⚠️ Charge généralement tout ❌ Pas par défaut ⚠️ Partiel ⚠️ Partiel ⚠️ Partiel (avec découpage de code/config manuelle)
    Chargement différé (Lazy loading) ✅ Oui, par langue / par dictionnaire ✅ Oui (ex. backends/namespaces à la demande) ✅ Oui (séparer les bundles de langue) ✅ Oui (importations de catalogue dynamiques) ✅ Oui (par route/par langue), nécessite une gestion des espaces de noms ✅ Oui (par route/par langue), nécessite une gestion des espaces de noms ✅ Oui (messages de langue asynchrones)
    Purger le contenu inutilisé ✅ Oui, par dictionnaire au build ❌ Non, uniquement via une segmentation manuelle des espaces de noms ❌ Non, tous les messages déclarés sont regroupés ✅ Oui, clés inutilisées détectées et abandonnées au build ❌ Non, peut être géré manuellement avec la gestion des espaces de noms ❌ Non, peut être géré manuellement avec la gestion des espaces de noms ❌ Non, uniquement possible via le lazy-loading manuel
    Gestion des grands projets ✅ Encourage le modulaire, adapté au design-system ⚠️ Nécessite une bonne discipline de fichiers ⚠️ Les catalogues centraux peuvent devenir volumineux ⚠️ Peut devenir complexe ✅ Modulaire avec configuration ✅ Modulaire avec configuration ✅ Modulaire avec configuration de Vue Router/Nuxt i18n

    Étoiles GitHub

    Les étoiles GitHub sont un indicateur fort de la popularité d'un projet, de la confiance de la communauté et de sa pertinence à long terme. Bien qu'elles ne soient pas une mesure directe de la qualité technique, elles reflètent le nombre de développeurs qui trouvent le projet utile, suivent ses progrès et sont susceptibles de l'adopter. Pour estimer la valeur d'un projet, les étoiles aident à comparer l'attraction entre les alternatives et fournissent des informations sur la croissance de l'écosystème.

    Star History Chart


    Interopérabilité

    intlayer peut également aider à gérer vos espaces de noms react-intl, react-i18next, next-intl, next-i18next et vue-i18n.

    En utilisant intlayer, vous pouvez déclarer votre contenu dans le format de votre bibliothèque i18n préférée, et intlayer générera vos espaces de noms à l'emplacement de votre choix (exemple : /messages/{{locale}}/{{namespace}}.json).