HTML: Markup language
CSS: Styling language
JavaScript: Scripting language
Web APIs: Programming interfaces
All web technology
Learn web development
Discover our tools
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
View in English Always switch to English
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2017 browserübergreifend verfügbar.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Das Intl Namensraum-Objekt enthält mehrere Konstruktoren sowie Funktionen, die den Internationalisierungs-Konstruktoren und anderen sprachsensitiven Funktionen gemeinsam sind. Zusammen bilden sie die ECMAScript Internationalization API, die sprachsensitive Zeichenfolgenvergleiche, Nummernformatierung, Datums- und Zeitformatierung und mehr bietet.
Intl
Im Gegensatz zu den meisten globalen Objekten ist Intl kein Konstruktor. Sie können es nicht mit dem new Operator verwenden oder das Intl Objekt als Funktion aufrufen. Alle Eigenschaften und Methoden von Intl sind statisch (genau wie das Math Objekt).
new
Math
Die Internationalisierungs-Konstruktoren sowie mehrere sprachsensitive Methoden anderer Konstruktoren (unter Siehe auch) verwenden ein gemeinsames Muster zur Identifizierung von Gebietsschemen und zur Bestimmung desjenigen, das sie tatsächlich verwenden werden: Sie akzeptieren alle locales- und options-Argumente und verhandeln die angeforderten Gebietsschema(s) gegenüber den von ihnen unterstützten Gebietsschemen unter Verwendung eines Algorithmus, der in der Eigenschaft options.localeMatcher angegeben ist.
locales
options
options.localeMatcher
Das locales-Argument wird verwendet, um das in einer gegebenen Operation verwendete Gebietsschema zu bestimmen. Die JavaScript-Implementierung prüft locales und berechnet dann ein Gebietsschema, das es versteht und das am ehesten der ausgedrückten Präferenz entspricht. locales kann sein:
undefined
Intl.Locale
In den letzten beiden Fällen ist das tatsächlich verwendete Gebietsschema das am besten unterstützte, das durch die Gebietsschema-Verhandlung ermittelt wird. Wenn ein Gebietsschema-Identifier kein String oder Objekt ist, wird ein TypeError ausgelöst. Wenn ein Gebietsschema-Identifier ein syntaktisch ungültiger String ist, wird ein RangeError ausgelöst. Wenn ein Gebietsschema-Identifier gut geformt, aber von der Implementierung nicht erkannt wird, wird er ignoriert und das nächste Gebietsschema in der Liste wird in Betracht gezogen, letztendlich fällt es auf das Systemgebietsschema zurück. Sie sollten sich jedoch nicht darauf verlassen, dass ein bestimmter Gebietsschema-Name ignoriert wird, da die Implementierung in Zukunft für jedes Gebietsschema Daten hinzufügen kann. Zum Beispiel verwendet new Intl.DateTimeFormat("default") nur das Standardgebietsschema der Implementierung, weil "default" syntaktisch gültig, aber als kein Gebietsschema erkannt ist.
TypeError
RangeError
new Intl.DateTimeFormat("default")
"default"
Ein Gebietsschema-Identifier ist ein String, der aus Folgendem besteht:
Jeder Subtag und jede Sequenz sind durch Bindestriche getrennt. Gebietsschema-Identifier sind nicht unterscheidend nach Groß- und Kleinschreibung ASCII. Der Konvention nach wird jedoch empfohlen, Großbuchstaben für den ersten Buchstaben von Skript-Subtags zu verwenden, Großbuchstaben für Regions-Subtags und Kleinbuchstaben für alles andere. Zum Beispiel:
"hi"
"de-AT"
"zh-Hans-CN"
"en-emodeng"
Subtags, die Sprachen, Skripte, Regionen (einschließlich Ländern) und (selten verwendete) Varianten identifizieren, sind im IANA Language Subtag Registry registriert. Dieses Register wird regelmäßig aktualisiert, und Implementierungen sind möglicherweise nicht immer auf dem neuesten Stand, daher sollten Sie sich nicht zu sehr darauf verlassen, dass Subtags universell unterstützt werden.
BCP 47 Erweiterungssequenzen bestehen aus einer einzelnen Ziffer oder einem Buchstaben (außer "x") und einem oder mehreren Subtags mit zwei bis acht Buchstaben oder Ziffern, die durch Bindestriche getrennt sind. Nur eine Folge ist für jede Ziffer oder jeden Buchstaben erlaubt: "de-a-foo-a-foo" ist ungültig. BCP 47 Erweiterungs-Subtags sind im Unicode CLDR-Projekt definiert. Derzeit haben nur zwei Erweiterungen definierte Semantiken:
"x"
"de-a-foo-a-foo"
Die "u" (Unicode) Erweiterung kann verwendet werden, um zusätzliche Anpassungen von Intl API-Objekten anzufordern. Beispiele:
"u"
"de-DE-u-co-phonebk"
"th-TH-u-nu-thai"
"ja-JP-u-ca-japanese"
"en-GB-u-ca-islamic-umalqura"
Die "t" (transformiert) Erweiterung zeigt transformierten Inhalt an: zum Beispiel Text, der aus einem anderen Gebietsschema übersetzt wurde. Keine Intl Funktionalität berücksichtigt derzeit die "t" Erweiterung. Diese Erweiterung enthält jedoch manchmal ein eingebettetes Gebietsschema (ohne Erweiterungen): zum Beispiel enthält die transformierte Erweiterung in "de-t-en" den Gebietsschema-Identifier für Englisch. Wenn ein eingebettetes Gebietsschema vorhanden ist, muss es ein gültiger Gebietsschema-Identifier sein. Zum Beispiel, da "en-emodeng-emodeng" ungültig ist (weil es ein doppeltes emodeng Varianten-Subtag enthält), ist "de-t-en-emodeng-emodeng" ebenfalls ungültig.
"t"
"de-t-en"
"en-emodeng-emodeng"
emodeng
"de-t-en-emodeng-emodeng"
Schließlich kann eine private Nutzungserweiterungssequenz mit dem Buchstaben "x" auftreten, gefolgt von einem oder mehreren ein- bis achtbuchstabigen oder numerischen Subtags, die durch Bindestriche getrennt sind. Dies ermöglicht es Anwendungen, Informationen für den eigenen privaten Gebrauch zu kodieren, die von allen Intl Operationen ignoriert werden.
Das options-Argument muss ein Objekt sein mit Eigenschaften, die je nach Konstruktoren und Funktionen variieren. Wenn das options-Argument nicht bereitgestellt oder undefined ist, werden für alle Eigenschaften Standardwerte verwendet.
Eine Eigenschaft wird von allen sprachsensitiven Konstruktoren und Funktionen unterstützt: Die localeMatcher Eigenschaft, deren Wert ein String "lookup" oder "best fit" sein muss und der einen der unten beschriebenen Algorithmen zur Gebietsbestimmung auswählt.
localeMatcher
"lookup"
"best fit"
Die durch das locales-Argument angegebenen Gebietsschemen, nachdem Unicode-Erweiterungen von ihnen entfernt wurden, werden als priorisierte Anforderung der Anwendung interpretiert. Die Laufzeit vergleicht es mit den verfügbaren Gebietsschemen und wählt das am besten verfügbare aus. Es gibt zwei Übereinstimmungsalgorithmen: Der "lookup"-Matcher folgt dem Lookup-Algorithmus, wie er in BCP 47 spezifiziert ist; der "best fit"-Matcher ermöglicht es der Laufzeit, ein Gebietsschema bereitzustellen, das mindestens, aber möglicherweise mehr für die Anfrage geeignet ist als das Ergebnis des Lookup-Algorithmus. Wenn die Anwendung kein locales-Argument bereitstellt oder die Laufzeit kein Gebietsschema hat, das der Anfrage entspricht, wird das Standardgebietsschema der Laufzeit verwendet. Der Matcher kann mit einer Eigenschaft des options-Arguments ausgewählt werden (siehe unten).
Wenn der ausgewählte Gebietsschema-Identifier eine Unicode-Erweiterungssequenz hatte, wird diese Erweiterung jetzt verwendet, um das konstruierte Objekt oder das Verhalten der Funktion anzupassen. Jeder Konstruktor oder jede Funktion unterstützt nur eine Teilmenge der für die Unicode-Erweiterung definierten Schlüssel, und die unterstützten Werte hängen oft vom Gebietsschema-Identifier ab. Zum Beispiel wird der "co"-Schlüssel (Kollation) nur von Intl.Collator unterstützt, und sein "phonebk"-Wert wird nur für Deutsch unterstützt.
"co"
Intl.Collator
"phonebk"
Konstruktor für Kollatoren, die sprachsensitive Zeichenfolgenvergleiche ermöglichen.
Intl.DateTimeFormat
Konstruktor für Objekte, die sprachsensitive Datums- und Zeitformatierung ermöglichen.
Intl.DisplayNames
Konstruktor für Objekte, die die konsistente Übersetzung von Sprach-, Regions- und Skriptanzeige-Namen ermöglichen.
Intl.DurationFormat
Konstruktor für Objekte, die gebietsschema-sensible Dauerformatierung ermöglichen.
Intl.ListFormat
Konstruktor für Objekte, die sprachsensitive Listenformatierung ermöglichen.
Konstruktor für Objekte, die ein Unicode-Gebietsschema-Identifier darstellen.
Intl.NumberFormat
Konstruktor für Objekte, die sprachsensitive Nummernformatierung ermöglichen.
Intl.PluralRules
Konstruktor für Objekte, die plural-sensible Formatierung und sprachspezifische Regeln für Plurale ermöglichen.
Intl.RelativeTimeFormat
Konstruktor für Objekte, die sprachsensitive relative Zeitformatierung ermöglichen.
Intl.Segmenter
Konstruktor für Objekte, die gebietsschema-sensible Textsegmentierung ermöglichen.
Intl[Symbol.toStringTag]
Der Anfangswert der [Symbol.toStringTag] Eigenschaft ist der String "Intl". Diese Eigenschaft wird in Object.prototype.toString() verwendet.
[Symbol.toStringTag]
"Intl"
Object.prototype.toString()
Intl.getCanonicalLocales()
Gibt kanonische Gebietsschema-Namen zurück.
Intl.supportedValuesOf()
Gibt ein sortiertes Array zurück, das die unterstützten einzigartigen Kalender-, Kollations-, Währungs-, Nummerierungs- oder Einheitswerte enthält, die von der Implementierung unterstützt werden.
Sie können Intl verwenden, um Daten und Zahlen in einer Form zu formatieren, die für eine bestimmte Sprache und Region konventionell ist:
const count = 26254.39; const date = new Date("2012-05-24"); function log(locale) { console.log( `${new Intl.DateTimeFormat(locale).format(date)} ${new Intl.NumberFormat( locale, ).format(count)}`, ); } log("en-US"); // 5/24/2012 26,254.39 log("de-DE"); // 24.5.2012 26.254,39
Anstatt einen fest kodierten Gebietsschema-Namen an die Intl-Methoden zu übergeben, können Sie die vom Benutzer bevorzugte Sprache verwenden, die durch navigator.language bereitgestellt wird:
navigator.language
const date = new Date("2012-05-24"); const formattedDate = new Intl.DateTimeFormat(navigator.language).format(date);
Alternativ bietet die Eigenschaft navigator.languages eine sortierte Liste der bevorzugten Sprachen des Benutzers. Diese Liste kann direkt an die Intl Konstruktoren übergeben werden, um eine präferenzbasierte Fallback-Auswahl der Gebietsschemen zu implementieren. Der Prozess der Gebietsschema-Verhandlung wird verwendet, um das am besten geeignete verfügbare Gebietsschema zu wählen:
navigator.languages
const count = 26254.39; const formattedCount = new Intl.NumberFormat(navigator.languages).format(count);
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Keyboard.getLayoutMap()