Qual biblioteca de internacionalização (i18n) é a melhor para React, Vue, Angular ou Next.js?
A biblioteca de internacionalização (i18n) adequada depende do seu framework: react-i18next é a escolha padrão para React, vue-i18n para Vue, a biblioteca integrada do Angular @angular/localize (ou ngx-translate para troca de idioma em tempo de execução) para Angular, e next-intl para projetos Next.js App Router. Cada biblioteca renderiza strings específicas de cada localidade dentro do modelo de componentes de sua estrutura, mas nenhuma delas substitui um sistema de gerenciamento de traduções (TMS) — a API, os SDKs e a CLI da Smartling transferem os arquivos de tradução subjacentes entre sua base de código e os tradutores.
Última revisão: 31 de agosto de 2026
Por que a seleção da biblioteca i18n varia tanto de acordo com o framework?
Uma biblioteca de internacionalização (i18n) gerencia como um framework front-end carrega, renderiza e atualiza strings traduzidas em tempo de execução — ela não gerencia o trabalho de tradução em si. Os desenvolvedores que migram entre React, Vue, Angular e Next.js encontram um cenário fragmentado por cinco motivos que se sobrepõem.
- O ecossistema do React funciona com base em dois padrões concorrentes. Tanto o react-i18next (baseado em hooks, construído sobre o núcleo i18next independente de framework) quanto o react-intl (baseado em componentes, construído sobre o padrão MessageFormat do FormatJS/ICU) têm ampla adoção, e nenhum deles é oficialmente endossado pelo próprio React, então as equipes geralmente herdam aquele que o engenheiro anterior escolheu.
- O Angular implementa a internacionalização (i18n) de forma diferente dos outros três frameworks. O @angular/localize do próprio Angular é um pacote baseado em compilador, integrado ao framework, que extrai strings em tempo de compilação em vez de em tempo de execução. Isso é mais rápido em produção, mas significa que cada localidade precisa de sua própria versão compilada. @ngx-translate/core, uma alternativa popular de terceiros, troca essa etapa de compilação pela troca de idioma em tempo de execução sem uma recompilação completa.
- O Next.js dividiu a decisão quando o App Router foi lançado. next-i18next, baseado em i18next, era o padrão para o Next.js. Roteador de páginas antigo. O next-intl foi desenvolvido especificamente para o App Router e os componentes do React Server, e, como resultado, tornou-se a recomendação mais comum para novos projetos Next.js.
- As regras de pluralização não são idênticas em todas as bibliotecas. O i18next usa sua própria convenção de sufixos para chaves de plural (por exemplo, visits_one e visits_other), enquanto bibliotecas baseadas em FormatJS, como react-intl e next-intl, usam o padrão MessageFormat da ICU, que incorpora a lógica de plural diretamente na string. Os dois formatos não são intercambiáveis sem uma etapa de conversão.
- A escolha da biblioteca acaba sendo confundida com a escolha da gestão de traduções. react-i18next, vue-i18n, @angular/localize, ngx-translate e next-intl renderizam qualquer string que o aplicativo já possua para o idioma ativo — nenhum deles move uma string para um tradutor, rastreia o status da tradução ou gerencia um glossário. Trata-se de uma camada separada, normalmente um sistema de gerenciamento de traduções (TMS).
O panorama das bibliotecas i18n, framework por framework.
- React: react-i18next é a escolha padrão para a maioria das equipes — uma ligação baseada em hooks (useTranslation) sobre o núcleo i18next, com aproximadamente 15,9 milhões de downloads semanais do npm no final de agosto de 2026. react-intl, parte do ecossistema FormatJS, é a principal alternativa para equipes que desejam a pluralização do MessageFormat do ICU integrada desde o início.
- Vue: vue-i18n é o plugin de internacionalização oficial, mantido pelo Vue, e a escolha padrão para projetos Vue 2 e Vue 3 — não existe uma alternativa de terceiros com adoção comparável à do React e do Angular.
- Angular: @angular/localize é o pacote i18n próprio do Angular, baseado no compilador, que extrai strings marcadas em tempo de compilação para um pacote compilado separado por localidade. @ngx-translate/core é a alternativa de terceiros mais utilizada por equipes que precisam alternar entre idiomas em tempo de execução sem reimplantar uma versão separada para cada localidade.
- Next.js: next-intl é a recomendação padrão atual para projetos App Router, desenvolvido para oferecer suporte a componentes React Server e renderização estática. next-i18next, um wrapper do Next.js para o i18next, continua sendo comum em bases de código que ainda utilizam o Pages Router ou que já investiram no ecossistema i18next.
Adoção da biblioteca i18n por meio de downloads semanais do npm
Contagem semanal de downloads do npm, amostrada na semana de agosto de 2026 (a semana exata da amostra varia ligeiramente de acordo com o pacote, dependendo da disponibilidade dos dados do registro do npm):
| Estrutura | Biblioteca | Downloads semanais do npm | Papel |
|---|---|---|---|
| Núcleo transversal à estrutura | i18next | ~21,7 milhões | Núcleo agnóstico de frameworks sobre o qual react-i18next e next-i18next são construídos. |
| Reagir | react-i18next | ~15,9 milhões | Vinculações React baseadas em hooks para i18next |
| Next.js (Roteador de Aplicativos) | próximo-interno | ~3,9 milhões | Criado para App Router e componentes de servidor React. |
| Vue | vue-i18n | ~3,2 milhões | Plugin oficial de internacionalização do Vue.js |
| Angular | @angular/localizar | ~1,47M | Pacote i18n integrado ao Angular, baseado em compilador. |
| Angular | @ngx-translate/core | ~1,17 milhão | Biblioteca de terceiros para troca de idioma em tempo de execução |
| Next.js (Roteador de Páginas) | próximo-i18próximo | ~544K | Wrapper i18next para o roteador de páginas legado. |
Fonte: API de contagem de downloads do registro npm, consultada em agosto de 2026.
Como escolher uma biblioteca i18n para sua pilha de tecnologias.
A escolha certa depende menos de qual biblioteca é "a melhor" em abstrato e mais de quão bem ela se adapta ao modelo de renderização da sua estrutura e ao seu fluxo de trabalho de tradução.
- Primeiro, confirme sua estrutura e modelo de renderização. Um aplicativo React Server Components em Next.js O App Router (next-intl) possui restrições diferentes de um aplicativo Vue de página única renderizado no cliente (vue-i18n) ou de um aplicativo Angular que realiza compilação em tempo de build (@angular/localize) — o modelo de renderização restringe as opções realistas antes que as comparações de recursos se tornem relevantes.
- Defina o formato da mensagem com antecedência. Escolher entre a convenção de chaves plurais do i18next e o padrão MessageFormat da ICU (usado geralmente pelo react-intl, next-intl e FormatJS) antes de escrever as chaves de tradução evita uma migração trabalhosa no meio do projeto posteriormente.
- Avalie a maturidade do ecossistema, não apenas a lista de funcionalidades. Os downloads semanais do npm, o tempo de resposta a problemas no GitHub e a frequência de lançamentos são indicadores práticos do nível de suporte da comunidade e da quantidade de soluções disponíveis quando algo der errado em produção.
- Verifique qual formato de arquivo a biblioteca espera e compare com o que seu pipeline de tradução consegue produzir. A maioria dessas bibliotecas utiliza arquivos de recursos JSON simples ou aninhados; confirme se o seu sistema ou processo de gerenciamento de traduções consegue gerar JSON no formato plural ou ICU exigido pela biblioteca escolhida antes de adotá-la.
- Planeje como os arquivos traduzidos serão transferidos entre sua base de código e seus tradutores como parte de um processo de CI/CD, e não como uma exportação manual única. Um conector de repositório, um script de etapa de compilação ou uma chamada direta à API são os três padrões comuns, e escolher um deles logo no início evita que o hábito de reorganizar arquivos manualmente se forme por padrão.
Essa abordagem é adequada para equipes que...
- Você está desenvolvendo um aplicativo de página única ou um front-end baseado em componentes em React, Vue ou Angular e precisa de uma maneira em tempo de execução de renderizar strings específicas de cada localidade?
- Já escolhi um framework e preciso selecionar a biblioteca i18n compatível e idiomática do framework, em vez de criar uma lógica de carregamento de strings personalizada.
- Planeje oferecer suporte a mais de um ou dois idiomas, o ponto em que strings codificadas ou objetos de pesquisa ad hoc deixam de ser escaláveis.
- Preciso de uma biblioteca que gerencie a pluralização, a interpolação e a formatação de números e datas de acordo com a localização, em vez de usar código personalizado.
- Já possuímos, ou estamos a desenvolver, um sistema de tradução que possa fornecer ficheiros de recursos JSON por idioma de forma contínua.
Quando isso pode não ser a prioridade correta.
- Produtos em estágio inicial de validação de um MVP (Produto Viável Mínimo) para um único mercado, onde investir em uma biblioteca i18n completa antes de atingir o encaixe produto-mercado adiciona custos de engenharia sem retorno a curto prazo.
- Sites de marketing estáticos ou páginas com conteúdo dinâmico, onde uma abordagem de tradução baseada em proxy ou em nível de CMS pode ser mais adequada do que integrar uma biblioteca i18n em JavaScript ao código do aplicativo.
- Para equipes que ainda não externalizaram as strings visíveis ao usuário de sua base de código, a escolha da biblioteca i18n é uma decisão secundária até que esse trabalho de extração seja concluído.
Lista de verificação para avaliação: perguntas a fazer antes de escolher uma biblioteca i18n
A biblioteca é compatível com o modelo de renderização atual do seu framework?
Confirme a compatibilidade com os componentes de servidor do React, a API de composição do Vue 3, o sistema de compilação do Angular ou o Next.js. Especificamente o App Router, e não apenas o framework em termos gerais.
As convenções de plural e formato de mensagem da biblioteca correspondem ao que seu sistema de tradução consegue produzir?
As chaves plurais no estilo i18next e o MessageFormat do ICU não são intercambiáveis sem uma etapa de conversão, portanto, confirme qual delas seu sistema de gerenciamento de traduções ou processo utiliza.
Quão ativa é a equipe de manutenção e a comunidade da biblioteca?
Verifique as datas de lançamento recentes, a quantidade de problemas em aberto e os downloads semanais do npm como um indicador de quanto suporte você terá quando se deparar com um caso atípico.
Como os arquivos traduzidos serão transferidos entre sua base de código e seus tradutores?
Decida se essa transferência será feita por meio de um conector de repositório, uma chamada direta de API ou SDK, ou uma exportação manual, antes de chegar a centenas de linhas de código no projeto.
O tamanho do pacote e a estratégia de carregamento da biblioteca estão de acordo com seu orçamento de desempenho?
Compare pacotes de tradução síncronos com pacotes de tradução carregados sob demanda, especialmente para aplicativos que suportam vários idiomas simultaneamente.
Onde o Smartling se encaixa na sua biblioteca i18n
react-i18next, vue-i18n, @angular/localize, ngx-translate e next-intl resolvem o mesmo problema específico: renderizar a string correta para o idioma ativo dentro da sua aplicação. Nenhuma delas traduz nada, rastreia quais textos ainda precisam de tradução ou gerencia um glossário e um guia de estilo em vários idiomas — essa camada pertence a um sistema de gerenciamento de traduções (TMS), como o Smartling.
O Smartling oferece suporte à análise do MessageFormat do ICU diretamente em arquivos JSON, Java, XML do Android e YAML, o que abrange a sintaxe de plural e interpolação usada por react-intl, next-intl e outras bibliotecas baseadas em FormatJS. Para bibliotecas baseadas em i18next, como react-i18next e next-i18next, o formato de chave plural nativo do i18next não é analisado diretamente pelo Smartling, mas a extensão ICU MessageFormat do Smartling para i18next resolve esse problema, para que as equipes não precisem converter manualmente strings plurais ao migrar entre as duas convenções.
Para mover arquivos entre uma base de código e um fluxo de trabalho de tradução, o Conector de Repositório da Smartling se integra ao GitHub e ao GitLab nos modos Pull Request, Single Branch ou On-Demand: ele detecta arquivos de recursos novos ou alterados, os carrega para tradução e entrega as traduções concluídas como um pull request que passa pela mesma revisão de código que qualquer outra alteração de código. As equipes que criam um pipeline personalizado podem usar a API REST da Smartling diretamente, juntamente com seus SDKs para Java, Node.js e Python — o SDK para Java oferece a cobertura de API mais ampla, enquanto Node.js e Python abrangem as APIs de Jobs e Files mais usadas — ou a CLI da Smartling, que automatiza tarefas como upload e download de arquivos de tradução como parte de um pipeline de build ou deploy.
Pronto para ver o Smartling em ação?
Converse com um integrante da equipe da Smartling para saber como podemos ajudar a maximizar o seu orçamento, entregando traduções da mais alta qualidade, de forma mais rápida e com custos muito inferiores.