Entwickler-Ecke

Sonstiges (.NET) - Multilanguage und Setup-Projekt verträgt sich nicht


peterd - Mi 19.03.08 17:53
Titel: Multilanguage und Setup-Projekt verträgt sich nicht
Hallo zusammen.

Ich hab ein Programm geschrieben das in deutsch und englisch läuft. Jedesmal wenn das Programm startet wird die akutelle culture gelesen und es werden dann die deutschen (bei deutscher culture) bzw. englischen (bei allen anderen cultures) Strings aus den *.resx files geladen.

Funktioniert alles wunderbar. Keine Probleme.

Dann habe ich ein Setup Projekt für mein Programm gemacht. Funktioniert auch alles wunderbar. Lässt sich installieren und deninstallieren. Kein Problem.

Das Problem ist nur: Jedesmal wenn ich das Programm installiere (also über das Setup Projekt, wie es ja auch installiert werden soll) kommt es immer mit englischer Sprache hoch, auch an Windows mit deutscher culture.

Ich verstehe es nicht und finde natürlich auch keine Fehler. Weiß jemand warum das Programm perfekt läuft wenn ich es aus Visual Studio starte und debugge, und wenn ich es installiere läuft es nicht mehr richtig.

Hier noch ein Auszug aus der Software wo die Sprache bestimmt wird:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
string test;
culture = CultureInfo.CurrentCulture;
//culture = CultureInfo.CreateSpecificCulture ("fr");  // Hier kann man eine andere Spracheinstellung erzwingen damit er beim debuggen eine andere Sprache bringt als deutsch

ResourceManager rm = new ResourceManager("_2028_GSM_Modem.myRes"typeof(Form1).Assembly);

test = rm.GetString ("buttonOeffnen", culture);    // Hole den String für Button öffnen aus der entsprechenden resx
buttonOeffnen.Text = test;        // Schreibe den String in die Variable


Danke
peter

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Mi 19.03.2008 um 17:22


Christian S. - Mi 19.03.08 18:22

Für Dein Problem direkt habe ich keine Lösung. Aber die Lokalisation geht viel einfacher und automatisch:
http://www.c-sharp-forum.de/viewtopic.php?p=455380#455380

Ich habe das so gemacht und bisher keine Probleme damit gehabt. Hast Du mal geguckt, ob auch alle Dateien kopiert werden oder vielleicht die Datei mit den deutschen Ressourcen fehlt?


peterd - Mi 19.03.08 21:38

Danke für die Info. Ich werd mal deine einfachere Lösung ausprobieren.

Aber noch ne Frage. Wie und wo kann ich denn im Setup Projekt sehen ob er mir die deutsche Ressourcen Datei kopiert hat oder nicht?
Also wenn ich es installiere ist in dem Installationsverzeichniss die deutsche resx drin. Ist sie damit sicher kopiert?

Peter


Ralf Jansen - Mi 19.03.08 22:15

Muß nicht unbedingt mit deinem Problem zusammenhängen, aber wenn es dir um die Lokalisierung deiner GUI geht solltest du eher auf CultureInfo.CurrentUICulture zugreifen.


peterd - Do 20.03.08 10:24

Danke... mit CultureInfo.CurrentUICulture ging es leider auch nicht.

Jezt habe ich mich mal an die Lösung rangewagt:
http://www.c-sharp-forum.de/viewtopic.php?p=455380#455380

Irgendwie mach ich was grundlegend falsch komme aber nicht drauf.

Ich habe ein neues ganz Simples Projekt gemacht.

Eine kleine Form mit einem Label, Localizable auf true, Sprache auf Standart (ist wohl default).
Dann als label.Text "englisches Label" und als Form.Text "englische Form".
Als nächstes Sprache auf Deutsch gestellt und als label.Text "deutsches label" und Form.Text "deutsche Form".

Starte ich aus VS und debugge rennt alles wunderbar. Sobald ich ein Setup Projekt einfüge und es installiere kommt er mir immer in englischer Sprache an deutschen Windows' hoch.

Wenn ich an der Eigenschaft Localization im Setup Projekt drehe ändert sich auch nix.
Dachte es liegt vieleicht an meinem Windows. Habe dann noch einen alten PC mit deutschem XP versucht. Auch keine Änderung.

Ich krieg es noch an den Nerven hier.


Kha - Do 20.03.08 12:45

Dann hast du im Setup die Satellite Assemblies vergessen. Die Ordnerstruktur muss so aussehen:

Quelltext
1:
2:
3:
- XYZ.exe
- de-DE
  - XYZ.resources.dll


peterd - Do 20.03.08 14:52

Die Satellite Assemblies sind bei mir nicht im Setup Projekt Ordner sondern im C# Projekt Ordner...


peterd - Di 25.03.08 09:40

... und wenn ich die *.exe aus dem C# Projekt Ordner starte gibt es überhaupt keine Probleme mit den Sprachen.

Nur wenn ich für das Programm ein Setup Projekt erstelle und dann das Programm über die Setup-Datei (Typ: Windows-Installer-Paket) intalliere und starte. Dann kommt es jedesmal mit default Sprache (englisch) hoch, statt in deutsch (egal an welchem PC, hab jetzt inzwischen schon 3 mit deutschem XP und einen mit englischem XP versucht).
Und da verzweifle ich jetzt schon seit fast einer Woche dran.


peterd - Di 25.03.08 14:58

Leute ich habs geschafft. Fragt mich nicht wie...
Hab aus lauter Frust das komplette Visual Studio runtergeschmissen und neu installiert. Jetzt geht das!!!



Jetzt hätte ich aber noch ne Frage. Ist es möglich das Setup, also die Führung durchs Setup, auch mehrsprachig zu machen?
Und damit meine ich nicht für jede Sprache ein neues Setup Projekt zu erstellen.

Im den Setup-Projekt Eigenschaften kann man ja die Localization wählen und dann ist die SetupFührung deutsch, englisch, französisch usw. usw.
Aber kann man das nicht auf "automatisch" einstellen, so dass er mit der ensprechenden Sprache am entsprechenden PC hochkommt?

Grüsse
Peter