Hej! Möjligheten att lägga till flera språk efter installation ställer till det en aning. Annars hade du kunnat använda dig av en Resource-file enligt följande metod: Verkar ju faktiskt som det bästa alternativet att använda en resource-file men jag har en liten fråga. Hej. Så du menar att om jag hade haft en engelsk version så hade Hello kommit istället för Hej? Så fungerar det tyvärr... Jag har använt mig av en resursfil för varje språk, bör fungera lika bra som Hultans förslag. Men jag tycker det är smidigare att underhålla när ett språk finns i varje fil. Alternativt kan man ha språkstödet i satellit-DLL:er. Egget: Det lär faktiskt som en rätt smart idé eftersom jag helst vill kunna lägga till språk utan att behöva skeppa ut ett helt nytt program varje gång ett språk upppdateras eller läggs till. Ska kolla närmare på det! Ett sätt som en del använder är att göra en XML-fil (eller typ ini-fil) med liknande uppbygnad som en resource fil, id och text. Skapa en språkfil för varje språk du vill supporta t ex swe.lng, eng.lng etc. Sedan gör du det möjligt att inifrån ditt program välja språkfil. En fördel med denna lösning är att det är ganska enkelt, för vem som helst, att utifrån en befintlig språkfil skapa en ny. Jan: Jag har testat lite med .dll nu som som du säger tror jag också att det är bättre att ha separata filer som är enkla för användarna själva att ändra i. Tror att det får bli så faktiskt. Om du vill så behöver du ju inte spara filerna i ett för människan "läsbart" format för att hindra att folk ändrar hur som helst direkt i filerna utan att de måste använda en speciell applikation för att skapa nya språkfiler. För att underlätta översättningen och att kunna lägga ut den till språkfolk som kan för mig obekanta tungomål, har jag gjort ett exceldokument med en kolumn för varje önskat språk. Då har översättaren som skall krångla in t.ex. portugisiska tillgång till de språk som redan finns, engelska, tyska, franska, danska osv. och har lättare att klura ut vad som menas.Fler språkig?
Jag skulle vilja ha möjlighet att ha olika språk i mitt program, som användaren får välja själv alltså. Man ska även knna lägga till språk efter att programmet är installerat så det måste vällantagligen bli språkfiler på nått vis.
Har ni något smart tips på hur man ska lösa det? Man skanske ska använda samma princip som i INI-filer?Sv: Fler språkig?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconusingresourcefiles.asp
Då kan du distribuera en applikation som "känner av" vilket språk användaren kan tänkas föredra och anpassar sig därefter. Vill du däremot släppa fler språkversioner blir du tvungen att släppa en ny version.
Vänliga Hälsningar / Johan @ MicrosoftSv: Fler språkig?
Jag har skapar en .res-fil och laggt in två tabeller, en för svenska och en för engelska:
<code>
id Svenska Engelska
101 Hej Hello
102 Hej då Bye bye
</code>
Om jag anävnder LoadResString(101) så frå jag fram Hej men hur gör jag för att få fran det engelska ordet istället?Sv: Fler språkig?
Jag kommer inte ihåg exakt, men:
Det ska gå att göra en resourcefil med olika språk för ett id.
Sen "känner" VB, resursfilen eller ??? av Windows språkinställningar.
Hoppas detta blir en liten hjälp på vägen.Sv: Fler språkig?
Sv: Fler språkig?
Om du vill att dina användare ska kunna byta språk när dom vill så kan du låta språk 1 starta med index 0 och språk 2 med index 10 000, språk 3 med index 20 000 o s v.
Detta fungerar utmärkt i en applikation som jag underhåller. Användarna kan i realtid byta språk genom att jag ändrar en basspråkssiffra från 0 till t ex 10 000.Sv: Fler språkig?
/JohanSv: Fler språkig?
Denna approach liknar de övriga, fast du får en ActiveX-DLL för varje språk istället.
Francesco Balena har skrivit en del om det här, kolla in på www.vb2themax.com
Du får använda dig av CreateObject("NAMN") i sånt fall och namnge dina DLL:er lite smart. Då behöver du inte kompilera om din huvudapplikation alls. Bara att skeppa ut nya DLL:er efterhand som du plöjer igenom dina lexikon :)
/EggetSv: Fler språkig?
Sv: Fler språkig?
Du kan ju även göra en liten applikation, eller ha den inbyggd i ditt program för att skapa en ny språkfil. I språkskaparprogramet väljer du först vilken befintlig språkfil du vill ha som bas. Läs in alla poster i den filen och presentera dem t ex som en label och i en textruta bredvid kan användaren skriva in sin översättning. När man är klar kan man sedan spara den nya översättningen i en ny språkfil. Med detta sätt kan många bidra till översättningen av programmet. Vad man ev bör göra att ha grundtexter direkt i programmet eller i en dll och att dessa texter används om inte motsvarande text finns definerad i språkfilen eller om ingen språkfil är vald.
//
Janne.Sv: Fler språkig?
Sv: Fler språkig?
Ett förslag är att du i ditt program använder Strängkonstanter som är ganska beskrivande för den text de representerar och att du sedan använder någon funtion (class) för att från din språkfil hämta den riktiga text som motsvarar konstantens strängvärde. Om konstantens värde inte hittas i din språkfil så returneras konstantens strängvärde istället. På så sätt får du även om du inte definerat texten i din språkfil en text i ditt program.
Declarera språkkonstanter i ditt program
Public CONST FILENOTFOUND as String = "FILENOTFOUND"
Public CONST WRONGPASSWORD as String = "WRONGPASSWORD"
.
.
.
Definitioner i dina språkfiler
eng.lng
FILENOTFOUND = "Couldn't find the file"
WRONGPASSWORD = "Wrong password"
swe.lng
FILENOTFOUND = "Hittade inte filen"
Om du nu via din språkclass vill hämta svenska texten för WRONGPASSWORD så returneras
texten "WRONGPASSWORD" eftersom den konstanten inte finns definerad i swe.lng. Om du däremot byter till eng.lng så returneras "Wrong password".
Hoppas du förstår hur jag menar.
//
JanneSv: Fler språkig?
Dessutom kan oftast även en lingvist klara av att knappa i excel.
Några excel-makron exporterar sedan detta till lämpliga filer, antingen en för varje språk eller en med alla språk i tab-separerade kolumner.
Excel behövs naturligtvis inte på målmaskinen utan bara för översättningen och att exportera till lämpligt filformat. Där kan du ju välja om du föerdrar xml eller vanlig text eller något databasformat.