Ich frage mich, wie ich mit Internationalisierung in JavaScript umgehen soll. Ich habe gegoogelt, aber ich bekomme keine überzeugenden Antworten für:
- Hat JavaScript native Unterstützung für die Internationalisierung?
- Was ist i18n in JavaScript?
- Wie gehe ich mit Kalendern, Währungen, Daten usw. um?
Ich habe bereits Internationalisierung in JavaScript gelesen .
javascript
internationalization
rajakvk
quelle
quelle
Antworten:
Die Lokalisierungsunterstützung in älteren Browsern ist schlecht. Ursprünglich lag dies an Phrasen in der
ECMAScript
Sprachspezifikation, die so aussehen:Jede in der Spezifikation definierte Lokalisierungsmethode ist als "implementierungsabhängig" definiert, was zu vielen Inkonsistenzen führt. In diesem Fall geben Chrome Opera und Safari dasselbe zurück wie
.toString()
. Firefox und IE geben Zeichenfolgen mit Gebietsschema-Format zurück, und IE enthält sogar ein Tausendertrennzeichen (perfekt für Währungszeichenfolgen). Chrome wurde kürzlich aktualisiert, um eine durch Tausende getrennte Zeichenfolge ohne feste Dezimalstelle zurückzugeben.Für moderne Umgebungen bietet die ECMAScript Internationalization API-Spezifikation , ein neuer Standard, der die ECMAScript Language-Spezifikation ergänzt, eine viel bessere Unterstützung für den Zeichenfolgenvergleich, die Zahlenformatierung sowie die Datums- und Uhrzeitformatierung. Außerdem werden die entsprechenden Funktionen in der Sprachspezifikation festgelegt. Eine Einführung finden Sie hier . Implementierungen sind verfügbar in:
Es gibt auch eine Kompatibilitätsimplementierung, Intl.js , die die API in Umgebungen bereitstellt, in denen sie noch nicht vorhanden ist.
Das Ermitteln der bevorzugten Sprache des Benutzers bleibt ein Problem, da es keine Spezifikation zum Abrufen der aktuellen Sprache gibt. Jeder Browser implementiert eine Methode zum Abrufen einer Sprachzeichenfolge. Diese kann jedoch auf der Betriebssystemsprache des Benutzers oder nur auf der Sprache des Browsers basieren:
Eine gute Problemumgehung besteht darin, den Accept-Language-Header vom Server auf den Client zu übertragen. Wenn es als JavaScript formatiert ist, kann es an die Internationalization API-Konstruktoren übergeben werden, die automatisch das beste (oder zuerst unterstützte) Gebietsschema auswählen.
Kurz gesagt, Sie müssen einen Großteil der Arbeit selbst erledigen oder ein Framework / eine Bibliothek verwenden , da Sie sich nicht darauf verlassen können, dass der Browser dies für Sie erledigt.
Verschiedene Bibliotheken und Plugins zur Lokalisierung:
Fühlen Sie sich frei, hinzuzufügen / zu bearbeiten.
quelle
Mozilla hat kürzlich das großartige L20n oder die Lokalisierung 2.0 veröffentlicht. In ihren eigenen Worten ist L20n
Ihre js-Implementierung befindet sich im Github L20n-Repository.
quelle
Ein Teil davon ist nativ, der Rest ist über Bibliotheken erhältlich.
Zum Beispiel ist Datejs eine gute internationale Datumsbibliothek .
Im Übrigen geht es nur um Sprachübersetzung, und JavaScript ist nativ Unicode-kompatibel (sowie alle gängigen Browser).
quelle
Sie können auch eine andere Bibliothek ausprobieren - https://github.com/wikimedia/jquery.i18n .
Zusätzlich zum Ersetzen von Parametern und mehreren Pluralformen bietet es Unterstützung für das Geschlecht, ein ziemlich einzigartiges Merkmal der benutzerdefinierten Grammatikregeln, die einige Sprachen benötigen.
quelle