0Pricing
React Academy · Aula

Usando o hook useTranslation

Substitua textos fixos por chamadas t() e organize arquivos JSON de tradução.

Usando o hook useTranslation é uma aula grátis de React Academy no CoddyKit. Esta é a aula 2 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ê usará o gancho useTranslation para acessar a função t(), traduzir textos nos componentes e organizar os arquivos JSON de tradução por espaço de nomes.

O gancho useTranslation

Chame useTranslation() dentro de um componente para obter a função de tradução `t` e a instância `i18n`. Passe o nome do espaço de nomes se estiver usando traduções organizadas por espaço de nomes.
import { useTranslation } from 'react-i18next';

function Header() {
  const { t } = useTranslation('common');
  return <h1>{t('app_title')}</h1>;
}

Chaves básicas de tradução

Crie um arquivo JSON para cada idioma e espaço de nomes. As chaves são textos acessíveis por ponto. Chaves simples são diretas; chaves aninhadas usam a notação com ponto.
// public/locales/en/common.json
{
  "app_title": "My App",
  "nav": {
    "home": "Home",
    "about": "About"
  }
}

Chaves com notação de ponto

Acesse chaves aninhadas usando a notação com ponto na função t(): `t('nav.home')` lê `nav -> home` do JSON.
const { t } = useTranslation('common');
return <a href="/">{t('nav.home')}</a>;

Espaço de nomes padrão

Configure um `defaultNS` na inicialização de i18n para poder chamar useTranslation() sem argumentos; assim, as chaves serão resolvidas automaticamente no espaço de nomes padrão.
i18n.init({ defaultNS: 'common', ... });

// No namespace argument needed
const { t } = useTranslation();
t('app_title'); // resolves in 'common'

Acessando vários espaços de nomes

Passe uma matriz para useTranslation para acessar vários espaços de nomes. Prefixe as chaves com o espaço de nomes seguido de dois-pontos.
const { t } = useTranslation(['common', 'auth']);

t('common:app_title');
t('auth:login');

Componente Trans para conteúdo JSX

Quando um texto traduzido contém HTML ou componentes React, use o componente Trans. Ele oferece suporte a marcadores de posição associados a componentes React.
import { Trans } from 'react-i18next';

// JSON: "tos": "Read our <1>Terms</1>"
<Trans i18nKey="tos">
  Read our <a href="/terms">Terms</a>
</Trans>

Estrutura dos arquivos de tradução

Organize os arquivos JSON como `public/locales/{lang}/{ns}.json`. Mantenha as chaves semânticas e agrupadas por funcionalidade. Evite chaves profundamente aninhadas — normalmente, dois níveis são suficientes.
public/
  locales/
    en/
      common.json
      auth.json
      dashboard.json
    tr/
      common.json
      auth.json

Alterando o idioma em tempo de execução

Use `i18n.changeLanguage(lng)` para alterar o idioma ativo de forma programática. Os componentes React que usam useTranslation serão renderizados novamente automaticamente.
const { i18n } = useTranslation();

<button onClick={() => i18n.changeLanguage('tr')}>Turkish</button>

Detectando o idioma ativo

Leia `i18n.language` para obter a localidade ativa atual. Use-a para exibir uma bandeira ou destacar o botão do idioma ativo.
const { i18n } = useTranslation();
return <p>Current lang: {i18n.language}</p>;

Verificação rápida

Como você acessa a chave de tradução aninhada 'nav.home' no espaço de nomes 'common'?

Recapitulação

useTranslation fornece a função t(). Organize as chaves em arquivos JSON de espaços de nomes. Use a notação com ponto para chaves aninhadas. Alterne os idiomas com i18n.changeLanguage. Use o componente Trans para textos que contêm JSX.

A seguir

Próxima lição: **Pluralização e interpolação** — você lidará com formas plurais baseadas em quantidades e inserirá valores dinâmicos em textos traduzidos.

Perguntas Frequentes

A aula “Usando o hook useTranslation” é grátis?

Sim — o texto completo de “Usando o hook useTranslation” é 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 “Usando o hook useTranslation”?

Substitua textos fixos por chamadas t() e organize arquivos JSON de tradução. 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 2 de 4.

Quanto tempo leva a aula “Usando o hook useTranslation”?

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