Start · Sprachen · PHP · Referenz · collator_get_locale

collator_get_locale

Funktion

Gibt den Locale-Namen des angegebenen <code>Collator</code>-Objekts zurück.

seit PHP 5.3.0 Kategorie: string

Signatur

collator_get_locale(Collator $object, int $type): string|false

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

Typ
string|false
Beschreibung
Gibt den Locale-Namen als 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;
Tatsächliche Locale: de Gültige Locale: de_DE

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;
}
Angefordert: de_AT_x_custom Tatsächlich: de Gültig: de_AT

// 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.