Como internacionalizar projetos React com i18next
Nunca foi tão simples tornar seu site ou aplicativo realmente global com React, Next.js e a força do i18next. Descubra como transformar qualquer projeto, escalar seu SaaS e atrair oportunidades internacionais.
Por que isso é importante
Nunca houve tanta demanda por aplicações web e SaaS capazes de falar diferentes idiomas. Se você deseja evoluir profissionalmente, entregar projetos para empresas internacionais, publicar SaaS globalmente ou simplesmente abrir portas para o próprio portfólio, aprender a internacionalizar sua aplicação é um divisor de águas – e agora ficou fácil. Prepare-se para um conteúdo que tira sua dúvida e bota seu projeto no mundo.
Tradução nunca mais será um obstáculo
Durante muito tempo, traduzir aplicações era um pandemônio: ifs em todo lugar, deploys sempre que um texto mudava, soluções "caseiras" que não escalavam. Hoje existe i18next: moderno, direto e aceito pelos maiores times do mundo. Vamos ver como sair desse caos.
⚠️Atenção
Manter traduções no código sem uma ferramenta de i18n deixa seu projeto ultra difícil de escalar. É recursivo: cada ajuste de texto exige outro deploy, outra correria e novos bugs.
Onde isso impacta na vida real?
Seja seu SaaS atendendo outro país, uma vaga internacional exigindo portfólio em inglês, ou até uma startup implementando idiomas regionais – uma boa estrutura de i18n é pré-requisito profissional. Não importa se é startup ou multinacional: só escala quem pensa global.
Por trás do nome estranho: de onde vem i18n?
"I18N" significa Internationalization – nada mais do que “i” + 18 letras no meio + “n”. Preguiça dos devs, claro, mas o conceito é sério: tornar qualquer sistema pronto para aceitar múltiplos idiomas e culturas sem sofrimento.
ℹ️Dica técnica
Memorize: toda vez que ouvir “i18n” ou “l10n” (localization), estão falando sobre como tornar sistemas verdadeiramente globais.
O problema antigo de traduções: o que mudou com i18next
Antes de 2011, toda tradução era feita “na raça” no front ou back. Múltiplos ifs, selects de bandeirinhas, duplicação de layouts e caos total. Só depois surgiu i18next, uma biblioteca que mudou o jogo para React, Next.js e todos ecossistemas modernos.
⚠️Alerta histórico
Projetos legados normalmente possuem estruturas de tradução retrógradas. Cuidado ao migrar: não tente adaptar if-else antigos para o i18next. Refaça o básico, vai valer a pena.
Por que i18next virou padrão?
Open source, vasto suporte, integração nativa no React e Next.js e um ecossistema estável — o i18next existe desde 2011, teve suporte oficial desde backend Node.js até hooks dedicados para React, e é adotado por milhares de empresas de todos os tamanhos.
Agora ficou fácil internacionalizar
Você pode traduzir todo o seu projeto sem reinventar a roda e, principalmente, sem travar o deploy. Separando as traduções em arquivos, mudando idiomas sem recarregar a aplicação, e com suporte a novos idiomas a cada commit.
⚠️Atenção
Sempre que mexer nos textos da aplicação, lembre-se: um sistema desacoplado dos textos dos componentes é o único caminho sustentável para múltiplos idiomas.
Como funciona na prática? Veja o fluxo campeão
Primeiro você instala as dependências certas no seu projeto React ou Next.js. Depois configura um arquivo i18n de bootstrap. Cria arquivos JSON com os textos, separa por idioma, e usa hooks como useTranslation de React-i18next para chamar cada texto no código, sem dor.
Instalando as dependências essenciais
Rapidez: use Yarn ou NPM para instalar tudo de uma vez
Você vai precisar de i18next, backend para carregar arquivos, integração com React e possíveis plugins extras (Exemplo: i18next, i18next-chained-backend, i18next-http-backend, react-i18next etc). Escolha e instale apenas os necessários ao seu projeto.
✅Dica
Se você está usando Next.js, siga a documentação do React-i18next e ative apenas plugins relevantes para SSR. Evite instalar dependências além do necessário.
Configurando o arquivo i18n.js ou .ts
Centralize toda lógica de configuração do i18n num arquivo só (ex: i18n.config.ts). Defina o idioma padrão, como os arquivos de tradução vão ser carregados e customize plugins conforme a stack da sua aplicação.
⚠️Atenção
Não deixe variáveis sensíveis logadas nesse arquivo. Utilize variáveis de ambiente para URLs e caminhos de arquivos JSON. Faça cache de textos e organize por namespace para garantir performance.
Separação inteligente dos textos: como montar os arquivos JSON
Crie uma pasta para cada idioma (por exemplo, ‘/locales/en’, ‘/locales/ptBR’). Dentro, um arquivo JSON para cada módulo ou página (ex: pages.json). Use sempre as mesmas chaves nos diferentes idiomas e organize textos por contexto para facilitar manutenções e automações.
ℹ️Dica de organização
Evite colocar textos longos ou dinâmicos demais nos JSONs. Prefira chaveamento conciso e nomeie chaves com contexto: ex. “navbar.login”, “footer.description”.
Mude idiomas com Context API: experiência sólida
Utilize Context API para manter o idioma selecionado em toda a aplicação. Salve a escolha no localstorage e restaure ao recarregar, garantindo que o usuário navegue sem perder sua seleção, sem prop drilling nem states dispersos.
Traduza componentes à prova de futuro com useTranslation
Importe useTranslation do react-i18next. Envolva cada texto em sua aplicação usando ‘t’ do hook: simplifica, desacopla, e permite múltiplos idiomas com mudança instantânea. Não há motivo para hardcode no JSX.
❌Alerta
Nunca traduza diretamente usando condicionais dentro do JSX ou layouts. Isso elimina toda vantagem de manutenção do i18n e gera dívidas técnicas severas.
Integração com Selects inteligentes de idioma
Implemente selects de idioma usando bibliotecas prontas ou componha seu próprio. O importante é garantir que o idioma selecionado seja reconhecido no contexto e ative a linguagem corretamente para i18next.
Soluções para problemas clássicos de deploy e atualização
Atente-se à compatibilidade dos backends de tradução (ex: http-backend) para evitar travamentos em produções (caso arquivos JSON mudem ou estejam em diferentes servidores). Teste fallback de idioma e caching dos textos.
✅Dica final
Coloque sempre defaultTexts em typescript para planos de contingência. Se faltar algum texto traduzido, o sistema nunca deve quebrar — e sim exibir fallback.
Mostre ao mundo: portfólio internacional, SaaS global
Com uma implementação bem feita de i18next, seu projeto está pronto para ser apresentado para qualquer empresa, recrutador internacional ou usuário no mundo todo. Isso diferencia o profissional júnior do pleno e do sênior: a capacidade de pensar escalável e global.
Resumo do passo a passo campeão
1. Instale i18next + plugins essenciais. 2. Configure tudo em i18n.config.ts usando backends apropriados e hooks providos pela biblioteca. 3. Separe todos textos em arquivos JSON organizados. 4. Implemente um Context API ou Provider para gerenciamento global do idioma. 5. Use o hook useTranslation em todos textos mostrados. 6. Faça fallback em defaultTexts bem definidos. 7. Teste troca de idiomas, atualize arquivos JSON e reforce o ciclo de deploy sem dor. E quem sabe faz ao vivo.
ℹ️Ação extra
Quer ver tudo isso em vídeo e aprender fazendo? Assista a série completa no canal Dev Doido e veja na prática como internacionalizar do zero ao PRO.