Signatur
Beschreibung
locale_minimize_subtags() ist das Gegenstück zu locale_maximize_subtags(). Die Funktion nimmt einen vollständig qualifizierten Locale-Bezeichner und entfernt alle Subtags, die durch den Algorithmus Likely Subtags (Unicode CLDR) als implizit und damit redundant gelten.
Beispielsweise wird zh-Hans-CN zu zh minimiert, weil Schrift (Hans) und Region (CN) für Chinesisch bereits als wahrscheinlich bekannt sind. Dies ist nützlich, um Locale-Bezeichner zu normalisieren und Redundanzen zu entfernen, bevor sie gespeichert oder verglichen werden.
Die Funktion ist ein prozeduraler Alias der Methode Locale::minimizeSubtags() und folgt dem IETF-BCP-47-Standard. Sie arbeitet auf Basis der CLDR-Daten der installierten ICU-Bibliothek – das Ergebnis kann daher je nach ICU-Version leicht variieren.
Besonders praktisch ist der Einsatz in Mehrsprachigkeits-Systemen, bei denen Locale-Bezeichner effizient und redundanzfrei gespeichert werden sollen, etwa in Datenbanken oder Konfigurationsdateien.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $locale Pflicht | string | Der Locale-Bezeichner im BCP-47-Format (z. B. zh-Hans-CN), aus dem wahrscheinliche Subtags entfernt werden sollen. |
Rückgabewert
false zurückgegeben.Beispiele
Einfaches Minimieren eines Locale-Bezeichners
<?php
// Vollständig qualifizierter Locale-Bezeichner
$locale = 'zh-Hans-CN';
$minimized = locale_minimize_subtags($locale);
echo $minimized;
// Schrift und Region sind für zh implizit – beide werden entfernt
Minimieren und anschließendes Maximieren im Vergleich
<?php
$locales = [
'en-Latn-US',
'de-Latn-DE',
'sr-Cyrl-RS',
'zh-Hans-CN',
];
foreach ($locales as $locale) {
$minimized = locale_minimize_subtags($locale);
$maximized = locale_maximize_subtags($minimized);
printf(
"Original: %-15s | Minimiert: %-10s | Wiederhergestellt: %s\n",
$locale,
$minimized,
$maximized
);
}
Verwendung der OOP-Variante über die Locale-Klasse
<?php
// Äquivalent zur prozeduralen Variante
$locale = 'en-Latn-US';
$minimized = Locale::minimizeSubtags($locale);
echo $minimized;
// Wichtig · Fallstricke
ICU-Abhängigkeit: Das Ergebnis basiert auf den CLDR-Daten der installierten ICU-Bibliothek. Bei unterschiedlichen ICU-Versionen können die Ergebnisse für seltene Locales voneinander abweichen. Prüfe daher in produktionskritischen Systemen die ICU-Version mit INTL_ICU_VERSION.
Rückgabewert prüfen: Die Funktion gibt false zurück, wenn der Locale-Bezeichner nicht gültig ist. Der Rückgabewert sollte daher mit === false geprüft werden, da ein leerer String '' theoretisch ein gültiges Ergebnis sein könnte.
Kein Round-Trip garantiert: Minimieren und anschließendes Maximieren führt in der Regel zum ursprünglichen Bezeichner zurück, ist aber nicht in allen Randfällen garantiert.