Signatur
Beschreibung
resourcebundle_locales() ist die prozedurale Version von ResourceBundle::getLocales() und liefert eine Liste aller Locales (Sprachumgebungen), die für ein angegebenes ICU ResourceBundle unterstützt werden. Diese Funktion ist nützlich, wenn man herausfinden möchte, welche Sprachvarianten für ein bestimmtes Bundle vorhanden sind.
Ein ResourceBundle ist ein ICU-Konzept zur Internationalisierung: Es speichert lokalisierte Daten (Zeichenketten, Zahlen, Datumsformate usw.) getrennt nach Locale. Mit dieser Funktion kann man programmatisch ermitteln, für welche Sprachen und Regionen entsprechende Daten vorliegen, bevor man ein Bundle lädt.
Der Parameter bundlename ist entweder der Pfad zu einem Verzeichnis mit Bundle-Dateien oder ein leerer String '', um die Standard-ICU-Locales abzufragen. Das Ergebnis ist ein indiziertes Array von Locale-Strings (z. B. 'de', 'en_US', 'fr_FR').
Diese Funktion eignet sich besonders in Mehrsprachigkeits-Szenarien, um zur Laufzeit zu prüfen, welche Locales unterstützt werden, und um eine dynamische Sprachauswahl aufzubauen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $bundlename Pflicht | string | Pfad zum Verzeichnis mit den ResourceBundle-Dateien oder ein leerer String '', um alle ICU-Standard-Locales abzurufen. |
Rückgabewert
['de', 'en', 'fr_FR']) oder false im Fehlerfall (z. B. wenn das Bundle-Verzeichnis nicht gefunden wird).Beispiele
Alle ICU-Standard-Locales abrufen
<?php
// Leerer String liefert alle bekannten ICU-Locales
$locales = resourcebundle_locales('');
if ($locales === false) {
echo "Fehler beim Abrufen der Locales.\n";
} else {
echo "Anzahl verfügbarer Locales: " . count($locales) . "\n";
// Beispielausgabe der ersten 5 Einträge
foreach (array_slice($locales, 0, 5) as $locale) {
echo $locale . "\n";
}
}
Locales aus eigenem Bundle-Verzeichnis abfragen
<?php
// Pfad zu einem Verzeichnis mit eigenen .res-Bundle-Dateien
$bundlePath = '/var/www/app/resources/locales';
$locales = resourcebundle_locales($bundlePath);
if ($locales === false) {
echo "Bundle-Verzeichnis nicht gefunden oder kein gültiges Bundle.\n";
} else {
echo "Unterstützte Locales in diesem Bundle:\n";
foreach ($locales as $locale) {
echo ' - ' . $locale . "\n";
}
}
Prüfen, ob ein bestimmtes Locale unterstützt wird
<?php
$desired = 'de_DE';
$locales = resourcebundle_locales('');
if ($locales !== false && in_array($desired, $locales)) {
echo "Das Locale '{$desired}' wird unterstützt.\n";
} else {
echo "Das Locale '{$desired}' ist nicht verfügbar.\n";
}
// Wichtig · Fallstricke
Diese Funktion ist ein prozeduraler Alias für ResourceBundle::getLocales(). In objektorientiertem Code empfiehlt sich die Verwendung der Methode direkt über eine ResourceBundle-Instanz.
Die zurückgegebene Liste hängt von der installierten ICU-Version ab und kann je nach System und PHP-Version variieren. Bei leerem bundlename können mehrere hundert Einträge zurückgegeben werden.
Wenn das angegebene Verzeichnis keine gültigen Bundle-Ressourcen enthält, wird false zurückgegeben. Fehlerdetails können über intl_get_error_message() abgerufen werden.