Vícejazyčná verze webových stránek
Pokud chcete, aby vaše stránky přečetl i váš zahraniční partner, vaši vzdálení příbuzní nebo jen kdokoli, kdo neumí česky, budete potřebovat připravit vícejazyčnou podobu svých stránek. Poradím vám, co pro to můžete udělat v PHP, případně v SQL.
Obvyklou aplikaci v PHP tvoří hlavní skript, který obsahuje hlavičku s nabídkou a patičku. Do skriptu se pomocí include vkládají jednotlivé stránky. Pro vícejazyčné rozšíření podle mého návodu musíte zajistit, aby hlavní skript "polknul" nastavení patřičné jazykové verze a také zvolil verzi do něj vkládané stránky. Pro tento účel si zaveďte proměnnou $lg, která bude obsahovat zvolenou jazykovou verzi. Ke správné funkci celé aplikace je pak nutné, aby byla tato proměnná předávána pomocí parametru URL v každém odkazu aplikace, případně je možné ji zaregistrovat do session (pokud aplikace sessions využívá).
V případě, že proměnná $lg ještě není nastavena (např. při vstupu na hlavní stránku) využijte autodetekci preferovaného jazyka klienta. V PHP je to proměnná $HTTP_ACCEPT_LANGUAGE. Pro určení verze použijte jen první dva znaky této proměnné. Musíte se také rozhodnout, zda jazyk požadovaný klientem je vaše aplikace vůbec schopná nabídnout. Pokud ne, změňte nastavení proměnné $lg na nějaký výchozí jazyk (např. angličtinu). Celou tuto část kódu je vhodné uložit do zvláštního souboru (např. config.php), který pak můžete snadno vložit nejen do hlavního skriptu, ale i do všech ostatních pomocných skriptů.
if (!isset($lg)) { // není-li zvolena verze, zvolit automaticky
$lg = explode(",",$HTTP_ACCEPT_LANGUAGE);
$lg = StrToLower(Substr(chop($lg[0]),0,2)); // vybrat první dva znaky preferovaného jazyka
}
if ($lg=="sk") // pokud klient preferuje slovenštinu, kterou nemáte k dispozici, přenastavit jinou vhodnou verzi
$lg="cs";
if (($lg<>"en") && ($lg<>"cs") && ($lg<>"de")) // ověřit, zda není požadována nedostupná verze
$lg="en";
require("config$lg.php"); // zavést nastavení specifické pro každou verzi
Uvedená část kódu vyjme první dva znaky z preferovaného jazyka klienta v případě, že již není jazyk určen v proměnné $lg. Umožňuje nastavení české verze stránek pro případ, kdy je slovenština preferovaným jazykem klienta, ale vy slovenskou verzi stránek nemáte (obdobně můžete předurčit další verze). Následuje ověření, zda zvolený jazyk odpovídá některé z nabízených verzí (v našem příkladu jsou k dispozici angličtina, čeština a němčina – en, cs, de) – pokud ne, zvolí se anglická verze. Poslední řádek vkládá pokračování konfiguračního souboru s nastavením, které je již specifické pro každou jazykovou verzi.
Pro českou verzi si vytvořte ještě soubor configcs.php (název souboru vznikne jednoduše přidáním dvouznakového kódu verze za název souboru). Do tohoto souboru vložte např. proměnné zobrazovaných položek hlavního skriptu a typ kódování (pokud nechcete použít kódování UTF). Někdy je potřeba použít i rozdílný typ fontu pro různé verze (např. pro českou, japonskou a ruskou verzi je nastavení specifického fontu nutné). Podobně můžete v závislosti na verzi zařadit různé soubory stylů CSS, části JavaScriptů apod. Následují příklady souborů – configcs.php, configen.php a část souboru configjp.php:
$encoding="iso-8859-2";
$font="Arial, Tahoma";
$menu1="Produkty";
$menu2="O nás";
$encoding="iso-8859-1";
$font="Arial, Tahoma";
$menu1="Products";
$menu2="About us";
$encoding="iso-2022-jp";
$font="Osaka, MS Gothic";
„Vícejazyčná“ grafika
Pokud chcete v každé jazykové verzi použít různé obrázky (např. jako součást nabídky), jednoduše k základnímu názvu souboru obrázku přidejte (stejně jako u konfiguračního souboru) dvouznakový kód verze. Například soubor offer1.gif pro českou verzi pojmenujete jako offer1cs.gif, pro německou verzi jako offer1de.gif. Ideální je, pokud mají soubory obrázků pro všechny verze stejné rozměry. Pokud to nejde (např. z důvodu rozdílné délky textu pro různé verze), pak se snažte zachovat alespoň jeden z rozměrů. V kódu potom uveďte jen ten rozměr, který se shoduje ve všech verzích.
Následující hlavní skript (index.php) již bude "mluvit" více jazyky:
<?PHP require("config.php") ?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?PHP echo $encoding ?>">
</head>
<body>
<font face="<?PHP echo $font ?>">
<a href="?pg=product&lg=<?PHP echo $lg ?>"><?PHP echo $menu1 ?></a><br>
<a href="?pg=about&lg=<?PHP echo $lg ?>"><?PHP echo $menu2 ?></a>
<p>
<img src="offer1<?PHP echo $lg ?>.gif" height="40"><img src="offer2<?PHP echo $lg ?>.gif" height="40">
<p>
<a href="?lg=cs">Česky</a> | <a href="?lg=en">English</a>
</font>
</body>
</html>
V hlavičce je vidět nastavení správného kódování, dále je vidět ukázka odkazů s parametrem $lg v URL a názvy položek odkazů vypsané z proměnných z konfiguračního souboru dané verze. V dalším odstavci je příklad použití obrázků specifických pro danou verzi s uvedením jen jednoho rozměru. Na konci souboru jsou pak odkazy, kterými lze kdykoli přepnout jazykovou verzi (případně lze doplnit další parametry, aby se při změně verze ocitl čtenář na téže stránce jiné jazykové verze a ne na výchozí, jako je tomu v tomto příkladě). Písmeno Č v textu odkazu pro přepnutí české verze je napsáno pomocí entity, aby se tento znak s diakritikou zobrazil korektně ve všech verzích nezávisle na nastaveném kódování.
Příprava stránek
Nakonec zbývá připravit vícejazyčné verze stránek, které se budou vkládat do hlavního skriptu. Existuje několik možností. Můžete vytvořit adresáře, které mají názvy shodné s kódem jazyka (např. tedy cs, en, ru atd.). Lze také každý soubor jazykové verze pojmenovat tak, že k názvu připojíte kód jazyka – obdobně jako u obrázků, např. název souboru product.php upravíte pro německou verzi na productde.php, pro polskou productpl.php.
Důležité je rozhodnout, zda je vhodnější připravit pro danou verzi kompletně celý soubor nebo připravit jen zvláštní soubor s proměnnými a do něj vložit soubor, který bude pro všechny verze stejný. První způsob zvolíte, je-li obsahem souboru spíš více textu než HTML kódu, druhý způsob platí pro opačný případ – obsahem je jen pár kousků textu, např. texty jako: adresa, telefon, mapka nebo třeba záhlaví tabulky jinak popisující údaje, které jsou ve všech verzích stejné. Oba způsoby lze samozřejmě kombinovat. Podle svého výběru pak upravíte část, která vkládá patřičný soubor do hlavního skriptu – vzhledem k množství variant již příklad neuvádím, použití je analogické jako použití již uvedeného konfiguračního souboru.
Spolupracuje-li vaše aplikace s databází, je velmi jednoduché rozšířit názvy sloupců tabulky, které mají být pro různé verze odlišné o kód jazyka. V SQL dotazu potom za název sloupce přidáte proměnnou $lg, čímž se z databáze vytáhnou data patřičné jazykové verze. V tabulce databáze pak samozřejmě musí být pro každou verzi patřičný sloupec – pokud jste měli sloupec comment v původní tabulce, pak změníte jeho název na commentcs a vytvoříte další sloupce s názvy commenten, commentde atd. Někdy se hodí použít pro jiné verze novou tabulku – pak doplníte za název každé tabulky opět kód jazyka a upravíte SQL dotaz. Základem je vždy vhodně doplnit kód jazykové verze.
Kód jazykové verze
Kód jazyka požadované verze zjistíte ve vlastnostech svého prohlížeče, kde najděte nastavení jazyka. V nabídce nalistujte požadovaný jazyk, za názvem jazyka je obvykle hranatá závorka: Italština (Švýcarsko) [it-ch]. Z této hranaté závorky si poznamenejte první dva znaky (někdy je jich více) – to je kód jazyka, který bude řádně spolupracovat s autodetekcí zmíněnou na začátku článku.
Nakonec můžete ještě zajistit uložení volby verze do cookie – ten, kdo raději používá jinou verzi stránek, než jakou nabídne autodetekce (např. z důvodu nevhodné konfigurace systému klienta), pak bude mít při opětovném vstupu na stránky verzi, kterou si zvolil.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Od iPhonu po Android: Ultra HDR přináší nový standard fotografií
1. listopadu 2024 -
4 tipy, jak na efektivní úsporu při rozjezdu podnikání
3. ledna 2023 -
AI na dosah ruky: Jak je to s AI v osobních zařízeních?
22. ledna 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024
patrik
Led 21, 2012 v 21:11mam problem s jazykovou mutaciou na svojom webe, ktory neviem riesit, mozno mi niekto bude vediet pomoct.
linky v menu mam postavene takto:
http://www.mojadomena.sk/index.php?id=podstranka
ked si ale kliknem na jazyk v menu mutacii tak link sa mi zmeni na:
http://www.mojadomena.sk/index.php?lang=eng
problem je v tom, ze vsetko funguje dobre, ale ked som na nejakej podstranke a kliknem na iny jazyk tak ma to hodi na index v inom jazyku a nie na podstranku
potreboval by som poradit ako dosiahnem to, ze ked kliknem na iny jazyk aby som ostal na aktualnej podstranke, len by sa zmenil jazyk, teda:
http://www.mojadomena.sk/index.php?id=podstranka&lang=eng
ak mi niekto viete poradit, kontaktujte ma majlom patrik@horgos.sk
dakujem
patrik
Dominik David
Led 23, 2012 v 20:50musis jeste do adresy odkazu pridat i svou aktualni podstranku
href=“?id=AktualniPodstranka&lg=cs“
http://webdesign4u.cz