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
- "Adicionada a seção Por que o Intlayer em vez de alternativas"v8.11.231/05/2026
- "Lançamento do Compilador"v7.3.127/11/2025
- "Tabela comparativa atualizada"v5.8.019/08/2025
- "Inicialização 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êsSe 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çãoCopiar 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 de seu conteúdo em qualquer parte do seu código. Converte declarações de conteúdo multilíngue em dicionários estruturados para integrar facilmente no seu código. Utilizando TypeScript, o Intlayer torna o seu desenvolvimento mais forte e mais eficiente.
Por que o Intlayer em vez de alternativas?
Comparado às soluções principais como next-intl ou i18next, o Intlayer é uma solução que vem com otimizações integradas, tais como:
Em vez de carregar arquivos JSON massivos em suas páginas, carregue apenas o conteúdo estritamente necessário. O Intlayer ajuda a reduzir o tamanho do seu bundle e de suas páginas em até 50%.
Delimitar o conteúdo de sua aplicação ao nível de componentes facilita a manutenção de aplicações de grande porte. Você pode duplicar ou excluir uma única pasta de funcionalidade sem o fardo mental de ter que revisar toda a sua base de código de conteúdo. Além disso, o Intlayer é totalmente tipado para garantir a precisão de seus conteúdos.
Co-localizar conteúdo e código reduz o contexto necessário para modelos de linguagem grandes (LLMs). O Intlayer também vem com uma suite de ferramentas, como uma CLI para testar traduções ausentes, LSP, MCP e agent skills, para tornar a experiência de desenvolvimento (DX) ainda mais fluida para os agentes de IA.
O Intlayer oferece uma série de recursos adicionais que outras soluções i18n não têm, tais como suporte a Markdown, carregamento de conteúdo externo, carregamento de conteúdo a partir de arquivos, atualização de conteúdo em tempo real, editor visual e muito mais.
Use automação para traduzir em seu pipeline de CI/CD utilizando o LLM de sua preferência com o custo direto do seu provedor de IA. O Intlayer também oferece um compilador para automatizar a extração de conteúdo, bem como uma plataforma web para ajudar a traduzir em segundo plano.
Conectar arquivos JSON massivos aos componentes pode levar a problemas de desempenho e reatividade. O Intlayer otimiza o carregamento do conteúdo em tempo de compilação (build).
Mais do que apenas uma solução de i18n, o Intlayer fornece um editor visual auto-hospedado e um CMS completo para ajudar você a gerenciar seu conteúdo multilíngue em tempo real, tornando a colaboração com tradutores, redatores e outros membros da equipe perfeitamente integrada. O conteúdo pode ser armazenado localmente e/ou remotamente.
Se você usa frameworks diferentes para partes diferentes da sua aplicação (ex: React, React-native, Vue, Angular, Svelte, etc.), o Intlayer fornece uma maneira de usar uma sintaxe e implementação comuns em todos os principais frameworks de frontend. Você também poderá compartilhar suas declarações de conteúdo no seu design system, aplicações, backend, etc.
Por que o Intlayer foi criado?
O Intlayer foi criado para resolver um problema comum que afeta todas as bibliotecas de i18n habituais 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 seus conteúdos. Por exemplo:
Copiar o código para a área de transferência
Ou aqui utilizando namespaces:
Copiar o código para a área de transferência
Esse tipo de arquitetura torna o processo de desenvolvimento mais lento e a base de código mais complexa de manter por vários motivos:
Para qualquer novo componente criado, você deve:
- Criar o novo recurso/namespace na pasta
locales - Lembrar de importar o novo namespace na sua página
- Traduzir seu conteúdo (frequentemente feito de forma manual por cópia/cola de provedores de IA)
- Criar o novo recurso/namespace na pasta
Para qualquer mudança feita em seus componentes, você deve:
- Procurar o recurso/namespace correspondente (longe do componente)
- Traduzir seu conteúdo
- Garantir que seu conteúdo esteja atualizado para todos os idiomas
- Verificar se o seu namespace não inclui chaves/valores não utilizados
- Garantir que a estrutura dos seus arquivos JSON seja a mesma para todos os idiomas
Em projetos profissionais que utilizam essas soluções, plataformas de localização são frequentemente utilizadas para ajudar a gerenciar a tradução de conteúdo. No entanto, isso pode rapidamente se tornar caro para projetos grandes.
Para resolver esse problema, o Intlayer adota uma abordagem que delimita seu conteúdo por componente e mantém o conteúdo próximo ao componente, como costumamos fazer com CSS (styled-components), tipos, documentação (storybook) ou testes unitários (jest).
Copiar o código para a área de transferência
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;
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-lhe:
Aumentar a velocidade de desenvolvimento
- Os arquivos
.content.{ts|js|mjs|cjs|json|tsx|jsx|md|mdx|yaml|yml}podem ser criados utilizando uma extensão do VSCode - Ferramentas de autocompletar de IA no seu IDE (como GitHub Copilot) podem ajudá-lo a declarar seus conteúdos, reduzindo cópias/colas
- Os arquivos
Limpar a sua base de código
- Reduzir a complexidade
- Aumentar a manutenibilidade
Duplicar os seus componentes e seus conteúdos correspondentes com mais facilidade (Exemplo: componentes de login/registro, etc.)
- Limitando o risco de impactar o conteúdo de outros componentes
- Copiando e colando seus conteúdos de uma aplicação para outra sem dependências externas
Evitar poluir a 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á o conteúdo relacionado
- Se excluir um componente, lembrará mais facilmente de remover o conteúdo relacionado, pois ele estará presente na mesma pasta
Reduzir o custo de raciocínio para os agentes de IA ao declararem os seus conteúdos multilíngues
- O agente de IA não terá que escanear toda a sua base de código para saber onde implementar seu conteúdo
- As traduções podem ser facilmente feitas por ferramentas de autocompletar de IA no seu IDE (como GitHub Copilot)
Otimizar o desempenho de carregamento
- Se um componente for carregado de forma diferida (lazy-loaded), seu conteúdo relacionado será carregado ao mesmo tempo
Recursos adicionais do Intlayer
Abrir a tabela em um modal para ver todo o conteúdo claramente
| Recurso | Descrição |
|---|---|
![]() | Suporte Cross-Framework O Intlayer é compatível com todos os principais frameworks e bibliotecas, incluindo Next.js, React, Vite, Vue.js, Nuxt, Preact, Express e mais. |
![]() | Gerenciamento de Conteúdo via JavaScript Aproveite a flexibilidade do JavaScript para definir e gerenciar seu conteúdo de forma eficiente. - Declaração de conteúdo |
![]() | Compilador O Compilador Intlayer extrai automaticamente o conteúdo dos componentes e gera os arquivos de dicionário. - Compilador |
![]() | Arquivo de Declaração de Conteúdo por Idioma Acelere o seu desenvolvimento declarando o seu conteúdo uma única vez, antes da geração automática. - Arquivo de Declaração de Conteúdo por Idioma |
![]() | Ambiente Seguro para Tipos (Type-Safe) Aproveite o TypeScript para garantir que suas definições de conteúdo e código estejam livres de erros, enquanto se beneficia do preenchimento automático do IDE. - Configuração do TypeScript |
![]() | Configuração Simplificada Comece a funcionar rapidamente com uma configuração mínima. Ajuste as configurações de internacionalização, roteamento, IA, compilação e manuseio de conteúdo de maneira fácil. - Explorar integração com Next.js |
![]() | Recuperação de Conteúdo Simplificada Não há necessidade de chamar sua função t para cada elemento de conteúdo. Recupere todo o seu conteúdo diretamente usando um único hook.- Integração com React |
![]() | Implementação Consistente de Componentes de Servidor Perfeitamente adequado para componentes de servidor Next.js, use a mesma implementação tanto para componentes cliente quanto servidor, sem a necessidade de passar sua função t através de cada componente de servidor. - Componentes de Servidor |
![]() | 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 a seus respectivos componentes melhoram a manutenibilidade e a clareza. - Como o Intlayer funciona |
![]() | Roteamento Aprimorado Suporte completo de roteamento de apps, adaptando-se perfeitamente a estruturas de aplicações complexas, para Next.js, React, Vite, Vue.js, etc. - Explorar integração com Next.js |
![]() | Suporte a Markdown Importe e interprete arquivos locais e Markdown remoto para conteúdos multilíngues 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 |
![]() | Editor Visual & CMS Gratuitos Um editor visual e CMS gratuitos estão disponíveis para criadores de conteúdo, eliminando a necessidade de uma plataforma de localização externa. Mantenha seu conteúdo sincronizado usando o Git, ou externalize-o total ou parcialmente com o CMS. - Editor do Intlayer - CMS do Intlayer |
![]() | Conteúdo com Otimização Tree-shaking Conteúdo compatível com otimização tree-shaking, reduzindo o tamanho do pacote final. Carrega conteúdo por componente, excluindo do bundle os conteúdos não utilizados. Suporta carregamento lento (lazy loading) para melhorar a eficiência de carregamento do app. - Otimização do build de aplicação |
![]() | Renderização Estática Não bloqueia o Renderização Estática. - Integração com Next.js |
![]() | Tradução Inteligente baseada em IA Transforme o seu site para até 231 idiomas com apenas um clique usando as ferramentas avançadas de tradução por IA do Intlayer com o seu próprio provedor de IA/chave de API. - Integração com CI/CD - Intlayer CLI - Preenchimento Automático |
![]() | Integração do Servidor MCP Fornece um servidor MCP (Model Context Protocol) para automação de IDE, permitindo gerenciamento integrado de conteúdo e fluxos de trabalho i18n diretamente no seu ambiente de desenvolvimento. - Servidor MCP |
![]() | Extensão VSCode O Intlayer fornece uma extensão do VSCode para ajudá-lo a gerenciar seu conteúdo e traduções, construir dicionários, traduzir conteúdos e muito mais. - Extensão VSCode |
![]() | Interoperabilidade Permite a interoperabilidade com react-i18next, next-i18next, next-intl e react-intl. - Intlayer e react-intl - Intlayer e next-intl - Intlayer e next-i18next - Adaptadores de compatibilidade do Intlayer |
| Testar Traduções Ausentes (CLI/CI) | ✅ CLI: npx intlayer content test (auditoria compatível com CI) |
Comparação do Intlayer com outras soluções
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 co-localizado com cada componente | ❌ Não | ❌ No | ❌ Não | ❌ Não | ❌ Não | ✅ Sim - usando Single File Components (SFCs) |
| Integração com TypeScript | ✅ Avançada, tipos estritos autogerados | ⚠️ Básica; configuração adicional para maior segurança | ✅ Boa, mas menos estrita | ⚠️ Tipagem, necessita configuração | ✅ Boa | ⚠️ Básica | ✅ Boa (tipos disponíveis; segurança das chaves precisa de ajuste) |
| Detecção de Tradução Ausente | ✅ Erro TypeScript destacado e erro/aviso no build-time | ⚠️ Principalmente strings de fallback em tempo de execução (runtime) | ⚠️ Strings de fallback | ⚠️ Requer configuração adicional | ⚠️ Fallback em runtime | ⚠️ Fallback em runtime | ⚠️ Fallback/avisos em runtime (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 com base em IA | ✅ Sim, suporta múltiplos provedores de IA. Utilizável com chaves de API próprias. Considera o contexto da aplicação e 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 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 por padrão (funciona com Next.js & Vite) | ⚠️ Não integrado, requer plugins (ex. next-i18next) ou config de roteador personalizada | ❌ Não, apenas formatação de mensagens, roteamento manual | ⚠️ Não integrado, requer plugins ou config manual | ✅ Integrado, App Router suporta segmento [locale] | ✅ Integrado | ✅ Integrado |
| 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 (dates, numbers, currencies) | ✅ Formatadores otimizados (Intl sob o capô) | ⚠️ Via plugins ou uso customizado de Intl | ✅ Formatadores ICU | ✅ Helpers de ICU/CLI | ✅ Boa (helpers do Intl) | ✅ Boa (helpers do Intl) | ✅ Formatadores de data/número integrados (Intl) |
| Formato do 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 customizado |
| SEO Helpers (hreflang, sitemap) | ✅ Ferramentas integradas: helpers para sitemap, robots.txt, metadata | ⚠️ 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 em rápido crescimento e reativo | ✅ Maior e maduro | ✅ Grande | ⚠️ Menor | ✅ Médio, focado em Next.js | ✅ Médio, focado em Next.js | ✅ Grande no ecossistema Vue |
| Server-side Rendering & Server Components | ✅ Sim, otimizado para SSR / React Server Components | ⚠️ Suportado ao nível de página mas precisa passar t-funções na árvore de componentes para componentes de servidor filhos | ⚠️ Suportado ao nível de página com configuração adicional, mas precisa passar t-funções na árvore de componentes para componentes de servidor filhos | ✅ Suportado, configuração requerida | ⚠️ Suportado ao nível de página mas precisa passar t-funções na árvore de componentes para componentes de servidor filhos | ⚠️ Suportado ao nível de página mas precisa passar t-funções na árvore de componentes para componentes de servidor filhos | ✅ SSR via Nuxt/Vue SSR (sem RSC) |
| Tree-shaking (carregar apenas conteúdo usado) | ✅ Sim, por componente em build-time via plugins Babel/SWC | ⚠️ Geralmente carrega tudo (pode ser melhorado com namespaces/divisão de código) | ⚠️ Geralmente carrega tudo | ❌ Não é padrão | ⚠️ Parcial | ⚠️ Parcial | ⚠️ Parcial (com divisão de código/configuração manual) |
| Carregamento diferido (Lazy loading) | ✅ Sim, por idioma / por dicionário | ✅ Sim (ex. backends/namespaces sob demanda) | ✅ Sim (split dos bundles de locale) | ✅ Sim (importações dinâmicas de catálogo) | ✅ Sim (por rota/por idioma), necessita gerenciamento de namespaces | ✅ Sim (por rota/por idioma), necessita gerenciamento de namespaces | ✅ Sim (mensagens de idioma assíncronas) |
| Purgar conteúdo não utilizado | ✅ Sim, por dicionário no build-time | ❌ Não, apenas via segmentação manual de namespaces | ❌ Não, todas as mensagens declaradas são incluídas | ✅ Sim, chaves não utilizadas são detectadas e descartadas na build | ❌ Não, pode ser gerenciado de forma manual com controle de namespaces | ❌ Não, pode ser gerenciado de forma manual com controle de namespaces | ❌ Não, apenas possível via carregamento diferido manual |
| Gerenciamento de Grandes Projetos | ✅ Encoraja modularidade, ideal para design-system | ⚠️ Requer 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 de Vue Router/Nuxt i18n |
Estrelas no GitHub
As estrelas no 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, refletem quantos desenvolvedores consideram o projeto útil, acompanham seu progresso e provavelmente o adotarão. Para estimar o valor de um projeto, as estrelas ajudam a comparar a tração entre alternativas e fornecem insights sobre o crescimento do ecossistema.
Interoperabilidade
intlayer também pode ajudar a gerenciar seus namespaces para react-intl, react-i18next, next-intl, next-i18next e vue-i18n.
Utilizando intlayer, você pode declarar seu conteúdo no formato de sua biblioteca i18n favorita, e o intlayer gerará seus namespaces no local de sua escolha (exemplo: /messages/{{locale}}/{{namespace}}.json).
Se você quiser continuar usando a API da sua biblioteca i18n atual, o intlayer também fornece adaptadores de compatibilidade (compat adapters): pacotes que expõem exatamente a mesma API que react-i18next, next-intl, react-intl, vue-i18n e outras, mas servidos pelos dicionários do Intlayer. Isso permite migrar progressivamente sem reescrever seu código. Consulte a documentação dos adaptadores de compatibilidade.
Perguntas Frequentes
Três gerações coexistem no ecossistema:
- Bibliotecas de catálogo em tempo de execução:
i18next,react-i18next,next-i18next,vue-i18n,ngx-translate,svelte-i18n. Namespaces JSON carregados em runtime. Maduras, agnósticas de framework, não tipadas e enviadas por inteiro para a página. - Bibliotecas de mensagens em tempo de compilação:
Lingui,Paraglide, enext-intloureact-intlcom etapa de extração. Melhor comportamento de bundle e tipagem parcial, ainda mantendo catálogos centralizados. - Bibliotecas com camada de conteúdo (Content layer):
Intlayer. O conteúdo é declarado e compilado por componente, de modo que tipagem, tree-shaking, ferramentas de edição e tradução por IA se originam das mesmas declarações.
Muito menos do que uma configuração baseada em namespaces, porque uma página nunca baixa um catálogo que não renderiza. O markup renderizado no servidor resolve seu conteúdo no próprio servidor, e o compilador em tempo de build substitui as chamadas useIntlayer pelas entradas exatas que o componente utiliza, descartando chaves e idiomas não utilizados. Os dicionários dinâmicos dividem o restante por locale. Comparado às alternativas habituais, o Intlayer reduz o tamanho do bundle e da página em até 50%. Consulte otimização de bundle e o benchmark.
Sim, e existem dois caminhos. Você pode migrar o conteúdo progressivamente com o guia de migração do i18next ou o guia de migração do next-intl. Ou você pode manter sua API atual integralmente: os adaptadores de compatibilidade (compat adapters) expõem exatamente a mesma interface de i18next, react-i18next, next-intl, next-i18next, react-intl, use-intl, vue-i18n e Lingui, porém alimentados pelos dicionários do Intlayer, permitindo que apenas os imports mudem enquanto o código dos componentes permanece idêntico.
Sim. O plugin sync JSON mantém seus arquivos /messages/{locale}/{namespace}.json como fonte de verdade e gera dicionários Intlayer a partir deles, em ambas as direções. O plugin sync PO faz o mesmo para catálogos gettext, e os arquivos por locale permitem dividir o conteúdo por idioma em vez de agrupar todos os locales em um único arquivo.
Não. Execute npx intlayer extract e o Intlayer lê seus arquivos fonte, extrai as strings voltadas para o usuário e escreve um arquivo .content ao lado de cada um, para que você revise um diff em vez de copiar strings para um catálogo uma a uma. Consulte o comando extract.
Para um fluxo de trabalho totalmente automatizado, o Intlayer Compiler faz o mesmo em tempo de build em código JSX, TSX, Vue e Svelte, gerando os dicionários a cada alteração para que não haja necessidade de manter chaves manualmente. Como opera por análise estática, strings criadas exclusivamente em tempo de execução ficam fora de alcance, necessitando de algumas anotações para diferenciar texto do usuário de lógica interna da aplicação.
Cinco ferramentas, todas opcionais:
- Extensão VS Code: navegue de uma chave
useIntlayerdiretamente para o arquivo de conteúdo que a declara, extraia conteúdo de um componente e execute build, fill, test, push e pull pela paleta de comandos ou pela aba dedicada do Intlayer. - Servidor LSP: a mesma inteligência em qualquer editor compatível com LSP, com ir para definição, localizar referências, pré-visualizações de valores traduzidos ao passar o mouse, autocompletar e alertas para chaves não declaradas. Também resolve chamadas de
i18next,react-i18next,next-intleuse-intl, facilitando a migração. - Servidor MCP: expõe a documentação e a CLI do Intlayer para Cursor, VS Code, Claude Desktop, Claude Code e ChatGPT, permitindo que os assistentes respondam com base na documentação atualizada e executem comandos como
intlayer fill. - Agent Skills: habilidades focadas como
intlayer-config,intlayer-clieintlayer-content, além de uma por framework, ensinando ao agente suas regras de roteamento e tipos de nós. - Plugin ESLint: a regra
no-raw-textidentifica strings hardcoded, com regras adicionais para chaves estáticas e conteúdo não utilizado.


















