Signatur
Beschreibung
Die Methode resolvedOptions() zeigt, welche Einstellungen eine Intl.RelativeTimeFormat-Instanz tatsächlich verwendet. Das kann von dem abweichen, was Sie dem Konstruktor übergeben haben: Die Engine verhandelt die Locale mit den verfügbaren Sprachdaten, setzt Standardwerte für fehlende Optionen ein und übernimmt Unicode-Erweiterungen wie -u-nu- aus dem Locale-Tag.
Das zurückgegebene Objekt enthält diese Eigenschaften:
locale– das BCP-47-Tag der tatsächlich genutzten Locale (z. B."de-DE"oder beim Fallback"de").style–"long","short"oder"narrow"(Standard:"long").numeric–"always"oder"auto"(Standard:"always").numberingSystem– das verwendete Zahlensystem, z. B."latn"oder"arab".
Nützlich ist die Methode vor allem zur Fehlersuche, zum Prüfen, ob eine gewünschte Sprache wirklich unterstützt wird, und zum Erzeugen eines zweiten Formatierers mit genau denselben Einstellungen. Jeder Aufruf liefert ein neues Objekt. Wenn Sie es ändern, hat das keine Auswirkung auf den Formatierer.
Rückgabewert
locale, style, numeric und numberingSystem.Beispiele
Aufgelöste Optionen mit Standardwerten anzeigen
const rtf = new Intl.RelativeTimeFormat('de-DE', { numeric: 'auto' });
console.log(rtf.resolvedOptions());
console.log(rtf.format(-1, 'day'));
Prüfen, ob die gewünschte Sprache unterstützt wird
const createFormatter = (wanted) => {
const rtf = new Intl.RelativeTimeFormat(wanted);
const { locale } = rtf.resolvedOptions();
if (!locale.startsWith(wanted.split('-')[0])) {
console.warn(`"${wanted}" nicht verfügbar, Fallback auf "${locale}"`);
}
return rtf;
};
createFormatter('fr-CA');
createFormatter('tlh'); // Klingonisch: meist nicht vorhanden
Unicode-Erweiterung für das Zahlensystem
const rtf = new Intl.RelativeTimeFormat('ar-EG-u-nu-arab', { style: 'short' });
const { locale, numberingSystem, style } = rtf.resolvedOptions();
console.log(locale, numberingSystem, style);
console.log(rtf.format(3, 'hour'));
Formatierer mit identischen Einstellungen klonen
const original = new Intl.RelativeTimeFormat('en-GB', { style: 'narrow', numeric: 'auto' });
const { locale, ...options } = original.resolvedOptions();
const clone = new Intl.RelativeTimeFormat(locale, options);
console.log(clone.format(-2, 'week'));
// Wichtig · Fallstricke
- Die Locale kann abweichen:
localegibt die tatsächlich ausgehandelte Locale an. Das kann eine allgemeinere Sprache sein ("de"statt"de-XY") oder die Standard-Locale der Umgebung. Verlassen Sie sich also nicht darauf, dass hier Ihr übergebenes Tag steht. - Der genaue Wert kann je nach Engine und ICU-Version unterschiedlich sein (Chrome, Firefox, Safari, Node.js mit
small-icuoderfull-icu). Ältere Node.js-Builds mitsmall-icufallen oft auf"en-US"zurück. numberingSystemwird nur übernommen, wenn es über die Unicode-Erweiterung-u-nu-angegeben wurde und unterstützt wird. Ab ES2023 kann es auch als OptionnumberingSystemübergeben werden. Ein ungültiger Wert wird stillschweigend durch das Standard-Zahlensystem der Locale ersetzt.- Das zurückgegebene Objekt ist eine Momentaufnahme. Wenn Sie es ändern, ändert sich der Formatierer nicht.
- Wird die Methode mit einem
thisaufgerufen, das keineIntl.RelativeTimeFormat-Instanz ist, löst sie einenTypeErroraus. - Unterstützung: Chrome 71+, Firefox 65+, Safari 14+, Node.js 12+.