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.

ts
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.

ts
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çãoTipoNotas
apiKeystringObrigatório.
baseLocalestringLocalidade 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.
localesAceitesstring[]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íniosArray<{domain, defaultLocale}>Mapa de encaminhamento de domínio opcional.
localeParamNamestringParâmetro de segmento de idioma do App Router. Por predefinição, lang.
persistLocaleCookieboolean | ((pedido) => boolean)Política de persistência de cookies de localização para alterações de localização no servidor e no cliente.
cacheTtlnúmeroTTL de cache para pedidos de adaptador.
fetchertypeof fetchImplementaçã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.

ts
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.

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.

Referência do Next.js