Multilanguage Projekt, Ressourcendatei erstellen
-
Hallo Leute,
ich verwende C# VS 2010,
und möchte die Beschriftungen für meine Controls mehrsprachig darstellen können.Dafür habe ich mehrere Ressourcendateien zum Projekt hinzugefügt. Funktioniert alles.
Meine Frage ist, ob es möglich ist alle meine Controls automatisch in die Ressourcendatei hinzufügen.Danke
-
Um eine Form mit Controls mehrsprachig zu machen, brauchst du eigentlich nur die Eigenschaft "Localizable" des Forms auf "true" zu setzen. Dann kannst du mittels der Eigenschaft "Language" bequem zwischen den Sprachen wechseln und die Texte etc. der Controls anpassen (beachte, daß Mehrsprachigkeit evtl. mehr bedeutet, als nur die Texte zu ersetzen, z.B. auch die Größen oder Alignment einzelner Controls anzupassen).
Um außerhalb des VS dies zu erledigen, empfehle ich den "Zeta Resource Editor": http://www.codeproject.com/KB/aspnet/ZetaResourceEditor.aspx
-
Danke für die schnelle Antwort.
Muss ich irgendwelche Bibliotheken hinzufügen? Denn
Form1.Language = "English";
geht bei mir nicht. Das "Languge" ist rot unterstrichen.
-
Ich habs jetzt mit folgender Funktion ausprobiert, aber es geht trotzdem nicht:
public void ChangeLanguage(string lang) { foreach (Control c in this.Controls) { ComponentResourceManager resources = new ComponentResourceManager(typeof(Form1)); resources.ApplyResources(c, c.Name, new CultureInfo(lang)); } }
-
Je nach dem ob du mit WinForms oder WPF arbeitest, hier einen Einstiegspunkt über die MSDN:
Walkthrough: Localizing Windows Forms
WPF Globalization and Localization Overview
-
Danke für die Antwort.
Ich benutze WinForms. Die MSDN-Hilfe habe ich schon durchgelesen.
Das Problem ist, dass ich es nicht schaffe die Sprache der Beschriftungen nach dem Programmstart nachträglich zu ändern.Vielleicht kennt jemand von euch die ungefähre Syntax dafür.
Danke im Voraus.
-
Die beiden Eigenschaften gibt es nur im Eigenschaftenfenster der Form (also im Designer), s. z.B. http://openbook.galileocomputing.de/visual_csharp/visual_csharp_20_005.htm
Und unter http://www.dotnetcurry.com/ShowArticle.aspx?ID=174&AspxAutoDetectCookieSupport=1 gibt es ein Beispiel für deine ChangeLanguage-Methode.
P.S. Stimmt, asc, ich habe gar nicht nach WinForms oder WPF gefragt. Es scheint aber wohl WinForms zu sein!?
-
Ok, danke euch für die schnelle Hilfe.
Ich werde gleich den Debugger anschmeissen. Die "ChangeLanguage()" hat bei mir keine Auswirkung.Gruß
sonic
-
Ich habe endlich den Fehler gefunden.
Folgende Funktion ändert die Beschriftungen aller Controls, welche direkt auf der Form liegen
Das heisst, dass die Controls, welche zum Beispiel in einer Groupbox liegen, unverändert bleiben.public void ChangeLanguage(string lang) { foreach (Control c in this.Controls) { ComponentResourceManager resources = new ComponentResourceManager(typeof(Form1)); resources.ApplyResources(c, c.Name, new CultureInfo(lang)); } }