Signatur
Beschreibung
locale_get_display_variant() ist die prozedurale Variante von Locale::getDisplayVariant() aus der Intl-Extension. Sie extrahiert den Variantenanteil eines Locale-Bezeichners (z. B. POSIX, NEDIS) und gibt ihn in einer angegebenen Anzeigesprache zurück.
Varianten beschreiben regionale oder technische Besonderheiten innerhalb einer Sprache/Region, die über Sprache und Region hinausgehen. Sie treten vergleichsweise selten auf, sind jedoch relevant, wenn eine Anwendung präzise Locale-Metadaten darstellen muss, z. B. in Spracheinstellungs-UIs oder internationalisierten Konfigurationsoberflächen.
Der Parameter $displayLocale bestimmt, in welcher Sprache der Name der Variante ausgegeben wird. Wird er weggelassen oder auf null gesetzt, wird das Standard-Locale der Umgebung verwendet (ermittelt über Locale::getDefault()).
Falls der übergebene Locale-Bezeichner keine Variante enthält oder der Bezeichner ungültig ist, gibt die Funktion einen leeren String oder false zurück.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $locale Pflicht | string | Der Locale-Bezeichner im BCP-47-Format (z. B. sl_IT_NEDIS), dessen Variantenanteil abgefragt werden soll. |
|
| $displayLocale | string|null | null | Das Locale, in dessen Sprache der Anzeigename der Variante ausgegeben werden soll. Wird null übergeben oder der Parameter weggelassen, wird das Standard-Locale genutzt. |
Rückgabewert
string zurück, oder einen leeren String, wenn der Locale-Bezeichner keine Variante enthält. Bei einem Fehler (z. B. ungültiger Locale-Bezeichner) wird false zurückgegeben.Beispiele
Anzeigename einer Variante auf Englisch ausgeben
<?php
// Locale 'sl_IT_NEDIS' enthält die Variante 'NEDIS'
$locale = 'sl_IT_NEDIS';
$variant = locale_get_display_variant($locale, 'en');
echo $variant; // Ausgabe hängt von den ICU-Daten ab
Anzeigename der Variante in der Standardsprache (Deutsch)
<?php
// Standard-Locale auf Deutsch setzen
Locale::setDefault('de_DE');
$locale = 'sl_IT_NEDIS';
$variantDE = locale_get_display_variant($locale);
echo $variantDE;
// Locale ohne Variante — leerer String erwartet
$localeOhneVariante = 'de_DE';
$leer = locale_get_display_variant($localeOhneVariante, 'de');
var_dump($leer);
Objektorientierte Verwendung via Locale-Klasse
<?php
// Äquivalente OOP-Variante
$locale = 'ca_ES_VALENCIA';
$name = Locale::getDisplayVariant($locale, 'de');
echo $name;
// Wichtig · Fallstricke
Abhängigkeit von ICU-Daten: Die zurückgegebenen Anzeigenamen hängen von der installierten ICU-Bibliotheksversion ab. Unterschiedliche Serverumgebungen können abweichende oder keine Übersetzungen liefern.
Leerer Rückgabewert: Wenn der Locale-Bezeichner keine Variante enthält (z. B. de_DE), wird ein leerer String zurückgegeben – kein false. Unterscheide daher mit === false für Fehler und === '' für fehlende Varianten.
Intl-Extension erforderlich: Die Funktion steht nur zur Verfügung, wenn PHP mit der intl-Extension kompiliert wurde (php_intl). Prüfe die Verfügbarkeit mit extension_loaded('intl').