Start · Sprachen · PHP · Referenz · resourcebundle_locales

resourcebundle_locales

Funktion

Gibt ein Array aller Locales zurück, die für ein bestimmtes ResourceBundle verfügbar sind.

seit PHP 5.3.2 Kategorie: string

Signatur

resourcebundle_locales(string $bundlename): array|false

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

Typ
array|false
Beschreibung
Gibt ein indiziertes Array von Locale-Strings zurück (z. B. ['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";
    }
}
Anzahl verfügbarer Locales: 735 af af_NA af_ZA agq agq_CM

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";
    }
}
Unterstützte Locales in diesem Bundle: - de - en - fr

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";
}
Das Locale 'de_DE' wird unterstützt.

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