Signatur
Beschreibung
Die Methode resolvedOptions() zeigt, mit welchen Einstellungen eine Intl.DisplayNames-Instanz tatsächlich arbeitet. Das ist nicht unbedingt das, was an den Konstruktor übergeben wurde: Die Locale wird mit den Locales abgeglichen, die die Laufzeitumgebung unterstützt, und fehlende Optionen werden mit Standardwerten ergänzt (z. B. style: "long" und fallback: "code").
Das zurückgegebene Objekt hat folgende Eigenschaften:
locale– BCP-47-Tag der tatsächlich verwendeten Localestyle–"long","short"oder"narrow"type–"language","region","script","currency","calendar"oder"dateTimeField"fallback–"code"oder"none"languageDisplay–"dialect"oder"standard"; nur vorhanden, wenntypeden Wert"language"hat
Typische Anwendungsfälle sind die Fehlersuche bei der Internationalisierung, das Prüfen, ob die gewünschte Locale wirklich unterstützt wird, und das Weitergeben einer bestehenden Konfiguration an andere Intl-Formatierer.
Rückgabewert
Beispiele
Standardwerte sichtbar machen
const regionNames = new Intl.DisplayNames(['de'], { type: 'region' });
console.log(regionNames.resolvedOptions());
console.log(regionNames.of('CH'));
languageDisplay nur bei type "language"
const sprachen = new Intl.DisplayNames(['de'], {
type: 'language',
languageDisplay: 'standard',
style: 'short'
});
const opts = sprachen.resolvedOptions();
console.log(opts.languageDisplay);
console.log(sprachen.of('en-US'));
const waehrungen = new Intl.DisplayNames(['de'], { type: 'currency' });
console.log('languageDisplay' in waehrungen.resolvedOptions());
Prüfen, ob die gewünschte Locale unterstützt wird
const getDisplayNames = (wunschLocale, type) => {
const dn = new Intl.DisplayNames([wunschLocale], { type, fallback: 'none' });
const { locale } = dn.resolvedOptions();
if (!locale.startsWith(wunschLocale.split('-')[0])) {
console.warn(`Locale ${wunschLocale} nicht verfügbar, verwende ${locale}`);
}
return dn;
};
const dn = getDisplayNames('fr-CA', 'currency');
console.log(dn.resolvedOptions().locale);
console.log(dn.of('EUR'));
Konfiguration klonen und nur eine Option ändern
const lang = new Intl.DisplayNames(['de-AT'], { type: 'language' });
const { locale, ...rest } = lang.resolvedOptions();
// gleiche Einstellungen, aber kurzer Stil
const kurz = new Intl.DisplayNames([locale], { ...rest, style: 'short' });
console.log(kurz.resolvedOptions().style);
// Wichtig · Fallstricke
- Die Locale kann abweichen: Wird eine Locale nicht unterstützt, fällt die Laufzeitumgebung auf eine passende oder auf die Standard-Locale zurück. Ob man die gewünschte Locale wirklich bekommen hat, sieht man nur an
resolvedOptions().locale. Unicode-Erweiterungen wie-u-ca-…werden entfernt, weilDisplayNameskeine davon unterstützt. languageDisplayist nur vorhanden, wenntypeden Wert"language"hat. Prüfe die Eigenschaft deshalb nicht blind.- Die Pflichtoption
typehat keinen Standardwert: Fehlt sie, wirft schon der Konstruktor einenTypeError. - Jeder Aufruf gibt ein neues Objekt zurück. Zwei Aufrufe liefern also nie dasselbe Objekt (
===ergibtfalse). - Die genauen Ausgaben von
of()hängen von den CLDR-Daten der jeweiligen Engine ab und können sich zwischen Browsern und Node.js-Versionen leicht unterscheiden. Node.js-Builds mitsmall-icuunterstützen oft nur Englisch. - Kompatibilität: Chrome 81+, Firefox 86+, Safari 14.1+, Node.js 14+.
languageDisplayund die TypencalendarunddateTimeFieldkamen später hinzu (ES2022).