[space] Skrevet 18. februar 2006 Del Skrevet 18. februar 2006 (endret) Er det noen enkel måte å programmere så brukeren kan velge språk ( i et oppsett vindu eller no ) og da endres alle menyer, textbokser osv til valgte språk? Skal lage en engelsk versjon av et program jeg har laget på norsk her nå, og slik jeg har begynt nå ender jeg opp med 2 kildekoder jeg må vedlikeholde... Noe tungvindt i lengden. Har sett verktøy som dette: http://www.whippleware.com/oldindex.htm men det koster jo en del. Noen som har noe tilsvarende addon gratis noe sted? Endret 18. februar 2006 av [space] Lenke til kommentar
Harald Staff Skrevet 19. februar 2006 Del Skrevet 19. februar 2006 Det enkle er å holde ord / språk separat fra selve programmet, altså å lese og sette alle captions fra x eller y alt ettersom. Med enkelt menes ikke "lite jobb" for det er et veldig ekstraarbeid. Og helst skal oversettelsene være av en annen klasse enn "all your base are belong to us". Det vanskelige fra et utviklersynspunkt er at ting har svært forskjellig lengde i forskjellige språk. En kollega som har forsøkt dette droppet knappetekster helt og baserte seg på ikoner, det er umulig å lage knapper som passer flere språk. Eksempelvis er den engelske excelfunksjonen =FLOOR på norsk =AVRUND.GJELDENDE.MULTIPLUM.NED så knappen skal være hvor bred, eller skal den skaleres etter språk ? Beste hilsen Harald Lenke til kommentar
[space] Skrevet 19. februar 2006 Forfatter Del Skrevet 19. februar 2006 Er selvfølgelig et problem med lengden på ord og tilpassing i skjermbildene ja... Ikke så greit det der... Lenke til kommentar
aadnk Skrevet 19. februar 2006 Del Skrevet 19. februar 2006 I mine applikasjoner benytter jeg som regel en selvskrevet klassemodul til dette formålet. Modulen laster inn informasjonen i en tekstfil (avhenging av de nåværende språkinnstillingene) lokalisert i samme mappe, evt. undermape, som applikasjonen. Hver gang en form initialiseres eller tesktstreng skal vises til brukeren, kaller programmet denne klassemodulen for å få den riktige språkversjonen av teksten. For å laste inn og oppdatere en språkfil, her ut fra registerverdier, kan en da gjøre noe som følgende: Public Sub ReloadLanguage() Dim Form As Form ' Last inn språkfil ut fra innstillingene Language.LoadFile App.Path & "\" & _ GetSetting("DinApp", "Settings", "LanguagePack", "English.lpk") ' Oppdater alle former For Each Form In Forms Language.UseLanguage Form Next End Sub I tillegg bør en inkludere følgende kodesnutt i Form_Load-hendelsen i hver eneste form i applikasjonen: Language.UseLanguage Me En kan dessuten ekstraktere egendefinerte strenger, eller konstanter, via ConstantValue-egenskapen (der Index er navnet på undervariabelen). Oppsettet på en slik språkfil ses nedenunder: [frmAbout]Caption = "Formoverskrift" cmdOK.Caption = "&OK" cmbFilterType.Clear cmbOperation.Clear cmbFilterType.AddItem "Verdi1" cmbFilterType.AddItem "Verdi2" cmbOperation.AddItem "Verdi1" lblDisclaimer.Caption = "This is a test." [frmMain] (osv.) [Constants] Variabel1 = "verdi" Variabel2 = 8 Som du ser kan du både sette egenskaper og eksekvere prosedyrer, alt etter hva som behøves. Clear er nødvendig ettersom språkinitialiseringen kan kalles flere ganger, eksempelvis dersom brukeren endrer språk under kjøring. Lenke til kommentar
[space] Skrevet 19. februar 2006 Forfatter Del Skrevet 19. februar 2006 Så ikke så dumt ut det der, men tror ikke jeg helt forsto. Prøvde å lage et lite program nå. En form frmHoved, med en button cmdAvslutt. Fikk ikke til gitt... Har du et eksempel på en slikt lite program? Lenke til kommentar
aadnk Skrevet 19. februar 2006 Del Skrevet 19. februar 2006 Javisst. Blant annet dette programmet. Men hvordan gikk det ikke? Fikk du en feilmelding, kan hende? Lenke til kommentar
[space] Skrevet 19. februar 2006 Forfatter Del Skrevet 19. februar 2006 (endret) Hmm, noe omfattende det programmet ditt der Får kompileringsfeil. Ser jeg må endre litt i clsLanguage for å få det til å fungere... Refererer bl.a. til ChatApp. For å ta mitt program (i tillegg til din clsLanguage): frmHoved: Private Sub cmdAvslutt_Click() Unload Me End Sub Private Sub Form_Load() Language.UseLanguage Me End Sub modLang: ' The class containing the current language Public Language As New clsLanguage Public Sub ReloadLanguage() Dim Form As Form ' Last inn språkfil ut fra innstillingene Language.LoadFile ".\English.lpk" ' Oppdater alle former For Each Form In Forms Language.UseLanguage Form Next End Sub English.lpk: [frmHoved] Caption = "Formoverskrift" cmdOK.Caption = "&OKtest" cmdAvslutt.Caption = "testAvslutt" cmbFilterType.Clear cmbOperation.Clear cmbFilterType.AddItem "Verdi1" cmbFilterType.AddItem "Verdi2" cmbOperation.AddItem "Verdi1" lblDisclaimer.Caption = "This is a test." Tanken er å bare hente labels fra fil, ikke kunne endre. (i første omgang...) Endret 19. februar 2006 av [space] Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå