Viacjazyčný web v cakePHP
Podpora viacjazyčných webových aplikácií v dnešnom internete je veľmi dôležitá a preto cakePHP nám ponúka efektívne nástroje, ako takéto aplikácie jednoducho a rýchlo vytvárať.
Tento článok slúži ako veľmi jednoduchý príklad, ktorý demonštruje ukážku vytvorenia slovenského a anglického jazyka pre našu aplikáciu.
1. krok: vytvorenie adresárov pre jazykové súbory
Najprv si musíme vytvoriť potrebné adresáre, do ktorých budeme ukladať naše jazykové súbory.
mkdir app/locale/slo
mkdir app/locale/slo/LC_MESSAGES
mkdir app/locale/eng
mkdir app/locale/eng/LC_MESSAGES
Kompletný zoznam názvov adresárov pre jednotlivé jazyky môžete nájsť http://api.cakephp.org/…-source.html#…
'sk' => array(
'language' => 'Slovack',
'locale' => 'slo',
'localeFallback' => 'slo',
'charset' => 'utf-8'
),
'en' => array(
'language' => 'English',
'locale' => 'eng',
'localeFallback' => 'eng',
'charset' => 'utf-8'
),
V kóde vyššie môžeme vidieť, že slo je správny názov adresára pre slovenský jazyk a eng je správny názov adresára pre anglický jazyk.
2. krok: Vytvorenie view súboru so slovami pre preklad
Nasledovný kód si môžeme uložiť do ľubovoľného view súboru
<h1><? __('uvod_hlavicka'; ?></h1>
<p><? __('uvod_text'); ?></p>
3. krok: vytvorenie jazykových súborov
Consola v CakePHP nám poskytuje veľmi efektívny spôsob, ako vytvárať jazykové súbory. Stačí použiť nasledovný príkaz.
cd cake/console
./console extract
Tento príkaz znamená, že cakePHP rekurzívne prehľadá naše súbory *.ctp a *.php, a vyhľadá v nich funckie __(). Po dokončení tohoto príkazu nám ostane vygenerovaný súbor app/locale/default.pot
Následne musíme skopírovať daný súbor do jazykových adresárov
cd app/locale
cp default.pot app/locale/eng/LC_MESSAGES/default.po
cp default.pot app/locale/slo/LC_MESSAGES/default.po
Teraz už môžete editovať vaše default.po súbory ako obyčajný text. Po otvorení môžete vidieť niečo takéto
msgid "uvod_hlavicka"
msgstr "toto je hlavicka"
msgid "uvod_text"
msgstr "toto je text"
4. krok: nastavenie jazyka
Posledným krokom je nastavenie jazyka pre našu aplikáciu. To docielime zapísaním nasledovného kódu do app/config/boostrap.php
//pre slovensky jazyk
define('DEFAULT_LANGUAGE','sk');
//pre anglicky jazyk
define('DEFAULT_LANGUAGE','en');
V niektorom z budúcich článkov si ukážeme, ako si bude môcť dynamicky prepínať jazyk sám užívateľ.
Rád uvítam vaše postrehy a názory v diskusii.
Súvisiace články
-
Kategórie
- Tipy a triky (28)
- Články (8)
- Fantom CMS (4)
- Zábava (2)
- Začíname s CakePHP (6)
-
Najčítanejšie články
-
Novinky
-
Seriál o CakePHP na www.debug.sk
15. 10. 2008
Od 7. októbra vychádza nový seriál o CakePHP na serveri zameranom na programovanie s názvom Debug.sk Autorom seriálu je autor tohto webu a kto by mal záujem, môžete daný seriál podporiť jeho prečítaním.
-
-
Nálepky
-
Nedávne komentáre
-
Rss kanály

Komentáre k článku
Nový komentár
Titulok: cake extract
Autor: Jitka aka poLK
Vytvorený: 09. 10. 2007 06:40
ExtractShell byl nedavno z core kodu odstranen – misto toho nyni existuje I18nShell a ExtractTask.
Titulok: RE: cake extract
Autor: Tibor
Vytvorený: 09. 10. 2007 20:37
No ano, ale zatial vo verzii alpha plati stale stary zapis…
Ale akonahle vyjde dalsia vyvojova verzia, tak aktualizujem clanok…
Titulok: RE: cake extract
Autor: Jitka aka poLK
Vytvorený: 10. 10. 2007 07:05
Samozrejme ze to nebyla vytka, jen poznamka :)
K predmetne zmene v kodu doslo pred 3 tydny a vetsina programatoru pouzivajicich CakePHP 1.2 (z tech, ktere znam) NEPOUZIVA release 1.2.0.5427alpha, nybrz cerstvy svn checkout, anebo nightly builds.
V tuto chvili je current revision 5746 – a to je uz celkem slusne daleko od 5427 ;)
Titulok: RE: cake extract
Autor: Tibor
Vytvorený: 10. 10. 2007 10:07
Ja somozrejme taktiez pouzivam current revision, ale pri pisani clanku som sa drzal oficialneho vydania…
PS: a bral som to ako poznamku :-)
Titulok: generovanie viacjazycneho webu
Autor: jardos
Vytvorený: 04. 10. 2008 20:29
zdravicko, mal bz som taku malu otaazocku, ake riesenie bz ste navrhli na riesenie problemu ak ma byt veb viacjazyčny ale texty nebudu staticke ale podstranky budu vytvarane v administracnom rozhrani
doteraz som pouzval moj vlastny elementarny „cms“ .. a adresa vyzerala nasledovne www.example.com/…el/45/sdfsdf
ale chcel by som sa pustit do „cakePHP“ ale akosi som to zatial nenasiel ako sa k tomuto problemu postavit .. dakujem .. za kazde voditko
thnks .. jardos@6k.sk
Titulok: RE: generovanie viacjazycneho webu
Autor: Tibor
Vytvorený: 07. 10. 2008 21:30
Ahoj. Riesenim je TranslateBehavior
Nieco malo som riesil aj tu na blogu v jednej diskusii, ked som to testoval.
Tu su nejake zaujimave odkazy na nejake clanky, avsak kompletne vysvetlenie je na cely clanok. Mne osobne, v case ked som to testoval, nefungovala pomocou TranslateBehavior aktualizacia poloziek.
https://trac.cakephp.org/ticket/3940
http://groups.google.com/…4b1975544e53
Ak sa ti to podari, urcite napis skusenosti.
Titulok: RE: generovanie viacjazycneho webu
Autor: jardos
Vytvorený: 10. 10. 2008 17:59
jojo … pokukam to a uvidim …aj ked momentalne sa snazim prist kao je to s tou autorizaciou, v administracnej casti portalu .. a cakam na vasd dalsi claanok heh
Titulok: problem s jazykovou verziou
Autor: jardos
Vytvorený: 11. 10. 2008 19:17
zdravicko, postupoval som presne podla tohto navodu ktory ste publikovali, ale zial vyskytla sa chyba a neviem s nou pohnuut akosi ..
hlasi mi nasledovnu chybu
Notice (8): Undefined index: sk [CORE\cake\libs\l10n.php, line 414]
vyskusal som uz aj ine jazyky a vsetko ten isty vysledok jedine pri com nehlasi chybu je „eng“ aaale ani tam neprepisuje slova a zobrazuje . „msgid“ …
neviete niekto kde moze byt pes zakopany ? .. dakujem
Titulok: RE: problem s jazykovou verziou
Autor: Tibor
Vytvorený: 12. 10. 2008 12:17
No toto bolo este pre starsiu verziu CakePHP, tam sa jazyk definoval tak, ako je to uvedene v clanku. V posledych verziach CakePHP sa jazyk definuje v subore core.php alebo bootstrap.php
Toto je nastavenie pre slovensky jazyk, ak by si chcel aj ostatne jazyky pozri si premennu $__l10nMap v triede L10n
Titulok: jazykove verzie .. :(
Autor: jardos
Vytvorený: 16. 10. 2008 23:30
zatial tych poznatkov nieje moc vela, zaklad som pochopil ale neviem prist ako zadefinovat v aplikacii s akymi jazykmi maa pracovat, a celkovo ako pripravit inputy pre jednotlive jazyky. chcel by som to ukladat naraz, dik za radu ako dalej …
nasiel som nasledujuci kod http://groups.google.com/…9571032c6bde
mne moc nepomohol aaale mozno niekomu z vas do buducnosti pomoze