
Při vytváření aplikace, kde má být možné přepínat různé jazyky, je potřeba řešit pohodlnou lokalisaci. Jak na to jednoduše v PHP?
Použití
Cílem je mít funkci s nějakým krátkým názvem – třeba l, která se bude používat pro výpis všech textů na stránce.
<?=l("Text, který půjde později přeložit.")?>
Poznámka: Sekvence <?= slouží k výpisu PHP skriptem do HTML. Košatější ekvivalent je <?php echo.
Skládání řetězců
Někdy je nutné v textech reagovat na různé stavy aplikace / používat proměnné.
<?=l("Uživatelské jméno „") . $jmeno . l("“ je již obsazeno.")?>
Takto vypadající spojování jistě není úplně elegantní. Lepíš se zdá použít funkci vsprintf:
<?=l("Uživatelské jméno „%s“ je již obsazeno.", $jmeno)?>
V případě více proměnných v textu se funkci l předá místo jedné proměnné pole s hodnotami, které se mají dosazovat.
Uložení překladu
Hlavní jazyk může být použit přímo v kódu. A další překlady potom budou PHP soubory, kde bude PHP pole s jednotlivými překlady.
$l["Text v kódu"] = "Překlad textu z kódu";
Požadovaný jazyk se potom zapne prostým vložením PHP skriptu (include).
Problém může nastat v případě, že budeme chtít změnit nějaký text primárního jazyku, který má své texty přímo v kódu. Řešením je buď úpravy hlavního jazyka vytvářet jako překlad, nebo měnit přímo kód. Potom je ale nutné synchronisovat ostatní překlady, aby překládaly i upravené řetězce.
Funkce l
Funkce l jen zkontroluje, jestli příslušný překlad existuje a vrátí ho s použitím funkce vsprintf (v případě, že jsou předány nějaké argumenty).
$l = array();
function l($text, $argumenty = array()) {
global $l;
if (isset($l[$text])) {
$text = $l[$text];
}
if (!empty($argumenty)) {
$text = vsprintf($text, $argumenty);
}
return $text;
}
Funkční ukázka je na GitHubu.
Odkazy jinam
- Localize Your Web Application for Any Country With the Google Translate API – automatický překlad aplikace pomocí Google Translate API
Co si myslíte o tomto článku?
Diskuse
Související články
IP adresa, prohlížeč a jazyk
Zjištění IP adresy, prohlížeče a preferovaného jazyka návštěvníka.
Generátor náhodných čísel online
Online generátor náhodných čísel z libovolného rozsahu. Náhodné číslo jedním kliknutím + kód pro JavaScript, PHP, Python a další jazyky.
JSON – formát a online nástroje
Co je JSON a jak s ním pracovat. Online formátovač, validátor a diff.