Internationalisierung (i18n) in JavaScript (Node.js): Die Bibliothek i18next

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Internationalisierung (i18n) in JavaScript (Node.js): Die Bibliothek i18next

\n\n

Internationalisierung (abgekürzt i18n – von englisch "internationalization", wobei 18 die Anzahl der Buchstaben zwischen dem ersten "i" und dem letzten "n" ist) ist der Prozess des Entwurfs und der Entwicklung von Software, der es ermöglicht, sie an verschiedene Sprachen und regionale Besonderheiten anzupassen, ohne den Quellcode zu ändern. In der modernen Webentwicklung mit Node.js ist die Erstellung mehrsprachiger Anwendungen eine Notwendigkeit, um auf dem globalen Markt Fuß zu fassen.

\n\n

Eine der beliebtesten und leistungsstärksten Bibliotheken zur Implementierung von i18n im JavaScript-Ökosystem (einschließlich Node.js) ist i18next. Sie bietet eine flexible Architektur, Unterstützung für viele Übersetzungsdateiformate, Interpolation, Pluralbildung und kontextbezogene Übersetzungen. In diesem Artikel werden wir die Installation, Konfiguration und Verwendung von i18next auf der Serverseite im Detail besprechen.

\n\n

Installation und Einbindung

\n\n

Um mit i18next in einem Node.js-Projekt zu beginnen, installieren Sie die Bibliothek über npm:

\n\n
npm install i18next
\n\n

Es wird auch empfohlen, das Paket i18next-fs-backend zu installieren, um Übersetzungsdateien aus dem Dateisystem zu laden:

\n\n
npm install i18next-fs-backend
\n\n

Erstellen Sie nach der Installation eine Initialisierungsdatei, z. B. i18n.js:

\n\n
const i18next = require('i18next');\nconst Backend = require('i18next-fs-backend');\n\ni18next.use(Backend).init({\n  lng: 'ru', // Standardsprache\n  fallbackLng: 'en', // Ausweichsprache\n  backend: {\n    loadPath: './locales/{{lng}}/{{ns}}.json' // Pfad zu den Übersetzungsdateien\n  },\n  interpolation: {\n    escapeValue: false // HTML nicht escapen (für Node.js)\n  }\n});\n\nmodule.exports = i18next;
\n\n

Struktur der Übersetzungsdateien

\n\n

Erstellen Sie im Stammverzeichnis des Projekts einen Ordner locales. Erstellen Sie darin für jede Sprache einen Unterordner (z. B. en, ru, de). Platzieren Sie in jedem Unterordner JSON-Dateien mit den Übersetzungen. Üblicherweise wird pro Sprache eine Datei translation.json verwendet, aber Sie können sie zur Modularität auch in Namensräume (namespaces) aufteilen.

\n\n

Beispiel für die Datei locales/ru/translation.json:

\n\n
{\n  "welcome": "Willkommen auf unserer Website!",\n  "greeting": "Hallo, {{name}}!",\n  "items": "{{count}} Element",\n  "items_plural": "{{count}} Elemente",\n  "menu": {\n    "home": "Startseite",\n    "about": "Über uns",\n    "contact": "Kontakt"\n  }\n}
\n\n

Beispiel für die Datei locales/en/translation.json:

\n\n
{\n  "welcome": "Welcome to our website!",\n  "greeting": "Hello, {{name}}!",\n  "items": "{{count}} item",\n  "items_plural": "{{count}} items",\n  "menu": {\n    "home": "Home",\n    "about": "About",\n    "contact": "Contact"\n  }\n}
\n\n

Hauptfunktionen von i18next

\n\n

Einfache Übersetzung

\n\n

Verwenden Sie die Funktion t() (von "translate"), um eine Übersetzung zu erhalten:

\n\n
const i18next = require('./i18n');\n\n// Asynchrone Initialisierung (warten Sie in einem echten Projekt auf die Bereitschaft)\ni18next.t('welcome'); // "Willkommen auf unserer Website!" (wenn lng: 'ru')
\n\n

Interpolation von Variablen

\n\n

Fügen Sie dynamische Werte mit doppelten geschweiften Klammern in Zeichenfolgen ein:

\n\n
i18next.t('greeting', { name: 'Alex' });\n// Ergebnis: "Hallo, Alex!"
\n\n

Pluralbildung

\n\n

Die Bibliothek wählt automatisch die richtige Pluralform basierend auf der Sprachregel aus. Fügen Sie dazu Schlüssel mit dem Suffix _plural hinzu:

\n\n
i18next.t('items', { count: 1 }); // "1 Element"\ni18next.t('items', { count: 5 }); // "5 Elemente"
\n\n

Für die englische Sprache ist die Regel einfacher (ein Element – item, viele – items). Für Russisch verwendet i18next integrierte Pluralisierungsregeln, die die Zahlen 1, 2-4, 5-20 usw. berücksichtigen.

\n\n

Verschachtelte Schlüssel und

Empfehlungen