Quotes

"Fear is a disease; hope is its only cure." - CloneWars quote

utorak, listopada 03, 2006

PHP i gettext

Nakon mnogih istrazivanja pa cak i izrade vlastog rijesenja (iloc) za prevodenje PHP aplikacija zakuljcio sam da je za mene najbolje koristiti gettext za lokalizaciju. Prije par godina gettext za PHP mi se cinio da ima slijedece karakteristike:
  • neprilkladan za skriptne jezike
  • .po format je kompliciran i translatori nemaju dobar alat za manipulaciju njime te im treba napraviti vizualno sucelje da prevode stringove.
  • lose preformanse (sporost)
  • relativno kompliciran za PHP
Cinilo mi se bolje da prijevode rijesavam pomocu nizova (array). Mozda pod utjecajem drugih open source aplikacija (myPHPadmin). Neko sam vrijeme radio s cistim nizovima u fileovima. To je bilo ok za manje projekte ali bih kod vecih imao problema s masom stringova te problemom s indeksima (kljuceima) niza. Naime dosta je mi je bilo teze programirati (pogotovo debugirati) kada sam svako znacenje nekog kljuca treba gledati u file gdje je bio definiran niz s prijevodima.

Tako sam cak krenuo raditi iloc. iloc je spremao prijevode u jedan file (.xml) pa ih onda citao iz tog filea i generirao niz. Taj nniz bi se onda spremao u neki file koji bi se onda includao. U biti je to bilo rijesenje pomocu nizova ali s pokusajem da prijevodi budu u xml fromatu radi lakse manipulacije (prevodenja). Dio iloca je bila celeva aplikacija koja je sluzila prevoditeljima za prevodenje. Kad sam to implementirao odmah sam uvidio da vec posotji standard XLIFF koji iloc nazalost nisam implementirao. To bi se jos dalo srediti ali kako je projekt za koji sam napravio iloc rastao vidio sam da se ne mogu snalaziti u silnim fileovima. To je zato jer za svaki .php file postoji .xml fiel s prijevodima. Ujedno u kodu je trebalo definirati konstante koje su sluzile za dohvat prijevoda i osnovni prijevod. Tu se znala desiti zbrka s konstantam (duplici itd). iloc ima i scriptu za ivlacenje i generiranje osnovnog .xml file. On je sadrzavao konstante i osnovni prijevod. Osim navedenih problema glavni razlog mog napustanja iloca je bilo sto je prijevode na druge jezike sadrzavao u istom .xml fileu. Taj je file kasnije, kada su se neke konstante i osnovni prijevodi promjenili, a vec su supostojali drugi porievodi, bilo tesko azurirati. Tako sam iloc odbacio i nastavio raditi s nizovima.
Sve do sijecnja 2006 kada sam se odlucio poceti raditi loota-u. Onda sam rekao idem ovo raditi s gettextom. Ujedno sam si mislio sta da se opterecujem s necim sto je neko vec rijesio a i lootau mozda nikada nece ni trebati prevesti. Malo sam progooglao i odmah nabasao na Benchmarking PHP Localization - Is gettext fast enough?. Procitavši to i bez puno razmisljanja poceo sam koristiit gettext. Tako sam danas sretniji jer vise vremene provodim stvarno programirajuci i ne prevodeci (pamteci sto mi koji string znaci, da li sam ga definirao u odredenom prijevodu, itd). Gettext ima puno alata koji cine prevodenje lakse i jednostavnije a postoje i razni drugi alati (npr. POEdit). Ako samo proguglate naci cete puno tutoriala, a ovdje evo samo jedan na Hrvatskom.

Nema komentara: