Internationalisierung (i18n) in Node.js: i18next und polyglot

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)

Internationalisierung (abgekürzt i18n – vom englischen „internationalization“, wobei 18 die Anzahl der Buchstaben zwischen dem ersten „i“ und dem letzten „n“ angibt) ist der Prozess des Entwerfens und Entwickelns von Software, sodass sie leicht an verschiedene Sprachen und Regionen angepasst werden kann, ohne Änderungen am Code vorzunehmen. Im Node.js-Ökosystem gibt es mehrere leistungsstarke Bibliotheken, die diese Aufgabe erheblich vereinfachen. In diesem Artikel betrachten wir die beiden beliebtesten: i18next und node-polyglot.



Warum ist Internationalisierung wichtig?

Moderne Webanwendungen und Serverdienste arbeiten oft mit Benutzern aus verschiedenen Ländern. Die Unterstützung mehrerer Sprachen verbessert die Benutzerfreundlichkeit (UX) und erweitert die Zielgruppe. Ohne i18n müssten Entwickler Zeichenfolgen fest in einer Sprache codieren, was die Unterstützung von Mehrsprachigkeit äußerst aufwendig und fehleranfällig macht.

Die Hauptaufgaben, die von i18n-Bibliotheken in Node.js gelöst werden:

  • Unterstützung von Übersetzungsdateien (normalerweise JSON oder YAML).
  • Pluralisierung (korrekte Deklination von Wörtern je nach Anzahl: „1 Tasse Kaffee“, „2 Tassen Kaffee“, „5 Tassen Kaffee“).
  • Interpolation von Variablen in Zeichenfolgen (z. B. „Hallo, {{name}}!“).
  • Unterstützung von verschachtelten Schlüsseln zur Strukturierung von Übersetzungen.
  • Automatische Erkennung der Benutzersprache (über HTTP-Header, Cookies, Subdomains).


Die Bibliothek i18next

i18next ist wohl die beliebteste und funktionsreichste Bibliothek für Internationalisierung in der JavaScript-Welt. Sie funktioniert sowohl im Browser als auch auf dem Node.js-Server. i18next bietet ein reichhaltiges Ökosystem an Plugins, einschließlich Integration mit React, Vue, Express und anderen Frameworks.



Installation und grundlegende Einrichtung

// Installation über npmnpm install i18next

Erstellen wir Übersetzungsdateien. Üblicherweise werden sie im Ordner locales gespeichert:

locales/ru/translation.json

{  "greeting": "Hallo, {{name}}!",  "coffee": "Sie haben {{count}} Tasse Kaffee getrunken",  "coffee_plural": "Sie haben {{count}} Tassen Kaffee getrunken",  "menu": {    "home": "Startseite",    "about": "Über uns"  }}

locales/en/translation.json

{  "greeting": "Hello, {{name}}!",  "coffee": "You drank {{count}} cup of coffee",  "coffee_plural": "You drank {{count}} cups of coffee",  "menu": {    "home": "Home",    "about": "About us"  }}

Jetzt initialisieren wir i18next in der Anwendung:

const i18next = require('i18next');const fs = require('fs');const path = require('path');

// Übersetzungen aus Dateien ladenfunction loadTranslation(lng) { const filePath = path.join(__dirname, 'locales', lng, 'translation.json'); return JSON.parse(fs.readFileSync(filePath, 'utf8'));}

i18next.init({ lng: 'ru', // Standardsprache fallbackLng: 'en', // Ersatzsprache resources: { ru: { translation: loadTranslation('ru') }, en: { translation: loadTranslation('en') } }, interpolation: { escapeValue: false // Für Node.js kein HTML-Escaping erforderlich }});

// Verwendungconsole.log(i18next.t('greeting', { name: 'Alexei' }));// Ausgabe: Hallo, Alexei!

console.log(i18next.t('coffee', { count: 1 }));// Ausgabe: Sie haben 1 Tasse Kaffee getrunken

console.log(i18next.t('coffee', { count: 5 }));// Ausgabe: Sie haben 5 Tassen Kaffee getrunken

console.log(i18next.t('menu.home'));// Ausgabe: Startseite


Sprachwechsel im laufenden Betrieb

i18next.changeLanguage('en');console.log(i18next.t('greeting', { name: 'Alex' }));// Ausgabe: Hello, Alex!


Die Bibliothek node-polyglot

node-polyglot ist eine leichte und einfache Alternative zu i18next. Sie eignet sich ideal für kleinere Projekte oder wenn nicht

Empfehlungen