Signatur
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
locale und granularity.Beispiele
Standardwerte auslesen
const segmenter = new Intl.Segmenter('de-DE');
console.log(segmenter.resolvedOptions());
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}`);
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'));
// Wichtig · Fallstricke
- Der Wert von
localehängt von der Laufzeitumgebung und den mitgelieferten ICU-Daten ab. Node.js-Builds mitsmall-icukönnen auf"en"zurückfallen. Verlasse dich also nicht auf exakte Zeichenketten. - Die Option
localeMatcherwird nicht im Ergebnis zurückgegeben, weil sie nur die Aushandlung steuert. - Ungültige Werte für
granularitylösen schon im Konstruktor einenRangeErroraus.resolvedOptions()liefert deshalb immer einen gültigen Wert. - Wird die Methode auf einem Objekt aufgerufen, das kein
Intl.Segmenterist (z. B. übercall), wirft sie einenTypeError. - Kompatibilität:
Intl.Segmentergibt es in Firefox erst ab Version 125. Für ältere Umgebungen vorher prüfen, etwa mit'Segmenter' in Intl.