Stellen Sie Ihre Frage und erhalten Sie einen Resümee des Dokuments, indem Sie diese Seite und den AI-Anbieter Ihrer Wahl referenzieren
Der Inhalt dieser Seite wurde mit einer KI übersetzt.
Den englischen Originaltext ansehenWenn Sie eine Idee haben, um diese Dokumentation zu verbessern, zögern Sie bitte nicht, durch das Einreichen eines Pull-Requests auf GitHub beizutragen.
GitHub-Link zur DokumentationMarkdown des Dokuments in die Zwischenablage kopieren
Übersetzen Sie Ihre Next.js 15 Website mit next-i18next unter Verwendung von Intlayer | Internationalisierung (i18n)
Für wen diese Anleitung ist
- Junior: Folgen Sie den genauen Schritten und kopieren Sie die Codeblöcke. Sie erhalten eine funktionierende mehrsprachige App.
- Mid-level: Verwenden Sie die Checklisten und Best-Practice-Hinweise, um häufige Fallstricke zu vermeiden.
- Senior: Überfliegen Sie die Abschnitte zur Gesamtstruktur, SEO und Automatisierung; Sie finden sinnvolle Voreinstellungen und Erweiterungspunkte.
Was Sie bauen werden
- App Router Projekt mit lokalisierten Routen (z.B.
/,/fr/...) - i18n-Konfiguration mit Locales, Standard-Locale, RTL-Unterstützung
- Serverseitige i18n-Initialisierung und ein Client-Provider
- Namespaced Übersetzungen, die bei Bedarf geladen werden
- SEO mit
hreflang, lokalisiertemsitemap,robots - Middleware für Locale-Routing
- Intlayer-Integration zur Automatisierung von Übersetzungs-Workflows (Tests, KI-Ausfüllung, JSON-Synchronisation)
Hinweis: next-i18next basiert auf i18next. Diese Anleitung verwendet die i18next-Primitiven, die mit next-i18next im App Router kompatibel sind, und hält dabei die Architektur einfach und produktionsbereit. Für einen umfassenderen Vergleich siehe next-i18next vs next-intl vs Intlayer.
1) Projektstruktur
Installieren Sie die next-i18next-Abhängigkeiten:
Beginnen Sie mit einer klaren Struktur. Halten Sie die Nachrichten nach Locale und Namespace getrennt.
Checkliste (mittel/erfahren):
- Behalten Sie eine JSON-Datei pro Namespace und Locale bei
- Zentralisieren Sie Nachrichten nicht zu stark; verwenden Sie kleine, seiten-/feature-spezifische Namespaces
- Vermeiden Sie es, alle Locales auf einmal zu importieren; laden Sie nur, was Sie benötigen
2) Abhängigkeiten installieren
Wenn Sie vorhaben, next-i18next APIs oder Konfigurations-Interop zu verwenden, dann auch:
3) Kern-i18n-Konfiguration
Definieren Sie Locales, Standard-Locale, RTL und Hilfsfunktionen für lokalisierte Pfade/URLs.
Senior-Hinweis: Wenn Sie next-i18next.config.js verwenden, halten Sie es synchron mit i18n.config.ts, um Abweichungen zu vermeiden.
4) Serverseitige i18n-Initialisierung
Initialisieren Sie i18next auf dem Server mit einem dynamischen Backend, das nur die benötigten Locale-/Namespace-JSON-Dateien importiert.
Zwischenhinweis: Halten Sie die Namespace-Liste pro Seite kurz, um die Payload zu begrenzen. Vermeiden Sie globale „Catch-all“-Bundles.
5) Client-Provider für React-Komponenten
Umhüllen Sie Client-Komponenten mit einem Provider, der die Server-Konfiguration spiegelt und nur die angeforderten Namespaces lädt.
Junior-Tipp: Sie müssen nicht alle Nachrichten an den Client übergeben. Beginnen Sie nur mit den Namespaces der jeweiligen Seite.
6) Lokalisierte Layouts und Routen
Legen Sie Sprache und Schreibrichtung fest und generieren Sie Routen pro Locale vor, um statisches Rendering zu bevorzugen.
7) Beispielseite mit Server- und Client-Nutzung
Übersetzungen (jeweils eine JSON-Datei pro Namespace unter src/locales/...):
Client-Komponente (lädt nur den benötigten Namespace):
Stellen Sie sicher, dass die Seite/der Provider nur die benötigten Namespaces enthält (z. B.
about). Wenn Sie React < 19 verwenden, sollten Sie schwere Formatter wieIntl.NumberFormatmemoizen.
Synchroner Server-Komponent, eingebettet unter einer Client-Grenze:
8) SEO: Metadaten, Hreflang, Sitemap, Robots
Die Übersetzung von Inhalten ist ein Mittel, um die Reichweite zu verbessern. Implementieren Sie mehrsprachiges SEO gründlich.
Best Practices:
- Setzen Sie
langunddiran der Wurzel - Fügen Sie
alternates.languagesfür jede Locale hinzu (+x-default) - Listen Sie übersetzte URLs in der
sitemap.xmlauf und verwenden Siehreflang - Schließen Sie lokalisierte private Bereiche (z.B.
/fr/admin) inrobots.txtaus
9) Middleware für Locale-Routing
Erkennt die Locale und leitet bei Fehlen auf eine lokalisierte Route weiter.
10) Performance- und DX-Best Practices
- Setze html
langunddir: Erledigt insrc/app/[locale]/layout.tsx. - Teile Nachrichten nach Namespace auf: Halte Bundles klein (
common.json,about.jsonusw.). - Minimiere Client-Payload: Übergebe auf Seiten nur die benötigten Namespaces an den Provider.
- Bevorzuge statische Seiten: Verwende
export const dynamic = 'force-static'undgenerateStaticParamspro Locale. - Synchronisiere Server-Komponenten: Übergebe vorab berechnete Strings/Formatierungen statt asynchroner Aufrufe zur Renderzeit.
- Memoisiere aufwändige Operationen: Besonders im Client-Code für ältere React-Versionen.
- Cache und Header: Bevorzuge statisches oder
revalidateRendering gegenüber dynamischem Rendering, wenn möglich.
11) Testing und CI
- Füge Unit-Tests für Komponenten hinzu, die
tverwenden, um sicherzustellen, dass Schlüssel existieren. - Validieren Sie, dass jeder Namespace in allen Sprachen die gleichen Schlüssel enthält.
- Fehlende Schlüssel während der CI vor der Bereitstellung anzeigen.
Intlayer automatisiert einen Großteil davon (siehe nächsten Abschnitt).
12) Intlayer oben drauf hinzufügen (Automatisierung)
Intlayer hilft Ihnen, JSON-Übersetzungen synchron zu halten, auf fehlende Schlüssel zu testen und bei Bedarf mit KI zu ergänzen.
Installieren Sie die Intlayer-Abhängigkeiten:
Fügen Sie Paketskripte hinzu:
Übliche Abläufe:
pnpm i18n:testin CI, um Builds bei fehlenden Schlüsseln fehlschlagen zu lassenpnpm i18n:filllokal, um KI-Übersetzungen für neu hinzugefügte Schlüssel vorzuschlagen
Sie können CLI-Argumente angeben; siehe die Intlayer CLI-Dokumentation.
13) Fehlerbehebung
- Schlüssel nicht gefunden: Stellen Sie sicher, dass die Seite/der Provider die korrekten Namespaces auflistet und die JSON-Datei unter
src/locales/<locale>/<namespace>.jsonexistiert. - Falsche Sprache/kurzer englischer Blitz: Überprüfen Sie die Lokalerkennung in
middleware.tsund den Provider-Parameterlng. - Probleme mit RTL-Layout: Vergewissern Sie sich, dass
dirvonisRtl(locale)abgeleitet wird und dass Ihr CSS[dir="rtl"]berücksichtigt. - SEO-Alternativen fehlen: Bestätigen Sie, dass
alternates.languagesalle Locales undx-defaultenthält. - Bundles zu groß: Teilen Sie Namespaces weiter auf und vermeiden Sie das Importieren ganzer
locales-Bäume auf der Client-Seite.
14) Was kommt als Nächstes
- Fügen Sie weitere Sprachen und Namespaces hinzu, wenn die Funktionen wachsen
- Lokalisieren Sie Fehlerseiten, E-Mails und API-gesteuerte Inhalte
- Erweitern Sie die Intlayer-Workflows, um automatisch PRs für Übersetzungsupdates zu öffnen
Wenn Sie einen Starter bevorzugen, probieren Sie die Vorlage: https://github.com/aymericzip/intlayer-next-i18next-template.