Start · Sprachen · PHP · Referenz · locale_get_display_name

locale_get_display_name

Funktion

Gibt den lokalisierten Anzeigenamen eines Locale zurück, z. B. <code>"Deutsch (Deutschland)"</code> für <code>de_DE</code>.

seit PHP 5.3.0 Kategorie: string

Signatur

locale_get_display_name(string $locale, string $displayLocale = null): string|false

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

Typ
string|false
Beschreibung
Gibt den lokalisierten Anzeigenamen als String zurück. Bei einem ungültigen Locale oder einem internen Fehler wird 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;
}
de_DE => Deutsch (Deutschland) en_US => Englisch (Vereinigte Staaten) fr_FR => Französisch (Frankreich) zh_Hant_TW => Chinesisch (Traditionell, Taiwan) ja_JP => Japanisch (Japan)

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>';
<select name="locale"> <option value="de_DE" selected>Deutsch (Deutschland)</option> <option value="en_US">Englisch (Vereinigte Staaten)</option> <option value="fr_FR">Französisch (Frankreich)</option> <option value="es_ES">Spanisch (Spanien)</option> </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)
bool(true) 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.