Choď na navigáciu
Nálepky: CakePHP i18n L10n

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/de­fault.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/bo­ostrap.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.

Povedz o článku aj ostatným - www.pridej.cz

Hodnotenie článku: 37%
Počet hodnotení: 59

zlýdobrý

Komentáre k článku

Nový komentár

  1. 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.

    cd cake/console
    cake i18n extract
  2. 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…

  3. 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 ;)

  4. 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 :-)

  5. 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

  6. 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.

  7. 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

  8. 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\lib­s\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

  9. 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

    Configure::write('Config.language','slo');

    Toto je nastavenie pre slovensky jazyk, ak by si chcel aj ostatne jazyky pozri si premennu $__l10nMap v triede L10n

  10. 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