`Intl.DisplayNames`
Webanwendungen, die ein globales Publikum erreichen, müssen die Anzeigennamen von Sprachen, Regionen, Schriften und Währungen in vielen verschiedenen Sprachen anzeigen. Die Übersetzungen dieser Namen erfordern Daten, die im Unicode CLDR verfügbar sind. Die Aufnahme dieser Daten in die Anwendung verursacht Kosten für die Entwickler. Nutzer bevorzugen wahrscheinlich konsistente Übersetzungen von Sprach- und Regionsnamen, und um diese Daten mit den geopolitischen Entwicklungen der Welt aktuell zu halten, ist eine kontinuierliche Wartung erforderlich.
Glücklicherweise liefern die meisten JavaScript-Laufzeiten bereits die entsprechenden Übersetzungsdaten und halten diese aktuell. Die neue Intl.DisplayNames
API gibt JavaScript-Entwicklern direkten Zugriff auf diese Übersetzungen, sodass Anwendungen lokalisierte Namen einfacher anzeigen können.
Anwendungsbeispiele
Das folgende Beispiel zeigt, wie man ein Intl.DisplayNames
-Objekt erstellt, um Regionsnamen auf Englisch unter Verwendung von ISO-3166 2-Buchstaben-Ländercodes zu erhalten.
const regionNames = new Intl.DisplayNames(['en'], { type: 'region' });
regionNames.of('US');
// → 'United States'
regionNames.of('BA');
// → 'Bosnia & Herzegovina'
regionNames.of('MM');
// → 'Myanmar (Burma)'
Das folgende Beispiel gibt Sprachennamen auf traditionellem Chinesisch unter Verwendung von Unicodes Sprachbezeichner-Grammatik aus.
const languageNames = new Intl.DisplayNames(['zh-Hant'], { type: 'language' });
languageNames.of('fr');
// → '法文'
languageNames.of('zh');
// → '中文'
languageNames.of('de');
// → '德文'
Das folgende Beispiel gibt Währungsnamen auf vereinfachtem Chinesisch unter Verwendung von ISO-4217 3-Buchstaben-Währungscodes aus. In Sprachen mit unterschiedlichen Singular- und Pluralformen sind die Währungsnamen im Singular. Für Pluralformen kann Intl.NumberFormat
verwendet werden.
const currencyNames = new Intl.DisplayNames(['zh-Hans'], {type: 'currency'});
currencyNames.of('USD');
// → '美元'
currencyNames.of('EUR');
// → '欧元'
currencyNames.of('JPY');
// → '日元'
currencyNames.of('CNY');
// → '人民币'
Das folgende Beispiel zeigt den endgültig unterstützten Typ, Skripte, auf Englisch unter Verwendung von ISO-15924 4-Buchstaben-Schriftcodes.
const scriptNames = new Intl.DisplayNames(['en'], { type: 'script' });
scriptNames.of('Latn');
// → 'Latin'
scriptNames.of('Arab');
// → 'Arabic'
scriptNames.of('Kana');
// → 'Katakana'
Für eine fortgeschrittenere Nutzung unterstützt der zweite Parameter options
auch die Eigenschaft style
. Die Eigenschaft style
entspricht der Breite des Anzeigenamens und kann entweder "long"
, "short"
oder "narrow"
sein. Die Werte für verschiedene Stile unterscheiden sich nicht immer. Der Standardwert ist "long"
.
const longLanguageNames = new Intl.DisplayNames(['en'], { type: 'language' });
longLanguageNames.of('en-US');
// → 'American English'
const shortLanguageNames = new Intl.DisplayNames(['en'], { type: 'language', style: 'short' });
shortLanguageNames.of('en-US');
// → 'US English'
const narrowLanguageNames = new Intl.DisplayNames(['en'], { type: 'language', style: 'narrow' });
narrowLanguageNames.of('en-US');
// → 'US English'
Vollständige API
Die vollständige API für Intl.DisplayNames
ist wie folgt.
Intl.DisplayNames(locales, options)
Intl.DisplayNames.prototype.of( code )
Der Konstruktor ist konsistent mit anderen Intl
-APIs. Das erste Argument ist eine Liste von Sprachen, und der zweite Parameter ist ein options
-Parameter, der die Eigenschaften localeMatcher
, type
und style
enthält.
Die Eigenschaft "localeMatcher"
wird wie bei anderen Intl
-APIs behandelt. Die Eigenschaft type
kann "region"
, "language"
, "currency"
oder "script"
sein. Die Eigenschaft style
kann "long"
, "short"
oder "narrow"
sein, wobei "long"
der Standardwert ist.
Intl.DisplayNames.prototype.of( code )
erwartet die folgenden Formate, je nachdem, wie die Instanz mit type
konstruiert wurde.
- Wenn
type
"region"
ist, musscode
entweder ein ISO-3166 2-Buchstaben-Ländercode oder ein UN-M49 3-stelliger Regionscode sein. - Wenn
type
"language"
ist, musscode
der Sprachidentifikator-Grammatik von Unicode entsprechen. - Wenn
type
"currency"
ist, musscode
ein ISO-4217 3-Buchstaben-Währungscode sein. - Wenn
type
"script"
ist, musscode
ein ISO-15924 4-Buchstaben-Schriftcode sein.
Fazit
Wie andere Intl
-APIs wird Intl.DisplayNames
von Bibliotheken und Anwendungen bevorzugt, sobald es breiter verfügbar ist, und diese werden auf das Verpacken und Liefern eigener Übersetzungsdaten zugunsten der nativen Funktionalität verzichten.