0Pricing
React Academy · Aula

Seletor de idioma e carregamento sob demanda de traduções

Crie um alternador de localidade e carregue pacotes de tradução sob demanda para reduzir o tamanho inicial.

Seletor de idioma e carregamento sob demanda de traduções é uma aula grátis de React Academy no CoddyKit. Esta é a aula 4 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ê criará um componente seletor de idioma e configurará o i18next para carregar pacotes de tradução quando necessário, reduzindo o tamanho inicial do código JavaScript.

Seletor de idioma simples

Chame i18n.changeLanguage() ao clicar em um botão para alterar o idioma ativo. Todos os componentes que usam useTranslation serão renderizados novamente com o novo idioma automaticamente.
function LanguageSwitcher() {
  const { i18n } = useTranslation();
  return (
    <div>
      {['en', 'tr', 'fr'].map(lng => (
        <button
          key={lng}
          onClick={() => i18n.changeLanguage(lng)}
          style={{ fontWeight: i18n.language === lng ? 'bold' : 'normal' }}
        >
          {lng.toUpperCase()}
        </button>
      ))}
    </div>
  );
}

Persistindo a seleção de idioma

Persista o idioma selecionado em localStorage para que ele seja mantido após recarregar as páginas. O plug-in LanguageDetector faz isso automaticamente com a ordem de detecção `localStorage`.
i18n.init({
  detection: {
    order: ['localStorage', 'navigator'],
    caches: ['localStorage'],
  },
});

Por que carregar traduções sob demanda?

Incluir todas as traduções no pacote JavaScript aumenta o tempo de carregamento inicial. O carregamento sob demanda envia apenas o idioma padrão na primeira carga e busca os outros idiomas somente quando o usuário alterna o idioma.

Configurando o back-end HTTP

O plug-in i18next-http-backend busca arquivos de tradução a partir de um padrão de URL. As traduções ficam na pasta `public/` e são servidas como recursos estáticos — não é necessário código no servidor.
import Backend from 'i18next-http-backend';

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

Adicionando arquivos de tradução

Crie um arquivo JSON por idioma e por espaço de nomes em `public/locales/`. O back-end HTTP os buscará automaticamente quando o idioma ou o espaço de nomes for necessário pela primeira vez.
public/locales/
  en/common.json
  en/auth.json
  tr/common.json
  tr/auth.json

Exibindo um estado de carregamento durante a troca de idioma

Depois de chamar changeLanguage(), o i18next carrega os arquivos do novo idioma de forma assíncrona. Inscreva-se no evento `i18n.on('languageChanged')` ou verifique `i18n.isInitialized` para exibir um indicador de carregamento.
const [switching, setSwitching] = useState(false);

const change = async (lng) => {
  setSwitching(true);
  await i18n.changeLanguage(lng);
  setSwitching(false);
};

Carregando espaços de nomes específicos sob demanda

Carregue um espaço de nomes somente quando ele for necessário pela primeira vez usando `i18n.loadNamespaces(['dashboard'])`. Chame isso em useEffect quando uma rota do painel for montada, evitando carregá-lo para usuários não autenticados.
useEffect(() => {
  i18n.loadNamespaces('dashboard');
}, []);

CDN para traduções

Em produção, hospede os arquivos de tradução em uma CDN (S3 + CloudFront). Atualize `loadPath` para usar a URL da CDN. Assim, as atualizações das traduções ficam separadas das implantações do código.
backend: {
  loadPath: 'https://cdn.example.com/locales/{{lng}}/{{ns}}.json',
}

Localidade na URL

Muitos aplicativos incorporam a localidade na URL (por exemplo, /en/products, /tr/products). Combine o React Router com i18n: leia a localidade do parâmetro da URL, chame changeLanguage e atualize a URL quando o usuário alternar o idioma.

Verificação rápida

O que o plug-in i18next-http-backend faz?

Recapitulação

Crie um seletor de idioma com i18n.changeLanguage(). Persista a seleção com o detector localStorage. Use o i18next-http-backend para carregar arquivos de tradução sob demanda. Exiba um estado de carregamento durante a troca de idioma. Hospede os arquivos em uma CDN para produção.

Curso concluído

Parabéns! Você concluiu **Internacionalização (i18n) no React**. Agora você pode configurar o react-i18next, traduzir textos com espaços de nomes, lidar com plurais e interpolação e carregar arquivos de tradução sob demanda.

Perguntas Frequentes

A aula “Seletor de idioma e carregamento sob demanda de traduções” é grátis?

Sim — o texto completo de “Seletor de idioma e carregamento sob demanda de traduções” é 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 “Seletor de idioma e carregamento sob demanda de traduções”?

Crie um alternador de localidade e carregue pacotes de tradução sob demanda para reduzir o tamanho inicial. 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 4 de 4.

Quanto tempo leva a aula “Seletor de idioma e carregamento sob demanda de traduções”?

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