Start · Sprachen · JavaScript · Referenz · Intl.Locale.prototype.caseFirst

Intl.Locale.prototype.caseFirst

Eigenschaft

Gibt zurück, ob beim Sortieren nach diesem Gebietsschema Groß- oder Kleinbuchstaben zuerst kommen: <code>"upper"</code>, <code>"lower"</code>, <code>"false"</code> oder <code>undefined</code>.

seit JavaScript ES2020 (ECMA-402); Baseline: alle modernen Browser Kategorie: method-property

Signatur

get Intl.Locale.prototype.caseFirst

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

Typ
"upper" | "lower" | "false" | undefined
Beschreibung
Die für dieses Gebietsschema festgelegte Regel zur Groß-/Kleinschreibung als String oder 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);
upper undefined

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());
lower en-u-kf-lower

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));
upper [ 'Apfel', 'apfel', 'Birne', 'birne' ] lower [ 'apfel', 'Apfel', 'birne', 'Birne' ]

Ungültigen Wert abfangen

try {
  new Intl.Locale("de", { caseFirst: "first" });
} catch (err) {
  console.log(err.name);
}
RangeError

// Wichtig · Fallstricke

  • Kein Boolean: Der Wert "false" ist ein String. Eine Prüfung wie if (locale.caseFirst) ist daher auch bei "false" wahr. Vergleiche besser explizit, etwa mit locale.caseFirst === "upper".
  • Schreibgeschützt: Eine Zuweisung an locale.caseFirst wird im nicht-strikten Modus stillschweigend ignoriert und löst im strikten Modus einen TypeError aus. Für einen anderen Wert erzeugst du eine neue Intl.Locale.
  • Andere Werte als "upper", "lower" oder "false" in der Option caseFirst lösen einen RangeError aus.
  • Wenn Tag und Option beide gesetzt sind, gilt die Option.
  • Ein Intl.Collator kann eine eigene Option caseFirst bekommen, die Vorrang vor dem kf-Wert der Locale hat. Welcher Wert tatsächlich gilt, zeigt collator.resolvedOptions().caseFirst.
  • Kompatibilität: Intl.Locale gibt es seit Chrome 74, Firefox 75, Safari 14 und Node.js 12. Ältere Umgebungen brauchen ein Polyfill wie @formatjs/intl-locale.