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. Por que Intlayer?
    Criação:2024-08-14Última atualização:2025-09-27
    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. "Lançamento do Compilador"
      v7.3.127/11/2025
    2. "Atualização da tabela comparativa"
      v5.8.019/08/2025
    3. "Início do histórico"
      v5.5.1029/06/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

    Por que você deve considerar o Intlayer?

    O que é o Intlayer?

    Intlayer é uma biblioteca de internacionalização projetada especificamente para desenvolvedores JavaScript. Ela permite a declaração do seu conteúdo em qualquer lugar do seu código. Ela converte declarações de conteúdo multilíngue em dicionários estruturados para integrar facilmente no seu código. Usando TypeScript, o Intlayer torna seu desenvolvimento mais robusto e eficiente.

    Por que o Intlayer foi criado?

    O Intlayer foi criado para resolver um problema comum que afeta todas as bibliotecas i18n comuns, como next-intl, react-i18next, react-intl, next-i18next, react-intl e vue-i18n.

    Todas essas soluções adotam uma abordagem centralizada para listar e gerenciar seu conteúdo. Por exemplo:

    bash
    Copiar código

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

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

    Ou aqui usando namespaces:

    bash
    Copiar código

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

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

    Este tipo de arquitetura retarda o processo de desenvolvimento e torna a base de código mais complexa de manter por vários motivos:

    1. Para cada novo componente criado, você deve:

      • Criar o novo recurso/namespace na pasta locales
      • Lembrar de importar o novo namespace em sua página
      • Traduzir seu conteúdo (muitas vezes feito manualmente por copiar/colar de provedores de IA)
    2. Para qualquer alteração feita em seus componentes, você deve:

      • Procurar o recurso/namespace relacionado (longe do componente)
      • Traduzir seu conteúdo
      • Garantir que seu conteúdo esteja atualizado para cada localidade
      • Verificar se seu namespace não inclui chaves/valores não utilizados
      • Garantir que a estrutura de seus arquivos JSON seja a mesma para todas as localidades

    Em projetos profissionais que utilizam essas soluções, plataformas de localização são frequentemente usadas para ajudar a gerenciar a tradução do seu conteúdo. No entanto, isso pode rapidamente se tornar dispendioso para grandes projetos.

    Para resolver este problema, o Intlayer adota uma abordagem que delimita seu conteúdo por componente e mantém seu conteúdo próximo ao seu componente, como costumamos fazer com CSS (styled-components), tipos, documentação (storybook) ou testes unitários (jest).

    bash
    Copiar código

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

    .└── components    └── MyComponent        ├── index.content.ts        ├── index.test.tsx        ├── index.stories.tsx        └── index.tsx
    ./components/MyComponent/index.content.ts
    Copiar código

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

    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
    Copiar código

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

    import { useIntlayer } from "react-intlayer";
    
    export const ComponentExample = () => {
      const { myTranslatedContent } = useIntlayer("component-example");
    
      return <span>{myTranslatedContent}</span>;
    };

    Esta abordagem permite que você:

    1. Aumente a velocidade de desenvolvimento

      • Arquivos .content.{{ts|mjs|cjs|json}} podem ser criados usando uma extensão do VSCode
      • Ferramentas de IA de preenchimento automático em seu IDE (como o GitHub Copilot) podem ajudá-lo a declarar seu conteúdo, reduzindo o copiar/colar
    2. Limpe sua base de código

      • Reduza a complexidade
      • Aumente a manutenibilidade
    3. Duplique seus componentes e seus conteúdos relacionados com mais facilidade (Exemplo: componentes de login/registro, etc.)

      • Limitando o risco de impactar o conteúdo de outros componentes
      • Copiando/colando seu conteúdo de uma aplicação para outra sem dependências externas
    4. Evite poluir sua base de código com chaves/valores não utilizados para componentes não utilizados

      • Se você não usar um componente, o Intlayer não importará seu conteúdo relacionado
      • Se você excluir um componente, será mais fácil lembrar de remover seu conteúdo relacionado, pois ele estará presente na mesma pasta
    5. Reduza o custo de raciocínio para agentes de IA declararem seu conteúdo multilíngue

      • O agente de IA não terá que varrer toda a sua base de código para saber onde implementar seu conteúdo
      • As traduções podem ser feitas facilmente por ferramentas de IA de preenchimento automático em seu IDE (como o GitHub Copilot)
    6. Otimize o desempenho de carregamento

      • Se um componente for carregado tardiamente (lazy-loaded), seu conteúdo relacionado será carregado ao mesmo tempo

    Recursos adicionais do Intlayer

    Mostrar todo o conteúdo da tabela

    Abrir a tabela em um modal para ver todo o conteúdo claramente

    Recurso Descrição
    Recurso Suporte Multi-Framework

    O Intlayer é compatível com todos os principais frameworks e bibliotecas, incluindo Next.js, React, Vite, Vue.js, Nuxt, Preact, Express e muito mais.
    Feature Gestão de Conteúdo Baseada em JavaScript

    Aproveite a flexibilidade do JavaScript para definir e gerenciar seu conteúdo com eficiência.

    - Declaração de conteúdo
    Recurso Compilador

    O Compilador Intlayer extrai automaticamente o conteúdo dos componentes e gera os arquivos de dicionário.

    - Compilador
    Feature Arquivo de Declaração de Conteúdo por Localidade

    Acelere seu desenvolvimento declarando seu conteúdo uma vez, antes da geração automática.

    - Arquivo de Declaração de Conteúdo por Localidade
    Feature Ambiente com Segurança de Tipos

    Utilize o TypeScript para garantir que suas definições de conteúdo e código estejam livres de erros, beneficiando-se também do preenchimento automático do IDE.

    - Configuração do TypeScript
    Feature Configuração Simplificada

    Comece a rodar rapidamente com configuração mínima. Ajuste as configurações de internacionalização, roteamento, IA, build e tratamento de conteúdo com facilidade.

    - Explore a integração com Next.js
    Feature Recuperação de Conteúdo Simplificada

    Não há necessidade de chamar sua função t para cada item de conteúdo. Recupere todo o seu conteúdo diretamente usando um único hook.

    - Integração com React
    Feature Implementação Consistente de Server Components

    Perfeitamente adequado para server components do Next.js, use a mesma implementação para componentes client e server, sem necessidade de passar sua função t por cada server component.

    - Server Components
    Feature Base de Código Organizada

    Mantenha sua base de código mais organizada: 1 componente = 1 dicionário na mesma pasta. Traduções próximas aos seus respectivos componentes aumentam a manutenibilidade e a clareza.

    - Como o Intlayer funciona
    Feature Roteamento Avançado

    Suporte total ao roteamento de aplicativos, adaptando-se perfeitamente a estruturas complexas de aplicativos, para Next.js, React, Vite, Vue.js, etc.

    - Explore a integração com Next.js
    Feature Suporte a Markdown

    Importe e interprete arquivos de localidade e Markdown remoto para conteúdo multilíngue, como políticas de privacidade, documentação, etc. Interprete e torne os metadados de Markdown acessíveis em seu código.

    - Arquivos de conteúdo
    Feature Editor Visual e CMS Gratuitos

    Um editor visual e CMS gratuitos estão disponíveis para escritores de conteúdo, removendo a necessidade de uma plataforma de localização. Mantenha seu conteúdo sincronizado usando Git, ou externalize-o total ou parcialmente com o CMS.

    - Editor Intlayer
    - CMS Intlayer
    Feature Conteúdo Tree-shakable

    Conteúdo tree-shakable, reduzindo o tamanho do bundle final. Carrega o conteúdo por componente, excluindo qualquer conteúdo não utilizado do seu bundle. Suporta carregamento tardio (lazy loading) para aumentar a eficiência de carregamento do app.

    - Otimização do build do app
    Feature Renderização Estática

    Não bloqueia a Renderização Estática.

    - Integração com Next.js
    Feature Tradução Baseada em IA

    Transforme seu site em 231 idiomas com apenas um clique usando as ferramentas avançadas de tradução baseadas em IA do Intlayer, usando seu próprio provedor de IA/chave de API.

    - Integração de CI/CD
    - CLI do Intlayer
    - Auto preenchimento
    Feature Integração do Servidor MCP

    Fornece um servidor MCP (Model Context Protocol) para automação de IDE, permitindo uma gestão de conteúdo fluida e fluxos de trabalho de i18n diretamente no seu ambiente de desenvolvimento.

    - Servidor MCP
    Feature Extensão para VSCode

    O Intlayer fornece uma extensão para VSCode para ajudá-lo a gerenciar seu conteúdo e traduções, criar seus dicionários, traduzir seu conteúdo e muito mais.

    - Extensão para VSCode
    Feature Interoperabilidade

    Permite interoperabilidade com react-i18next, next-i18next, next-intl e react-intl.

    - Intlayer e react-intl
    - Intlayer e next-intl
    - Intlayer e next-i18next
    Teste de Traduções Ausentes (CLI/CI) ✅ CLI: npx intlayer content test (auditoria compatível com CI)

    Comparação do Intlayer com outras soluções

    Mostrar todo o conteúdo da tabela

    Abrir a tabela em um modal para ver todo o conteúdo claramente

    Recurso intlayer react-i18next react-intl (FormatJS) lingui next-intl next-i18next vue-i18n
    Traduções Próximas aos Componentes ✅ Sim, conteúdo colocalizado com cada componente ❌ Não ❌ Não ❌ No ❌ Não ❌ Não ✅ Sim - usando Single File Components (SFCs)
    Integração com TypeScript ✅ Avançada, tipos estritos gerados automaticamente ⚠️ Básica; configuração extra para segurança ✅ Boa, mas menos estrita ⚠️ Tipagens, precisa de configuração ✅ Boa ⚠️ Básica ✅ Boa (tipos disponíveis; segurança de chaves precisa de setup)
    Detecção de Tradução Ausente ✅ Destaque de erro no TypeScript e erro/aviso no tempo de build ⚠️ Principalmente strings de fallback em tempo de execução ⚠️ Strings de fallback ⚠️ Precisa de configuração extra ⚠️ Fallback em tempo de execução ⚠️ Fallback em tempo de execução ⚠️ Fallback/avisos em tempo de execução (configurável)
    Conteúdo Rico (JSX/Markdown/componentes) ✅ Suporte direto ⚠️ Limitado / apenas interpolação ⚠️ Sintaxe ICU, não JSX real ⚠️ Limitado ❌ Não projetado para nós ricos ⚠️ Limitado ⚠️ Limitado (componentes via <i18n-t>, Markdown via plugins)
    Tradução baseada em IA ✅ Sim, suporta vários provedores de IA. Utilizável com suas próprias chaves de API. Considera o contexto da sua aplicação e o escopo do conteúdo ❌ Não ❌ Não ❌ Não ❌ Não ❌ Não ❌ Não
    Editor Visual ✅ Sim, Editor Visual local + CMS opcional; pode externalizar o conteúdo da base de código; incorporável ❌ Não / disponível via plataformas de localização externas ❌ Não / disponível via plataformas de localização externas ❌ Não / disponível via plataformas de localização externas ❌ Não / disponível via plataformas de localização externas ❌ Não / disponível via plataformas de localização externas ❌ Não / disponível via plataformas de localização externas
    Roteamento Localizado ✅ Sim, suporta caminhos localizados nativamente (funciona com Next.js e Vite) ⚠️ Sem suporte nativo, requer plugins (ex: next-i18next) ou configuração de roteador personalizada ❌ Não, apenas formatação de mensagens, o roteamento deve ser manual ⚠️ Sem suporte nativo, requer plugins ou configuração manual ✅ Nativo, App Router suporta segmento [locale] ✅ Nativo ✅ Nativo
    Geração Dinâmica de Rotas ✅ Sim ⚠️ Plugin/ecossistema ou configuração manual ❌ Não fornecido ⚠️ Plugin/manual ✅ Sim ✅ Sim ❌ Não fornecido (Nuxt i18n fornece)
    Pluralização ✅ Padrões baseados em enumeração ✅ Configurável (plugins como i18next-icu) ✅ (ICU) ✅ (ICU/messageformat) ✅ Boa ✅ Boa ✅ Regras de pluralização integradas
    Formatação (datas, números, moedas) ✅ Formatadores otimizados (Intl sob o capô) ⚠️ Via plugins ou uso personalizado do Intl ✅ Formatadores ICU ✅ Helpers ICU/CLI ✅ Boa (helpers Intl) ✅ Boa (helpers Intl) ✅ Formatadores de data/número integrados (Intl)
    Formato de Conteúdo ✅ .tsx, .ts, .js, .json, .md, .txt, (.yaml WIP) ⚠️ .json ✅ .json, .js ⚠️ .po, .json ✅ .json, .js, .ts ⚠️ .json ✅ .json, .js
    Suporte a ICU ⚠️ WIP ⚠️ Via plugin (i18next-icu) ✅ Sim ✅ Sim ✅ Sim ⚠️ Via plugin (i18next-icu) ⚠️ Via formatador/compilador personalizado
    Helpers de SEO (hreflang, sitemap) ✅ Ferramentas integradas: helpers para sitemap, robots.txt, metadados ⚠️ Plugins da comunidade/manual ❌ Não é o núcleo ❌ Não é o núcleo ✅ Boa ✅ Boa ❌ Não é o núcleo (Nuxt i18n fornece helpers)
    Ecossistema / Comunidade ⚠️ Menor, mas crescendo rápido e reativo ✅ Maior e maduro ✅ Grande ⚠️ Menor ✅ Tamanho médio, focado no Next.js ✅ Tamanho médio, focado no Next.js ✅ Grande no ecossistema Vue
    Renderização no Lado do Servidor e Server Components ✅ Sim, simplificado para SSR / React Server Components ⚠️ Suportado no nível da página, mas precisa passar funções-t na árvore de componentes para filhos server components ⚠️ Suportado no nível da página com configuração adicional, mas precisa passar funções-t na árvore de componentes para filhos server components ✅ Suportado, configuração necessária ⚠️ Suportado no nível da página, mas precisa passar funções-t na árvore de componentes para filhos server components ⚠️ Suportado no nível da página, mas precisa passar funções-t na árvore de componentes para filhos server components ✅ SSR via Nuxt/Vue SSR (sem RSC)
    Tree-shaking (carrega apenas o conteúdo usado) ✅ Sim, por componente no tempo de build via plugins Babel/SWC ⚠️ Geralmente carrega tudo (pode ser melhorado com namespaces/code-splitting) ⚠️ Geralmente carrega tudo ❌ Não é o padrão ⚠️ Parcial ⚠️ Parcial ⚠️ Parcial (com code-splitting/configuração manual)
    Carregamento Tardio (Lazy Loading) ✅ Sim, por localidade / por dicionário ✅ Sim (ex: backends/namespaces sob demanda) ✅ Sim (bundles de localidade divididos) ✅ Sim (importações dinâmicas de catálogo) ✅ Sim (por rota/por localidade), precisa de gestão de namespace ✅ Sim (por rota/por localidade), precisa de gestão de namespace ✅ Sim (mensagens de localidade assíncronas)
    Limpar conteúdo não utilizado ✅ Sim, por dicionário no tempo de build ❌ Não, apenas via segmentação manual de namespace ❌ Não, todas as mensagens declaradas são agrupadas ✅ Sim, chaves não utilizadas detectadas e removidas no build ❌ Não, pode ser gerenciado manualmente com gestão de namespace ❌ Não, pode ser gerenciado manualmente com gestão de namespace ❌ Não, apenas possível via lazy-loading manual
    Gestão de Projetos Grandes ✅ Incentiva a modularidade, adequado para design-systems ⚠️ Precisa de boa disciplina de arquivos ⚠️ Catálogos centrais podem se tornar grandes ⚠️ Pode se tornar complexo ✅ Modular com configuração ✅ Modular com configuração ✅ Modular com configuração do Vue Router/Nuxt i18n

    Estrelas do GitHub

    As estrelas do GitHub são um forte indicador da popularidade de um projeto, da confiança da comunidade e da relevância a longo prazo. Embora não sejam uma medida direta da qualidade técnica, elas refletem quantos desenvolvedores consideram o projeto útil, acompanham seu progresso e têm probabilidade de adotá-lo. Para estimar o valor de um projeto, as estrelas ajudam a comparar a tração entre as alternativas e fornecem insights sobre o crescimento do ecossistema.

    Star History Chart


    Interoperabilidade

    o intlayer também pode ajudar a gerenciar seus namespaces react-intl, react-i18next, next-intl, next-i18next e vue-i18n.

    Usando o intlayer, você pode declarar seu conteúdo no formato da sua biblioteca i18n favorita, e o intlayer gerará seus namespaces no local de sua escolha (exemplo: /messages/{{locale}}/{{namespace}}.json).

    Começar
    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.

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