Internacionalize um site em React ou Next.js

Guia de i18n para React e Next.js

Internacionalize um site em React ou Next.js (next-intl) | We.Inc

Traduza um site em React ou Next.js do jeito certo: arquivos de mensagens, rotas por idioma com next-intl, formatação Intl para datas, valores e plurais, layouts da direita para a esquerda e tags hreflang.

Mantenha todos os textos em um arquivo JSON de mensagens por idioma, dê a cada idioma a própria URL, como /de/about, e formate datas, preços e plurais com as APIs Intl nativas do navegador. No App Router do Next.js, o next-intl junta tudo isso: um segmento de rota [locale], um proxy que escolhe o idioma e useTranslations nos componentes.

As partes de um site traduzido

Traduzir é mais do que trocar palavras. A ordem das palavras muda, as regras de plural são diferentes, o árabe é lido da direita para a esquerda e cada país escreve datas do seu jeito. Use o seletor abaixo para ver um pequeno card de produto mudar de idioma e depois monte o mesmo no seu app com os arquivos de configuração e o gerador de hreflang.

Perguntas frequentes

Qual biblioteca de i18n devo usar com React?

Para o App Router do Next.js, o next-intl foi feito para isso e suporta Server Components. Para um app React sem Next.js, escolha uma biblioteca que guarde as mensagens em JSON, para que migrar para outra depois continue viável.

Os idiomas devem ficar em subpastas, subdomínios ou domínios separados?

Subpastas como example.com/de/ são as mais simples de manter, porque um único site e um único domínio carregam tudo. O next-intl também suporta rotas por domínio se você precisar de de.example.com ou de um domínio de país.

Como adiciono hreflang no Next.js?

Retorne alternates.languages a partir de metadata ou generateMetadata, com uma entrada por URL de idioma. O Next.js gera uma tag link rel="alternate" hreflang para cada uma. Cada versão de idioma precisa listar todas as outras e a si mesma, senão os mecanismos de busca podem ignorar o conjunto.

Posso traduzir meu site com tradução automática?

Você pode usar tradução automática como primeiro rascunho, mas peça a alguém fluente para revisar, principalmente títulos, preços e textos jurídicos. Traduções rasas ou sem revisão podem confundir os leitores e enfraquecer a confiança.

Mensagens, não textos dentro dos componentes

Deixe o Intl cuidar da formatação

Idiomas da direita para a esquerda

Configuração do next-intl para o App Router

Instale com npm install next-intl. Estes arquivos seguem a estrutura do próprio guia de primeiros passos do next-intl para rotas por idioma.

Um arquivo por idioma, com as mesmas chaves em cada um. A sintaxe ICU cuida dos plurais dentro da mensagem.

src/i18n/routing.ts e src/proxy.ts

O routing lista suas localidades uma vez. O proxy (chamado middleware.ts antes do Next.js 16) redireciona os visitantes para um prefixo de idioma.

src/i18n/request.ts

Lê a localidade do segmento [locale], rejeita as desconhecidas e carrega as mensagens daquele idioma.

next.config.ts, layout e uma página

O plugin conecta o request.ts. Mova suas páginas para app/[locale]/ e leia as mensagens com useTranslations. next/root-params vem ativado por padrão a partir do Next.js 16.3; versões anteriores precisam de experimental.rootParams.

Formatação sem biblioteca

Intl em JavaScript puro

Funciona em qualquer app React, traduzido ou não.

Regras de hreflang que os mecanismos de busca verificam

Acertando as anotações de idioma

Experimente: um card em cinco idiomas

Troque o idioma e mude a quantidade de itens. Os textos vêm de um objeto de mensagens, e o preço, a data e a forma de plural vêm das APIs Intl do navegador.

Idioma

Itens no carrinho: {n}

Categoria de plural escolhida:

Direção:

A demonstração não converte moedas; ela só formata o mesmo número.

Gerador de hreflang

Informe seu domínio, o caminho de uma página e seus códigos de idioma para obter as tags link do head, ou o objeto alternates do Next.js.

Domínio

Caminho da página

Códigos de idioma (separados por vírgula)

Idioma x-default

Códigos inválidos ignorados: {codes}. Use um formato como de ou en-GB.

Formato de saída

Tags link em HTML

Metadata do Next.js

Copiar

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site