Internationale Zahlen und Währungen verstehen
Lokale Währungen – einfach erklärt!
- Geld: Lokalisierung (L10n) und Internationalisierung (i18n)
- Kernkonzepte
- Eine Lösung
- Nächste Schritte
Geld: Lokalisierung (L10n) und Internationalisierung (i18n)
Sie sind nicht nur nützlich, um beim Scrabble zu glänzen. Lokalisierung und Internationalisierung beschreiben den Prozess, ein Produkt so anzupassen, dass es sich in einem anderen Land wie zu Hause anfühlt.
Eine Währung im falschen lokalen Format anzuzeigen, ist ein klares Indiz: Es wurde kein Aufwand betrieben.
Wenn du einen Preis nicht korrekt formatieren kannst, wie willst du dann den Versand abwickeln?
Internationalisierung ist ein breites Feld und reicht von der Textübersetzung bis zur Datumsformatierung. In diesem Beitrag fokussieren wir uns auf einen spezifischen Teilbereich: die Formatierung von Zahlen und Währungen.
Wir vergleichen die Formatierung an drei Eurozone-Staaten, den USA und Indien:
€1,234,567.89Irland 🇮🇪1.234.567,89 €Deutschland 🇩🇪1 234 567,89 €Frankreich 🇫🇷$1,234,567.89USA 🇺🇸₹12,34,567.89Indien 🇮🇳
Chaos! Oder? Symbole, Leerzeichen und Trennzeichen wirbeln nur so durcheinander! Es ist schon erstaunlich, wie die EU sich überhaupt auf etwas einigen kann! 😅
Kernkonzepte
Bevor wir uns die Lösungen ansehen: Was genau verstehen wir unter „Zahlen sind lokal“?
Zahlen sind lokal 🏘️
Jede Locale (Ländercodes nach ISO 3166) definiert Regeln für die Formatierung von Zahlen.
Zu den Regeln der Zahlenformatierung gehören:
- Dezimaltrennzeichen: Komma, Punkt.
- Tausendertrennzeichen: Komma, Punkt, Leerzeichen.
- Position und Abstand des Währungssymbols.
Währung ist global 🌎
Eine currency bezeichnet eine spezifische Geldeinheit. (Siehe ISO 4217 für eine vollständige Liste.)
- Definiert ein Symbol:
$,€,£,¥. (Oft mehrfach verwendet.) - Besitzt immer einen dreistelligen Code:
USD,EUR,GBP,JPY. - Kann (theoretisch) in „jedem“ Land verwendet oder getauscht werden.
- Die Umrechnung zwischen Währungen erfordert Wechselkursdaten.
- Der Wert ändert sich nicht in Abhängigkeit von der Locale.
Wann die Locale eine Rolle spielt
Die meisten E-Commerce- und Zahlungs-APIs arbeiten mit price + currencyCode. Warum keine Locales?
Locales werden typischerweise auf OS-/Geräteebene festgelegt, und Browser stellen sie über navigator.language bereit. Da jeder Ihrer Nutzer eine andere Locale haben kann, ist es sinnvoll, Zahlen und Währungen clientseitig zu formatieren.
Eine Lösung
Gute Neuigkeiten! Moderne Programmiersprachen bieten dafür native Unterstützung. In JavaScript stehen uns die Intl-Klasse und Intl.NumberFormat zur Verfügung!
Ein kurzer Blick auf den Code:
const number = 1_234_567.89;
/** * Format a number in local currency. * @param {number} amount - The amount to format. * @param {string} currency - The 3-letter currency code. * @param {string} [locale] - The users locale string. */const formatMoney = (amount, currency, locale = navigator.language) => new Intl.NumberFormat(locale, { currency, style: 'currency' }) .format(amount);
console.log('🇩🇪 ' + formatMoney(number, 'EUR', 'de-DE'));console.log('🇮🇪 ' + formatMoney(number, 'EUR', 'ga-IE'));console.log('🇫🇷 ' + formatMoney(number, 'EUR', 'fr-FR'));Für komplexere Aufgaben wie Steuerberechnungen, Rabattanwendungen oder Währungsumrechnungen sollten Sie auf eine Bibliothek wie dinero.js zurückgreifen.
Nächste Schritte
Je nach Ihrem konkreten Use-Case sollten Sie folgende verwandte Themen vertiefen:
- Best Practices für User-Locales. Erkennung + Override-Möglichkeit (z. B. Länder-Auswahl).
- Persistenz ganzer Zahlen (Cent-Beträge statt Dollar-Beträge speichern).
- Finanzmathematik. (z. B. Anwenden eines
20 % Rabatt-Gutscheins, Berechnen vonsubTotal + taxesusw.). - Live-Wechselkurse. (Für Einzelhandel, Forex-/Währungsumrechnungen).
Geben Sie Bescheid, falls Sie einen Folgeartikel zu diesen Themen wünschen!