Leitfaden zur React-Lokalisierung
React-Lokalisierung: ein umfassender i18n-Leitfaden
Vergleichen Sie die führenden React-i18n-Bibliotheken, strukturieren Sie Nachrichtenkataloge, implementieren Sie Pluralformen und Formatierung, ermöglichen Sie einen barrierefreien Sprachwechsel und optimieren Sie lokalisierte Seiten für Performance und Suche.
Warum Lokalisierung in React eine Aufgabe der Anwendung ist
React konzentriert sich bewusst auf die Zusammenstellung von Benutzeroberflächen. Es schreibt weder Nachrichtenkatalog noch sprachspezifischen Router, Übersetzungs-Loader oder Content-Workflow vor. Diese Flexibilität ist nützlich, bedeutet aber auch, dass die Lokalisierungsarchitektur zur Anwendung gehört. Wenn Zeichenfolgen bis zur Veröffentlichung in Komponenten eingebettet bleiben, deckt die erste neue Sprache Annahmen zu Grammatik, Formatierung, Layout und Datenladen auf einmal auf.
Lokalisierung bedeutet mehr als englische Wörter zu ersetzen. Eine Begrüßung kann einen Namen interpolieren, die Anzahl der Artikel im Warenkorb mehrere Pluralkategorien erfordern und ein Preis Währungsregeln mit regionaler Formatierung verbinden. Übersetzer benötigen vollständige Nachrichten und Kontext; Komponenten brauchen stabile APIs und vorhersehbare Fallbacks. Jeder Textknoten als separate Abfrage führt meist zu unbeholfenen Texten und fragilem Code.
Öffentliche React-Seiten bringen eine weitere Anforderung mit sich: Nutzer und Crawler sollten aussagekräftige Inhalte unter einer stabilen sprachspezifischen URL erhalten. Ein rein browserseitiger Sprachwechsel nach der Hydration kann kurzzeitig die falsche Sprache anzeigen, doppelte URLs erzeugen und Varianten vor Suchmaschinen verbergen. Selbst wenn das Produkt eine Client-Anwendung ist, profitieren Marketing- und Hilfeseiten von statischer Generierung oder Server-Rendering durch ein React-Framework.
- Fest codiertes JSX vermischt Produkttexte mit dem Verhalten von Komponenten.
- Zusammengesetzte Textfragmente führen bei veränderter Wortreihenfolge zu Grammatikfehlern.
- Datumsangaben, Zahlen, Währungen und Pluralformen folgen sprachspezifischen Regeln.
- Eine rein clientseitige Spracherkennung kann Flackern und eine eingeschränkte Crawlbarkeit verursachen.
Grundbegriffe vor der Auswahl einer Bibliothek
Beginnen Sie mit einer einzigen verlässlichen Quelle für unterstützte Sprachen. Speichern Sie Sprachcode, Anzeigename, Textrichtung und Fallback-Beziehung gemeinsam. Routenanalyse, Sprachauswahl, Intl-Formatierer und Katalogladen sollten alle diese Konfiguration verwenden. So verhindern Sie, dass eine Komponente fr-CA akzeptiert, während eine andere nach abweichenden Regeln unbemerkt auf fr oder Englisch zurückfällt.
Nachrichten sollten vollständige Gedanken ausdrücken. Verwenden Sie stabile semantische Schlüssel wie checkout.payment.failed statt Schlüssel, die aus dem aktuellen englischen Satz übernommen wurden. Übergeben Sie Variablen als benannte Werte, setzen Sie Markup-Platzhalter bewusst ein und lassen Sie die Nachrichtensyntax Pluralformen oder grammatische Alternativen auswählen. So bleibt der Kontext für Übersetzer erhalten und andere Sprachen können die Wortreihenfolge ändern, ohne den React-Code anzupassen.
- Locale: die validierte sprachliche oder regionale Präferenz, die für einen Rendervorgang aktiv ist.
- Nachrichtenkatalog: stabile Nachrichtenbezeichner, die übersetzten Werten zugeordnet sind.
- Interpolation: Laufzeitwerte, die in eine vollständige übersetzte Nachricht eingesetzt werden.
- Plural- und Auswahlregeln: grammatische Varianten, die anhand sprachspezifischer Daten ausgewählt werden.
- Fallback: das bewusst festgelegte Verhalten, wenn eine Sprache oder Nachricht nicht verfügbar ist.
react-i18next vs. React Intl vs. Lingui
Die führenden React-Bibliotheken überschneiden sich bei den Grundlagen, sind jedoch für unterschiedliche Workflows optimiert. Vergleichen Sie Nachrichtensyntax, Extraktionspipeline, Typsicherheit, Serverunterstützung und Katalogökosystem. Entscheiden Sie nicht allein anhand der Downloadgröße: Exakte Bundle-Messwerte ändern sich mit Versionen, Plugins, Tree Shaking und der Anzahl der Nachrichten, die den Browser erreichen.
react-i18next ist die React-Bindung für i18next. Sie bevorzugt Schlüssel und Namespaces und bietet Plugins für Laden, Erkennung, Caching und optional ICU. React Intl ist die React-Schicht von FormatJS und verwendet ICU MessageFormat direkt über Komponenten und Hooks. Lingui kompiliert ebenfalls ICU-Nachrichten und ergänzt Makros sowie einen integrierten Workflow für Extraktion und Katalogkompilierung.
| Bibliothek | React-API-Stil | Nachrichtensyntax | Extraktionsworkflow | TypeScript | Am besten geeignet für |
|---|---|---|---|---|---|
| react-i18next | useTranslation, t und Trans | i18next-Syntax; ICU über ein Plugin | i18next CLI und Werkzeuge aus dem Ökosystem | Ressourcentypisierung über die Konfiguration | Schlüsselbasierte Apps und das i18next-Ökosystem |
| React Intl | IntlProvider, Hooks und Formatted-Komponenten | Natives ICU MessageFormat | Extraktion und Kompilierung mit der FormatJS CLI | Erstklassige Definitionen; Deskriptortypisierung | ICU-orientierte Produkttexte und Formatierung |
| Lingui | Makros, Trans und Hooks | ICU über kompilierte Makros | Integrierte CLI für Extraktion und Kompilierung | Typisierte APIs; Extraktion validiert Kataloge | Workflow zur Kompilierzeit und PO-Kataloge |
Wählen Sie react-i18next, wenn Ihnen das breite i18next-Ökosystem wichtig ist, Sie Namespaces in einem großen Produkt benötigen oder Kataloge bereits mit JavaScript außerhalb von React teilen. Wählen Sie React Intl, wenn ICU-Nachrichten und eine einheitliche Zahlen- und Datumsformatierung mit FormatJS zum Denkmodell des Teams passen. Wählen Sie Lingui, wenn Entwickler prägnante Makros und Verarbeitung zur Kompilierzeit mit einem PO-orientierten Übersetzungsworkflow wünschen.
TypeScript-Unterstützung erfordert mehr als eine typisierte t-Funktion. Prüfen Sie, ob sich Schlüssel aus Ihrem tatsächlichen Standardkatalog ableiten lassen, Interpolationsvariablen geprüft werden und die Extraktion Nachrichten vor der Veröffentlichung erfasst. i18next kann Ressourcentypen generieren oder erweitern, FormatJS extrahiert statisch analysierbare Deskriptoren und Lingui kompiliert extrahierte Nachrichten. Der beste Workflow ist derjenige, den Ihre CI zuverlässig durchsetzen kann.
React-Lokalisierung Schritt für Schritt einrichten
Diese Einrichtung verwendet react-i18next, da sein schlüsselbasiertes JSON-Modell vielen React-Teams vertraut ist. Dieselbe Abfolge gilt für andere Bibliotheken: Kataloge definieren, eine sprachspezifische Instanz initialisieren, sie an der Anwendungsgrenze bereitstellen, vollständige Nachrichten in Komponenten übersetzen und beim Sprachwechsel sowohl die sichtbare Oberfläche als auch die URL oder gespeicherte Präferenz der Anwendung aktualisieren.
-
Schritt 1
Kataloge strukturieren
Erstellen Sie einen Quellkatalog und passende Sprachdateien. Gruppieren Sie Schlüssel nach stabilen Produktbereichen wie Navigation, Checkout und Validierung. Halten Sie die Schlüsselsätze aller Sprachen synchron und ergänzen Sie für mehrdeutige Nachrichten Übersetzerkontext.
-
Schritt 2
Die i18n-Instanz initialisieren
Erstellen Sie die i18next-Instanz in einem eigenen Modul, registrieren Sie nur die von der Anwendung benötigten Plugins, definieren Sie unterstützte Sprachen und Fallbacks und trennen Sie Entwicklungsdiagnosen vom Produktionsverhalten.
-
Schritt 3
Lokalisierung am Anwendungsstamm bereitstellen
Stellen Sie die initialisierte Instanz am Anwendungsstamm bereit. Folgen Sie in Frameworks mit Server-Rendering der Framework-Integration, damit aktive Sprache und Ressourcen zwischen Serverausgabe und Hydration übereinstimmen.
-
Schritt 4
Vollständige Komponentennachrichten übersetzen
Rufen Sie useTranslation für den relevanten Namespace auf und übergeben Sie Interpolationswerte als benannte Daten. Verwenden Sie Trans nur, wenn eine zusammenhängende Nachricht React-Elemente enthält, nicht um beliebige Fragmente zusammenzusetzen.
-
Schritt 5
Eine barrierefreie Sprachauswahl erstellen
Ändern Sie die aktive Sprache der Bibliothek und navigieren Sie zur passenden sprachspezifischen URL, wenn die Routen lokalisiert sind. Speichern Sie eine Präferenz nur als Komfortfunktion; sie darf nicht die einzige verlässliche Quelle für öffentliche Seiten sein.
{
"navigation": {
"home": "Home"
},
"cart": {
"items_one": "{{count}} item",
"items_other": "{{count}} items"
}
} import {useTranslation} from 'react-i18next';
export function CartSummary({count}: {count: number}) {
const {t, i18n} = useTranslation('common');
return (
<section>
<h2>{t('cart.title')}</h2>
<p>{t('cart.items', {count})}</p>
<button onClick={() => i18n.changeLanguage('fr')}>
{t('language.french')}
</button>
</section>
);
} Initialisieren Sie i18next vor dem ersten für Nutzer sichtbaren Rendern. Zeigen Sie in einer rein clientseitigen Anwendung einen bewusst gestalteten Ladezustand, während der aktive Katalog eintrifft, statt roher Schlüssel. Erstellen oder beziehen Sie bei SSR eine sicher an die Anfrage gebundene Instanz, laden Sie die ermittelte Sprache, rendern Sie damit und serialisieren Sie nur die Ressourcen, die der Client benötigt, um denselben Baum zu hydrieren.
Eine Sprachauswahl sollte lesbare Sprachnamen anzeigen, die aktuelle Auswahl kennzeichnen und die entsprechende Route des Nutzers beibehalten. Für öffentliche lokalisierte Seiten sind Links vorzuziehen, da jede Sprache eine echte URL besitzt. Ein Auswahlfeld oder Menü kann die Interaktion verbessern, doch Tastaturzugriff, Fokusverhalten und ein Navigationsweg ohne JavaScript müssen erhalten bleiben.
Pluralformen, Datumsangaben, Zahlen und RTL
Übersetzen Sie keine vorformatierten Werte. Behalten Sie ein Datum bis zum Rendering als Date oder Zeitstempel, einen Preis als Zahl plus Währungscode und eine Liste als Array bei. Intl.DateTimeFormat, Intl.NumberFormat, Intl.RelativeTimeFormat und Intl.ListFormat wenden sprachspezifische Konventionen an, ohne eine separate Formatierungs-Engine auszuliefern. Die meisten i18n-Bibliotheken umschließen diese APIs, sodass Nachrichten und Werte dieselbe aktive Sprache verwenden.
Pluralisierung ist eine grammatische Auswahl und nicht die Bedingung count === 1. i18next verwendet Kategorien aus Intl.PluralRules und aktuelle JSON-v4-Suffixe wie _one und _other; manche Sprachen benötigen zusätzlich zero, two, few oder many. React Intl und Lingui drücken die Alternativen in ICU-Nachrichten aus. Übergeben Sie count stets als Datenwert und bewahren Sie den vollständigen Satz im Katalog auf.
Setzen Sie für von rechts nach links geschriebene Sprachen dir am Dokumentstammelement, wenn die aktive Schrift dies erfordert, und bevorzugen Sie logische CSS-Eigenschaften wie margin-inline-start. Prüfen Sie Richtungssymbole, Diagramme und gemischtsprachige Eingaben, statt mechanisch alles zu spiegeln. Setzen Sie html lang separat für Aussprache und sprachabhängiges Verhalten; Sprache und Textrichtung sind verwandte Konfigurationswerte, aber kein Ersatz füreinander.
export function LocalizedPrice({locale, value}: Props) {
const currency = new Intl.NumberFormat(locale, {
style: 'currency',
currency: 'EUR'
});
const date = new Intl.DateTimeFormat(locale, {
dateStyle: 'long'
});
return <p>{currency.format(value)} · {date.format(new Date())}</p>;
} Performance und mehrsprachige SEO
Ein Katalog für jede Sprache kann zu den größten Anwendungsressourcen gehören, wenn er vorzeitig importiert wird. Teilen Sie Kataloge zuerst nach Sprache und bei ausreichend großen Produkten zusätzlich nach Route oder Namespace auf. Laden Sie den aktiven Katalog vor dem Rendern kritischer Oberflächen, cachen Sie unveränderliche versionierte Ressourcen und vermeiden Sie eine zweite Anfrage für Nachrichten, die der Server bereits zum Erzeugen der Seite verwendet hat.
Bevorzugen Sie für öffentliche Inhalte ein React-Framework, das lokalisiertes HTML durch statische Generierung oder Server-Rendering ausgeben kann. Die Hydration sollte dieselbe Sprache und dieselben Nachrichten beibehalten, die die Serverausgabe erzeugt haben. Erkennt der Client die Sprache erneut und unabhängig, kann dies zu flackernden Inhalten und Hydration-Abweichungen führen. Übergeben Sie die ermittelte Sprache über die Rendering-Grenze, statt zweimal zu raten.
Mehrsprachige SEO hängt von auffindbaren Alternativen ab. Veröffentlichen Sie pro Sprache eine stabile URL, lokalisieren Sie Titel und Beschreibung, geben Sie eine selbstreferenzierende kanonische URL aus und verbinden Sie gleichwertige Seiten mit wechselseitigen hreflang-Werten. Suchmaschinen-Crawler senden möglicherweise keinen brauchbaren Accept-Language-Header. Machen Sie die Browsererkennung daher nie zum einzigen Weg zu Übersetzungen. Eine sichtbare, verlinkte Sprachauswahl hilft Nutzern und Crawlern gleichermaßen.
- Laden Sie nur die aktive Sprache und die von der Route benötigten Namespaces.
- Rendern Sie die ausgewählte Sprache für öffentliche Seiten auf dem Server oder zur Build-Zeit.
- Laden Sie kritische Nachrichten vorab, damit Schlüssel oder die Fallback-Sprache nicht kurzzeitig sichtbar werden.
- Geben Sie jeder lokalisierten Seite eine eindeutige URL, eine kanonische URL und wechselseitige hreflang-Links.
- Behalten Sie gewöhnliche Links für die Sprachauswahl bei und bewahren Sie die entsprechende Route.
Einen skalierbaren Übersetzungsworkflow erstellen
Katalogqualität ist ein Aspekt der Softwarequalität. Prüfen Sie Quellnachrichten vor der Übersetzung, geben Sie jeder Nachricht ausreichend Kontext und halten Sie Platzhalter stabil. Automatisierte Prüfungen sollten fehlende Schlüssel, fehlerhafte ICU-Ausdrücke, inkompatible Interpolationsvariablen und auseinanderlaufende Kataloge erkennen. Diese Fehler lassen sich in einem Pull Request günstiger beheben als nach der Veröffentlichung einer Sprache.
Pseudolokalisierung gehört zu den wertvollsten frühen Tests. Verlängern Sie Zeichenfolgen, fügen Sie sichtbare Markierungen hinzu und simulieren Sie die Schreibrichtung von rechts nach links, um Layouts aufzudecken, die von englischer Textlänge oder Wortreihenfolge abhängen. Kombinieren Sie dies mit repräsentativen Snapshots oder End-to-End-Abläufen für Checkout, Authentifizierung, Validierung und andere kritische Pfade. Eine Prüfung durch Muttersprachler bleibt wichtig, doch die Entwicklung kann viele strukturelle Mängel schon vorher beseitigen.
- Verwenden Sie semantische Schlüssel und dokumentieren Sie Kontext, den Übersetzer nicht erschließen können.
- Setzen Sie übersetzte Fragmente niemals zusammen und verwenden Sie Nachrichten nicht in sachfremden Kontexten wieder.
- Prüfen Sie vor der Veröffentlichung Schlüsselgleichheit, Syntax, Interpolation und ungenutzte Nachrichten.
- Nutzen Sie Pseudolokalisierung, um abgeschnittene Inhalte, fest codierte Texte und bidirektionale Layoutfehler frühzeitig aufzudecken.
- Legen Sie die Zuständigkeit für Quelltexte, Übersetzungsprüfung und Produktionsbereitstellung fest.
Wie Translatable in den Workflow passt
Die React-Bibliothek übernimmt Laufzeitaufgaben: Nachrichten auswählen, Werte interpolieren und Komponenten aktualisieren. Eine Lokalisierungsplattform verwaltet den Workflow rund um diese Nachrichten: Schlüsselgleichheit sicherstellen, Prüfer einladen, in großem Umfang übersetzen, Änderungen aufzeichnen und freigegebene Kataloge in die Anwendung übertragen. Die Trennung dieser Verantwortlichkeiten schützt die Komponentenebene vor Anbieterbindung.
Translatable arbeitet mit JSON-Katalogen und entwicklerorientierten Workflows. Importieren Sie vorhandene Sprachdateien, verwalten Sie Werte in einer fokussierten Oberfläche, nutzen Sie KI-Unterstützung für Entwürfe oder Massenübersetzungen, synchronisieren Sie Änderungen über Git-Anbieter und stellen Sie Katalogaktualisierungen optional über ein CDN bereit. React bleibt über die bereits vom Team gewählte i18n-Bibliothek angebunden.
Führen Sie Workflow-Automatisierung schrittweise ein. Ein kleines Team kann mit versionskontrollierten Exporten beginnen und jede Änderung in einem Pull Request prüfen. Steigt die Veröffentlichungsfrequenz, können Sie automatische Synchronisierung oder CDN-Bereitstellung ergänzen und dabei Validierung sowie einen gebündelten Fallback beibehalten. Das Ergebnis sind schnellere Textänderungen, ohne das Rendering der Anwendung von einem möglicherweise nicht verfügbaren Drittanbieter abhängig zu machen.
Häufig gestellte Fragen
Welche i18n-Bibliothek eignet sich am besten für React?
Es gibt keine universell beste Bibliothek. react-i18next ist eine starke Standardwahl für Teams, die das große i18next-Ökosystem und schlüsselbasierte Namespaces nutzen möchten. React Intl eignet sich für Teams, die eine direkte ICU-MessageFormat-API bevorzugen. Lingui überzeugt, wenn Makros zur Kompilierzeit und ein integrierter Extraktions- und Kompilierungsworkflow wichtig sind. Entscheiden Sie anhand der Komplexität Ihrer Nachrichten, des Extraktionsbedarfs, der Serverarchitektur und des vorhandenen Ökosystems.
Was ist der Unterschied zwischen react-i18next und React Intl?
react-i18next verwendet das Schlüssel- und Namespace-Modell, das Plugin-Ökosystem und die Pluralregeln von i18next; ICU steht über ein Plugin zur Verfügung. React Intl stellt ICU in den Mittelpunkt und bietet deklarative Komponenten sowie imperative Formatierung über die Intl API. Beide sind ausgereifte Optionen. Welche besser passt, hängt vom Katalogformat, dem Übersetzungsworkflow und davon ab, ob die übrige Anwendung bereits i18next verwendet.
Wie sollten React-Anwendungen mit Pluralformen umgehen?
Übergeben Sie den numerischen Wert an eine einzelne Nachricht und lassen Sie die Bibliothek die Pluralkategorien der jeweiligen Sprache anwenden. Aktuelle i18next-Kataloge im JSON-v4-Format verwenden Suffixe wie _one und _other; ICU-basierte Bibliotheken verwenden einen Pluralausdruck mit Kategorien innerhalb der Nachricht. Wählen Sie Singular oder Plural niemals anhand des Englischen im Komponentencode aus, da viele Sprachen zusätzliche Formen besitzen.
Benötige ich eine Übersetzungsmanagement-Plattform?
Ein kleines Projekt kann JSON- oder PO-Dateien direkt in Git verwalten. Eine Plattform wird nützlich, wenn mehrere Sprachen, häufige Textänderungen, Prüfer ohne Entwicklungshintergrund, KI- oder menschliche Übersetzung, ein Änderungsverlauf und automatisierte Bereitstellung die manuelle Dateikoordination aufwendig machen. Halten Sie die Laufzeitbibliothek unabhängig, damit die Einführung einer Plattform keine Neufassung der Komponenten erzwingt.
Wie mache ich eine lokalisierte React-App SEO-freundlich?
Geben Sie jeder Sprache eine stabile URL, rendern Sie aussagekräftiges lokalisiertes HTML vor oder während der ersten Antwort, lokalisieren Sie Metadaten und verbinden Sie Entsprechungen mit canonical- und hreflang-Tags. Rein clientseitig gerenderter Text kann uneinheitlich indexiert werden und führt oft zu einem sichtbaren Sprachwechsel. Verwenden Sie für öffentliche Seiten ein Framework mit statischer Generierung oder Server-Rendering, wenn Suchmaschinenzugriffe wichtig sind.
Erstellen Sie einen Lokalisierungsworkflow, den Ihr Team langfristig pflegen kann
Führen Sie Ihre JSON-Kataloge zusammen, übersetzen Sie mit KI-Unterstützung und stellen Sie Aktualisierungen über Git oder ein globales CDN bereit.
Kostenlos starten