Start · Sprachen · JavaScript · Referenz · Intl.Segmenter.prototype.resolvedOptions()

Intl.Segmenter.prototype.resolvedOptions()

Methode

Gibt ein neues Objekt mit den tatsächlich verwendeten Optionen (<code>locale</code>, <code>granularity</code>) eines <code>Intl.Segmenter</code> zurück.

seit JavaScript ES2022 (Intl.Segmenter); Baseline seit 2024: Chrom Kategorie: method-property

Signatur

Intl.Segmenter.prototype.resolvedOptions()

Beschreibung

Die Methode resolvedOptions() zeigt, mit welchen Einstellungen ein Intl.Segmenter nach der Initialisierung wirklich arbeitet. Das Ergebnis kann von den übergebenen Optionen abweichen, weil die Laufzeitumgebung die gewünschte Locale aushandelt (Locale Negotiation) und fehlende Optionen mit Standardwerten auffüllt.

Das zurückgegebene Objekt hat zwei Eigenschaften:

  • locale: das BCP-47-Sprach-Tag der Locale, die tatsächlich verwendet wird (z. B. "de", wenn "de-XX" nicht verfügbar ist).
  • granularity: "grapheme", "word" oder "sentence". Standardwert ist "grapheme".

Typische Einsatzfälle sind Debugging, das Protokollieren der verwendeten Locale, die Prüfung, ob eine gewünschte Sprache unterstützt wird, und das Klonen eines Segmenters mit identischer Konfiguration. Jeder Aufruf erzeugt ein neues Objekt; Änderungen daran wirken sich nicht auf den Segmenter aus.

Rückgabewert

Typ
{ locale: string, granularity: "grapheme" | "word" | "sentence" }
Beschreibung
Ein neues, einfaches Objekt mit den aufgelösten Optionen locale und granularity.

Beispiele

Standardwerte auslesen

const segmenter = new Intl.Segmenter('de-DE');
console.log(segmenter.resolvedOptions());
{ locale: 'de-DE', granularity: 'grapheme' }

Locale-Aushandlung sichtbar machen

// Unbekannte Region wird auf die Basissprache zurückgeführt
const segmenter = new Intl.Segmenter(['xx-YY', 'fr-XX'], { granularity: 'word' });
const { locale, granularity } = segmenter.resolvedOptions();
console.log(`Verwendet: ${locale}, Granularität: ${granularity}`);
Verwendet: fr, Granularität: word (abhängig von der Laufzeitumgebung)

Segmenter mit gleicher Konfiguration klonen

const original = new Intl.Segmenter('ja', { granularity: 'sentence' });
const { locale, ...options } = original.resolvedOptions();
const kopie = new Intl.Segmenter(locale, options);

const text = 'こんにちは。元気ですか?';
const saetze = [...kopie.segment(text)].map((s) => s.segment);
console.log(saetze);
[ 'こんにちは。', '元気ですか?' ]

Unterstützung einer Sprache prüfen

const istUnterstuetzt = (tag) => {
  const { locale } = new Intl.Segmenter(tag).resolvedOptions();
  return new Intl.Locale(locale).language === new Intl.Locale(tag).language;
};

console.log(istUnterstuetzt('th'));
true (in gängigen Browsern mit ICU-Daten)

// Wichtig · Fallstricke

  • Der Wert von locale hängt von der Laufzeitumgebung und den mitgelieferten ICU-Daten ab. Node.js-Builds mit small-icu können auf "en" zurückfallen. Verlasse dich also nicht auf exakte Zeichenketten.
  • Die Option localeMatcher wird nicht im Ergebnis zurückgegeben, weil sie nur die Aushandlung steuert.
  • Ungültige Werte für granularity lösen schon im Konstruktor einen RangeError aus. resolvedOptions() liefert deshalb immer einen gültigen Wert.
  • Wird die Methode auf einem Objekt aufgerufen, das kein Intl.Segmenter ist (z. B. über call), wirft sie einen TypeError.
  • Kompatibilität: Intl.Segmenter gibt es in Firefox erst ab Version 125. Für ältere Umgebungen vorher prüfen, etwa mit 'Segmenter' in Intl.