Obecně, lokalizovat stránky lze několika způsoby. Jedním způsobem je napsat identické stránky v různých jazycích. Chtěl jsem, aby přepínání stránek do jiného jazyka bylo jednoduché a funkční v kterémkoliv místě. Nelíbí se mi stránky, které po volbě jazyka zobrazí znovu kořenovou stránku (index. html, index.php či jinou) a musí se klikat znovu. Dokonce, že stránky jsou obsahově nebo architekturou zcela jiné a poskytují svým uživatelům jinou sadu informací, v závislosti podle volby jazyka. Příklad zde.
Zdroj: http://www.phpclasses.org/
Našel jsem stránku se sadou PHP tříd, kde jsem našel vhodnou třídu a velmi mírně ji upravil.
http://www.phpclasses.org/package/6615-PHP-Load-localization-strings-based-on-current-idiom.html
Předně, upřednostnil jsem koncept, který využívá páru klíč – hodnota, takže do stránky vložím vhodný klíč a uživatel si zobrazí již stránku, kde jsou dosazené hodnoty – slova v cizím jazyce.
V angličtině:
a v češtině….
Hlavní části je definice třídy lang.class.php. V konstruktoru třídy je kontrola, jestli je znak jazyka předáván v adrese stránky. Očekávanými parametry proměnné lang
je cs
a en
.
Pokud existuje, bude nastaven jako vlastnost language
objektu mylanguage
a nahraje se příslušný soubor metodou load_language(parametr)
. V metodě load_language(parametr)
je podle hodnoty parametru složen název příslušného jazykového souboru se seznamem klíčů a hodnot.
Zdrojový kód třídy myclass:
Příklad použití:
V první části vložit do stránky třídu, vytvořit nový objekt $mylang
. Tím by to mohlo skončit, ale uložení do $_SESSION['mylang']
umožní tuto uloženou proměnnou použít v dalších částek stránky, resp. kódu PHP.
Příkazem echo KLÍČ
, se zobrazí u uživatele HODNOTA
.
Grafické řešení lokalizace PHP stránky (frontend)
Psal jsem, že požadavkem jsem si stanovil kdykoliv přepínat stránku z jazyka na jazyk. Stránka by měla být tedy od počátku tvorby psaná jako lokalizovatelná. A někde na stránce by měl být vyřešen způsob, jak přepínat mezi jazyky. Zvolil jsem grafickou podobu – obrázky vlaječek, jako symbol jazyku. No a jazyky češtinu a angličtinu, možná přiložím slovenčinu.
Až přesvědčím synka, aby mi přeložil připravené řetězce do němčiny, bude i němčina…
Pracovní HTML kod, který je nutné dále upravit pro funkční lokalizaci, vypadá takto:
Napsal jsem dva soubory lang-cs.php a lang-sn.php s obsahem:
Lokalizace je téměř funkční. Protože není nastaven jazyk v adrese, použije se ten, co je nastaven jako defaultní – angličtina. Všechny řetezce (NAME, SUBMIT) se zamění za řetezce ze souboru lang-en.php
.
V prohlížeči se zobrazí stránka:
Pro zvětšení klikněte
Pro připomenutí, vzhled stránky (CSS) není nijak nastaven.
Ke stažení zde.