Signatur
Beschreibung
locale_get_display_name() ist die prozedurale Variante von Locale::getDisplayName() aus der Intl-Erweiterung. Sie gibt den vollständigen, für Menschen lesbaren Namen eines Locales zurück – bestehend aus Sprache, Region, Script und ggf. Varianten – formatiert in der Sprache des angegebenen Ausgabe-Locales.
Typischer Einsatz ist die Darstellung von Sprachauswahl-Menüs in Web-Anwendungen: Der Nutzer sieht Locale-Namen in seiner eigenen Sprache, anstatt technische Kürzel wie de_DE oder zh_Hant_TW. Das erleichtert die Bedienung erheblich.
Das optionale Argument $displayLocale bestimmt, in welcher Sprache der Name ausgegeben werden soll. Wird es weggelassen oder auf null gesetzt, verwendet PHP das Standard-Locale (Locale::getDefault()). So kann derselbe Locale-Code auf Deutsch als "Chinesisch (Traditionell, Taiwan)" und auf Englisch als "Chinese (Traditional, Taiwan)" erscheinen.
Die Funktion arbeitet intern auf Basis der ICU-Bibliothek und liefert somit zuverlässige, standardisierte Bezeichnungen für alle BCP-47-konformen Locale-Bezeichner.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $locale Pflicht | string | Der Locale-Bezeichner, dessen Anzeigename ermittelt werden soll, z. B. "de_DE", "zh_Hant_TW" oder "en_US". |
|
| $displayLocale | string | null | Das Locale, in dessen Sprache der Anzeigename ausgegeben werden soll. Wird null übergeben oder weggelassen, wird das Standard-Locale (Locale::getDefault()) verwendet. |
Rückgabewert
false zurückgegeben.Beispiele
Locale-Namen auf Deutsch ausgeben
<?php
// Verschiedene Locale-Bezeichner auf Deutsch anzeigen
$locales = ['de_DE', 'en_US', 'fr_FR', 'zh_Hant_TW', 'ja_JP'];
foreach ($locales as $locale) {
$name = locale_get_display_name($locale, 'de_DE');
echo $locale . ' => ' . $name . PHP_EOL;
}
Sprachauswahl-Menü in der Sprache des Benutzers
<?php
// Sprache des Benutzers aus dem Browser-Header ermitteln
$userLocale = locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? 'de_DE');
$availableLocales = ['de_DE', 'en_US', 'fr_FR', 'es_ES'];
echo '<select name="locale">' . PHP_EOL;
foreach ($availableLocales as $locale) {
$displayName = locale_get_display_name($locale, $userLocale);
$selected = ($locale === $userLocale) ? ' selected' : '';
echo ' <option value="' . htmlspecialchars($locale) . '"' . $selected . '>'
. htmlspecialchars($displayName) . '</option>' . PHP_EOL;
}
echo '</select>';
OOP-Variante mit Locale::getDisplayName()
<?php
use Locale;
// Prozedurale und OOP-Variante sind äquivalent
$proc = locale_get_display_name('pt_BR', 'de_DE');
$oop = Locale::getDisplayName('pt_BR', 'de_DE');
var_dump($proc === $oop); // bool(true)
echo $proc; // Portugiesisch (Brasilien)
// Wichtig · Fallstricke
Voraussetzung: Die Funktion ist Teil der intl-Erweiterung, die standardmäßig nicht in jeder PHP-Installation aktiv ist. Sicherstellen, dass extension=intl in der php.ini aktiviert ist, sonst ist die Funktion nicht verfügbar.
ICU-Version: Die genaue Schreibweise der Anzeigenamen hängt von der installierten ICU-Bibliotheksversion ab. Zwischen ICU-Versionen können sich Bezeichnungen leicht unterscheiden, was bei Server-Migrationen beachtet werden sollte.
Ungültige Locales: Bei einem syntaktisch fehlerhaften Locale-String wird false zurückgegeben. Der Rückgabewert sollte daher geprüft werden, bevor er ausgegeben wird.