Vad är det enklaste sättet som man vill kunna köra olika språk i sitt program ? http://www.microsoft.com/sverige/msdn/msdntv/film_21/video_01.html Jag trodde man skulle kunna skriva något i form av detta och enbart anropa vid ett visst val men har inte fått det att fungera. I länken du hänvisar gör de något liknande fast i VB, jag använder mig av C#. Du använder dig av ResourceManager för att ladda in dina resursfiler. Sök på ResourceManager i SDK eller gå till denna site och läs lite: Tack Fredrik, det är tydligen resource manager som gäller. Tyvärr har jag inte lyckats få rätt på det. Jag har skapat några menyer i mitt program. Skulle du på enkelt sätt visa hur jag med en knapptryckning får språket på dessa menyer att växla från svenska till engelska. ...ingen som ska få julklappar i den här tråden ... ...ingen som ska få julklappar i den här tråden ... ...ingen som ska få julklappar i den här tråden ... Fungerar om du använder WinForm, men det inte om du använder ASP.Net. Så det finns två svar på frågan och Daniel har skrivit en mkt bra instruktion för hur det går att lösa i WinFom. Jag använder mig av Winforms. det beror på vad du gör? ok..nu har jag läst en del om resource managern på MSDN, har väl blivit lite klokare men det finns fortfarande några frågetecken. Ok...ingen som kan förklara...men vad är skillnaden med att använda sig av Resource Manager istället för att bara ersätta ett värde. ResuorceManagern utgår från iställningarna på din tråd för att hitta rätt resurs.Flera språk i sitt program
Sv: Flera språk i sitt program
Sv: Flera språk i sitt program
<code>
System.Threading.Thread.CurrentThread.CurrentUICulture= new System.Globalization.CultureInfo("en-US");</code>
Någon som kan hjälpa till på traven ?
Sv: Flera språk i sitt program
http://www.dotnetjunkies.com/quickstart/howto/doc/createresources.aspx
/Fredrik Normén NSQUARED2Sv: Flera språk i sitt program
Sv: Flera språk i sitt program
(eller så vet ni inte hur det egentligen ska gå till...)
Visst ska du använda ResourceManager men om du använder VisualStudio
så behöver du skriva speciellt mycket kod själv.
Kör följande test och titta sen både på koden och på dina binärer.
1. Skapa en ny tom Forms applikation
2. lägg ut några grafiska elemenet.
3. kompilera
4. ändra till Localized = true i Properties för ditt Formulär
5. välj det språk du vill översätta till i Language på Properties
6. ändra kontrollera för att passa det nya språket, OBS inte bara text utan även position och storlek.
7. Kompilera och analysera resultatet.
---> kort analys.
1. om du kikar i InitializeComponent() så kommer du att se en MASSA mer kod
än tidigare. Titta överst så ser du hur man kan skapa ett eget ResourceManager objekt.
2. kika på dina binärer. du kommer att ha en underkatalog med resurser för den/de andra språk som du har valt att översätta till.
3. kika bland dina källkodsfiler. Du kommer att ha resx filer för alla språk du har valt att översätta till. (går att se direkt i SolutionExplorer, klicka på knappen högst upp där det står "Show All Files" i tooltipet.)
---> hur ska jag då arbeta för att slippa krångel:
1. utveckla dina formulär med Localized = true men Language = Default.
2. översätt dina applikationer genom att välja det språk du vill översätta till och ändra sen dina formular till det nya språket.
3. LÄS på om resurser på MSDN. Det är enkelt att använda men många fällor att trilla i om man inte förstår hur det ska gå till.
Med vänlig hälsning
Daniel PeterssonSv: Flera språk i sitt program
(eller så vet ni inte hur det egentligen ska gå till...)
Visst ska du använda ResourceManager men om du använder VisualStudio
så behöver du skriva speciellt mycket kod själv.
Kör följande test och titta sen både på koden och på dina binärer.
1. Skapa en ny tom Forms applikation
2. lägg ut några grafiska elemenet.
3. kompilera
4. ändra till Localized = true i Properties för ditt Formulär
5. välj det språk du vill översätta till i Language på Properties
6. ändra kontrollera för att passa det nya språket, OBS inte bara text utan även position och storlek.
7. Kompilera och analysera resultatet.
---> kort analys.
1. om du kikar i InitializeComponent() så kommer du att se en MASSA mer kod
än tidigare. Titta överst så ser du hur man kan skapa ett eget ResourceManager objekt.
2. kika på dina binärer. du kommer att ha en underkatalog med resurser för den/de andra språk som du har valt att översätta till.
3. kika bland dina källkodsfiler. Du kommer att ha resx filer för alla språk du har valt att översätta till. (går att se direkt i SolutionExplorer, klicka på knappen högst upp där det står "Show All Files" i tooltipet.)
---> hur ska jag då arbeta för att slippa krångel:
1. utveckla dina formulär med Localized = true men Language = Default.
2. översätt dina applikationer genom att välja det språk du vill översätta till och ändra sen dina formular till det nya språket.
3. LÄS på om resurser på MSDN. Det är enkelt att använda men många fällor att trilla i om man inte förstår hur det ska gå till.
Med vänlig hälsning
Daniel PeterssonSv: Flera språk i sitt program
(eller så vet ni inte hur det egentligen ska gå till...)
Visst ska du använda ResourceManager men om du använder VisualStudio
så behöver du skriva speciellt mycket kod själv.
Kör följande test och titta sen både på koden och på dina binärer.
1. Skapa en ny tom Forms applikation
2. lägg ut några grafiska elemenet.
3. kompilera
4. ändra till Localized = true i Properties för ditt Formulär
5. välj det språk du vill översätta till i Language på Properties
6. ändra kontrollera för att passa det nya språket, OBS inte bara text utan även position och storlek.
7. Kompilera och analysera resultatet.
---> kort analys.
1. om du kikar i InitializeComponent() så kommer du att se en MASSA mer kod
än tidigare. Titta överst så ser du hur man kan skapa ett eget ResourceManager objekt.
2. kika på dina binärer. du kommer att ha en underkatalog med resurser för den/de andra språk som du har valt att översätta till.
3. kika bland dina källkodsfiler. Du kommer att ha resx filer för alla språk du har valt att översätta till. (går att se direkt i SolutionExplorer, klicka på knappen högst upp där det står "Show All Files" i tooltipet.)
---> hur ska jag då arbeta för att slippa krångel:
1. utveckla dina formulär med Localized = true men Language = Default.
2. översätt dina applikationer genom att välja det språk du vill översätta till och ändra sen dina formular till det nya språket.
3. LÄS på om resurser på MSDN. Det är enkelt att använda men många fällor att trilla i om man inte förstår hur det ska gå till.
Med vänlig hälsning
Daniel PeterssonSv: Flera språk i sitt program
/Fredrik Normén NSQUARED2Sv: Flera språk i sitt program
Tack för den mycket goda instruktionen !
Men man ska väl inte manuellt behöva ändra all text till det man vill använda sig av?Sv: Flera språk i sitt program
Jobbar du via designern så behöver du bara växla Language på properties och översätta de delar som inte stämmer med default.
Tex om du bestämmer att default är US - english och ska göra en översättning till UK - english så är det bara dessa små förändringar som du kommer att behöva göra när du översätter. Differansen kommer att sparas i UK resursen och laddas av .net runtime när thread locale är UK.
Det bästa är att du nu går till MSDN och läser på hur språkhantering ska fungera.
Det är ett stort ämne som inte täcks så enkelt i ett enkelt forum. Det finns massor med info i MSDN på nätet i med din framework installation.Sv: Flera språk i sitt program
Jag har tagit en koll på ett exempel på c-sharpcorner, <url>http://www.c-sharpcorner.com/Code/2002/April/GlobalizedPropGrid.asp</url>
Något liknande är väl vad jag är ute efter.
Där används två klasser(Descriptors.cs, Attributes.cs) som jag fattar som att man måste lägga till i sitt projekt, vilket jag gjort.
Hade varit snällt om någon bara skulle vilja ta en koll på exemplet och se vad som eventuellt fattas.
Följande har jag hittills gjort:
* har skapat två Assembly Resource Filer
* använder using System.Globalization;
* skapar en array som innehåller de olika språken
<code>supportedLanguages = new string[2];
supportedLanguages[0] = "en";
supportedLanguages[1] = "de";
</code>
*I mitt click event skriver jag:
<code>Thread.CurrentThread.CurrentUICulture = new CultureInfo(supportedLanguages[0]);</code>Sv: Flera språk i sitt program
Om man tex har svenska som språk och vill göra om till engelska. Man kan ju bara skriva lblSok.Text="Search"...och sen göra detta för alla menyer text.Sv: Flera språk i sitt program
den använder en ganska sofistikerad algoritm för att hitta just den satelite
assembly som innehåller dina översättningar.
Den har även stöd för diffrentierade assemblies, dvs dina resurser innehåller
bara de översättningar som krävs, inte alla!
Visst man kan skriva så som du föreslår och bara översätta text. Men ganska snart kommer du att upptäcka att texten tex inte får plats på knappen, då måste du hantera även detta själv. Sen upptäcker du att din sympol inte fungerar på ett språk, där den har en helt annat betydelse där, då får du hantera även detta... osv.
/Daniel