Configurar a internacionalização (i18n) no Next.js App Router
Monte um site Next.js multilíngue com rotas por idioma, deteção do idioma, dicionários no servidor, seletor de idioma, hreflang e formatação regional de datas e preços. Pensado para ChatGPT, Claude, Gemini e Microsoft Copilot. Inclui 5 variáveis personalizáveis e pode copiá-lo gratuitamente com um clique.
Avançado · Código · Pendente de revisão editorial
Prompt
Atua como programador sénior de Next.js com experiência em sites multilíngues e SEO internacional.
Contexto:
- Idiomas: {{idiomas}}
- Idioma por omissão: {{idioma_omissao}}
- Estratégia de URL: {{estrategia_url}}
- Abordagem: {{abordagem}}
- Origem dos textos: {{origem_textos}}
Antes de escreveres código, confirma comigo a versão do Next.js e se há rotas existentes a manter; se eu não souber, indica o que assumes.
Entregáveis:
1. Estrutura de pastas com o segmento `[locale]` e como encaixam layouts, páginas e metadados.
2. O ficheiro de middleware (ou o equivalente na tua versão) que deteta o idioma pelo cookie escolhido pelo utilizador e pelo cabeçalho Accept-Language, e redireciona conforme {{estrategia_url}} sem ciclos.
3. Carregamento de dicionários no servidor, com chaves tipadas para o TypeScript avisar das que faltam, e recurso ao idioma por omissão.
4. Um seletor de idioma acessível que mantenha o caminho atual e guarde a preferência.
5. Metadados SEO: `lang` no elemento html, URL canónico e alternativas hreflang (incluindo x-default) em cada página, e generateStaticParams para pré-renderizar cada idioma.
6. Formatação de datas, números, moedas e plurais com Intl ou com as utilidades de {{abordagem}}.
7. Uma lista de verificações antes de publicar.
Restrições:
- Não traduzas o conteúdo real: deixa os textos de exemplo como [PREENCHER] por idioma.
- Não redireciones os rastreadores apenas pelo IP nem escondas conteúdo por país.
- Mantém os textos da interface fora dos componentes, nos dicionários.
Formato: um bloco de código por ficheiro com o caminho e uma nota breve sobre cada decisão.Como utilizar
- Indica os idiomas, o idioma por omissão e se todas as URL devem ter prefixo. 2. Escolhe uma biblioteca ou dicionários próprios. 3. Cria os ficheiros num branch, testa os redirecionamentos e valida o hreflang com uma ferramenta de SEO antes de publicar.
Exemplo de utilização
Idiomas: pt, en, es · Por omissão: pt · URL: prefixo exceto no idioma por omissão · Abordagem: next-intl · Textos: ficheiros JSON no repositório.
Exemplo de resultado
Pressuposto: Next.js 15 e next-intl 4. As rotas ficam em app/[locale]/layout.tsx e app/[locale]/page.tsx.
Encaminhamento, middleware e carregamento de mensagens
// src/i18n/routing.ts
import { defineRouting } from 'next-intl/routing';
export const routing = defineRouting({
locales: ['pt', 'en', 'es'],
defaultLocale: 'pt',
localePrefix: 'as-needed', // /sobre-nos (pt), /en/..., /es/...
});
// src/middleware.ts
import createMiddleware from 'next-intl/middleware';
import { routing } from './i18n/routing';
export default createMiddleware(routing);
export const config = { matcher: ['/((?!api|_next|_vercel|.*\\..*).*)'] };
// src/i18n/request.ts
import { getRequestConfig } from 'next-intl/server';
import { hasLocale } from 'next-intl';
import { routing } from './routing';
export default getRequestConfig(async ({ requestLocale }) => {
const requested = await requestLocale;
const locale = hasLocale(routing.locales, requested) ? requested : routing.defaultLocale;
return { locale, messages: (await import(`../../messages/${locale}.json`)).default };
});
Primeiro, o middleware lê o cookie NEXT_LOCALE e depois o Accept-Language; com as-needed, o português não leva prefixo e não há ciclos de redirecionamento. Os textos ficam em messages/pt.json, en.json e es.json, com valores [PREENCHER]…
Dados-chave
- Categoria
- Programação e desenvolvimento · Next.js
- Tipo de resultado
- Código
- Nível
- Avançado
- Pensado para
- ChatGPT, Claude, Gemini e Microsoft Copilot
- Verificado em
- Pendente de verificação editorial
- Variáveis
- Idiomas, Idioma por omissão, Estratégia de URL, Abordagem e Origem dos textos
- Idioma
- Português
- Preço
- Gratuito, sem registo
- Atualizado
- 07/11/2026
Perguntas frequentes
É melhor next-intl ou dicionários próprios?
Com poucos textos e sem plurais complexos, dicionários próprios chegam. Se precisares de plurais, formato ICU, traduções em componentes cliente e chaves tipadas, uma biblioteca como next-intl poupa trabalho.
Devo redirecionar automaticamente pelo idioma do navegador?
É razoável na primeira visita, mas respeita sempre a escolha guardada do utilizador e mantém cada URL de idioma acessível diretamente, para que os motores de busca rastreiem todas as versões.
Para que serve o x-default no hreflang?
Indica aos motores de busca que página mostrar quando nenhum idioma coincide com o do utilizador, normalmente a do idioma por omissão ou um seletor de idioma.
Para que serve este prompt?
Monte um site Next.js multilíngue com rotas por idioma, deteção do idioma, dicionários no servidor, seletor de idioma, hreflang e formatação regional de datas e preços.
Com que ferramentas de IA funciona?
Foi pensado para ChatGPT, Claude, Gemini e Microsoft Copilot. Ainda não o verificámos nestas ferramentas, pelo que os resultados podem variar entre elas.
Como personalizo o prompt?
Clique em “Personalizar” e preencha as variáveis (Idiomas, Idioma por omissão, Estratégia de URL, Abordagem e Origem dos textos). O texto atualiza-se instantaneamente e pode depois copiá-lo com um clique. Os valores ficam guardados apenas no seu navegador.
Preciso de experiência para o utilizar?
É de nível avançado: destina-se a pessoas com experiência no tema, capazes de avaliar e ajustar o resultado.
Este prompt é gratuito?
Sim. Todos os prompts do HomeCasa Prompts são gratuitos, sem registo nem subscrição. Pode também utilizá-los em projetos profissionais.
Posso confiar no resultado da IA?
Trate-o como um rascunho de qualidade: verifique sempre os dados, os números e as afirmações importantes antes de publicar ou tomar decisões.