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
- "Init history"v8.13.005/06/2026
O conteúdo desta página foi traduzido com uma IA.
Veja a última versão do conteúdo original em inglêsIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Migrando de i18next para Intlayer
Por que migrar de i18next para Intlayer?
Em vez de carregar enormes arquivos JSON em suas páginas, carregue apenas o conteúdo necessário. Intlayer ajuda você a reduzir o tamanho do pacote e da página em até 50%.
Criar escopos para o conteúdo da sua aplicação torna aplicações em larga escala fáceis de manter. Você pode duplicar ou excluir um diretório de recursos inteiro sem o esforço mental de revisar toda a sua base de código de conteúdo. Além disso, Intlayer é fortemente tipado para garantir a precisão do seu conteúdo.
Intlayer também é a solução desenvolvida mais ativamente no ecossistema i18n — problemas são corrigidos rapidamente, novos adaptadores de frameworks são lançados regularmente e a API principal é continuamente refinada com base em feedback do mundo real em produção.
A co-localização do conteúdo reduz o contexto necessário para Modelos de Linguagem de Grande Escala (LLMs). O Intlayer também oferece um conjunto de ferramentas como uma CLI para testar traduções ausentes, LSP, MCP e Habilidades de Agente para tornar a Experiência do Desenvolvedor (DX) muito mais suave para agentes de IA.
Automatize as traduções em seu pipeline de CI/CD usando o LLM de sua preferência pelo custo 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 auxiliar com tradução em segundo plano.
Conectar enormes arquivos JSON aos componentes pode levar a problemas de desempenho e reatividade. O Intlayer otimiza o carregamento do conteúdo no momento do build (build time).
Muito mais que apenas uma solução i18n, o Intlayer fornece um editor visual auto-hospedável e um CMS completo para ajudá-lo a gerenciar seu conteúdo multilíngue em tempo real, tornando perfeita a colaboração com tradutores, redatores e outros membros da equipe. O conteúdo pode ser armazenado local e/ou remotamente.
Estratégias de Migração
Existem duas estratégias complementares para migrar do i18next para o Intlayer:
Adaptador de Compatibilidade (Recomendado para apps existentes) — Instale
@intlayer/i18next. Este pacote expõe exatamente a mesma API doi18next, mas delega todo o trabalho de tradução, por baixo dos panos, ao Intlayer. Mantenha suas chamadas existentes dei18next.t(),i18next.changeLanguage()ecreateInstance()intactas — a única coisa que muda é o caminho de importação e a inicialização.Migração Completa — Substitua gradualmente as APIs do
i18nextpelas ferramentas nativas do Intlayer, e co-localize seu conteúdo em arquivos.content.tspróximos aos seus componentes.
Este guia cobre a Estratégia 1 (adaptador de compatibilidade) primeiro, depois discute a migração completa opcional.
Índice
Migração Rápida
As etapas a seguir são o mínimo necessário para executar seu aplicativo i18next existente no Intlayer, sem fazer alterações na sua base de código.
Instale as Dependências
Instale o pacote principal do Intlayer e o adaptador de compatibilidade:
bashCopiar códigoCopiar o código para a área de transferência
npm install intlayer @intlayer/i18next @intlayer/sync-json-pluginnpx intlayer initVocê pode manter o
i18nextinstalado com segurança — o adaptador de compatibilidade o utiliza como umadevDependency/peerDependencypara tipos TypeScript.Configure o Intlayer
O comando
intlayer initcria um arquivo inicialintlayer.config.ts. Atualize-o para corresponder aos seus locales existentes e aponte o pluginsyncJSONpara os seus arquivos de mensagens:intlayer.config.tsCopiar códigoCopiar o código para a área de transferência
import { Locales, type IntlayerConfig } from "intlayer"; import { syncJSON } from "@intlayer/sync-json-plugin"; const config: IntlayerConfig = { internationalization: { locales: [ Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH, // Adicione todos os seus locales existentes aqui ], defaultLocale: Locales.ENGLISH, }, plugins: [ syncJSON({ // Corresponde à sintaxe de espaço reservado do i18next: {{name}} format: "i18next", source: ({ locale }) => `./src/locales/${locale}.json`, location: "src/locales", }), ], }; export default config;sourcemapeia um locale para o caminho de seu arquivo JSON.locationdiz ao observador (watcher) do Intlayer qual pasta monitorar para alterações. A opçãoformat: 'i18next'garante que espaços reservados como{{name}}sejam interpretados corretamente.Atualize o Alias do Bundler (Opcional)
Se você usa um empacotador (Vite, Webpack, esbuild), você pode injetar um alias de módulo para que
import ... from 'i18next'resolva automaticamente para@intlayer/i18next. Isso remove a necessidade de alterar os caminhos de importação manualmente em toda a sua base de código.Para Vite:
vite.config.tsCopiar códigoCopiar o código para a área de transferência
import { defineConfig } from "vite"; import i18nextVitePlugin from "@intlayer/i18next/plugin"; export default defineConfig({ plugins: [i18nextVitePlugin()], });O
i18nextVitePlugin()encapsula o pluginintlayer()dovite-intlayere adiciona automaticamente o alias dei18next→@intlayer/i18nextpara você. Usar o pluginintlayer()comum dovite-intlayercompila os dicionários, mas não adiciona o alias — você teria que renomear as importações para@intlayer/i18nextmanualmente nesse caso (veja o próximo passo).
Isso é tudo para a migração rápida. Seu aplicativo agora está rodando no Intlayer, mantendo todas as suas importações e a API do i18next intactas.
Migração Completa
As etapas a seguir são opcionais e podem ser feitas gradativamente. Elas desbloqueiam o conjunto completo das funcionalidades do Intlayer: editor visual, CMS, arquivos de conteúdo tipados, automação de tradução por IA e muito mais.
Renomeie Explícitamente as Importações (Opcional)
OpcionalSe você preferir tornar a dependência explícita nos seus arquivos-fonte ou não usar um plugin de bundler para criar alias nas importações, você pode renomear os caminhos de importação manualmente:
Mostrar todo o conteúdo da tabelaAbrir a tabela em um modal para ver todo o conteúdo claramente
Antes Depois import i18next from 'i18next'import i18next from '@intlayer/i18next'import { createInstance } from 'i18next'import { createInstance } from '@intlayer/i18next'import { t } from 'i18next'import { t } from '@intlayer/i18next'Essas são substituições diretas (drop-in) — nenhuma alteração de assinaturas de chamadas, argumentos ou tipos de retorno é necessária.
Habilite a Automação de Tradução por IA
OpcionalCom o Intlayer configurado, você pode usar a CLI para preencher traduções ausentes automaticamente:
bashCopiar códigoCopiar o código para a área de transferência
# Testar traduções ausentes (adicionar ao CI)npx intlayer test# Preencher traduções ausentes usando IAnpx intlayer fillAdicione a configuração de IA ao seu
intlayer.config.ts:intlayer.config.tsCopiar códigoCopiar o código para a área de transferência
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: "i18next", source: ({ locale }) => `./src/locales/${locale}.json`, location: "src/locales", }), ], ai: { apiKey: process.env.OPENAI_API_KEY, // provider: "openai", // padrão // model: "gpt-4o-mini", // padrão }, }; export default config;Verifique a Documentação da CLI do Intlayer para explorar todas as opções disponíveis.
O que pode ser excluído pós-migração
Uma vez que o adaptador de compatibilidade esteja implementado, o seguinte boilerplate padrão do i18next pode ser excluído:
Abrir a tabela em um modal para ver todo o conteúdo claramente
| Arquivo / Padrão | Por que não é mais necessário |
|---|---|
Chamadas a i18next.init() | O Intlayer inicializa tudo automaticamente; não há passo de carregamento em tempo de execução. |
i18next.use(...) | O Intlayer não usa plugins de i18next, backends ou detectores de idiomas. |
Pacotes de idiomas em JSON (locales/*.json) | Pacotes JSON são necessários apenas se você continuar a usar o plugin syncJSON. Uma vez migrado para arquivos .content.ts, você pode remover a pasta JSON. |
Quando você estiver pronto para ir mais além, o Intlayer descobre automaticamente todos os arquivos .content.ts e .content.json em qualquer lugar da sua base de código (por padrão, em qualquer lugar sob ./src). Basta colocar um arquivo my-component.content.ts ao lado de sua lógica, e o Intlayer o detectará em tempo de build sem necessidade de configuração adicional — não são necessários imports, registros ou um arquivo index central. Isso torna a co-localização das traduções totalmente simples e integrada.
Configuração do TypeScript
O Intlayer usa aumento de módulo (module augmentation) para fornecer IntelliSense completo no TypeScript (autocompletar) para as chaves de tradução. Certifique-se de que o seu arquivo tsconfig.json inclua os tipos gerados automaticamente:
Copiar o código para a área de transferência
{ // ... Suas configurações existentes de TypeScript "include": [ // ... Suas configurações existentes de TypeScript ".intlayer/**/*.ts", // Inclui os tipos gerados automaticamente ],}Configuração do Git
Adicione o diretório gerado pelo Intlayer ao seu .gitignore:
Copiar o código para a área de transferência
# Ignora arquivos gerados pelo Intlayer.intlayerExplore Além
- Editor Visual — Gerencie traduções visualmente no seu navegador: Editor Visual Intlayer
- CMS — Externalize o conteúdo e gerencie remotamente: CMS do Intlayer
- Extensão para VS Code — Obtenha autocompletar de tradução e detecção de erros em tempo real: Extensão do VS Code para o Intlayer
- Referência da CLI — Lista completa de comandos da CLI: CLI do Intlayer