Internationalisierung (i18n) in TypeScript: Überblick über Tools und Praktiken
Internationalisierung (i18n) ist der Prozess des Software-Designs, der es ermöglicht, Software an verschiedene Sprachen und regionale Standards anzupassen, ohne den Quellcode zu ändern. Für TypeScript-Anwendungen ist die Wahl der geeigneten i18n-Bibliothek von entscheidender Bedeutung: Die Typsicherheit von Übersetzungen, die Leistung und die Wartbarkeit hängen davon ab. In diesem Artikel betrachten wir drei Hauptansätze und Tools zur Implementierung von i18n in TypeScript.
1. i18next – Die klassische Lösung
i18next ist die beliebteste Bibliothek für Internationalisierung im JavaScript/TypeScript-Ökosystem. Sie unterstützt zahlreiche Frameworks (React, Vue, Angular) und verfügt über ein umfangreiches Plugin-Ökosystem.
Installation:
npm install i18next i18next-browser-languagedetectorBasiseinrichtung mit TypeScript:
import i18n from 'i18next';import { initReactI18next } from 'react-i18next';
// Typisierung der Übersetzungsressourcendeclare module 'i18next' { interface CustomTypeOptions { defaultNS: 'common'; resources: { common: typeof import('./locales/en/common.json'); }; }}
i18n.use(initReactI18next).init({ resources: { en: { common: require('./locales/en/common.json') }, ru: { common: require('./locales/ru/common.json') }, }, lng: 'ru', fallbackLng: 'en', interpolation: { escapeValue: false },});
export default i18n;Beispiel für die Verwendung in einer Komponente:
import { useTranslation } from 'react-i18next';
function Greeting() { const { t } = useTranslation(); const userName = 'Anna'; return ( <div> <p>{t('greeting', { name: userName })}</p> <p>{t('itemsCount', { count: 5 })}</p> </div> );}Vorteile:
- Große Community und umfangreiche Dokumentation
- Unterstützung für Pluralformen (Pluralization)
- Variableninterpolation
- Dynamisches Laden von Sprachressourcen
Nachteile:
- Keine strenge Typisierung "out of the box"
- Zusätzliche TypeScript-Konfiguration für vollständige Typsicherheit erforderlich
- JSON-Übersetzungsdateien werden nicht automatisch typisiert
2. typesafe-i18n – Strenge Typisierung
typesafe-i18n ist eine Bibliothek, die speziell für TypeScript entwickelt wurde. Ihr Hauptmerkmal ist die Generierung von Typen basierend auf Ihren Übersetzungsdateien.
Installation:
npm install typesafe-i18nEinrichtung und Beispiel:
// Übersetzungsdatei erstellen: src/i18n/en/index.tsexport const en = { greeting: 'Hallo {name}!', itemsCount: 'Sie haben {count} Element | Sie haben {count} Elemente',} as const;
// Typgenerierung (wird automatisch ausgeführt)// npx typesafe-i18n
// Verwendung in einer Komponenteimport { i18n } from './i18n/i18n-util';
function Profile() { const LL = i18n(); return ( <div> <p>{LL.greeting({ name: 'Anna' })}</p> <p>{LL.itemsCount({ count: 5 })}</p> </div> );}Vorteile:
- Vollständige Typsicherheit in allen Phasen
- Autovervollständigung in der IDE (IntelliSense)
- Validierung von Parametern während der Kompilierung
- Unterstützung für Pluralformen und Interpolation
Nachteile:
- Kleinere Community und weniger Plugins
- Typgenerierung bei jeder Änderung der Übersetzungen erforderlich
- Weniger Flexibilität für ungewöhnliche Szenarien
3. Lingui – Ökosystem mit Kompilierung
Lingui ist eine moderne Bibliothek, die Kompilierung für
Auch in der Bibliothek
Generierung von QR-Codes mit PHP: Bibliothek phpqrcode und vollständiger Leitfaden
ORM für Java: Vergleich von Hibernate, MyBatis und JPA mit Beispielen
OAuth-Client für Go (Golang): Verbindung zu OAuth 2.0-Anbietern
ORM für C# (.NET): Vergleich von Entity Framework, Dapper und NHibernate
Maschinelles Lernen mit Rust: Überblick über Bibliotheken für ML und Data Science