AccueilBac à sableShowcaseAppDocBlog
    • Englishanglais
      EN
    • русскийrusse
      RU
    • 日本語japonais
      JA
    • françaisfrançais
      FR
    • 한국어coréen
      KO
    • 中文chinois
      ZH
    • españolespagnol
      ES
    • Deutschallemand
      DE
    • العربيةarabe
      AR
    • italianoitalien
      IT
    • British Englishanglais britannique
      EN-GB
    • portuguêsportugais
      PT
    • हिन्दीhindi
      HI
    • Türkçeturc
      TR
    • polskipolonais
      PL
    • Indonesiaindonésien
      ID
    • Tiếng Việtvietnamien
      VI
    • українськаukrainien
      UK
    /
    Filtrer la documentation par framework
    Alt+←
    Pourquoi Intlayer ?
    Commencer
    Concept
    • Comment Intlayer fonctionne
    • Configuration
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Éditeur visuel
    • CMS
    • Intégration CI/CD
    • TraductionPlurielÉnumérationConditionGenreInsertionFichierImbricationMarkdownHTMLRécupération de fonction
    • Fichier par locale
    • Compilateur
    • Remplissage automatique
    • Tests
    • Optimisation de bundle
    Environnement
    • Next.js 14 et App Router
      Next.js 15
      Next.js sans locale URL
      Next.js et Page Router
      Compiler
    • Tanstack Start Solid
    • Astro et React
      Astro et Svelte
      Astro et Vue
      Astro et Solid
      Astro et Preact
      Astro et Lit
      Astro et Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt et Vue
    • Vite et Solid
    • SvelteKit
    • Vite et Preact
    • Vite et Vanilla JS
    • Vite et Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native et Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx et React
    Plugins
    • JSON
    • gettext (.po)
    Extension VS Code
    Agent
    • Serveur MCP
    • Compétences de l’agent
    Versions
    • v8
    • v7
    • v6
    Benchmark
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Blog
    Poser une question
    1. Documentation
    2. Compiler
    Création:2025-09-09Dernière mise à jour:2026-03-12
    Référencez cette doc à votre assistant AI préféré
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Posez votre question et obtenez un résumé du document en referencant cette page et le Provider AI de votre choix

    Historique des versions

    1. "Update compiler options, add FilePathPattern support"
      v8.2.010/03/2026
    2. "Mise à jour des options du compilateur"
      v8.1.725/02/2026
    3. "Sortie du Compiler"
      v7.3.127/11/2025

    Le contenu de cette page a été traduit à l'aide d'une IA.

    Voir la dernière version du contenu original en anglais
    Modifier cette documentation

    Si 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 documentation
    Copier

    Copier le Markdown du doc dans le presse-papiers

    Intlayer Compiler | Extraction Automatisée de Contenu pour i18n

    Qu'est-ce que l'Intlayer Compiler ?

    Le Intlayer Compiler est un outil puissant conçu pour automatiser le processus d'internationalisation (i18n) dans vos applications. Il analyse votre code source (JSX, TSX, Vue, Svelte) à la recherche de déclarations de contenu, les extrait, et génère automatiquement les fichiers de dictionnaire nécessaires. Cela vous permet de garder votre contenu localisé avec vos composants tandis qu'Intlayer gère la gestion et la synchronisation de vos dictionnaires.

    Pourquoi utiliser le Intlayer Compiler ?

    • Automatisation : Élimine le copier-coller manuel du contenu dans les dictionnaires.
    • Rapidité : Extraction de contenu optimisée garantissant que votre processus de build reste rapide.
    • Expérience développeur : Gardez les déclarations de contenu là où elles sont utilisées, améliorant ainsi la maintenabilité.
    • Mises à jour en direct : Prend en charge le Hot Module Replacement (HMR) pour un retour instantané pendant le développement.

    Consultez l'article de blog Compiler vs. Declarative i18n pour une comparaison plus approfondie.

    Pourquoi ne pas utiliser l'Intlayer Compiler ?

    Bien que le compilateur offre une excellente expérience "fonctionne tout seul", il introduit également certains compromis dont vous devez être conscient :

    • Ambiguïté heuristique : Le compilateur doit deviner ce qui est du contenu destiné aux utilisateurs par rapport à la logique de l'application (par exemple, className="active", codes de statut, identifiants de produits). Dans des bases de code complexes, cela peut conduire à de faux positifs ou à des chaînes manquées qui nécessitent des annotations manuelles et des exceptions.
    • Extraction statique uniquement : L'extraction basée sur le compilateur repose sur l'analyse statique. Les chaînes qui n'existent qu'à l'exécution (codes d'erreur API, champs CMS, etc.) ne peuvent pas être découvertes ou traduites par le compilateur seul, vous avez donc toujours besoin d'une stratégie i18n d'exécution complémentaire.

    Pour une comparaison architecturale plus approfondie, consultez l'article de blog Compiler vs. Declarative i18n.

    Comme alternative, pour automatiser votre processus i18n tout en gardant un contrôle total de votre contenu, Intlayer fournit également une commande d'auto-extraction intlayer extract (voir la documentation CLI), ou la commande Intlayer: extract content to Dictionary de l'extension Intlayer VS Code (voir la documentation de l'extension VS Code).

    Utilisation

    Vite

    Pour les applications basées sur Vite (React, Vue, Svelte, etc.), la manière la plus simple d'utiliser le compilateur est via le plugin vite-intlayer.

    Installation

    bash
    Copier le code

    Copier le code dans le presse-papiers

    npm install vite-intlayer

    Configuration

    Mettez à jour votre vite.config.ts pour inclure le plugin intlayerCompiler :

    vite.config.ts
    Copier le code

    Copier le code dans le presse-papiers

    import { defineConfig } from "vite";import { intlayer, intlayerCompiler } from "vite-intlayer";export default defineConfig({ plugins: [   intlayer(),   intlayerCompiler(), // Ajoute le plugin du compilateur ],});

    See complete tutorial: Intlayer Compiler with Vite+React

    Support des frameworks

    Le plugin Vite détecte et gère automatiquement différents types de fichiers :

    • React / JSX / TSX : Pris en charge nativement.
    • Vue : Nécessite @intlayer/vue-compiler.
    • Svelte : Nécessite @intlayer/svelte-compiler.

    Assurez-vous d'installer le paquet compilateur approprié pour votre framework :

    bash
    Copier le code

    Copier le code dans le presse-papiers

    # Pour Vuenpm install @intlayer/vue-compiler# Pour Sveltenpm install @intlayer/svelte-compiler

    Next.js (Babel)

    Pour Next.js ou d'autres applications basées sur Webpack utilisant Babel, vous pouvez configurer le compilateur en utilisant le plugin @intlayer/babel.

    Installation

    bash
    Copier le code

    Copier le code dans le presse-papiers

    npm install @intlayer/babel

    Configuration

    Mettez à jour votre fichier babel.config.js (ou babel.config.json) pour inclure le plugin d'extraction. Nous fournissons un helper getExtractPluginOptions pour charger automatiquement votre configuration Intlayer.

    babel.config.js
    Copier le code

    Copier le code dans le presse-papiers

    const { intlayerExtractBabelPlugin, intlayerOptimizeBabelPlugin, getExtractPluginOptions, getOptimizePluginOptions,} = require("@intlayer/babel");module.exports = { presets: ["next/babel"], plugins: [   // Extract content from components into dictionaries   [intlayerExtractBabelPlugin, getExtractPluginOptions()],   // Optimize imports by replacing useIntlayer with direct dictionary imports   [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()], ],};

    Cette configuration garantit que le contenu déclaré dans vos composants est automatiquement extrait et utilisé pour générer les dictionnaires lors de votre processus de build.

    See complete tutorial: Intlayer Compiler with Next.js

    Configuration personnalisée

    Pour personnaliser le comportement du compilateur, vous pouvez mettre à jour le fichier intlayer.config.ts à la racine de votre projet.

    intlayer.config.ts
    Copier le code

    Copier le code dans le presse-papiers

    import { type IntlayerConfig, Locales } from "intlayer";const config: IntlayerConfig = {  compiler: {    /**     * Indique si le compilateur doit être activé.     * Réglez sur 'build-only' pour ignorer le compilateur pendant le développement et accélérer les temps de démarrage.     */    enabled: true,    /**     * Définit le chemin des fichiers de sortie. Remplace `outputDir`.     *     * - Les chemins `./` sont résolus par rapport au répertoire du composant.     * - Les chemins `/` sont résolus par rapport à la racine du projet (`baseDir`).     *     * - L'inclusion de la variable `{{locale}}` dans le chemin déclenchera la génération de dictionnaires séparés par locale.     *     * Exemple :     * ```ts     * {     *   // Créer des fichiers .content.ts multilingues proches du composant     *   output: ({ fileName, extension }) => `./${fileName}${extension}`,     *     *   // output: './{{fileName}}{{extension}}', // Équivalent utilisant une chaîne de caractères     * }     * ```     *     * ```ts     * {     *   // Créer des JSON centralisés par locale à la racine du projet     *   output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,     *     *   // output: '/locales/{{locale}}/{{key}}.content.json', // Équivalent utilisant une chaîne de caractères     * }     * ```     *     * Liste des variables :     *   - `fileName`: Le nom du fichier.     *   - `key`: La clé du contenu.     *   - `locale`: La locale du contenu.     *   - `extension`: L'extension du fichier.     *   - `componentFileName`: Le nom du fichier du composant.     *   - `componentExtension`: L'extension du fichier du composant.     *   - `format`: Le format du dictionnaire.     *   - `componentFormat`: Le format du dictionnaire du composant.     *   - `componentDirPath`: Le chemin du répertoire du composant.     */    output: ({ fileName, extension }) => `./${fileName}${extension}`,    /**     * Indique si les composants doivent être enregistrés après avoir été transformés.     *     * - Si `true`, le compilateur réécrira le fichier du composant sur le disque. Ainsi, la transformation sera permanente et le compilateur sautera la transformation pour le prochain processus. De cette façon, le compilateur peut transformer l'application, puis être supprimé.     *     * - Si `false`, le compilateur injectera l'appel de fonction `useIntlayer()` dans le code du build uniquement et gardera la base de code intacte. La transformation sera effectuée uniquement en mémoire.     */    saveComponents: false,    /**     * Insérer uniquement le contenu dans le fichier généré. Utile pour les sorties JSON i18next ou ICU MessageFormat par locale.     *     * - `output: ({ locale, key }) => `./locale/${locale}/${key}.json`,`     */    noMetadata: false,    /**     * Préfixe de clé de dictionnaire     */    dictionaryKeyPrefix: "", // Ajouter un préfixe optionnel pour les clés de dictionnaire extraites  },};export default config;

    Référence de la configuration du compilateur

    Les propriétés suivantes peuvent être configurées dans le bloc compiler de votre fichier intlayer.config.ts :

    • enabled:

      • Type: boolean | 'build-only'
      • Par défaut: true
      • Description: Indique si le compilateur doit être activé.
    • dictionaryKeyPrefix:

      • Type: string
      • Par défaut: ''
      • Description: Préfixe pour les clés de dictionnaire extraites.
    • transformPattern:

      • Type: string | string[]
      • Par défaut: ['**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}', '!**/node_modules/**']
      • Description: (Obsolète : utilisez build.traversePattern à la place) Modèles pour parcourir le code à optimiser.
    • excludePattern:

      • Type: string | string[]
      • Par défaut: ['**/node_modules/**']
      • Description: (Obsolète : utilisez build.traversePattern à la place) Modèles à exclure de l'optimisation.
    • output:

      • Type: FilePathPattern
      • Par défaut: ({ key }) => 'compiler/${key}.content.json'
      • Description: Définit le chemin des fichiers de sortie. Remplace outputDir. Gère les variables dynamiques telles que {{locale}}, {{key}}, {{fileName}}, {{extension}}, {{format}}, {{dirPath}}, {{componentFileName}}, {{componentExtension}}, {{componentFormat}}. Peut être configuré sous forme de chaîne à l'aide du format 'my/{{var}}/path' ou sous forme de fonction.
      • Note: ./**/* Les chemins sont résolus par rapport au composant. /**/* les chemins sont résolus par rapport au baseDir d'Intlayer.
      • Note: Si la locale est définie dans le chemin, cela générera des dictionnaires par locale.
      • Exemple: output: ({ locale, key }) => 'compiler/${locale}/${key}.json'
    • noMetadata:

      • Type: boolean
      • Par défaut: false
      • Description: Indique si les métadonnées doivent être enregistrées dans le fichier. Si vrai, le compilateur n'enregistrera pas les métadonnées des dictionnaires (clé, enveloppe de contenu). Utile pour les sorties JSON i18next ou ICU MessageFormat par locale.
      • Note: Utile si utilisé avec le plugin loadJSON.
      • Exemple: Si true : json { "key": "value" } Si false : json { "key": "value", "content": { "key": "value" } }
    • saveComponents:

      • Type: boolean
      • Par défaut: false
      • Description: Indique si les composants doivent être enregistrés après avoir été transformés.
        • Si true, le compilateur réécrira le fichier du composant sur le disque. La transformation sera permanente et le compilateur pourra ensuite être supprimé.
        • Si false, le compilateur injectera l'appel de fonction useIntlayer() dans le code du build uniquement et gardera la base de code intacte. La transformation sera effectuée uniquement en mémoire.

    Remplir les traductions manquantes

    Intlayer fournit un outil CLI pour vous aider à remplir les traductions manquantes. Vous pouvez utiliser la commande intlayer pour tester et remplir les traductions manquantes à partir de votre code.

    bash
    Copier le code

    Copier le code dans le presse-papiers

    npx intlayer test         # Tester s'il y a des traductions manquantes
    bash
    Copier le code

    Copier le code dans le presse-papiers

    npx intlayer fill         # Remplir les traductions manquantes

    Extraction

    Intlayer propose un outil CLI pour extraire le contenu de votre code. Vous pouvez utiliser la commande intlayer extract pour extraire le contenu de votre code.

    bash
    Copier le code

    Copier le code dans le presse-papiers

    npx intlayer extract
    Pour plus de détails, consultez la documentation CLI
    Fichier par locale
    Remplissage automatique
    Alt+→

    Dans cette page

      Les discussions sont anonymes et régulièrement analysées pour traiter les problèmes fréquents. N'hésitez pas à partager vos idées de fonctionnalités, vos retours sur la documentation ou tout ce qui concerne Intlayer, nous utilisons ces retours pour construire notre roadmap et améliorer le produit.

      npm install vite-intlayer
      import { defineConfig } from "vite";import { intlayer, intlayerCompiler } from "vite-intlayer";export default defineConfig({ plugins: [   intlayer(),   intlayerCompiler(), // Ajoute le plugin du compilateur ],});
      # Pour Vuenpm install @intlayer/vue-compiler# Pour Sveltenpm install @intlayer/svelte-compiler
      npm install @intlayer/babel
      const { intlayerExtractBabelPlugin, intlayerOptimizeBabelPlugin, getExtractPluginOptions, getOptimizePluginOptions,} = require("@intlayer/babel");module.exports = { presets: ["next/babel"], plugins: [   // Extract content from components into dictionaries   [intlayerExtractBabelPlugin, getExtractPluginOptions()],   // Optimize imports by replacing useIntlayer with direct dictionary imports   [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()], ],};
      import { type IntlayerConfig, Locales } from "intlayer";const config: IntlayerConfig = {  compiler: {    /**     * Indique si le compilateur doit être activé.     * Réglez sur 'build-only' pour ignorer le compilateur pendant le développement et accélérer les temps de démarrage.     */    enabled: true,    /**     * Définit le chemin des fichiers de sortie. Remplace `outputDir`.     *     * - Les chemins `./` sont résolus par rapport au répertoire du composant.     * - Les chemins `/` sont résolus par rapport à la racine du projet (`baseDir`).     *     * - L'inclusion de la variable `{{locale}}` dans le chemin déclenchera la génération de dictionnaires séparés par locale.     *     * Exemple :     * ```ts     * {     *   // Créer des fichiers .content.ts multilingues proches du composant     *   output: ({ fileName, extension }) => `./${fileName}${extension}`,     *     *   // output: './{{fileName}}{{extension}}', // Équivalent utilisant une chaîne de caractères     * }     * ```     *     * ```ts     * {     *   // Créer des JSON centralisés par locale à la racine du projet     *   output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,     *     *   // output: '/locales/{{locale}}/{{key}}.content.json', // Équivalent utilisant une chaîne de caractères     * }     * ```     *     * Liste des variables :     *   - `fileName`: Le nom du fichier.     *   - `key`: La clé du contenu.     *   - `locale`: La locale du contenu.     *   - `extension`: L'extension du fichier.     *   - `componentFileName`: Le nom du fichier du composant.     *   - `componentExtension`: L'extension du fichier du composant.     *   - `format`: Le format du dictionnaire.     *   - `componentFormat`: Le format du dictionnaire du composant.     *   - `componentDirPath`: Le chemin du répertoire du composant.     */    output: ({ fileName, extension }) => `./${fileName}${extension}`,    /**     * Indique si les composants doivent être enregistrés après avoir été transformés.     *     * - Si `true`, le compilateur réécrira le fichier du composant sur le disque. Ainsi, la transformation sera permanente et le compilateur sautera la transformation pour le prochain processus. De cette façon, le compilateur peut transformer l'application, puis être supprimé.     *     * - Si `false`, le compilateur injectera l'appel de fonction `useIntlayer()` dans le code du build uniquement et gardera la base de code intacte. La transformation sera effectuée uniquement en mémoire.     */    saveComponents: false,    /**     * Insérer uniquement le contenu dans le fichier généré. Utile pour les sorties JSON i18next ou ICU MessageFormat par locale.     *     * - `output: ({ locale, key }) => `./locale/${locale}/${key}.json`,`     */    noMetadata: false,    /**     * Préfixe de clé de dictionnaire     */    dictionaryKeyPrefix: "", // Ajouter un préfixe optionnel pour les clés de dictionnaire extraites  },};export default config;
      npx intlayer test         # Tester s'il y a des traductions manquantes
      npx intlayer fill         # Remplir les traductions manquantes
      npx intlayer extract