View previous topic :: View next topic |
Author |
Message |
Moebius
Joined: 26 Jan 2004 Posts: 245 Location: zagreb
|
Posted: 26.01.2004 23:33 Post subject: Izvedba višejezičnog sajta |
|
|
Pozdrav svima,
Interesira me slijedeće, planiram izradu sajta koji bi bio višejezičan što i nije neki problem.
Ono što me zanima je kako to najelegantnije napraviti. Web bi se izradio upotrebom asp-a i baze u kojoj bi čuvao dinamički content i podatke o prodajnim artiklima. Postojao bi i custom CMS za održavanje većeg dijela weba.
Kako najpametnije čuvati podatke tipa: različiti gif-ovi (ovisno o odabranom jeziku), tekstualni pragrafi tipa: "Kliknite ovdje za nastavak" i tome slično. Da li dakle koristiti neki resource fajl u koji sve to potrpati, takve podatke čuvati u bazi ili ... ?
Oba gore navedena riješenja mi se čine pomalo neelegantna i zamorna makar su u konačnici izvediva i vjerojatno funkcionalna.
Možda netko ima iskustvo u tome pa da progovori ponešto o tome?
Usput, rješavate li odabir višejezičnosti putem session varijable ili konstrukcijom URL-a sa pripadajućim parametrima?
Živjeli. |
|
|
Back to top |
|
|
njava mi3.crew
Joined: 25 Aug 2003 Posts: 624 Location: Zagreb
|
Posted: 27.01.2004 03:00 Post subject: |
|
|
Dobrodosao!
Puno pitanja, ajmo redom
graficki elementi koji se razlikuju od jezika do jezika.
Imas varijantu da za svaki jezik napravis posebni direktorij a da se slike unutar svakog jezika isto zovu
Code: |
/images/en/
footer.gif
header.gif
/images/de/
footer.gif
header.gif
|
zvuci primamljivo ali pokazalo se kao jeba za odrzavati (trebas promijeniti jednu sliku za 5 jezika i imas klikanja po direktorijima da boli glava)
sve i isti direktorij
Code: |
/images/
footer_de.gif
footer_en.gif
header_de.gif
header_en.gif
|
puno bolje (lakse za odrzavati). s programske strane ista stvar kao i prva solucija. moj prijedlog je i da se fajlovi nazivaju funkcija_jezik.extenzija a ne jezik_funkcija.extenzija al to je stvarno stvar ukusa.
tekstualni paragrafi
manji siteovi ili iskljucivo staticke stranice mogu proci s posebnim content fajlom za svaki jezik od kojih se inkluda odgovarajuci prema potrebi. recimo about_us_en.inc i about_us_de.inc
prednost je ta da u engleskom fajlu moze biti potpuno razlicita struktura informacija od one u njemackom. nedostatak, bilo kakva dinamika se mora kopi-pejstati u svakom od clanaka sto je protiv svih principa dobrog kodiranja. nosi naziv šamar slijeva - šamar sdesna (tm)
druga varijanta. potrpati sve prevodljive faze u nekakav array. php pseudokod te nece smetati
Code: |
$lang = array(
'en' => array(
'header' => 'Today was a good day',
'footer' => 'Thnx for stopping by...'
),
'de' => array(
'header' => 'Hojte was a good tage',
'footer' => 'Danke fir stopping by...'
)
)
|
dosta cesto se koristi. meni saksa, pogotovo kod vecih sajtova gdje ima puno prevodljivih fraza jer za svaku treba smisljati unique naziv elementa u arrayu pa se covjek pogubi in the long run.
treca varijanta, moj favorit. gettext. ne znam da li asp ima kakvu native podrsku za njega, u php-u je to super rijeseno. opet, ako ima interesa (vicite) budem napisao tekstic. ukratko.
- sve prevodljive fraze se pisu normalno, u defaultnom jeziku, i enkapsuliraju u _(""). npr _("Danas je bio dobar dan."). taj _() je zapravo alias na php funkciju gettext() koja ce u katalogu s prijevodima pronaci odgovarajuci prijevod za trazenu frazu.
- pomocu gettext utilitija se probrowsa kroz direktorijsko stablo weba i sve fajlove unutar njega i kreira se katalog fraza za prijevod (kreirani katalog je u ascii formatu, .po datoteka)
- taj katalog se editira (to radi prevoditelj, prevodi frazu po frazu) ili u txt editoru ili (bolje) u po editoru (poEdit, veri gud)
- s drugim gettext utilitijem se od tog prevedenog kataloga kreira binarni fajl i stavi ga se na odgovarajuce mjesto unutar weba
- dec it
- bonus, kada se naprave neke promjene na izvorniku... opet se kreira katalog za prijevod s tim da gettext skuzi koje se fraze nisu mijenjale, koje su nove, a na kojima se samo nesto mijenjalo i takve oznaci kao fuzzy. za te fraze prevoditelj ne treba ponovo pisati cijelu frazu/recenicu/paragraf, nego samo prilagodi prijasnji prijevod
baza / dinamicki podaci
varijanta za malo jezika (2 ili 3) s ne previse raznoraznih propertija za svaki entity (huh:))
sve definirati u jednoj tablici, za svaki property koji treba moci prikazati na razlicitim jezicima napraviti posebno polje. npr:
Code: |
products
--------------
product_id
name_hr
name_en
description_hr
description_en
price
|
varijanta za puno jezika (jedan od pristupa, ovisi o strukturi podataka)
Code: |
products (tu idu podaci koji su zajednicki za sve jezike)
--------------
product_id
price
products_properties
--------------------
product_id (PK)
lang_id (PK)
property_name (ili property_id, pa je on onda int zbog optimizacije... a nazive drzis negdje drugdje - druga tablica ili config fajl)
property_value
pa onda imas
|-------------------|
|products |
|-------------------|
|product_id | price |
|-------------------|
|1 | 10 |
|2 | 20 |
|-------------------|
|---------------------------------------------------------|
|products_properties |
|---------------------------------------------------------|
|product_id | lang_id | property_name | property_value |
|---------------------------------------------------------|
|1 | 1 | name | prvi proizvod |
|1 | 2 | name | first product |
|1 | 1 | description | prvi opis |
|1 | 2 | description | first description |
|2 | 1 | name | drugi proizvod |
|2 | 2 | name | second product |
|2 | 1 | description | drugi opis |
|2 | 2 | description | scnd description |
|---------------------------------------------------------|
|
odabir visejezicnosti
- zgodno je u cookie zapisati jezik kojim posjetitelj browsa da bi mu se kod sljedeceg posjeta odmah mogao servirati 'njegov' jezik
- drzanje odabranog jezika u sessionu (i promjena te varijable kod klika na promjenu jezika) je zgodna i potpuno legitimna ali postoji jedan detalj koji ponekad zna biti vazan. u tom slucaju u logovima nije moguce vidjeti koliko se browsalo po kojem jeziku (jer to u ne pise u url-u, ergo ni u logovima). zbog toga sam vise za konstrukciju punog url-a, pogotovo ako se kreiraju 'human-readable' urlovi (par rijeci o tome ovdje: http://www.mi3dot.org/forum/viewtopic.php?t=511)
Stalno spominjem to odrzavanje, mislim da je to jako bitan segment koji se cesto zanemaruje kod planiranja, a poslije uzrokuje glavobolju. Koga je boljela glava zna o cemu pricam
Pitanja, komentari, neslaganja... samo naprijed... |
|
|
Back to top |
|
|
Moebius
Joined: 26 Jan 2004 Posts: 245 Location: zagreb
|
Posted: 27.01.2004 10:53 Post subject: |
|
|
njava wrote: | tekstualni paragrafi
manji siteovi ili iskljucivo staticke stranice mogu proci s posebnim content fajlom za svaki jezik od kojih se inkluda odgovarajuci prema potrebi. recimo about_us_en.inc i about_us_de.inc
prednost je ta da u engleskom fajlu moze biti potpuno razlicita struktura informacija od one u njemackom. nedostatak, bilo kakva dinamika se mora kopi-pejstati u svakom od clanaka sto je protiv svih principa dobrog kodiranja. nosi naziv šamar slijeva - šamar sdesna (tm)
|
Njava, hvala ti na trudu ...
Misljenja sam da je gore kvotana varijanta optimalno rjesenje za moj problem (sajt je dvojezican) - transparentno rjesenje pregledno za odrzavanje, pri tome mislim na iskljucivo cuvanje informacija o slikama i opisnih tekstova. Baza ne bi trebala biti problem.
Pozdrav i hvala jos jednom. |
|
|
Back to top |
|
|
retro_one
Joined: 16 Sep 2003 Posts: 880 Location: DUBRAVA.
|
Posted: 27.01.2004 13:30 Post subject: |
|
|
e njava...aj zanima mene gettext..pa ak moze neki tut o tome |
_________________ Just your average eccentric programmer. |
|
Back to top |
|
|
njava mi3.crew
Joined: 25 Aug 2003 Posts: 624 Location: Zagreb
|
Posted: 27.01.2004 15:56 Post subject: |
|
|
moze, sam da se naspavam malo
zapravo, nekak mi je lakse tu na forumu pisat odgovore na konkretne stvari. ono, kad ides pisat tut to je kao neki big deal, vec par puta sam poceo pa sam se tak prekombiniro i prosirio da je bilo strasno. a mozda je ovak i bolje, mozemo kasnije interesantne stvari s foruma modificirat u tutove...
Last edited by njava on 27.01.2004 22:00; edited 1 time in total |
|
|
Back to top |
|
|
che.UP mi3.crew
Joined: 07 Sep 2003 Posts: 2320 Location: zagreb
|
Posted: 27.01.2004 21:34 Post subject: |
|
|
ocu i ja gettext :) go go go!! :) |
_________________ UP | TypeTester | Accommodations App
Meni u Firefox-u ne radi AJAX |
|
Back to top |
|
|
njava mi3.crew
Joined: 25 Aug 2003 Posts: 624 Location: Zagreb
|
Posted: 05.12.2004 01:46 Post subject: |
|
|
konacno... check the tutorials... |
|
|
Back to top |
|
|
gog
Joined: 18 Jun 2004 Posts: 679 Location: zagreb
|
Posted: 05.12.2004 22:12 Post subject: |
|
|
Zanimljivo, ali i ograničavajuće ukoliko ne radiš samo na jednom serveru, tko će svakog providera žicati da mu inejbla gettext
BTW; zna li netko kako funkcioniraju prijevodi u phpbb-u? |
|
|
Back to top |
|
|
njava mi3.crew
Joined: 25 Aug 2003 Posts: 624 Location: Zagreb
|
Posted: 05.12.2004 22:49 Post subject: |
|
|
Nije rijetkost da je gettext instaliran a i nije nerealno za ocekivati da ce ti hoster ukompajlirati gettext jer se radi o trivijalnoj i nezahtjevnoj operaciji. A osim toga, uvijek mozes promijeniti hostera
PhpBB funkcionira tako da sve prevodljive fraze drzi u arrayevima:
/language/lang_english/lang_main.php - 765x
/language/lang_english/lang_admin.php - 514x
i jos par fajlova s manjim brojem fraza i frazica |
|
|
Back to top |
|
|
che.UP mi3.crew
Joined: 07 Sep 2003 Posts: 2320 Location: zagreb
|
Posted: 06.12.2004 00:10 Post subject: |
|
|
a kako u praksi (dakle na shared hostingu) izgleda stvar sa restartanjem apachea nakon svakog apdejta .mo fajla?
svaki put zicat admina ili... :) |
_________________ UP | TypeTester | Accommodations App
Meni u Firefox-u ne radi AJAX |
|
Back to top |
|
|
njava mi3.crew
Joined: 25 Aug 2003 Posts: 624 Location: Zagreb
|
Posted: 06.12.2004 00:14 Post subject: |
|
|
.....e....aa.... sad si me naso... nespremnog s gacama dolje
nist, u tom slucaju uzmes dedicated masinu, nema druge
...al svidja mi se tvoje pitanje, znaci da si pazljivo citao ukljucujuci i fusnote. sjedi 5
edit: sad vadim kestenje... kolko cesto ti mislis mijenjat te prijevode? mislim, development se radi lokalno i dize online kad je sve na svom mjestu. znaci jednom za cijeli set promjena. pa valjda se admin nece previse pjeniti ako dobije zahtjev jednom u par tjedana ili par mjeseci?!? ha admini, javite se, recite da je to ok
sam mojne kod mene hostat molim te |
|
|
Back to top |
|
|
che.UP mi3.crew
Joined: 07 Sep 2003 Posts: 2320 Location: zagreb
|
Posted: 06.12.2004 00:27 Post subject: |
|
|
njava wrote: | ...al svidja mi se tvoje pitanje, znaci da si pazljivo citao ukljucujuci i fusnote. sjedi 5 :) |
weee :)))
ma ja sam jos prije par mjeseci nesto mutio sa tim, skinuo si sve kaj treba, iskonfigurirao al nikad nisam iso nesto konkretno napravit s tim... mislim da nisam ni probao dal radi :)
zato mi je sad super dosao tut, jos samo da si skinem one utilitye i ulovim malo vremena za bacit se u kostac sa tim stvarcicama :) |
_________________ UP | TypeTester | Accommodations App
Meni u Firefox-u ne radi AJAX |
|
Back to top |
|
|
che.UP mi3.crew
Joined: 07 Sep 2003 Posts: 2320 Location: zagreb
|
Posted: 06.12.2004 00:35 Post subject: |
|
|
rotfl na edit :) a bas mi je kroz glavu proslo tvoje ime kad sam razmisljao o hostingu :))))
ma lako za development, al npr. jedna firma svako malo promijeni broj zaposlenika pa treba prepravljat u about, ili se sjete preformulirat recenicu, pa maknut dvije rijeci... i takve stvari.
zbog toga sam pitao - znaci neka statika je u pitanju koju nije imalo smisla furat kroz cms...
opet to nije neka frekventnost, mozda 2x mjesecno, al svejedno saki kad moras nekog davit za restart servera.... pardon... apachea :) |
_________________ UP | TypeTester | Accommodations App
Meni u Firefox-u ne radi AJAX |
|
Back to top |
|
|
|