Stellen Sie Ihre Frage und erhalten Sie einen Resümee des Dokuments, indem Sie diese Seite und den AI-Anbieter Ihrer Wahl referenzieren
Versionshistorie
- Erste Versionv7.0.01.11.2025
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
Wie Sie Ihre Next.js-Anwendung mit next-intl im Jahr 2025 internationalisieren
Inhaltsverzeichnis
Was ist next-intl?
next-intl ist eine beliebte Internationalisierungsbibliothek (i18n), die speziell für den Next.js App Router entwickelt wurde. Sie bietet eine nahtlose Möglichkeit, mehrsprachige Next.js-Anwendungen mit exzellenter TypeScript-Unterstützung und integrierten Optimierungen zu erstellen.
Wenn Sie möchten, können Sie auch den next-i18next Leitfaden oder direkt Intlayer verwenden.
Siehe den Vergleich in next-i18next vs next-intl vs Intlayer.
Praktiken, die Sie befolgen sollten
Bevor wir mit der Implementierung beginnen, sollten Sie folgende Praktiken beachten:
- HTML-Attribute
langunddirsetzen
Berechnen Sie in Ihrem LayoutdirmitgetLocaleDirection(locale)und setzen Sie<html lang={locale} dir={dir}>für eine korrekte Barrierefreiheit und SEO. - Nach Namespace Nachrichten aufteilen
Organisieren Sie JSON-Dateien pro Locale und Namespace (z. B.common.json,about.json), um nur das zu laden, was Sie benötigen. - Client-Payload minimieren
Senden Sie auf Seiten nur die benötigten Namespaces anNextIntlClientProvider(z. B.pick(messages, ['common', 'about'])). - Statische Seiten bevorzugen
Verwenden Sie statische Seiten so weit wie möglich für bessere Performance und SEO. - I18n in Server-Komponenten
Server-Komponenten, wie Seiten oder alle Komponenten, die nicht alsclientmarkiert sind, sind statisch und können zur Build-Zeit vorgerendert werden. Daher müssen wir die Übersetzungsfunktionen als Props an sie übergeben. - TypeScript-Typen einrichten
Für Ihre Locales, um Typensicherheit in Ihrer gesamten Anwendung zu gewährleisten. - Proxy für Weiterleitungen
Verwenden Sie einen Proxy, um die Locale-Erkennung und das Routing zu handhaben und den Benutzer zur entsprechenden URL mit Locale-Präfix weiterzuleiten. - Internationalisierung Ihrer Metadaten, Sitemap, robots.txt
Internationalisieren Sie Ihre Metadaten, Sitemap und robots.txt mit der von Next.js bereitgestellten FunktiongenerateMetadata, um eine bessere Auffindbarkeit durch Suchmaschinen in allen Locales sicherzustellen. - Links lokalisieren
- Links lokalisieren
Lokalisieren Sie Links mit derLink-Komponente, um den Benutzer zur entsprechenden URL mit Locale-Präfix weiterzuleiten. Es ist wichtig, die Auffindbarkeit Ihrer Seiten in allen Locales sicherzustellen. - Tests und Übersetzungen automatisieren
Die Automatisierung von Tests und Übersetzungen hilft, Zeit zu sparen und die Wartung Ihrer mehrsprachigen Anwendung zu erleichtern.
Siehe unsere Dokumentation, die alles auflistet, was Sie über Internationalisierung und SEO wissen müssen: Internationalisierung (i18n) mit next-intl.
Schritt-für-Schritt-Anleitung zur Einrichtung von next-intl in einer Next.js-Anwendung
Siehe Application Template auf GitHub.
Hier ist die Projektstruktur, die wir erstellen werden:
Kopieren Sie den Code in die Zwischenablage
Abhängigkeiten installieren
Installieren Sie die notwendigen Pakete mit npm:
bashCode kopierenKopieren Sie den Code in die Zwischenablage
- next-intl: Die zentrale Internationalisierungsbibliothek für den Next.js App Router, die Hooks, Serverfunktionen und Client-Provider zur Verwaltung von Übersetzungen bereitstellt.
Projekt konfigurieren
Erstellen Sie eine Konfigurationsdatei, die Ihre unterstützten Sprachen definiert und die next-intl-Anfragekonfiguration einrichtet. Diese Datei dient als einzige Quelle der Wahrheit für Ihre i18n-Konfiguration und gewährleistet Typensicherheit in Ihrer gesamten Anwendung.
Die Zentralisierung Ihrer Sprachkonfiguration verhindert Inkonsistenzen und erleichtert das Hinzufügen oder Entfernen von Sprachen in der Zukunft. Die Funktion
getRequestConfigwird bei jeder Anfrage ausgeführt und lädt nur die für jede Seite benötigten Übersetzungen, was Code-Splitting ermöglicht und die Bundle-Größe reduziert.src/i18n.tsCode kopierenKopieren Sie den Code in die Zwischenablage
Dynamische Locale-Routen definieren
Richten Sie die dynamische Routenführung für Sprachen ein, indem Sie im App-Ordner ein Verzeichnis
[locale]erstellen. Dadurch kann Next.js sprachabhängige Routen verwalten, bei denen jede Sprache ein URL-Segment wird (z. B./en/about,/fr/about).Die Verwendung dynamischer Routen ermöglicht es Next.js, statische Seiten für alle Sprachen zur Build-Zeit zu generieren, was die Leistung und SEO verbessert. Die Layout-Komponente setzt die HTML-Attribute
langunddirbasierend auf der Sprache, was für Barrierefreiheit und das Verständnis durch Suchmaschinen entscheidend ist.src/app/[locale]/layout.tsxCode kopierenKopieren Sie den Code in die Zwischenablage
src/app/[locale]/about/page.tsxCode kopierenKopieren Sie den Code in die Zwischenablage
Erstellen Sie Ihre Übersetzungsdateien
Erstellen Sie JSON-Dateien für jede Locale und jeden Namespace. Diese Struktur ermöglicht es Ihnen, Übersetzungen logisch zu organisieren und nur das zu laden, was Sie für jede Seite benötigen.
Die Organisation der Übersetzungen nach Namespace (z. B.
common.json,about.json) ermöglicht Code-Splitting und reduziert die Bundle-Größe. Sie laden nur die Übersetzungen, die für jede Seite benötigt werden, was die Leistung verbessert.locales/en/common.jsonCode kopierenKopieren Sie den Code in die Zwischenablage
locales/fr/common.jsonCode kopierenKopieren Sie den Code in die Zwischenablage
locales/en/about.jsonCode kopierenKopieren Sie den Code in die Zwischenablage
locales/fr/about.jsonCode kopierenKopieren Sie den Code in die Zwischenablage
Übersetzungen in Ihren Seiten verwenden
Erstellen Sie eine Seitenkomponente, die Übersetzungen auf dem Server lädt und sowohl an Server- als auch an Client-Komponenten weitergibt. Dies stellt sicher, dass Übersetzungen vor dem Rendern geladen werden und verhindert das Aufblitzen von Inhalten.
Das serverseitige Laden von Übersetzungen verbessert die SEO und verhindert FOUC (Flash of Untranslated Content). Durch die Verwendung von
pick, um nur die benötigten Namespaces an den Client-Provider zu senden, minimieren wir das an den Browser gesendete JavaScript-Bündel.src/app/[locale]/about/page.tsxCode kopierenKopieren Sie den Code in die Zwischenablage
Übersetzungen in Client-Komponenten verwenden
Client-Komponenten können die Hooks
useTranslationsunduseFormatterverwenden, um auf Übersetzungen und Formatierungsfunktionen zuzugreifen. Diese Hooks lesen aus demNextIntlClientProvider-Kontext.Client-Komponenten benötigen React-Hooks, um auf Übersetzungen zuzugreifen. Die Hooks
useTranslationsunduseFormatterintegrieren sich nahtlos mit next-intl und bieten reaktive Aktualisierungen, wenn sich die Locale ändert.Vergessen Sie nicht, die erforderlichen Namespaces zu den Client-Nachrichten der Seite hinzuzufügen (nur die Namespaces einbeziehen, die Ihre Client-Komponenten tatsächlich benötigen).
src/components/ClientComponent.tsxCode kopierenKopieren Sie den Code in die Zwischenablage
Übersetzungen in Server-Komponenten verwenden
Server-Komponenten können keine React-Hooks verwenden, daher erhalten sie Übersetzungen und Formatierer über Props von ihren übergeordneten Komponenten. Dieser Ansatz hält Server-Komponenten synchron und ermöglicht es, sie innerhalb von Client-Komponenten zu verschachteln.
Server-Komponenten, die möglicherweise innerhalb von Client-Grenzen verschachtelt sind, müssen synchron sein. Durch das Übergeben von übersetzten Strings und formatierten Werten als Props vermeiden wir asynchrone Operationen und gewährleisten eine korrekte Darstellung. Übersetzungen und Formatierungen sollten in der übergeordneten Seitenkomponente vorab berechnet werden.
src/components/ServerComponent.tsxCode kopierenKopieren Sie den Code in die Zwischenablage
Verwenden Sie in Ihrer Seite/Layout
getTranslationsundgetFormatterausnext-intl/server, um Übersetzungen und Formatierungen vorab zu berechnen und diese dann als Props an Server-Komponenten zu übergeben.Ändern Sie die Sprache Ihres Inhalts
OptionalUm die Sprache Ihres Inhalts mit next-intl zu ändern, rendern Sie lokalisierungsbewusste Links, die auf denselben Pfadnamen zeigen, während die Locale gewechselt wird. Der Provider schreibt URLs automatisch um, sodass Sie nur die aktuelle Route anvisieren müssen.
src/components/LocaleSwitcher.tsxCode kopierenKopieren Sie den Code in die Zwischenablage
Verwenden Sie die lokalisierte Link-Komponente
Optionalnext-intlstellt ein Unterpaketnext-intl/navigationbereit, das eine lokalisierte Link-Komponente enthält, die automatisch die aktive Locale anwendet. Wir haben sie bereits für Sie in der Datei@/i18nextrahiert, sodass Sie sie wie folgt verwenden können:src/components/MyComponent.tsxCode kopierenKopieren Sie den Code in die Zwischenablage
Zugriff auf die aktive Locale innerhalb von Server Actions
OptionalServer Actions können die aktuelle Locale mit
next-intl/serverauslesen. Dies ist nützlich, um lokalisierte E-Mails zu versenden oder Spracheinstellungen zusammen mit übermittelten Daten zu speichern.src/app/actions/get-current-locale.tsCode kopierenKopieren Sie den Code in die Zwischenablage
getLocaleliest die vonnext-intlProxy gesetzte Locale, daher funktioniert es überall auf dem Server: Route Handlers, Server Actions und Edge-Funktionen.Internationalisieren Sie Ihre Metadaten
OptionalDas Übersetzen von Inhalten ist wichtig, aber das Hauptziel der Internationalisierung besteht darin, Ihre Website für die Welt sichtbarer zu machen. I18n ist ein unglaublicher Hebel, um die Sichtbarkeit Ihrer Website durch korrektes SEO zu verbessern.
Richtig internationalisierte Metadaten helfen Suchmaschinen zu verstehen, welche Sprachen auf Ihren Seiten verfügbar sind. Dies umfasst das Setzen von hreflang-Meta-Tags, das Übersetzen von Titeln und Beschreibungen sowie das Sicherstellen, dass kanonische URLs für jede Locale korrekt gesetzt sind.
src/app/[locale]/about/layout.tsxCode kopierenKopieren Sie den Code in die Zwischenablage
Internationalisieren Sie Ihre Sitemap
OptionalErstellen Sie eine Sitemap, die alle Sprachversionen Ihrer Seiten enthält. Dies hilft Suchmaschinen, alle Sprachversionen Ihrer Inhalte zu entdecken und zu indexieren.
Eine richtig internationalisierte Sitemap stellt sicher, dass Suchmaschinen alle Sprachversionen Ihrer Seiten finden und indexieren können. Dies verbessert die Sichtbarkeit in internationalen Suchergebnissen.
src/app/sitemap.tsCode kopierenKopieren Sie den Code in die Zwischenablage
Internationalisieren Sie Ihre robots.txt
OptionalErstellen Sie eine robots.txt-Datei, die alle Sprachversionen Ihrer geschützten Routen korrekt behandelt. Dies stellt sicher, dass Suchmaschinen keine Admin- oder Dashboard-Seiten in irgendeiner Sprache indexieren.
Eine ordnungsgemäße Konfiguration der robots.txt für alle Sprachen verhindert, dass Suchmaschinen sensible Seiten indexieren, wenn Ihre Routen für jede Sprache unterschiedlich sind.
src/app/robots.tsCode kopierenKopieren Sie den Code in die Zwischenablage
Proxy für Locale Routing einrichten
OptionalErstellen Sie einen Proxy, der automatisch die bevorzugte Locale des Benutzers erkennt und ihn zur entsprechenden URL mit Locale-Präfix weiterleitet. next-intl stellt eine praktische Proxy-Funktion bereit, die dies automatisch übernimmt.
Proxy stellt sicher, dass Benutzer beim Besuch Ihrer Website automatisch auf ihre bevorzugte Sprache weitergeleitet werden. Außerdem wird die Präferenz des Benutzers für zukünftige Besuche gespeichert, was die Benutzererfahrung verbessert.
src/proxy.tsCode kopierenKopieren Sie den Code in die Zwischenablage
TypeScript-Typen für die Locale einrichten
OptionalDie Einrichtung von TypeScript hilft Ihnen, Autovervollständigung und Typsicherheit für Ihre Schlüssel zu erhalten.
Dafür können Sie eine Datei global.ts im Stammverzeichnis Ihres Projekts erstellen und den folgenden Code hinzufügen:
global.tsCode kopierenKopieren Sie den Code in die Zwischenablage
Dieser Code verwendet Module Augmentation, um die locales und messages zum next-intl AppConfig-Typ hinzuzufügen.
Automatisieren Sie Ihre Übersetzungen mit Intlayer
OptionalIntlayer ist eine kostenlose und Open-Source-Bibliothek, die entwickelt wurde, um den Lokalisierungsprozess in Ihrer Anwendung zu unterstützen. Während next-intl das Laden und Verwalten der Übersetzungen übernimmt, hilft Intlayer dabei, den Übersetzungsworkflow zu automatisieren.
Die manuelle Verwaltung von Übersetzungen kann zeitaufwendig und fehleranfällig sein. Intlayer automatisiert das Testen, Erzeugen und Verwalten von Übersetzungen, spart Ihnen Zeit und sorgt für Konsistenz in Ihrer gesamten Anwendung.
Intlayer ermöglicht Ihnen:
Deklarieren Sie Ihre Inhalte dort, wo Sie möchten, in Ihrem Codebase Intlayer erlaubt es, Ihre Inhalte dort zu deklarieren, wo Sie möchten, in Ihrer Codebase unter Verwendung von
.content.{ts|js|json}-Dateien. Dies ermöglicht eine bessere Organisation Ihrer Inhalte und sorgt für bessere Lesbarkeit und Wartbarkeit Ihrer Codebase.Testen fehlender Übersetzungen Intlayer stellt Testfunktionen bereit, die in Ihre CI/CD-Pipeline oder in Ihre Unit-Tests integriert werden können. Erfahren Sie mehr über das Testen Ihrer Übersetzungen.
Automatisieren Sie Ihre Übersetzungen
Intlayer bietet eine CLI und eine VSCode-Erweiterung, um Ihre Übersetzungen zu automatisieren. Diese können in Ihre CI/CD-Pipeline integriert werden. Erfahren Sie mehr über das Automatisieren Ihrer Übersetzungen.
Sie können Ihren eigenen API-Schlüssel und den KI-Anbieter Ihrer Wahl verwenden. Es werden auch kontextbewusste Übersetzungen bereitgestellt, siehe Inhalt automatisch ausfüllen.Externe Inhalte anbinden
Intlayer ermöglicht es Ihnen, Ihre Inhalte mit einem externen Content-Management-System (CMS) zu verbinden. So können Sie diese auf optimierte Weise abrufen und in Ihre JSON-Ressourcen einfügen. Erfahren Sie mehr über das Abrufen externer Inhalte.Visueller Editor
Intlayer bietet einen kostenlosen visuellen Editor, mit dem Sie Ihre Inhalte visuell bearbeiten können. Erfahren Sie mehr über das visuelle Bearbeiten Ihrer Übersetzungen.
Und mehr. Um alle von Intlayer bereitgestellten Funktionen zu entdecken, lesen Sie bitte die Interesse an Intlayer Dokumentation.
Kommentare
Noch keine Kommentare. Seien Sie der Erste, der seine Gedanken teilt.