
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
Související články

Výpis náhodného textu
Jak na stránce náhodně vypsat obrázek, odkaz, reklamu, text nebo cokoliv jiného.

Odstranění nepoužívaných překladů ve Vue.js
Jak ve Vue.js automaticky udržovat překlady očištěné o nepoužívané klíče.

Instalace Apache, PHP a MySQL za 30 vteřin
Jak si ve Windows spustit vlastní Apache, PHP a MySQL na svém PC za půl minuty.

MySQL přes PDO
PDO je PHP rozhraní pro pohodlnější práci s SQL databásí. Jaké přináší výhody a jak ho používat.