Forum FAQForum FAQSearchSearch MemberlistMemberlist Forum ignore listForum ignore list RegisterRegister ProfileProfile Log in to check your private messagesLog in to check your private messages Log inLog in
Izvedba višejezičnog sajta

 
Post new topic   Reply to topic    mi3dot.org Forum Index -> Server-side
View previous topic :: View next topic  
Author Message
Moebius



Joined: 26 Jan 2004
Posts: 245
Location: zagreb

PostPosted: 26.01.2004 23:33    Post subject: Izvedba višejezičnog sajta Add user to your forum ignore list Reply with quote

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
View user's profile Send private message Visit poster's website
njava
mi3.crew


Joined: 25 Aug 2003
Posts: 624
Location: Zagreb

PostPosted: 27.01.2004 03:00    Post subject: Add user to your forum ignore list Reply with quote

Dobrodosao!

Puno pitanja, ajmo redom Smile

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

Pitanja, komentari, neslaganja... samo naprijed...
Back to top
View user's profile Send private message Visit poster's website
Moebius



Joined: 26 Jan 2004
Posts: 245
Location: zagreb

PostPosted: 27.01.2004 10:53    Post subject: Add user to your forum ignore list Reply with quote

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
View user's profile Send private message Visit poster's website
retro_one



Joined: 16 Sep 2003
Posts: 880
Location: DUBRAVA.

PostPosted: 27.01.2004 13:30    Post subject: Add user to your forum ignore list Reply with quote

e njava...aj zanima mene gettext..pa ak moze neki tut o tome

_________________
Just your average eccentric programmer.
Back to top
View user's profile Send private message
njava
mi3.crew


Joined: 25 Aug 2003
Posts: 624
Location: Zagreb

PostPosted: 27.01.2004 15:56    Post subject: Add user to your forum ignore list Reply with quote

moze, sam da se naspavam malo Smile

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
View user's profile Send private message Visit poster's website
che.UP
mi3.crew


Joined: 07 Sep 2003
Posts: 2320
Location: zagreb

PostPosted: 27.01.2004 21:34    Post subject: Add user to your forum ignore list Reply with quote

ocu i ja gettext :) go go go!! :)

_________________
UP | TypeTester | Accommodations App
Meni u Firefox-u ne radi AJAX
Back to top
View user's profile Send private message Visit poster's website
njava
mi3.crew


Joined: 25 Aug 2003
Posts: 624
Location: Zagreb

PostPosted: 05.12.2004 01:46    Post subject: Add user to your forum ignore list Reply with quote

konacno... check the tutorials...
Back to top
View user's profile Send private message Visit poster's website
gog



Joined: 18 Jun 2004
Posts: 679
Location: zagreb

PostPosted: 05.12.2004 22:12    Post subject: Add user to your forum ignore list Reply with quote

Zanimljivo, ali i ograničavajuće ukoliko ne radiš samo na jednom serveru, tko će svakog providera žicati da mu inejbla gettext Sad

BTW; zna li netko kako funkcioniraju prijevodi u phpbb-u?

_________________
webote.com | info-mob.com | besplatne SMS poruke
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
njava
mi3.crew


Joined: 25 Aug 2003
Posts: 624
Location: Zagreb

PostPosted: 05.12.2004 22:49    Post subject: Add user to your forum ignore list Reply with quote

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 Smile

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
View user's profile Send private message Visit poster's website
che.UP
mi3.crew


Joined: 07 Sep 2003
Posts: 2320
Location: zagreb

PostPosted: 06.12.2004 00:10    Post subject: Add user to your forum ignore list Reply with quote

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
View user's profile Send private message Visit poster's website
njava
mi3.crew


Joined: 25 Aug 2003
Posts: 624
Location: Zagreb

PostPosted: 06.12.2004 00:14    Post subject: Add user to your forum ignore list Reply with quote

.....e....aa.... sad si me naso... nespremnog s gacama dolje Smile
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 Cool

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 Smile

sam mojne kod mene hostat molim te
Back to top
View user's profile Send private message Visit poster's website
che.UP
mi3.crew


Joined: 07 Sep 2003
Posts: 2320
Location: zagreb

PostPosted: 06.12.2004 00:27    Post subject: Add user to your forum ignore list Reply with quote

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
View user's profile Send private message Visit poster's website
che.UP
mi3.crew


Joined: 07 Sep 2003
Posts: 2320
Location: zagreb

PostPosted: 06.12.2004 00:35    Post subject: Add user to your forum ignore list Reply with quote

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
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    mi3dot.org Forum Index -> Server-side All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group