Jednoduchý dvojjazyčný web
V oznámení dokončení Shootera jsem se zmínil o také o jeho webu, a že mě při jeho tvorbě políbila binární múza a vnukla mi myšlenku, o kterou se dnes s celým širým světem chci podělit.
Web Shootera je jednoduchá stránka vyvedená ve dvou jazykových variacích. Texty jsou uloženy přímo v php souboru, žádná databáze, žádné další soubory, ba i css jsem se rozhodl uložit interně.
První vtip spočívá ve výpisu a zároveň
uložení textů. O výpis se stará nová funkce DoubleEcho
a
proměnná $lang
určuje, kterou jazykovou verzi uživatel
obdrží. Nicméně, funkce by docela dobře mohla sloužit i v jiných
případech, než je tvorba jazykových variant, kupříkladu k rozlišení
jednoduché a rozšířené verze webu. Fantazii se meze nekladou (chraň
pánbu!).
function DoubleEcho($text_cs, $text_en)
{
global $lang;
if($lang == 'cs')
echo $text_cs;
else
echo $text_en;
}
Primitivní viďte. Ale elegantní, řekl bych :).
Další věcí je rozhodnutí, ve kterém jazyku data uživateli podáme.
Prioritním faktorem je existence parametru v URL, v případě Shootera se
jedná o ?en
anebo ?cz
na konci adresy. Pokud ani
jeden z těchto parametrů v adrese není, potom se program rozhodne podle
koncovky textové interpretace IP adresy uživatele :). Jinak řečeno IP adresa
123.123.123.123 může být funkcí GetHostByAddr
převedena na
řetězec podobný 123.upc-chello.cz. A právě z koncovky se dá
usuzovat, zda je uživatel čech, anebo cizinec, a podle toho mu naservírujeme
obsah webu.
// Language - URL check
if(isset($_GET['en']))
$lang = 'en';
elseif (isset($_GET['cz']))
$lang = 'cs';
// Language - IP check
else {
$pc = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
$ext = array_pop(explode('.', $pc));
if($ext == 'cz' OR $ext == 'sk')
$lang = 'cs';
else
$lang = 'en';
}
Pravděpodobně by jazyk uživatele šel odhadnou i jinými způsoby, ale tento mi přijde docela funkční. Takže tak.
Komentáře (7)
k formuláři
RSS kanál komentářů
6.9. 2006 — 20:16
A není lepší získávat údaje o jazyku uživatele z HTTP hlavičky Accept-Language?
6.9. 2006 — 22:38
hmmm, o tom jsem ještě neslyšel, poznamenám a pak mrknu. díky.
1.2. 2008 — 10:14
Nějaký příklad by nebyl? Nějak mi z toho článku nevychází jak to udělat..potřebuju abych viděl, jak se zpracovává ten text, nepochopil jsme to z článku, nejsem žádný programátor, ale jednoduchá stránky zvládnu..
1.2. 2008 — 14:34
[3] Jarek: Ukázka z webu Shooter href=„http://shooter.kahi.cz“ rel=„nofollow“>http://shooter.kahi.cz
4.9. 2008 — 12:29
diky peknej priklad
27.7. 2010 — 20:13
Detekce na úrovni domény prvního řádu není nejideálnější řešení, ale asi jedno z nejjednodušších.
30.3. 2011 — 13:02
Přesně to co jsem hledal, díky moc! Mohl bych se ale ještě zeptat, jestli by vás nenapadlo, jak udělat doplněk v podobě tlačítka, které by jazyk na celé stránce přehodilo? Například když se mi načte čeština, tak tím tlačítkem přehodil na angličtinu a naopak? Já se s php ještě tak úplně nekamarádím a moje podivný pokusy o přehazování… no prostě nic moc. Tak se jen chci zeptat, jestli náhodou nemáte po ruce nějaké řešení?
Předem díky…
Přidat komentář