Next.js Referenz
18ways.config.*
Erstelle 18ways.config.ts, 18ways.config.js oder 18ways.config.cjs im Stammverzeichnis deiner App und exportiere
deine 18ways-Konfiguration dort.
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()
Importiere aus @18ways/next/config und rufe es in next.config.js auf.
import { withWays } from '@18ways/next/config';Wenn 18ways.config.* vorhanden ist, lädt withWays() sie automatisch. Für router: 'path' gibt es die native Next-i18n-Konfiguration mit deaktivierter Länderekennung zurück. Für router: 'app' und
router: 'none' fügt es den Alias ein, der für direkte Importe aus @18ways/next/server benötigt wird.
Allgemeine Optionen:
| Option | Typ | Notizen |
|---|---|---|
apiKey | Zeichenfolge | Erforderlich. |
basisLocale | Zeichenfolge | Quellgebietsschema und Standardschema für das Routing. |
Router | 'app' | 'path' | 'none' | Modus zur Gebietsschema-Routing. Verwenden Sie none, wenn bereits ein anderer Router die Gebietsschema-URLs besitzt. |
akzeptierteLokalisierungen | string[] | Explizite Gebietsschemata-Liste. Erforderlich für path, sonst optional. Halte den path-Modus mit den in deinem 18ways-Dashboard aktivierten Sprachen synchron. |
Domänen | Array<{domain, defaultLocale}> | Optionale Domain-Routing-Karte. |
localeParamName | Zeichenfolge | Lokales Segment-Param für den App Router. Standardmäßig lang. |
persistLocaleCookie | boolean | ((Anfrage) => boolean) | Richtlinie zur Persistenz von Lokalisierungs-Cookies bei Server- und Client-seitigen Lokalisierungsänderungen. |
cacheTtl | nummer | Cache-TTL für Adapteranfragen. |
fetcher | typeof fetch | Benutzerdefinierte Abrufimplementierung. |
init(config)
Importieren von @18ways/next/server.
Verwenden Sie es, wenn Sie ein Konfigurationsobjekt explizit binden möchten.
WaysRoot
Importiere WaysRoot direkt aus @18ways/next/server in deinen Layouts, nachdem du
next.config.js mit withWays(...) umhüllt hast.
Verwende WaysRoot in deinem Layout, damit der Adapter den Laufzeitstatus für die aktuelle Anfrage initialisieren kann.
Bei der Gebietsschema-Routenführung im App Router bedeutet das normalerweise app/[lang]/layout.tsx.
getLocale()
Löse das aktuelle Gebietsschema auf dem Server auf. Dies ist der Helper, den du verwenden solltest, wenn du Gebietsschema-Zustand außerhalb von WaysRoot benötigst, zum Beispiel in nur serverseitigen SEO-Helpers oder anderem an die Anfrage gebundenen Servercode.
htmlAttrs()
htmlAttrs() löst die aktuellen lang und dir Werte für das Dokumentelement auf.
generateWaysMetadata()
Verwenden Sie generateWaysMetadata() innerhalb von generateMetadata(), wenn Sie übersetzte Titel,
Beschreibungen und lokalbewusste kanonische oder alternative URLs wünschen.
proxy.ts
Für router: 'app' ist proxy.ts der opinionierte Einstiegspunkt für locale-Weiterleitungen zur Request-Zeit.
Re-exportiere aus @18ways/next/proxy, um / -> /{locale} und die Kanonisierung von Domains zu handhaben.
export { default, config } from '@18ways/next/proxy';Wenn du bereits dein eigenes Projekt proxy.ts oder middleware.ts hast, verwende
getWaysProxyResponse(request) und gib es zurück, bevor du den Rest deiner Logik ausführst.
Kundenhelfer
Importieren von @18ways/next/client.
useLocale()
Lesen und ändern Sie die aktuelle Sprache. Dies ist der Hook, den Sie mit LanguageSwitcher oder Ihrer eigenen benutzerdefinierten Auswahl-UI kombinieren.
useRouter()
Locale-abhängiger Wrapper um die Next-Navigation. Übergib locale="fr-FR", um ein lokalisiertes Ziel zu erzwingen, oder
locale={false}, um ein nicht lokalisiertes zu erzwingen.
Link
Gebietsschema-bewusster Wrapper um next/link mit demselben Überschreibungsmodell wie useRouter().
useUnlocalizedPathname()
Lese den aktuellen Pfadnamen ohne das Sprachpräfix.
useLocalizedHref()
Hilfsfunktion niedrigerer Ebene zum Konvertieren eines internen href in den aktuellen lokalisierungsabhängigen href.
Path routing config
Im Modus router: 'app' folgt der Adapter deinem Routentree:
- Routen unter
app/[lang]/...sind lokalisiert - Routen außerhalb dieses Segments bleiben unlokalisiert
Link, useRouter() und setLocale() behandeln interne Routen standardmäßig als lokalisiert. Verwende
locale={false} nur dann, wenn du eine nicht lokalisierte Route ausdrücklich ansprechen musst.