Creation:2026-06-05Last update:2026-06-05

    Migrer de @nuxtjs/i18n à Intlayer

    Pourquoi migrer de @nuxtjs/i18n à Intlayer ?

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

    Scoper le contenu de votre application facilite la maintenance pour les applications à grande échelle. Vous pouvez dupliquer ou supprimer un dossier de fonctionnalité entier sans avoir la charge mentale de revoir toute votre base de code de contenu. De plus, Intlayer est entièrement typé pour garantir l'exactitude de votre contenu.

    Intlayer est également la solution avec le développement le plus actif dans l'écosystème i18n — les problèmes sont résolus rapidement, de nouveaux adaptateurs de framework arrivent régulièrement, et l'API principale est continuellement affinée en fonction des retours de production réels.

    Colocaliser le contenu réduit le contexte nécessaire pour les Grands Modèles de Langage (LLM). Intlayer est également livré avec une suite d'outils, tels qu'une CLI pour tester les traductions manquantes, LSP, MCP, et des compétences d'agent, pour rendre l'expérience développeur (DX) encore plus fluide pour les agents IA.

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

    Connecter des fichiers JSON massifs aux composants peut entraîner des problèmes de performance et de réactivité. Intlayer optimise le chargement de votre contenu au moment de la construction.

    Plus qu'une simple solution i18n, Intlayer fournit un éditeur visuel auto-hébergé et un CMS complet pour vous aider à gérer votre contenu multilingue en temps réel, rendant la collaboration avec les traducteurs, les rédacteurs et les autres membres de l'équipe transparente. Le contenu peut être stocké localement et/ou à distance.


    Stratégies de migration

    Étant donné que @nuxtjs/i18n est propulsé par vue-i18n en coulisses, il existe deux stratégies complémentaires pour migrer vers Intlayer :

    1. Adaptateur de compatibilité (recommandé pour les applications existantes) — Installez @intlayer/vue-i18n et nuxt-intlayer. Cela expose exactement la même API que vue-i18n mais délègue tout le travail de traduction à Intlayer. Vous conservez vos appels existants à $t, useI18n(), et le routage Nuxt intacts — le seul changement est l'initialisation.

    2. Migration complète — Remplacez progressivement les API @nuxtjs/i18n par des hooks natifs Intlayer (useIntlayer) et colocalisez le contenu dans des fichiers .content.ts avec vos composants.

    Ce guide couvre d'abord la Stratégie 1 (adaptateur de compatibilité prêt à l'emploi), puis passe en revue la migration complète optionnelle.


    Table des Matières


    Migration rapide

    Les étapes suivantes sont le minimum requis pour faire fonctionner votre application Nuxt existante sur Intlayer avec zéro changement de code dans vos composants.

    1. Installer les Dépendances

      Installez les packages principaux d'Intlayer et l'adaptateur de compatibilité :

      bash
      npm install intlayer vue-intlayer nuxt-intlayer @intlayer/vue-i18n @intlayer/sync-json-pluginnpx intlayer init
      Vous pouvez garder @nuxtjs/i18n installé en toute sécurité pendant la migration, bien que vous le supprimiez de votre configuration Nuxt sous peu.
    2. Configurer Intlayer

      La commande intlayer init crée un fichier intlayer.config.ts de démarrage. Mettez-le à jour pour qu'il corresponde à vos paramètres régionaux existants et pointez le plugin syncJSON sur vos fichiers de messages :

      intlayer.config.ts
      import { Locales, type IntlayerConfig } from "intlayer";
      import { syncJSON } from "@intlayer/sync-json-plugin";
      
      const config: IntlayerConfig = {
        internationalization: {
          locales: [
            Locales.ENGLISH,
            Locales.FRENCH,
            Locales.SPANISH,
            // Ajoutez tous vos paramètres régionaux existants ici
          ],
          defaultLocale: Locales.ENGLISH,
        },
        plugins: [
          syncJSON({
            // correspond à la syntaxe d'espace réservé vue-i18n : {name}
            format: "icu",
            source: ({ locale }) => `./locales/${locale}.json`,
            location: "locales",
          }),
        ],
      };
      
      export default config;
      source mappe un paramètre régional à son chemin de fichier JSON. location indique à l'observateur Intlayer quel dossier surveiller pour les modifications. L'option format: 'icu' garantit que les espaces réservés sont analysés correctement pour vue-i18n.
    3. Mettre à jour la Configuration Nuxt

      Remplacez le module @nuxtjs/i18n par nuxt-intlayer dans votre nuxt.config.ts. Le plugin Intlayer injecte automatiquement des alias de module, ce qui signifie que vos appels existants import { useI18n } from 'vue-i18n' sont redirigés de manière transparente vers @intlayer/vue-i18n.

      nuxt.config.ts
      export default defineNuxtConfig({
        // Supprimer '@nuxtjs/i18n'
        modules: ["nuxt-intlayer"],
      });
      Vous n'avez plus besoin de définir les objets de configuration Nuxt i18n. Intlayer compile tous les dictionnaires au moment de la construction, gérant la détection des paramètres régionaux, le routage et le chargement des dictionnaires de manière transparente.

    C'est tout pour la migration rapide. Votre application Nuxt fonctionne désormais sur Intlayer tout en conservant chaque $t et useI18n() intacts.


    Migration complète

    Les étapes ci-dessous sont facultatives et peuvent être effectuées de manière incrémentielle. Elles débloquent l'ensemble des fonctionnalités d'Intlayer : éditeur visuel, CMS, fichiers de contenu typés, traduction alimentée par l'IA, et plus encore.

    1. Renommage explicite des imports (optionnel)

      Facultatif

      Les plugins Intlayer gèrent déjà l'aliassage au niveau du bundler. Si vous préférez rendre la dépendance explicite dans vos fichiers sources, vous pouvez renommer les imports manuellement :

      Avant Après
      import { useI18n } from 'vue-i18n' import { useI18n } from '@intlayer/vue-i18n'

      Ce sont des remplacements directs — aucun changement de signatures d'appel, d'arguments ou de types de retour n'est requis.

    2. Activer l'automatisation de la traduction alimentée par l'IA

      Facultatif

      Une fois Intlayer configuré, utilisez sa CLI pour remplir automatiquement les traductions manquantes :

      bash
      # Tester les traductions manquantes (ajouter au CI)npx intlayer test# Remplir les traductions manquantes avec l'IAnpx intlayer fill

      Ajoutez la configuration de l'IA à intlayer.config.ts :

      intlayer.config.ts
      import { Locales, type IntlayerConfig } from "intlayer";
      import { syncJSON } from "@intlayer/sync-json-plugin";
      
      const config: IntlayerConfig = {
        internationalization: {
          locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
          defaultLocale: Locales.ENGLISH,
        },
        plugins: [
          syncJSON({
            format: "icu",
            source: ({ locale }) => `./locales/${locale}.json`,
            location: "locales",
          }),
        ],
        ai: {
          apiKey: process.env.OPENAI_API_KEY,
          // provider: "openai",     // défaut
          // model: "gpt-4o-mini",   // défaut
        },
      };
      
      export default config;
      Consultez la documentation de la CLI Intlayer pour toutes les options disponibles.

    Ce que vous pouvez supprimer après la migration

    Une fois l'adaptateur de compatibilité en place, le code standard suivant peut être supprimé :

    Fichier / modèle Pourquoi ce n'est plus nécessaire
    configurations i18n dans nuxt.config.ts Intlayer gère le routage, le chargement des dictionnaires et les paramètres régionaux par défaut en interne.
    @nuxtjs/i18n dans package.json Remplacé entièrement par nuxt-intlayer.
    Bundles de langue JSON (locales/*.json) Les bundles JSON ne sont nécessaires que si vous utilisez encore le plugin syncJSON. Une fois que vous migrez vers des fichiers .content.ts, vous pouvez supprimer le dossier JSON.

    Lorsque vous êtes prêt à aller plus loin, Intlayer découvre automatiquement tous les fichiers .content.ts et .content.json n'importe où dans votre base de code (par défaut, n'importe où dans ./src). Vous pouvez placer un fichier my-component.content.ts juste à côté de votre MyComponent.vue et Intlayer le détectera au moment de la construction sans configuration supplémentaire — pas d'imports, pas d'enregistrement, pas besoin de fichier d'index centralisé. Cela rend la colocalisation des traductions avec les pages et les composants complètement transparente.


    Configurer TypeScript

    Intlayer utilise l'augmentation de module pour fournir une intellisense TypeScript complète pour vos clés de traduction. Assurez-vous que votre tsconfig.json inclut les types générés automatiquement :

    tsconfig.json
    {  // ... Vos configurations TypeScript existantes  "include": [    // ... Vos configurations TypeScript existantes    ".intlayer/**/*.ts", // Inclure les types générés automatiquement  ],}

    Configuration Git

    Ajoutez le répertoire généré par Intlayer à votre .gitignore :

    .gitignore
    # Ignorer les fichiers générés par Intlayer.intlayer

    Aller plus loin