Signatur
Beschreibung
collator_get_locale() ist die prozedurale Variante der Methode Collator::getLocale() und liefert den Locale-Namen, der dem Collator-Objekt zugeordnet ist. Damit lässt sich feststellen, welche Locale tatsächlich für die Sortierung verwendet wird.
Über den Parameter $type kann zwischen zwei Varianten gewählt werden: Locale::VALID_LOCALE gibt die tatsächlich gültige (ggf. auf einen übergeordneten Wert zurückgefallene) Locale zurück, während Locale::ACTUAL_LOCALE die intern vom ICU-Framework tatsächlich verwendete Locale liefert. Letztere kann von der angeforderten Locale abweichen, wenn ICU keine exakte Übereinstimmung findet und auf eine Fallback-Locale zurückgreift.
Diese Funktion ist besonders nützlich zur Diagnose, wenn man prüfen möchte, ob die gewünschte Sortier-Locale korrekt geladen wurde oder ob ICU stillschweigend auf eine alternative Locale zurückgefallen ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $object Pflicht | Collator | Das Collator-Objekt, dessen Locale abgefragt werden soll. |
|
| $type Pflicht | int | Bestimmt, welche Art von Locale zurückgegeben wird. Erlaubte Werte: Locale::ACTUAL_LOCALE (tatsächlich verwendete ICU-Locale) oder Locale::VALID_LOCALE (gültige, ggf. auf übergeordnete Locale zurückgefallene Angabe). |
Rückgabewert
string zurück, z. B. "de_DE" oder "de". Gibt false zurück, wenn die Locale nicht ermittelt werden konnte oder ein Fehler aufgetreten ist.Beispiele
Tatsächliche und gültige Locale eines Collators ermitteln
<?php
$collator = collator_create('de_DE');
$actualLocale = collator_get_locale($collator, Locale::ACTUAL_LOCALE);
$validLocale = collator_get_locale($collator, Locale::VALID_LOCALE);
echo 'Tatsächliche Locale: ' . $actualLocale . PHP_EOL;
echo 'Gültige Locale: ' . $validLocale . PHP_EOL;
Fallback-Erkennung bei nicht verfügbarer Locale
<?php
// Eine Locale anfordern, die ICU möglicherweise nicht kennt
$collator = collator_create('de_AT_x_custom');
if ($collator) {
$actual = collator_get_locale($collator, Locale::ACTUAL_LOCALE);
$valid = collator_get_locale($collator, Locale::VALID_LOCALE);
echo 'Angefordert: de_AT_x_custom' . PHP_EOL;
echo 'Tatsächlich: ' . $actual . PHP_EOL;
echo 'Gültig: ' . $valid . PHP_EOL;
} else {
echo 'Collator konnte nicht erstellt werden.' . PHP_EOL;
}
// Wichtig · Fallstricke
Die Ausgabe von collator_get_locale() hängt stark von der installierten ICU-Version ab. Unterschiedliche ICU-Versionen können unterschiedliche Fallback-Ketten besitzen, weshalb die zurückgegebene Locale zwischen Umgebungen variieren kann. Beim Entwickeln portabler Anwendungen sollte daher immer Locale::VALID_LOCALE bevorzugt und das Ergebnis explizit geprüft werden.