Referência do Next.js

18ways.config.*

Crie 18ways.config.ts, 18ways.config.js ou 18ways.config.cjs na raiz do seu app e exporte sua configuração do 18ways lá.

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()

Importe de @18ways/next/config e chame-o a partir de next.config.js.

ts
import { withWays } from '@18ways/next/config';

Quando 18ways.config.* existe, withWays() o carrega automaticamente. Para router: 'path', ele retorna a configuração nativa de i18n do Next com a detecção de localidade desativada. Para router: 'app' e router: 'none', ele injeta o alias necessário para imports diretos de @18ways/next/server.

Opções comuns:

OpçãoTipoNotas
apiKeystringObrigatório.
baseLocalestringLocalidade de origem e localidade padrão para o roteamento.
roteador'app' | 'path' | 'none'Modo de roteamento por localidade. Use none quando algum outro roteador já for o dono das URLs de localidade.
localesAceitasstring[]Lista explícita de locais. Obrigatória para path, opcional nos demais casos. Mantenha o modo path em sincronia com os idiomas habilitados no seu painel do 18ways.
domíniosArray<{domain, defaultLocale}>Mapa opcional de roteamento de domínio.
localeParamNamestringParâmetro de segmento de localidade do App Router. O padrão é lang.
persistLocaleCookieboolean | ((request) => boolean)Política de persistência de cookies de localidade para alterações de localidade no servidor e no cliente.
cacheTtlnúmeroTTL de cache para solicitações de adaptador.
fetchertypeof fetchImplementação de busca personalizada.

init(config)

Importar de @18ways/next/server.

Use-o quando quiser vincular explicitamente um objeto de configuração.

WaysRoot

Importe WaysRoot diretamente de @18ways/next/server em seus layouts depois de envolver next.config.js com withWays(...).

Use WaysRoot no seu layout para que o adaptador possa iniciar o estado de tempo de execução para a solicitação atual. Com o roteamento de locale do App Router, isso normalmente significa app/[lang]/layout.tsx.

getLocale()

Resolva a localidade atual no servidor. Este é o helper a ser usado quando você precisar do estado da localidade fora de WaysRoot, por exemplo, em helpers de SEO apenas no servidor ou em outro código de servidor vinculado à requisição.

htmlAttrs()

htmlAttrs() resolve os valores atuais de lang e dir para o elemento do documento.

generateWaysMetadata()

Use generateWaysMetadata() dentro de generateMetadata() quando você 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 localidade no momento da requisição. Reexporte de @18ways/next/proxy para lidar com / -> /{locale} e canonização de domínio.

ts
export { default, config } from '@18ways/next/proxy';

Se você já tem seu próprio arquivo de projeto proxy.ts ou middleware.ts, use getWaysProxyResponse(request) e retorne-o antes do restante da sua lógica.

Ajuda para clientes

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 ao locale 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 localidade.

Wrapper ciente de localidade em torno de next/link com o mesmo modelo de substituição de useRouter().

useUnlocalizedPathname()

Leia o caminho atual sem o prefixo de localidade.

useLocalizedHref()

Auxiliar de baixo nível para converter um href interno em um href atual com reconhecimento de localidade.

Path routing config

No modo router: 'app', o adaptador segue sua árvore de rotas:

  • rotas em app/[lang]/... são localizadas
  • as rotas fora desse segmento permanecem não localizadas

Link, useRouter() e setLocale() tratam rotas internas como localizadas por padrão. Use locale={false} somente quando você precisar direcionar explicitamente uma rota não localizada.

Referência do Next.js