none
Culture Einstellungen für Dlls RRS feed

  • Frage

  • Hallo,

     

    wir haben ein Programm mit mehreren Dlls in CSharp Framework 2 (VS 2005) entwickelt. Das Programm soll mehrere Sprachen unterstützen und jetzt sind zwei Sprachen Deutsch (Standard) und Englisch implementiert.

    Das Umschalten hat gut mit CurrentUICulture und CurrentCulture funktioniert.

    Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");

    Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

    Jetzt habe ich festgestellt, wenn das Programm auf Englisch umgestellt wurde, werden die Masken aus zwei Dlls trotzdem in Deutsch angezeigt, obwohl die Masken für beide Sprachen erstellt wurden. Die Hauptmaske wird richtig dargestellt. Die Resources – Dateien für diese zwei Dlls vermisse ich im „en“ – Verzeichnis nach der Installation des Programms  auch.

    Die Buildeinstellungen der Dlls habe ich auch überprüft, die Sprachversion ist auf „default“ eingestellt.   

    Woran kann es liegen?

     

    Danke im Voraus,

     

    Igor

    Montag, 15. November 2010 10:32

Antworten

  • Hallo Igor,

    Ich gehe davon aus, dass die Masken, die Du meinst, keine common controls von Windows sind, sondern Windows Forms, und dass sie auf dem selben Thread (Thread.CurrentThread) angezeigt werden.

    Beim Umstellen auf Englisch ("en-US") werden die Satellitenassemblies im entsprechenden Unterverzeichnis ("en-US") und dann per Fallback in ("en") gesucht. Falls dort keine Satellitenassembly gefunden wurde, werden die neutralen Ressourcen der Anwendung (Deutsch) herangezogen. Das ist normales Verhalten.

    Wenn Du die lokalisierten Satellitenassemblies nicht findest, wurden sie entweder nicht erstellt (Localizable==false, od. Language==(Standard) wobei keine anderssprachigen Ressourcen angegeben wurden), oder die Assemblies wurden erstellt aber nicht ins Setup aufgenommen usw.

    Überprüfe für jede Form die Eingenschaften Localizable. Schalte Language auf Englisch um und check mal nach, ob die Text-Eigenschaften auch wirklich auf Englisch gesetzt wurden. Bereinige dann Dein Projekt, erstelle es erneut und prüfe, ob die en-Unterverzeichniss(e) erstellt wurden.

    Exemplarische Vorgehensweise: Lokalisieren von Windows Forms
    http://msdn.microsoft.com/de-de/library/y99d1cd3(v=VS.100).aspx

    Gruß
    Marcel

    Montag, 15. November 2010 12:35
    Moderator
  • Hallo,

     

    Das Problem ist behoben. Es lag an Install -Projekt. Im Projekt fehlten die Lokalisierten Resourcen für beide Dlls.

     

    Danke,

     

    Igor

    Montag, 15. November 2010 12:39

Alle Antworten

  • Hallo Igor,

    Ich gehe davon aus, dass die Masken, die Du meinst, keine common controls von Windows sind, sondern Windows Forms, und dass sie auf dem selben Thread (Thread.CurrentThread) angezeigt werden.

    Beim Umstellen auf Englisch ("en-US") werden die Satellitenassemblies im entsprechenden Unterverzeichnis ("en-US") und dann per Fallback in ("en") gesucht. Falls dort keine Satellitenassembly gefunden wurde, werden die neutralen Ressourcen der Anwendung (Deutsch) herangezogen. Das ist normales Verhalten.

    Wenn Du die lokalisierten Satellitenassemblies nicht findest, wurden sie entweder nicht erstellt (Localizable==false, od. Language==(Standard) wobei keine anderssprachigen Ressourcen angegeben wurden), oder die Assemblies wurden erstellt aber nicht ins Setup aufgenommen usw.

    Überprüfe für jede Form die Eingenschaften Localizable. Schalte Language auf Englisch um und check mal nach, ob die Text-Eigenschaften auch wirklich auf Englisch gesetzt wurden. Bereinige dann Dein Projekt, erstelle es erneut und prüfe, ob die en-Unterverzeichniss(e) erstellt wurden.

    Exemplarische Vorgehensweise: Lokalisieren von Windows Forms
    http://msdn.microsoft.com/de-de/library/y99d1cd3(v=VS.100).aspx

    Gruß
    Marcel

    Montag, 15. November 2010 12:35
    Moderator
  • Hallo,

     

    Das Problem ist behoben. Es lag an Install -Projekt. Im Projekt fehlten die Lokalisierten Resourcen für beide Dlls.

     

    Danke,

     

    Igor

    Montag, 15. November 2010 12:39
  • Es lag an Install -Projekt. Im Projekt fehlten die Lokalisierten Resourcen für beide Dlls.

    Hallo,

    Dann lag ich mit meiner Vermutung doch richtig: "[...] oder die Assemblies wurden erstellt aber nicht ins Setup aufgenommen".

    Gruß
    Marcel

    Montag, 15. November 2010 12:43
    Moderator
  • Hallo Marcel,

    ich würde sagen: 100 % richtig. Danke.

    Igor 

    Montag, 15. November 2010 12:48