Referência do Next.js
18ways.config.*
Crie 18ways.config.ts, 18ways.config.js ou 18ways.config.cjs na raiz da sua aplicação e exporte
lá a configuração do 18ways.
import type { WaysConfig } from '@18ways/next/config';
export default {
apiKey: process.env.NEXT_PUBLIC_18WAYS_PUBLIC_API_KEY,
baseLocale: 'en-GB',
router: 'app', // 'app', 'path', or 'none' depending on if you use app router, path router, or if you don't want the router to sync with locale at all
} satisfies WaysConfig;withWays()
Importa de @18ways/next/config e chama-o a partir de next.config.js.
import { withWays } from '@18ways/next/config';Quando 18ways.config.* existe, withWays() carrega-o automaticamente. Para router: 'path', devolve a configuração nativa de i18n do Next com a deteção de locale desativada. Para router: 'app' e
router: 'none', injeta o alias necessário para imports diretos de @18ways/next/server.
Opções comuns:
| Opção | Tipo | Notas |
|---|---|---|
apiKey | string | Obrigatório. |
baseLocale | string | Localidade de origem e localidade predefinida para encaminhamento. |
router | 'app' | 'path' | 'none' | Modo de encaminhamento por localidade. Usa none quando algum outro router já é dono dos URLs da localidade. |
localesAceites | string[] | Lista explícita de localidades. Obrigatória para path, opcional nos restantes casos. Mantém o modo path sincronizado com os idiomas ativados no teu painel de controlo do 18ways. |
domínios | Array<{domain, defaultLocale}> | Mapa de encaminhamento de domínio opcional. |
localeParamName | string | Parâmetro de segmento de idioma do App Router. Por predefinição, lang. |
persistLocaleCookie | boolean | ((pedido) => boolean) | Política de persistência de cookies de localização para alterações de localização no servidor e no cliente. |
cacheTtl | número | TTL de cache para pedidos de adaptador. |
fetcher | typeof fetch | Implementação de busca personalizada. |
init(config)
Importar de @18ways/next/server.
Use-o quando quiser associar explicitamente um objeto de configuração.
WaysRoot
Importe WaysRoot diretamente de @18ways/next/server nas suas layouts depois de envolver
next.config.js com withWays(...).
Use WaysRoot na tua estrutura para que o adaptador possa inicializar o estado de execução do pedido atual.
Com o encaminhamento de localidade do App Router, isto normalmente significa app/[lang]/layout.tsx.
getLocale()
Resolva o locale atual no servidor. Este é o auxiliar a utilizar quando precisar do estado do locale
fora de WaysRoot, por exemplo, em auxiliares de SEO apenas do servidor ou noutro código do servidor ligado ao pedido.
htmlAttrs()
htmlAttrs() resolve os valores atuais de lang e dir para o elemento do documento.
generateWaysMetadata()
Use generateWaysMetadata() dentro de generateMetadata() quando quiser títulos traduzidos,
descrições e URLs canónicas ou alternativas que considerem a localidade.
proxy.ts
Para router: 'app', proxy.ts é o ponto de entrada opinativo para redirecionamentos de locale no momento do pedido.
Reexporta de @18ways/next/proxy para tratar / -> /{locale} e a canonização do domínio.
export { default, config } from '@18ways/next/proxy';Se já tiver o seu próprio projeto proxy.ts ou middleware.ts, utilize
getWaysProxyResponse(request) e devolva-o antes do resto da sua lógica.
Ajudantes de cliente
Importar de @18ways/next/client.
useLocale()
Leia e altere a localidade atual. Este é o gancho que você emparelha com LanguageSwitcher ou sua própria interface de seleção personalizada.
useRouter()
Wrapper sensível à localidade em torno da navegação do Next. Passe locale="fr-FR" para forçar um destino localizado ou
locale={false} para forçar um sem localização.
Link
Invólucro com consciência do idioma à volta de next/link, com o mesmo modelo de substituição que useRouter().
useUnlocalizedPathname()
Leia o caminho atual sem o prefixo de localidade.
useLocalizedHref()
Auxiliar de nível inferior para converter um href interno no href atual sensível ao idioma/localidade.
Path routing config
No modo router: 'app', o adaptador segue a sua árvore de rotas:
- os percursos em
app/[lang]/...estão localizados - as rotas fora desse segmento permanecem sem localização
Link, useRouter() e setLocale() tratam as rotas internas como localizadas por defeito. Use
locale={false} apenas quando precisar de apontar explicitamente para uma rota não localizada.