Internationalisierung
Next.js ermöglicht es Ihnen, das Routing und das Rendering von Inhalten für die Unterstützung mehrerer Sprachen zu konfigurieren. Die Anpassung Ihrer Website an verschiedene Locales umfasst übersetzte Inhalte (Lokalisierung) und internationalisierte Routen.
Terminologie
- Locale: Ein Identifikator für eine Gruppe von Sprach- und Formatierungspräferenzen. Dies beinhaltet normalerweise die bevorzugte Sprache des Benutzers und möglicherweise dessen geografische Region.
en-US
: Englisch, wie in den USA gesprochennl-NL
: Niederländisch, wie in den Niederlanden gesprochennl
: Niederländisch, ohne spezifische Region
Routing-Übersicht
Es wird empfohlen, die Spracheinstellungen des Benutzers im Browser zu nutzen, um die zu verwendende Locale auszuwählen. Das Ändern Ihrer bevorzugten Sprache passt den Accept-Language
-Header in den eingehenden Anfragen an Ihre Anwendung an.
Mit den folgenden Bibliotheken können Sie beispielsweise eine eingehende Request
analysieren, um basierend auf den Headers
, den unterstützten Locales und der Standard-Locale die passende Locale auszuwählen.
Das Routing kann durch Sub-Pfade (/fr/products
) oder Domains (my-site.fr/products
) internationalisiert werden. Mit diesen Informationen können Sie den Benutzer basierend auf der Locale in der Middleware weiterleiten.
Stellen Sie sicher, dass alle speziellen Dateien in app/
unter app/[lang]
verschachtelt sind. Dadurch kann der Next.js-Router verschiedene Locales in der Route dynamisch verarbeiten und den lang
-Parameter an jedes Layout und jede Seite weitergeben. Beispiel:
Das Root-Layout kann ebenfalls im neuen Ordner verschachtelt werden (z.B. app/[lang]/layout.js
).
Lokalisierung
Die Anpassung der angezeigten Inhalte basierend auf der bevorzugten Locale des Benutzers, oder Lokalisierung, ist nichts spezifisches für Next.js. Die unten beschriebenen Muster funktionieren genauso mit jeder Webanwendung.
Angenommen, wir möchten sowohl englische als auch niederländische Inhalte in unserer Anwendung unterstützen. Wir könnten zwei verschiedene "Wörterbücher" pflegen, die eine Zuordnung von einem Schlüssel zu einem lokalisierten String bereitstellen. Beispiel:
Wir können dann eine getDictionary
-Funktion erstellen, um die Übersetzungen für die angeforderte Locale zu laden:
Basierend auf der aktuell ausgewählten Sprache können wir das Wörterbuch innerhalb eines Layouts oder einer Seite abrufen.
Da alle Layouts und Seiten im app/
-Verzeichnis standardmäßig Server Components sind, müssen wir uns keine Gedanken über die Größe der Übersetzungsdateien machen, die die Größe unseres clientseitigen JavaScript-Bundles beeinflussen könnte. Dieser Code wird nur auf dem Server ausgeführt, und nur das resultierende HTML wird an den Browser gesendet.
Statisches Rendering
Um statische Routen für eine bestimmte Gruppe von Locales zu generieren, können wir generateStaticParams
mit jeder Seite oder jedem Layout verwenden. Dies kann global erfolgen, beispielsweise im Root-Layout: