0Pricing
React Academy · Aula

Configurando o react-i18next

Instale e configure o i18next com detecção de idioma e divisão de espaços de nomes.

Configurando o react-i18next é uma aula grátis de React Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.

Boas-vindas

Nesta lição, você instalará e configurará o react-i18next com detecção de idioma e divisão em espaços de nomes para adicionar suporte a vários idiomas a um aplicativo React.

Instalando dependências

Instale i18next e react-i18next. Opcionalmente, adicione i18next-browser-languagedetector para detecção automática da localidade e i18next-http-backend para carregar traduções por HTTP.
npm install i18next react-i18next
npm install i18next-browser-languagedetector i18next-http-backend

Criando i18n.js

Crie um arquivo `i18n.js` que inicialize o i18next. Chame `i18n.use(...)` para adicionar plug-ins e `.init({...})` com sua configuração.
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import LanguageDetector from 'i18next-browser-languagedetector';

i18n
  .use(LanguageDetector)
  .use(initReactI18next)
  .init({
    fallbackLng: 'en',
    resources: { en: { translation: {} }, tr: { translation: {} } },
    interpolation: { escapeValue: false },
  });

export default i18n;

Importando i18n em main.jsx

Importe o arquivo de inicialização do i18n ANTES de renderizar o aplicativo. Isso garante que o i18n esteja pronto antes que qualquer componente chame useTranslation.
import './i18n'; // must be before App
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import App from './App';

createRoot(document.getElementById('root')).render(
  <StrictMode><App /></StrictMode>
);

Espaços de nomes

Os espaços de nomes dividem as traduções em grupos lógicos (por exemplo, “comum”, “autenticação”, “painel”). Cada espaço de nomes é um arquivo JSON separado, carregado sob demanda para reduzir o tamanho do pacote inicial.
resources: {
  en: {
    common: { save: 'Save', cancel: 'Cancel' },
    auth: { login: 'Log in', logout: 'Log out' },
  }
}

Detecção de idioma

O plug-in LanguageDetector lê o idioma preferido do usuário no navegador (navigator.language), em localStorage ou na cadeia de consulta da URL. Ele define automaticamente o idioma ativo no primeiro carregamento.

Carregando traduções da pasta pública

Armazene as traduções como arquivos JSON em `public/locales/{lang}/{ns}.json`. Configure o plug-in do servidor para carregá-las durante a execução, de modo que adicionar um novo idioma não exija nenhuma alteração no código.
import Backend from 'i18next-http-backend';

i18n.use(Backend).init({
  backend: {
    loadPath: '/locales/{{lng}}/{{ns}}.json',
  },
});

I18nextProvider (opcional)

O I18nextProvider envolve seu aplicativo para fornecer a instância do i18n por meio do contexto. Com o react-i18next v11+ e o plug-in initReactI18next, isso é opcional — o gancho lê diretamente a instância global do i18n.

Verificando a inicialização nos componentes

O i18next carrega as traduções de forma assíncrona. Use a propriedade `ready` de useTranslation ou verifique `i18n.isInitialized` antes de renderizar o texto para evitar exibir chaves de tradução.
const { t, ready } = useTranslation();
if (!ready) return null;

DevTools e tratamento de chaves ausentes

Defina `saveMissing: true` no desenvolvimento para registrar no console as chaves de tradução ausentes. Isso ajuda você a encontrar rapidamente as strings não traduzidas.
i18n.init({ saveMissing: true,
  missingKeyHandler: (lng, ns, key) => console.warn('Missing:', key) });

Verificação rápida

Por que é necessário importar o arquivo de inicialização do i18n antes de renderizar seu aplicativo React?

Recapitulação

Instale i18next + react-i18next, crie i18n.js com plug-ins e a configuração de init, importe-o antes da renderização e organize as traduções em espaços de nomes. Use http-backend para carregar os arquivos de tradução durante a execução.

A seguir

Próxima lição: **Usando o gancho useTranslation** — você substituirá textos definidos diretamente no código por chamadas a t() e organizará os arquivos JSON de tradução.

Perguntas Frequentes

A aula “Configurando o react-i18next” é grátis?

Sim — o texto completo de “Configurando o react-i18next” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.

O que vou aprender em “Configurando o react-i18next”?

Instale e configure o i18next com detecção de idioma e divisão de espaços de nomes. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar React Academy?

Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Configurando o react-i18next”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de React Academy?

Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Configurando o react-i18next
  2. Usando o hook useTranslation
  3. Pluralização e interpolação
  4. Seletor de idioma e carregamento sob demanda de traduções
← Voltar para React Academy