Signatur
Beschreibung
locale_is_right_to_left() ist eine prozedurale Variante der Methode Locale::isRightToLeft() aus der Intl-Erweiterung. Die Funktion analysiert den übergebenen Locale-Bezeichner und gibt true zurück, wenn die zugehörige Sprache typischerweise von rechts nach links geschrieben wird (Right-to-Left, RTL).
Typische RTL-Sprachen sind Arabisch (ar), Hebräisch (he), Persisch (fa), Urdu (ur) oder Jiddisch (yi). Die Funktion ist besonders nützlich in mehrsprachigen Webanwendungen, um die Textausrichtung (dir="rtl") und das Layout dynamisch anzupassen.
Die Funktion berücksichtigt den Sprachanteil des Locale-Bezeichners. Eine gültige BCP-47-Locale-Zeichenkette wie ar_SA oder he_IL wird korrekt ausgewertet. Für unbekannte oder ungültige Locale-Bezeichner wird in der Regel false zurückgegeben.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $locale Pflicht | string | Ein BCP-47-konformer Locale-Bezeichner, z. B. ar_SA, he_IL oder en_US. |
Rückgabewert
true zurück, wenn das Locale eine Rechts-nach-links-Schrift verwendet, andernfalls false. Für ungültige oder unbekannte Locales wird false zurückgegeben.Beispiele
Einfache RTL-Erkennung für Arabisch und Englisch
<?php
$locales = ['ar_SA', 'he_IL', 'fa_IR', 'en_US', 'de_DE', 'zh_CN'];
foreach ($locales as $locale) {
$isRtl = locale_is_right_to_left($locale);
echo $locale . ': ' . ($isRtl ? 'RTL' : 'LTR') . PHP_EOL;
}
Dynamisches HTML-dir-Attribut in einer mehrsprachigen Webanwendung
<?php
function getHtmlDirection(string $locale): string {
return locale_is_right_to_left($locale) ? 'rtl' : 'ltr';
}
$userLocale = 'ar_EG'; // Vom Benutzer oder Session ermittelt
$dir = getHtmlDirection($userLocale);
echo '<html lang="' . htmlspecialchars($userLocale) . '" dir="' . $dir . '">' . PHP_EOL;
echo ' <body>' . PHP_EOL;
echo ' <p>Willkommen / مرحباً</p>' . PHP_EOL;
echo ' </body>' . PHP_EOL;
echo '</html>';
// Wichtig · Fallstricke
Verfügbarkeit: Diese Funktion erfordert die PHP-Erweiterung intl, die standardmäßig nicht in allen PHP-Installationen aktiv ist. Stelle sicher, dass extension=intl in der php.ini aktiviert ist.
Äquivalenz: locale_is_right_to_left($locale) ist funktional identisch mit Locale::isRightToLeft($locale).
Locale-Validierung: Die Funktion führt keine strenge Validierung des Locale-Bezeichners durch. Ungültige Zeichenketten führen nicht zu einem Fehler, sondern geben stillschweigend false zurück. Es empfiehlt sich, Locales vorab mit Locale::canonicalize() zu normalisieren.