Faça sua pergunta e obtenha um resumo do documento referenciando esta página e o provedor AI de sua escolha
Este documento está desatualizado, a versão base foi atualizada em 3 de abril de 2026.
Ir para a documentação em inglêsHistórico de versões
- "Adição de roteamento de locale baseado em domínio via configuração routing.domains."v8.5.002/04/2026
O conteúdo desta página foi traduzido com uma IA.
Veja a última versão do conteúdo original em inglêsSe você tiver uma ideia para melhorar esta documentação, sinta-se à vontade para contribuir enviando uma pull request no GitHub.
Link do GitHub para a documentaçãoCopiar o Markdown do documento para a área de transferência
Domínios personalizados
O Intlayer suporta roteamento de locale baseado em domínio, permitindo que você sirva locales específicos a partir de hostnames dedicados. Por exemplo, os visitantes chineses podem ser direcionados para intlayer.zh em vez de intlayer.org/zh.
Como funciona
O mapa domains em routing associa cada locale a um hostname. O Intlayer usa esse mapa em dois lugares:
- Geração de URL (
getLocalizedUrl): quando o locale de destino vive em um domínio diferente da página atual, uma URL absoluta é retornada (ex:https://intlayer.zh/about). Quando ambos os domínios coincidem, uma URL relativa é retornada (ex:/fr/about). - Proxy do servidor (Next.js & Vite): as solicitações recebidas são redirecionadas ou rescritas com base no domínio em que chegam.
Domínios exclusivos vs. compartilhados
A distinção principal é a exclusividade:
- Domínio exclusivo - apenas um locale mapeia para esse hostname (ex:
zh → intlayer.zh). O próprio domínio identifica o locale, portanto, nenhum prefixo de locale é adicionado ao caminho.https://intlayer.zh/aboutserve conteúdo em chinês. - Domínio compartilhado - vários locales mapeiam para o mesmo hostname (ex: tanto
enquantofrmapeiam paraintlayer.org). O roteamento padrão baseado em prefixo se aplica.intlayer.org/fr/aboutserve conteúdo em francês.
Configuração
Locales que não estão listados em domains continuam a usar o roteamento de prefixo padrão sem qualquer substituição de domínio.
Geração de URL
getLocalizedUrl produz automaticamente o tipo de URL correto com base no contexto da chamada.
Locale no mesmo domínio (URL relativa)
Locale em um domínio diferente (URL absoluta)
Servindo a partir do domínio do próprio locale
Detecção automática do domínio atual
currentDomain é opcional. Quando omitido, getLocalizedUrl o resolve nesta ordem:
- O hostname de uma URL de entrada absoluta (ex:
https://intlayer.org/about→intlayer.org). window.location.hostnameem ambientes de navegador.- Se nenhum estiver disponível (SSR sem opção explícita), uma URL relativa é retornada para locales do mesmo domínio e nenhuma URL absoluta é produzida - este é o fallback seguro.
getMultilingualUrls com domínios
getMultilingualUrls chama getLocalizedUrl para cada locale, por o que produz uma mistura de URLs relativas e absolutas dependendo do domínio do chamador:
Essas URLs absolutas estão prontas para usar em tags <link rel="alternate" hreflang="..."> para SEO.
Comportamento do Proxy
Next.js
O middleware intlayerProxy lida com o roteamento de domínio automaticamente. Adicione-o ao seu middleware.ts:
Redirecionamento - a solicitação chega no domínio errado para um determinado prefixo de locale:
Reescrita - a solicitação chega no domínio exclusivo do locale sem um prefixo:
Vite
O plugin Vite intlayerProxy aplica a mesma lógica durante o desenvolvimento:
Nota: no desenvolvimento local você está normalmente nolocalhost, então redirecionamentos entre domínios apontarão para os domínios reais em vez de outra porta local. Use uma substituição no arquivo hosts (ex:127.0.0.1 intlayer.zh) or um proxy reverso se precisar testar o roteamento multidomínio localmente.
Seletor de locale (Locale Switcher)
O hook useLocale do next-intlayer lida com a navegação consciente do domínio automaticamente. Quando um usuário muda para um locale em um domínio diferente, o hook realiza uma navegação de página completa (window.location.href) em vez de um push do roteador no lado do cliente, porque o roteador do Next.js não pode cruzar origens.
Nenhuma configuração extra é necessária - useLocale detecta window.location.hostname internamente e decide entre router.replace (mesmo domínio) e window.location.href (cross-domain).
SEO: Links alternativos hreflang
O roteamento baseado em domínio é comumente usado junto com hreflang para informar aos mecanismos de pesquisa qual URL indexar para cada idioma. Use getMultilingualUrls para gerar o conjunto completo de URLs alternativas:
Isso produz:
Utilitários principais
Abrir a tabela em um modal para ver todo o conteúdo claramente
| Utilitário | Descrição |
|---|---|
getLocalizedUrl(url, locale, { currentDomain }) | Retorna uma URL relativa ou absoluta dependendo se o locale de destino está no domínio atual ou não. |
getMultilingualUrls(url, { currentDomain }) | Retorna um mapa de URLs localizadas por locale, misturando relativas e absolutas conforme necessário. |
getPrefix(locale, { domains }) | Retorna um prefixo vazio para locales de domínio exclusivo, caso contrário, o prefixo normal. |