Start · Sprachen · PHP · Referenz · locale_add_likely_subtags

locale_add_likely_subtags

Funktion

Ergänzt einen Locale-Bezeichner um wahrscheinliche Subtags (Sprache, Schrift, Region) gemäß Unicode CLDR-Algorithmus.

seit PHP 5.5.0 Kategorie: string

Signatur

locale_add_likely_subtags(string $locale): string|false

Beschreibung

locale_add_likely_subtags() nimmt einen unvollständigen Locale-Bezeichner (z. B. de oder zh) und gibt eine möglichst vollständige Form zurück, die Sprache, Schrift und Region enthält (z. B. de_Latn_DE oder zh_Hans_CN). Der Algorithmus basiert auf den Likely Subtags der Unicode Common Locale Data Repository (CLDR) und folgt dem Unicode-Standard TR 35.

Diese Funktion ist besonders nützlich, wenn aus einem minimalen Locale-Tag auf Schrift (Script) und Region (Region) geschlossen werden soll – etwa um Inhalte korrekt darzustellen, Schriften auszuwählen oder regionale Formatierungsregeln anzuwenden. Sie ist die prozedurale Variante der Methode Locale::addLikelySubtags().

Sie gibt den ergänzten Locale-String zurück oder false, falls der Algorithmus keinen passenden Eintrag findet (z. B. bei einem ungültigen oder unbekannten Locale).

Parameter

Name Typ Default Beschreibung
$locale Pflicht string Der Locale-Bezeichner, dem wahrscheinliche Subtags hinzugefügt werden sollen, z. B. 'de', 'zh' oder 'sr_Cyrl'. Kann eine minimale BCP-47-Angabe sein.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den um wahrscheinliche Subtags erweiterten Locale-String zurück (z. B. 'de_Latn_DE') oder false, wenn der Locale-Bezeichner unbekannt oder ungültig ist.

Beispiele

Einfache Sprache zu vollständigem Locale ergänzen

<?php
// Nur Sprachcode angegeben – Schrift und Region werden ergänzt
$result = locale_add_likely_subtags('de');
echo $result; // de_Latn_DE

$result2 = locale_add_likely_subtags('zh');
echo $result2; // zh_Hans_CN

$result3 = locale_add_likely_subtags('sr');
echo $result3; // sr_Cyrl_RS
de_Latn_DE zh_Hans_CN sr_Cyrl_RS

Schrift bereits vorhanden – nur Region ergänzen

<?php
// Schrift ist bekannt, Region wird ergänzt
$result = locale_add_likely_subtags('sr_Latn');
echo $result; // sr_Latn_RS

// OOP-Variante mit Locale-Klasse
$result2 = Locale::addLikelySubtags('uz_Cyrl');
echo $result2; // uz_Cyrl_UZ
sr_Latn_RS uz_Cyrl_UZ

Fehlerbehandlung bei unbekanntem Locale

<?php
$result = locale_add_likely_subtags('xx_XX_UNKNOWN');
if ($result === false) {
    echo 'Locale nicht erkannt oder ungültig.';
} else {
    echo $result;
}
Locale nicht erkannt oder ungültig.

// Wichtig · Fallstricke

Abhängigkeit von ICU: Die Ergebnisse hängen von der installierten ICU-Version ab. Neuere ICU-Versionen enthalten aktuellere CLDR-Daten und liefern daher möglicherweise andere oder genauere Subtags als ältere Versionen. Stellen Sie sicher, dass die ICU-Bibliothek auf dem Server aktuell ist.

Gegenstück: Die umgekehrte Operation – Entfernen von wahrscheinlichen Subtags – ist mit locale_minimize_subtags() möglich.