Buď tak, alebo často je v kóde krajšie, keď tam je skuočná veta a nie nejaký alias.
Preto sa to zvykne robiť takouto funkciou:
Kód:
echo trans('This is a sentence to be translated');
A funkcia trans bude implementovať preklad. A je veľa možností, ako na to.
Úplne v najjednoduchšej forme, napr. v ini súbore. Napr. v súbore lang_sk.ini bude
Kód:
This is sentence to be translated = Toto je veta na preklad
V kóde potom len urobíš podľa detekovaného jazyka
Kód:
function trans( $sentence ) {
global $lang; //detekovany jazyk
$texts = parse_ini_file('lang_' . $lang .'.ini');
return $texts[$sentence];
}
Samozrejme chce to trocha ošetriť a domyslieť - mať texty niekde globálne načítané, aby si ich nemusel loadovať pri každom preklade vety.
No a preklady si môžeš dať do spomínaného .ini, alebo kľudne json, databáze, to je fuk.
Výhody:
1. V kóde je ozajstná veta v nejakom jazyku (akože "vývojovom" jazyku).
2. Kým žiadne jazyky nemáš, netreba ti ani žiadny súbor s prekladmi. Urobíš jednoducho
Kód:
function trans( $sentence ) {
return $sentence;
}
Keď pribudnú preklady, upravíš iba funkciu trans.
3. výhoda/nevýhoda - Keď použiješ vo funkcii trans text, ktorý nemá preklad, môžeš zobraziť vetu v pôvodnom jazyku (žiadna error hláška).
Kód:
function trans( $sentence ) {
...
return isset($texts[$sentence]) ? $texts[$sentence] : $sentence;
}
Nevýhody:
1. Vety sa musia zhodovať. Keď upravíš vetu v kóde, musíš ju zmeniť aj v každom súbore prekladu (lebo slúži ako index).
2. Keď chceš zmeniť vetu vo "vývojovom" jazyku, musíš ísť do kódu.
Obe veci sa dajú vyriešiť prekladovým súborom z "vývojového" jazyka na ten istý. V súbore teda bude preklad napr z anglického do anglického jazyka. Ale v kóde sa vety nechajú a budú sa upravovať len tie preklady.