Start · Sprachen · PHP · Referenz · locale_get_all_variants

locale_get_all_variants

Funktion

Gibt alle Varianten-Subtags eines Locale-Bezeichners als Array zurück.

seit PHP 5.3.0 Kategorie: string

Signatur

locale_get_all_variants(string $locale): array

Beschreibung

Die Funktion locale_get_all_variants() analysiert einen Locale-Bezeichner (z. B. de_DE_POSIX_EURO) nach dem IETF BCP 47-Standard und extrahiert alle darin enthaltenen Varianten-Subtags als numerisch indiziertes Array.

Varianten-Subtags beschreiben spezifische Besonderheiten einer Sprache oder Region, die weder durch die Sprache (language), die Region (region) noch das Skript (script) ausgedrückt werden können – zum Beispiel orthografische Konventionen oder spezifische Dialekte. Ein Locale kann mehrere Varianten enthalten.

Diese Funktion ist der prozedurale Stil der Methode Locale::getAllVariants() aus der intl-Erweiterung. Sie eignet sich besonders dann, wenn Locale-Strings programmatisch analysiert oder weiterverarbeitet werden müssen, etwa um Texte oder Inhalte an spezifische regionale Varianten anzupassen.

Enthält der Locale-Bezeichner keine Varianten, wird ein leeres Array zurückgegeben. Bei einem ungültigen oder leeren $locale-String wird ebenfalls ein leeres Array zurückgegeben.

Parameter

Name Typ Default Beschreibung
$locale Pflicht string Der Locale-Bezeichner, dessen Varianten-Subtags extrahiert werden sollen, z. B. 'de_DE_POSIX' oder 'sl_IT_nedis_rozaj'.

Rückgabewert

Typ
array
Beschreibung
Ein numerisch indiziertes Array mit allen gefundenen Varianten-Subtags des Locale. Gibt ein leeres Array zurück, wenn keine Varianten vorhanden sind oder der Locale-Bezeichner ungültig ist.

Beispiele

Varianten eines einfachen Locale-Bezeichners auslesen

<?php
// Locale mit einer einzelnen Variante
$locale = 'de_DE_POSIX';
$variants = locale_get_all_variants($locale);
print_r($variants);
Array ( [0] => POSIX )

Locale mit mehreren Varianten

<?php
// Slowenisch in Italien mit zwei Varianten (nedis und rozaj)
$locale = 'sl_IT_nedis_rozaj';
$variants = locale_get_all_variants($locale);
print_r($variants);
Array ( [0] => nedis [1] => rozaj )

Locale ohne Variante liefert leeres Array

<?php
$locale = 'de_DE';
$variants = locale_get_all_variants($locale);
var_dump(empty($variants)); // true, da keine Variante vorhanden
bool(true)

OOP-Stil mit Locale::getAllVariants()

<?php
// Äquivalent zur prozeduralen Variante
$locale = 'sl_IT_nedis';
$variants = Locale::getAllVariants($locale);
foreach ($variants as $variant) {
    echo 'Variante: ' . $variant . PHP_EOL;
}
Variante: nedis

// Wichtig · Fallstricke

Die Funktion ist Teil der intl-Erweiterung (PHP Internationalization Functions). Sie muss in der PHP-Installation aktiviert sein (üblicherweise via extension=intl in der php.ini).

Varianten-Subtags sind gemäß BCP 47 mindestens 5 und höchstens 8 Zeichen lang (oder genau 4 Zeichen, wenn sie mit einer Ziffer beginnen). Subtags, die diesen Kriterien nicht entsprechen, werden nicht als Varianten erkannt.

Die Funktion unterscheidet nicht zwischen Groß- und Kleinschreibung bei der Erkennung, gibt die Varianten aber in der im Locale-String vorhandenen Schreibweise zurück.