Sanggunian ng Next.js

18ways.config.*

Gumawa ng 18ways.config.ts, 18ways.config.js, o 18ways.config.cjs sa root ng iyong app at i-export doong ang iyong 18ways config.

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

I-import mula sa @18ways/next/config at tawagin ito mula sa next.config.js.

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

Kapag may 18ways.config.*, awtomatikong nilo-load ito ng withWays(). Para sa router: 'path', ibinabalik nito ang native na Next i18n config na naka-disable ang locale detection. Para sa router: 'app' at router: 'none', ini-inject nito ang alias na kailangan para sa direktang imports mula sa @18ways/next/server.

Mga karaniwang opsyon:

OpsyonUriMga Tala
apiKeystringKinakailangan.
baseLocalestringPinagmulan na locale at default na locale para sa routing.
router'app' | 'path' | 'none'Mode ng locale-routing. Gamitin ang none kapag may ibang router na may-ari na ng mga URL ng locale.
acceptedLocalesstring[]Tahasang listahan ng locale. Kinakailangan para sa path, opsyonal sa iba. Panatilihing naka-sync ang mode ng path sa mga wikang pinagana sa iyong 18ways dashboard.
mga domainArray<{domain, defaultLocale}>Opsyonal na mapa ng pag-ruta ng domain.
localeParamNamestringParameter ng segment ng locale ng App Router. Naka-default sa lang.
persistLocaleCookieboolean | ((request) => boolean)Patakaran sa pagpapatuloy ng locale cookie para sa mga pagbabago sa locale ng server at client.
cacheTtlnumeroCache TTL para sa mga request ng adapter.
fetcheruri ng fetchPasadyang pagpapatupad ng fetch.

init(config)

Mag-import mula sa @18ways/next/server.

Gamitin ito kapag gusto mong itali ang isang config object nang tahasan.

WaysRoot

I-import ang WaysRoot nang direkta mula sa @18ways/next/server sa iyong mga layout pagkatapos balutin ang next.config.js gamit ang withWays(...).

Gamitin ang WaysRoot sa iyong layout para ma-seed ng adapter ang runtime state para sa kasalukuyang request. Sa App Router locale routing, kadalasan ay nangangahulugan ito ng app/[lang]/layout.tsx.

getLocale()

I-resolba ang kasalukuyang locale sa server. Ito ang helper na gagamitin kapag kailangan mo ng locale state sa labas ng WaysRoot, halimbawa sa mga server-only SEO helper o iba pang request-bound na server code.

htmlAttrs()

htmlAttrs() ay lumulutas sa kasalukuyang mga value ng lang at dir para sa element ng dokumento.

generateWaysMetadata()

Gamitin ang generateWaysMetadata() sa loob ng generateMetadata() kapag gusto mo ng mga isinaling pamagat, deskripsyon, at locale-aware na canonical o alternate na mga URL.

proxy.ts

Para sa router: 'app', ang proxy.ts ang piniling entrypoint para sa mga locale redirect sa oras ng request. I-re-export mula sa @18ways/next/proxy para pangasiwaan ang / -> /{locale} at ang pag-canonicalize ng domain.

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

Kung mayroon ka nang sarili mong project proxy.ts o middleware.ts, gamitin getWaysProxyResponse(request) at ibalik ito bago ang natitira mong logic.

Mga katulong ng kliyente

Mag-import mula sa @18ways/next/client.

useLocale()

Basahin at baguhin ang kasalukuyang locale. Ito ang hook na ipina-pair mo sa LanguageSwitcher o sa sarili mong custom na UI para sa pagpili.

useRouter()

Wrapper na may pagsasaalang-alang sa locale para sa Next navigation. Ipasa ang locale="fr-FR" para pilitin ang isang localized na target o locale={false} para pilitin ang isang hindi localized na isa.

Wrapper na may pag-alalay sa locale sa paligid ng next/link na may parehong override na modelo gaya ng useRouter().

useUnlocalizedPathname()

Basahin ang kasalukuyang pathname nang walang prefix ng locale.

useLocalizedHref()

Mababang antas na helper para i-convert ang internal na href sa kasalukuyang locale-aware na href.

Path routing config

Sa mode na router: 'app', sinusunod ng adapter ang iyong route tree:

  • naka-localize ang mga ruta sa ilalim ng app/[lang]/...
  • ang mga ruta sa labas ng segmentong iyon ay mananatiling hindi naisalokal

Link, useRouter(), at setLocale() ay itinuturing ang mga panloob na ruta bilang naka-localize bilang default. Gamitin ang locale={false} lamang kapag kailangan mong tahasang i-target ang isang hindi naka-localize na ruta.

Changing language
Sanggunian sa Next.js