InícioAmbiente de testeVitrineAppDocBlog
    • Englishinglês
      EN
    • русскийrusso
      RU
    • 日本語japonês
      JA
    • françaisfrancês
      FR
    • 한국어coreano
      KO
    • 中文chinês
      ZH
    • españolespanhol
      ES
    • Deutschalemão
      DE
    • العربيةárabe
      AR
    • italianoitaliano
      IT
    • British Englishinglês (Reino Unido)
      EN-GB
    • portuguêsportuguês
      PT
    • हिन्दीhindi
      HI
    • Türkçeturco
      TR
    • polskipolonês
      PL
    • Indonesiaindonésio
      ID
    • Tiếng Việtvietnamita
      VI
    • українськаucraniano
      UK
    /
    Filtrar documentação por framework
    Alt+←
    Por que Intlayer?
    Começar
    Conceito
    • Como o Intlayer funciona
    • Configuração
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Editor visual
    • CMS
    • Integração CI/CD
    • TraduçãoPluralEnumeraçãoCondiçãoGêneroInserçãoArquivoAninhamentoMarkdownHTMLBusca de função
    • Arquivo por locale
    • Compilador
    • Preenchimento automático
    • Testes
    • Otimização de bundle
    Ambiente
    • Next.js 14 e App Router
      Next.js 15
      Next.js sem locale URL
      Next.js e Page Router
      Compiler
    • Tanstack Start Solid
    • Astro e React
      Astro e Svelte
      Astro e Vue
      Astro e Solid
      Astro e Preact
      Astro e Lit
      Astro e Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt e Vue
    • Vite e Solid
    • SvelteKit
    • Vite e Preact
    • Vite e Vanilla JS
    • Vite e Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native e Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx e React
    Plugins
    • JSON
    • gettext (.po)
    Extensão VS Code
    Agente
    • Servidor MCP
    • Habilidades do agente
    Versões
    • v8
    • v7
    • v6
    Benchmark
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Blog
    Faça uma pergunta
    1. Documentation
    2. Compiler
    Criação:2025-09-09Última atualização:2026-03-12
    Referência esta documentação ao seu assistente AI favorito
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Faça sua pergunta e obtenha um resumo do documento referenciando esta página e o provedor AI de sua escolha

    Histórico de versões

    1. "Update compiler options, add FilePathPattern support"
      v8.2.010/03/2026
    2. "Atualizar opções do compilador"
      v8.1.725/02/2026
    3. "Lançamento do Compiler"
      v7.3.127/11/2025

    O conteúdo desta página foi traduzido com uma IA.

    Veja a última versão do conteúdo original em inglês
    Editar esta documentação

    Se você tiver uma ideia para melhorar esta documentação, sinta-se à vontade para contribuir enviando uma pull request no GitHub.

    Link do GitHub para a documentação
    Copiar

    Copiar o Markdown do documento para a área de transferência

    Intlayer Compiler | Extração Automática de Conteúdo para i18n

    O que é o Intlayer Compiler?

    O Intlayer Compiler é uma ferramenta poderosa projetada para automatizar o processo de internacionalização (i18n) em suas aplicações. Ele escaneia seu código-fonte (JSX, TSX, Vue, Svelte) em busca de declarações de conteúdo, extrai-as e gera automaticamente os arquivos de dicionário necessários. Isso permite que você mantenha seu conteúdo localizado junto aos seus componentes, enquanto o Intlayer gerencia e sincroniza seus dicionários.

    Por que Usar o Intlayer Compiler?

    • Automação: Elimina a cópia manual e colagem de conteúdo nos dicionários.
    • Velocidade: Extração de conteúdo otimizada garantindo que seu processo de build permaneça rápido.
    • Experiência do Desenvolvedor: Mantenha as declarações de conteúdo exatamente onde são usadas, melhorando a manutenção.
    • Atualizações em Tempo Real: Suporta Hot Module Replacement (HMR) para feedback instantâneo durante o desenvolvimento.

    Veja o post do blog Compiler vs. Declarative i18n para uma comparação mais aprofundada.

    Por que não usar o Intlayer Compiler?

    Embora o compilador ofereça uma excelente experiência "funciona automaticamente", ele também introduz algumas compensações das quais você deve estar ciente:

    • Ambiguidade heurística: O compilador deve adivinhar o que é conteúdo voltado para o usuário versus a lógica da aplicação (por exemplo, className="active", códigos de status, IDs de produtos). Em bases de código complexas, isso pode levar a falsos positivos ou strings perdidas que exigem anotações manuais e exceções.
    • Extração apenas estática: A extração baseada em compilador depende de análise estática. Strings que existem apenas em tempo de execução (códigos de erro de API, campos CMS, etc.) não podem ser descobertas ou traduzidas pelo compilador sozinho, então você ainda precisa de uma estratégia i18n de tempo de execução complementar.

    Para uma comparação arquitetural mais profunda, veja o post do blog Compiler vs. Declarative i18n.

    Como alternativa, para automatizar seu processo i18n mantendo controle total sobre seu conteúdo, o Intlayer também fornece um comando de auto-extração intlayer extract (consulte a documentação CLI), ou o comando Intlayer: extract content to Dictionary da extensão Intlayer VS Code (consulte a documentação da extensão VS Code).

    Uso

    Vite

    Para aplicações baseadas em Vite (React, Vue, Svelte, etc.), a maneira mais fácil de usar o compilador é através do plugin vite-intlayer.

    Instalação

    bash
    Copiar código

    Copiar o código para a área de transferência

    npm install vite-intlayer

    Configuração

    Atualize seu vite.config.ts para incluir el plugin intlayerCompiler:

    vite.config.ts
    Copiar código

    Copiar o código para a área de transferência

    import { defineConfig } from "vite";import { intlayer, intlayerCompiler } from "vite-intlayer";export default defineConfig({ plugins: [   intlayer(),   intlayerCompiler(), // Adiciona o plugin do compilador ],});

    See complete tutorial: Intlayer Compiler with Vite+React

    Suporte a Frameworks

    O plugin do Vite detecta e lida automaticamente com diferentes tipos de arquivos:

    • React / JSX / TSX: Suportado nativamente.
    • Vue: Requer @intlayer/vue-compiler.
    • Svelte: Requer @intlayer/svelte-compiler.

    Certifique-se de instalar o pacote do compilador apropriado para o seu framework:

    bash
    Copiar código

    Copiar o código para a área de transferência

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

    Next.js (Babel)

    Para Next.js ou outras aplicações baseadas em Webpack que usam Babel, você pode configurar o compilador usando o plugin @intlayer/babel.

    Instalação

    bash
    Copiar código

    Copiar o código para a área de transferência

    npm install @intlayer/babel

    Configuração

    Atualize seu babel.config.js (ou babel.config.json) para incluir o plugin de extração. Fornecemos um helper getExtractPluginOptions para carregar automaticamente sua configuração do Intlayer.

    babel.config.js
    Copiar código

    Copiar o código para a área de transferência

    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()], ],};

    Esta configuração garante que o conteúdo declarado em seus componentes seja automaticamente extraído e usado para gerar dicionários durante o processo de build.

    See complete tutorial: Intlayer Compiler with Next.js

    Configuração personalizada

    Para personalizar o comportamento do compilador, você pode atualizar o arquivo intlayer.config.ts na raiz do seu projeto.

    intlayer.config.ts
    Copiar código

    Copiar o código para a área de transferência

    import { type IntlayerConfig, Locales } from "intlayer";const config: IntlayerConfig = {  compiler: {    /**     * Indica se o compilador deve ser habilitado.     * Defina como 'build-only' para ignorar o compilador durante o desenvolvimento e acelerar os tempos de inicialização.     */    enabled: true,    /**     * Define o caminho dos arquivos de saída. Substitui `outputDir`.     *     * - Os caminhos `./` são resolvidos em relação ao diretório do componente.     * - Os caminhos `/` são resolvidos em relação à raiz do projeto (`baseDir`).     *     * - A inserção da variável `{{locale}}` no caminho ativará a geração de dicionários separados por idioma.     *     * Exemplo:     * ```ts     * {     *   // Cria arquivos .content.ts multilíngues próximos ao componente     *   output: ({ fileName, extension }) => `./${fileName}${extension}`,     *     *   // output: './{{fileName}}{{extension}}', // Equivalente usando uma string template     * }     * ```     *     * ```ts     * {     *   // Cria arquivos JSON centralizados por idioma na raiz do projeto     *   output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,     *     *   // output: '/locales/{{locale}}/{{key}}.content.json', // Equivalente usando uma string template     * }     * ```     *     * Lista de variáveis:     *   - `fileName`: O nome do arquivo.     *   - `key`: A chave do conteúdo.     *   - `locale`: O idioma do conteúdo.     *   - `extension`: A extensão do arquivo.     *   - `componentFileName`: O nome do arquivo do componente.     *   - `componentExtension`: A extensão do arquivo do componente.     *   - `format`: O formato do dicionário.     *   - `componentFormat`: O formato do dicionário do componente.     *   - `componentDirPath`: O caminho do diretório do componente.     */    output: ({ fileName, extension }) => `./${fileName}${extension}`,    /**     * Se deve guardar as componentes após serem transformadas.     *     * - Se `true`, o compilador reescreverá o arquivo do componente no disco. Portanto, a transformação será permanente, e o compilador pulará a transformação para o próximo processo. Dessa forma, o compilador pode transformar o app, e então pode ser removido.     *     * - Se `false`, o compilador injetará a chamada da função `useIntlayer()` no código apenas na saída da build, e manterá a base de código original intacta. A transformação será feita apenas em memória.     */    saveComponents: false,    /**     * Inserir apenas o conteúdo no arquivo gerado. Útil para saídas i18next ou ICU MessageFormat JSON por idioma.     *     * - `output: ({ locale, key }) => `./locale/${locale}/${key}.json`,`     */    noMetadata: false,    /**     * Prefixo da chave do dicionário     */    dictionaryKeyPrefix: "", // Adicione um prefixo opcional para as chaves de dicionário extraídas  },};export default config;

    Referência de configuração do compilador

    As seguintes propriedades podem ser configuradas no bloco compiler do seu arquivo intlayer.config.ts:

    • enabled:

      • Tipo: boolean | 'build-only'
      • Padrão: true
      • Descrição: Indica se o compilador deve ser habilitado.
    • dictionaryKeyPrefix:

      • Tipo: string
      • Padrão: ''
      • Descrição: Prefixo para as chaves de dicionário extraídas.
    • transformPattern:

      • Tipo: string | string[]
      • Padrão: ['**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}', '!**/node_modules/**']
      • Descrição: (Obsoleto: use build.traversePattern em seu lugar) Padrões para percorrer o código a ser otimizado.
    • excludePattern:

      • Tipo: string | string[]
      • Padrão: ['**/node_modules/**']
      • Descrição: (Obsoleto: use build.traversePattern em seu lugar) Padrões para excluir da otimização.
    • output:

      • Tipo: FilePathPattern
      • Padrão: ({ key }) => 'compiler/${key}.content.json'
      • Descrição: Define o caminho dos arquivos de saída. Substitui outputDir. Manipula variáveis dinâmicas como {{locale}}, {{key}}, {{fileName}}, {{extension}}, {{format}}, {{dirPath}}, {{componentFileName}}, {{componentExtension}}, {{componentFormat}}. Pode ser definido como uma string usando o formato 'my/{{var}}/path' ou como uma função.
      • Nota: ./**/* Os caminhos são resolvidos relativamente ao componente. /**/* os caminhos são resolvidos relativamente ao baseDir do Intlayer.
      • Nota: Se o idioma for definido no caminho, os dicionários serão gerados por idioma.
      • Exemplo: output: ({ locale, key }) => 'compiler/${locale}/${key}.json'
    • noMetadata:

      • Tipo: boolean
      • Padrão: false
      • Descrição: Indica se os metadados devem ser salvos no arquivo. Se verdadeiro, o compilador não salvará os metadados dos dicionários (chave, wrapper de conteúdo). Útil para saídas JSON i18next ou ICU MessageFormat por localidade.
      • Nota: Útil se usado com o plugin loadJSON.
      • Exemplo: Se true: json { "key": "value" } Se false: json { "key": "value", "content": { "key": "value" } }
    • saveComponents:

      • Tipo: boolean
      • Padrão: false
      • Descrição: Indica se os componentes devem ser salvos após serem transformados.
        • Se true, o compilador reescreverá o arquivo do componente no disco. A transformação será permanente, e o compilador poderá ser removido.
        • Se false, o compilador injetará a chamada da função useIntlayer() no código apenas na saída da build, mantendo a base de código original intacta. A transformação será feita apenas em memória.

    Preencher traduções ausentes

    Intlayer fornece uma ferramenta CLI para ajudá-lo a preencher as traduções ausentes. Você pode usar o comando intlayer para testar e preencher as traduções ausentes do seu código.

    bash
    Copiar código

    Copiar o código para a área de transferência

    npx intlayer test         # Testa se há traduções ausentes
    bash
    Copiar código

    Copiar o código para a área de transferência

    npx intlayer fill         # Preencher traduções ausentes

    Extração

    Intlayer fornece uma ferramenta CLI para extrair conteúdo do seu código. Você pode usar o comando intlayer extract para extrair o conteúdo do seu código.

    bash
    Copiar código

    Copiar o código para a área de transferência

    npx intlayer extract
    Para mais detalhes, consulte a documentação da CLI
    Arquivo por locale
    Preenchimento automático
    Alt+→

    Nesta página

      As discussões são anônimas e regularmente revisadas para resolver problemas comuns. Sinta-se à vontade para compartilhar ideias de funcionalidades, feedback sobre a documentação ou qualquer coisa relacionada ao Intlayer, usamos essas informações para moldar nosso roadmap e melhorar o produto.

      npm install vite-intlayer
      import { defineConfig } from "vite";import { intlayer, intlayerCompiler } from "vite-intlayer";export default defineConfig({ plugins: [   intlayer(),   intlayerCompiler(), // Adiciona o plugin do compilador ],});
      # Para Vuenpm install @intlayer/vue-compiler# Para 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: {    /**     * Indica se o compilador deve ser habilitado.     * Defina como 'build-only' para ignorar o compilador durante o desenvolvimento e acelerar os tempos de inicialização.     */    enabled: true,    /**     * Define o caminho dos arquivos de saída. Substitui `outputDir`.     *     * - Os caminhos `./` são resolvidos em relação ao diretório do componente.     * - Os caminhos `/` são resolvidos em relação à raiz do projeto (`baseDir`).     *     * - A inserção da variável `{{locale}}` no caminho ativará a geração de dicionários separados por idioma.     *     * Exemplo:     * ```ts     * {     *   // Cria arquivos .content.ts multilíngues próximos ao componente     *   output: ({ fileName, extension }) => `./${fileName}${extension}`,     *     *   // output: './{{fileName}}{{extension}}', // Equivalente usando uma string template     * }     * ```     *     * ```ts     * {     *   // Cria arquivos JSON centralizados por idioma na raiz do projeto     *   output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,     *     *   // output: '/locales/{{locale}}/{{key}}.content.json', // Equivalente usando uma string template     * }     * ```     *     * Lista de variáveis:     *   - `fileName`: O nome do arquivo.     *   - `key`: A chave do conteúdo.     *   - `locale`: O idioma do conteúdo.     *   - `extension`: A extensão do arquivo.     *   - `componentFileName`: O nome do arquivo do componente.     *   - `componentExtension`: A extensão do arquivo do componente.     *   - `format`: O formato do dicionário.     *   - `componentFormat`: O formato do dicionário do componente.     *   - `componentDirPath`: O caminho do diretório do componente.     */    output: ({ fileName, extension }) => `./${fileName}${extension}`,    /**     * Se deve guardar as componentes após serem transformadas.     *     * - Se `true`, o compilador reescreverá o arquivo do componente no disco. Portanto, a transformação será permanente, e o compilador pulará a transformação para o próximo processo. Dessa forma, o compilador pode transformar o app, e então pode ser removido.     *     * - Se `false`, o compilador injetará a chamada da função `useIntlayer()` no código apenas na saída da build, e manterá a base de código original intacta. A transformação será feita apenas em memória.     */    saveComponents: false,    /**     * Inserir apenas o conteúdo no arquivo gerado. Útil para saídas i18next ou ICU MessageFormat JSON por idioma.     *     * - `output: ({ locale, key }) => `./locale/${locale}/${key}.json`,`     */    noMetadata: false,    /**     * Prefixo da chave do dicionário     */    dictionaryKeyPrefix: "", // Adicione um prefixo opcional para as chaves de dicionário extraídas  },};export default config;
      npx intlayer test         # Testa se há traduções ausentes
      npx intlayer fill         # Preencher traduções ausentes
      npx intlayer extract