Zum Hauptinhalt springen

Sprachwahl

Erkennungsreihenfolge: URL-Präfix → Cookie → Basissprache (Englisch)

Aktuelle Sprache: Deutsch (de)
Formatting locale: de-DE

Übersetzte Nachrichten

m.greeting({ name: 'World' }) Hallo, World!
m.welcome_message() Willkommen bei der Internationalisierungs-Demo
m.sample_text() Dieser Text wird basierend auf der aktuellen Sprache übersetzt.

Pluralisierung

ICU MessageFormat handles pluralization rules per language.

m.items_count({ count: 0 }) 0 Elemente
m.items_count({ count: 1 }) 1 Elemente
m.items_count({ count: 2 }) 2 Elemente
m.items_count({ count: 5 }) 5 Elemente
m.items_count({ count: 42 }) 42 Elemente

Datums- & Zahlenformatierung

Formatting uses the browser's Intl API, decoupled from the translation locale.

Formatiertes Datum 15.01.2025
Formatiertes Datum (long) Mittwoch, 15. Januar 2025
Formatierte Zahl 1.234.567,89
Formatierte Währung (EUR) 1.234,50 €
Formatierte Währung (USD) 1.234,50 $
Formatierter Prozentsatz 85,4 %
Relative Zeit vorgestern

Inhaltsübersetzung (Datenbank)

The tc() helper translates JSON fields from the database, falling back through: current locale → English → first available.

tc(post.title, post.titleI18n, locale) Hallo Welt
tc(post.description, post.descriptionI18n, locale) Dieser Inhalt ist in der Datenbank als JSON gespeichert.

Fehlercodes

Domain error codes resolve to localized strings via errorMessage(code).

errorMessage(ErrorCode.AUTH_INVALID) Ungültige Zugangsdaten.
errorMessage(ErrorCode.VALIDATION_REQUIRED) Dieses Feld ist erforderlich.
errorMessage(ErrorCode.RATE_LIMITED) Zu viele Anfragen. Bitte warten Sie einen Moment.
errorMessage(ErrorCode.RESOURCE_NOT_FOUND) Wir konnten nicht finden, wonach Sie suchen.

Typsicherheit

Nachrichtenschlüssel werden zur Kompilierzeit geprüft — ein fehlender Schlüssel oder falscher Parameter führt zu einem Build-Fehler, nicht zu einem Laufzeitfehler.

← Back to Showcases

Geht dieses Pattern noch besser? Sag uns, wie.

Feedback geben