DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   Planiranje i usability (http://www.devprotalk.com/forumdisplay.php?f=35)
-   -   Razvoj višejezičnog sajta (http://www.devprotalk.com/showthread.php?t=1168)

Dušan Dželebdžić 26. 06. 2006. 09:54

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:

$l=Array(
"n_kontakt" => "Kontaktirajte nas",
"n_nesto" => "Neki drugi naslov",
"e_nemaga" => "Trazeni artikal ne postoji",
...
); 

Radi lakšeg snalaženja razvrstao sam tekstove po prefiksu, tako da se N odnosi na naslov, E na grešku itd. Mislio sam da stavim i encoding u lang fajl, ali pošto će sajt biti rađen u UTF-8 cenim da je to nepotrebno.

Any gotchas?

Pedja 26. 06. 2006. 10:56

Ne vidim falinke u tvojoj zamisli. Eventualno, probaj ULT (http://ult.datavoyage.com/). Mozda ti pomogne da brze resis visejezicnost.

jablan 26. 06. 2006. 13:06

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.

dinke 26. 06. 2006. 14:01

Sve si lepo zamislio, osim sto si izmislio toplu vodu. Pretrazi forum, kjucna rec - gettext.

Dragi Tata 26. 06. 2006. 14:28

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.

ivanhoe 26. 06. 2006. 16:51

sto rece dinke, gettext sluzi za to i industrijski je standard, bar u unix svetu...

MorenoArdohain 26. 06. 2006. 17:39

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

Dušan Dželebdžić 26. 06. 2006. 19:22

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)

zira 26. 06. 2006. 20:39

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/

bluesman 26. 06. 2006. 22:29

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.

Petar Marić 27. 06. 2006. 03:45

Django ima IMHCO interesantno odrađen sistem za internacionalizaciju.
Postoje li zainteresovani da se nešto slično napravi za php?

ivanhoe 27. 06. 2006. 05:19

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 ?

Pedja 27. 06. 2006. 09:01

Citat:

Originalno napisao dinke
Sve si lepo zamislio, osim sto si izmislio toplu vodu. Pretrazi forum, kjucna rec - gettext.

Licno ne volim da otkrivam toplu vodu i dugo vremena sam se patio sa problemom visejezicnosti pokusavajuci da korsitim postojeca resenja, pa kada mi je doklincilo napravio sam sebi ULT. On radi tacno ono sto mi treba, lako mi ga je ubaciti u sajt (cak i u Smarty) i ima funkcionalnosti koje nisam nasao u drugim alatima i najvaznije, radi na SVAKOM serveru.

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.

Petar Marić 27. 06. 2006. 21:13

@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

misk0 03. 07. 2006. 19:54

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

Toni 29. 07. 2006. 21:15

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.

nixa 29. 07. 2006. 23:09

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.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.