Signatur
Beschreibung
Die Zugriffseigenschaft caseFirst einer Intl.Locale-Instanz liefert, welche Regel für die Groß- und Kleinschreibung beim Sortieren (Kollation) gilt. Der Wert entspricht dem Unicode-Erweiterungsschlüssel kf im Sprach-Tag, also z. B. de-DE-u-kf-upper.
Mögliche Werte:
"upper"– Großbuchstaben werden vor den zugehörigen Kleinbuchstaben einsortiert ("A"vor"a")."lower"– Kleinbuchstaben kommen zuerst ("a"vor"A")."false"– keine besondere Regel, es gilt das Standardverhalten des Gebietsschemas.undefined– der Wert wurde weder im Tag noch über die Optionen gesetzt.
Du setzt den Wert entweder direkt im Sprach-Tag (-u-kf-…) oder über die Option caseFirst des Konstruktors new Intl.Locale(tag, { caseFirst }). Die Eigenschaft selbst kann nur gelesen werden. Praktisch nutzt du sie, um eine Locale mit fester Sortierregel an Intl.Collator weiterzugeben oder um zu prüfen, welche Einstellung aus einem vom Benutzer gelieferten Tag übernommen wurde.
Rückgabewert
undefined, wenn nichts festgelegt wurde.Beispiele
Wert aus dem Sprach-Tag auslesen
const upper = new Intl.Locale("de-DE-u-kf-upper");
const plain = new Intl.Locale("de-DE");
console.log(upper.caseFirst);
console.log(plain.caseFirst);
Wert über die Konstruktor-Optionen setzen
// Die Option überschreibt den Wert aus dem Tag
const locale = new Intl.Locale("en-u-kf-upper", { caseFirst: "lower" });
console.log(locale.caseFirst);
console.log(locale.toString());
Sortierung mit Intl.Collator steuern
const words = ["apfel", "Apfel", "birne", "Birne"];
const upperFirst = new Intl.Locale("de", { caseFirst: "upper" });
const lowerFirst = new Intl.Locale("de", { caseFirst: "lower" });
const sortWith = (locale) =>
[...words].sort(new Intl.Collator(locale).compare);
console.log(upperFirst.caseFirst, sortWith(upperFirst));
console.log(lowerFirst.caseFirst, sortWith(lowerFirst));
Ungültigen Wert abfangen
try {
new Intl.Locale("de", { caseFirst: "first" });
} catch (err) {
console.log(err.name);
}
// Wichtig · Fallstricke
- Kein Boolean: Der Wert
"false"ist ein String. Eine Prüfung wieif (locale.caseFirst)ist daher auch bei"false"wahr. Vergleiche besser explizit, etwa mitlocale.caseFirst === "upper". - Schreibgeschützt: Eine Zuweisung an
locale.caseFirstwird im nicht-strikten Modus stillschweigend ignoriert und löst im strikten Modus einenTypeErroraus. Für einen anderen Wert erzeugst du eine neueIntl.Locale. - Andere Werte als
"upper","lower"oder"false"in der OptioncaseFirstlösen einenRangeErroraus. - Wenn Tag und Option beide gesetzt sind, gilt die Option.
- Ein
Intl.Collatorkann eine eigene OptioncaseFirstbekommen, die Vorrang vor demkf-Wert der Locale hat. Welcher Wert tatsächlich gilt, zeigtcollator.resolvedOptions().caseFirst. - Kompatibilität:
Intl.Localegibt es seit Chrome 74, Firefox 75, Safari 14 und Node.js 12. Ältere Umgebungen brauchen ein Polyfill wie@formatjs/intl-locale.