[ M_Nikola @ 24.08.2008. 16:19 ] @
Vec sam pretrazivao po arhivi ali nisam nista nasao. Trebala bi mi pomoc na koji nacin da napravim vise-jezicki interfejs.

Pozdrav
[ Aleksandar Vasic @ 24.08.2008. 16:46 ] @
ja kada bih to uradio, napravio bih da jezik vuce iz nekog txt fajla, pa npr da ima
Code:
1="OK"
2="Cancel"
3="Apply"


i onda da program cita taj txt fajl parsuje i dodeljuje kontrolama te reci, a ona drugi jezik drugi txt fajl, pa samo napravis za biranje jezika da izabere koji ce txt fajl...

ali mozda neko ima bolje resenje...
[ dava @ 24.08.2008. 19:56 ] @
Mozes uraditi kao sto je @Aleksandar napisao, a mozes i ovako:

Code:

Private Sub Form_Load()
    
   ' Ovdje navedes sve rijeci koje ce se pojavljivati, i na svim potrebnim jezicima.
    engl = Array("label_1", "label_2", "button")
    srp = Array("oznaka_1", "oznaka_2", "dugme")
    
    ' Proceduri 'Podesi' saljemo objekat koji sadrzi rijeci. Po izboru mu saljes engleski ili srpski.
    Podesi (srp)

End Sub

Private Sub Podesi(obj As Variant)
    
    Label1.Caption = obj(0)
    Label2.Caption = obj(1)
    Command1.Caption = obj(2)

End Sub
[ Eurora3D Team @ 25.08.2008. 00:27 ] @
Mozes ovako ... kod je zakacen.
Ukljuci Resource Editor u VB-u da bi video String tabelu u resurs fajlu.
Ovako nesto i MS preporucuje u MSDN-u za visejezicne programe...
[ Aleksandar Ružičić @ 25.08.2008. 12:48 ] @
istina da ms preporucuje resource stringove ali taj nacin nije bas extendible, tj ako hoces da dodas novi jezik moras da prekompajliras kod. naravno ukoliko bi taj resource drzao u exe fajlu.

winamp to radi kombinacijom resource-a iz exe fajla i iz dll-ova, tj u exe fajlu postoji string tabela koja sadrzi stringove na engleskom, a ostali jezicki paketi su uradjeni kao dllovi, tj ukoliko je ucitan neki ne-default jezicki interfejs winamp vuce stringove iz resource-a koji se nalazi u dll-u, a ukoliko nije ucitan neki custom jezik (ili odredjeni string ne postoji u dllu) onda se string vuce iz resource-a koji se nalazi u exe fajlu...


mada da budem iskren po meni je najbolje resenje: default jezik (u 99% slucajeva to je engleski) se nalazi u resource-u exe fajla a jezicki paketi su obicni xml fajlovi...
[ M_Nikola @ 25.08.2008. 20:51 ] @
Hvala na odgovorima. Mislim da cu koristiti resource editor.
[ Marko_L @ 25.08.2008. 22:59 ] @
Po meni, najbolje rešenje je jednostavno koristiti jezičke fajlove u ini formatu. Nešto ovog tipa (bazni jezik naravno engleski):
Code:
[Buttons]
Apply=Apply
Cancel=Cancel
[Labels]
Info1=This software is for private use only
Info2=For more information please visit www.blablabla.com
[Errors]
NoFile=File Not Found
... itd.

Za srpski bi bilo:
Code:
[Buttons]
Apply=Potvrdi
Cancel=Odustani
[Labels]
Info1=Ovaj softver je samo za privatnu upotrebu
Info2=Za vise informacija posetite www.blablabla.com
[Errors]
NoFile=Fajl nije pronadjen
... itd.

Onda te jezičke fajlove staviti u jedan folder, recimo Languages u glavnom folderu gde je aplikacija i zatim po startovanju aplikacije enumerisati sve fajlove iz jezičkog foldera i dinamički izgraditi listu jezika) i onda po odabiru jezika samo učitati željeni jezik (u niz ili direktno u kontrole). Ovaj način predlažem zato što je veoma jednostavno iščitati ini fajl (ima funkcija readini negde na ovom forumu), struktura je prilično jednostavna tako da bilo ko može da uradi prevod za program, lako je dodavati nove jezike (samo ubaciš novi jezički fajl u Languages folder), plus svaki korisnik može jednostavno da odradi prevod na svoj jezik... dakle, nema zezanja sa rekompajliranjem, menjanjem koda i slično. Naravno, može i xml, ali mislim da je ini fajl lakše editovati iz običnog tekst editora. A ovo guranje u resource fajl ili kompajliranje jezika u exe, preporučujem samo ako ste apsolutno sigurni da kasnije nećete dodavati nove jezike, kao i ako imate neki poseban razlog da zaštitite te fajlove. Doduše, nije ni neki problem iščupati fajlove iz resource fajla čak i ako je kompajliran u exe fajlu, tako da ako već nešto treba da se štiti, najbolje je koristiti neku enkripciju. Ali, ne vidim zašto bi neko štitio jezik, kada to nije neka tajna ili ne znam ni ja šta :)