Razvoj višejezičnog sajta
Počeo sam da radim na novom sajtu koji bi u budućnosti trebalo da bude na n jezika, pa razmišljam kako bi bilo pametno da se to uradi. Evo dokle sam stigao, voleo bih da me neko ispravi ako grešim:
Radeći na jednom ranijem sajtu, utvrdio sam da je detekcija preferiranog jezika u browseru jedna vrlo beskorisna stvar, pošto jako malo (naših) ljudi to drži podešeno kako valja. Preferirani jezik će se čuvati u cookie-u, a u slučaju da kukija nema sajt će biti na srpskom. Jezik se menja tako što se u adresu doda /sr, /en, /gr... a ja sa druge strane hvatam RegExpom dvoslovne stvari u URIju i proveravam da li se odnose na jezik. Sama višejezičnost je realizovana tako što u rootu sajta imam direktorijum za jezike, a u njemu poddirektorijume sr, en itd. U tim direktorijumima se nalaze sve sličice specifične za jezik i jedan include fajl u formatu: PHP kôd:
Any gotchas? |
Ne vidim falinke u tvojoj zamisli. Eventualno, probaj ULT (http://ult.datavoyage.com/). Mozda ti pomogne da brze resis visejezicnost.
|
Eventualni gotcha može da ti bude procedura prevođenja. Ako šalješ language fajlove agenciji na prevođenje, zgodno je da budu u nekom formatu kojim prevodioci znaju da barataju, ili za koji imaju gotove alate. Obično su to XML fajlovi.
|
Sve si lepo zamislio, osim sto si izmislio toplu vodu. Pretrazi forum, kjucna rec - gettext.
|
Da nastavim gde je Jablan stao. Mislim da bi bila dobra ideja da držiš te podatke u nekom od standardnih formata za lokalizaciju. De facto standard je TMX (guglaj) a u poslednje vreme je sve prisutniji XLIFF.
|
sto rece dinke, gettext sluzi za to i industrijski je standard, bar u unix svetu...
|
Malo offtopic, ali na jednom projektu sam koristio i detekciju IP adrese za default language..
Ako nije setovan cookie, onda IP proverom se gleda odakle je posetilac, ako je iz Srbije/CG/Cro/BiH, onda je default jezik srpski (i setuje se cookie), za sve ostale default je English.. Radilo je bas kako treba u 99% slucajeva.. |
Gettext mi je i bila prva ideja, ali sam se onda malo smorio kad sam u PHP manualu video "To use these functions you must download and install the GNU gettext package...". Nisam siguran da li hosting to podržava, pošto još nisam dobio parametre za login. A i vučem traume od pre nekoliko godina kad sam ceo jedan sajt razvio u Smarty-ju, a kasnije shvatio da ga hosting baš i ne podržava najbolje :(
Uz to, za neke manje sajtove (kao što će biti ovaj) mi je uvek draže da smućkam svoje rešenje, nego da učim da radim sa tuđim. Peđin ULT mi deluje zanimljivo, baciću pogled večeras. Hvala i na hintu za XML/TMX! GeoIP takođe nije loše rešenje, videću da ga implementiram kad sajt malo poraste (tj. kad dobije više jezika) |
gettext
Ako je manji projekat, mozes kako hoces, to kako si zapoceo je OK.
Za iole veci projekat, po meni je najbolje uzeti gettext, ako mozes srediti sa hosting provajderom da ti ga omoguci... (i u slucaju da se kesira locale da imas mogucnost restarta Apaca, mada na nekim dijeljenim hostinzima se i ne kesira). Znaci, ako je veci projekat, bolje se drzati provjerenih rjesenja, nece te glava boliti. Jer nije problem samo u startu razviti aplikaciju da radi sa vise jezika, nego to treba redovno odrzavati... znaci, kada dodas nesto, da imas lak mehanizam da pripremis razlike koje treba poslati prevodiocima. Mozes da pogledas i analizu brzine gettext rjesenja i tvoga rjesenja (ne znam da li je rezultat pouzdan): http://mel.melaxis.com/devblog/2006/...t-fast-enough/ |
Ja iskreno nikada nisam radio sa gettext jer nikada nisam imao podr[ku na serveru i uvek sam bio lenj da probam, meni je smarty za to savršen. Lako je i sve funkcioniše kako očekujem.
|
Django ima IMHCO interesantno odrađen sistem za internacionalizaciju.
Postoje li zainteresovani da se nešto slično napravi za php? |
koliko sam ja shvatio sa ovog tvog linka django koristi gettext i to na potpuno isti nacin kako se to radi iz php-a ??? Ili gresim ?
|
Citat:
Gettext je odlicna stvar samo sto nije podrzan na mnogim serverima, a ume da bude i prilicno komplikovan za odrzavanje. Moje je iskustvo da sajtvoe uvek treba praviti tako da mozes da ih prekopiras na drugi host i da rade, a ne da moras da prilagodjavas host serveru, osim ako se ne radi o nekim bas specificnim aplikacijama. |
@ivanhoe: Da, django za i18n koristi standardni gettext modul koji dolazi uz Python - ali definitvno se ne radi kao iz php-a:
1. gettext modul se ne koristi direktno već pomoću wrappera - da bi podržao više prevoda istovremeno (IIRC) za jednu istu instancu djanga 2. visok stepen automatizacije prevođenja + kada u izvornom kodu dodaš nove prevodljive stringove, jednom komandom ažuriraš sve .po fajlove 3. mogućnost automatskog prepoznavanja željenog jezika |
Browser-ov omiljeni jezik nije uopste losha stvar, medjutim zavisi odakle imas posjete. Ako je poenta razlikovati HR i SR jezik, slazem se da su u pitanju korisnicka podesavanja odnosno nepodesavanja. Medjutim recimo ja sam radio sajt na 4 jezika (IT, EN, DE, FR) i koristio sam to buduci da kod mene u CH su osim englesko svi sluzbeni jezici. Takodje korisnik kojemu je omiljen DE vjerovatno ima njemacki Windows i njemacki browsera tako da se ne smara sa podesavanjima. Osim toga, meni GeoIP ne bi mnogo pomogao zbog jedne drzave a vishe jezika, a i zbog toga sto postoji mnogo ljudi koje zive u kantonima ciji jezik koriste samo sto moraju a na svom compu imaju maternji ili omiljeni (recimo Ticinese (italijanski mater.) zivi i radi u Zurichu i na poslu mora pricati njemacki, ali kuci uziva u svom ital.).
|
1 Prilog(a)
Aj da ja postujem ovde prvi put :)
posto vidim da žalite sa gettext() mislim da će vam ovo pomoći. http://savannah.nongnu.org/projects/php-gettext Pisao je drug iz srednje Danilo Šegan i još neki stranac. Koristi se u WordPress, Gallery, SquirrelMail i još nekim. U svakom slučaju potreban vam je samo PHP da bi ovo radilo :) Inače u projektu http://www.mingbgd.com/ smo radili više jezični sajt koji prevode "čuva" u po fajlovima. Tako da su fajlovi mogli da se samo snime ili pošalju prevodiocu na email, oni prevedu u jednom od mnogo programa za po fajlove i samo vrati nazad i sve je na svom mestu :) U attachmentu imate sve što vam treba. |
o mr. Toni dobrodošao ....
|
Vreme je GMT +2. Trenutno vreme je 06:56. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.