Problem mit der Umstellung auf eine andere Sprache

07/08/2009 - 02:00 von ingo | Report spam
Hallo NG,

bevor ich auf das Problem komme möchte ich kurz beschreiben wie es bei mir
aussieht:

Ich habe eine dll mit meiner Fenstersteuerung und einigen Stàmmdaten.

Ein Projekt besteht zur Zeit nur aus der MainForm die ist abgeleitet von
einer Form aus der Fenstersteuerung. MDI!!

Ferner habe ich eine Dll mit einen einem MDI-Child abgeleitet auf der 1. DLL
(Fenstersteuerung) und einigen Dialogen welche von dem Chld-Fenster
aufgerufen werden.

Nun zum Programm und dem Problem:

In einem Dialog kann ich auf eine anderre Sprache umstellen, wenn diese
passiert, dann rufe ich für diesen Dialog und allen geöffneten Fenster meine
Methode ChangeCulture(newCulture) auf.

void IMaGlobalisation.ChangeCulture(string culture)
{
CultureInfo cInfo = new CultureInfo(culture);

ComponentResourceManager resManager = new
ComponentResourceManager(this.GetType());
resManager.ApplyResources(this, "$this", cInfo);

ApplyRessourcesAllControls(this, resManager, cInfo, culture);

Thread.CurrentThread.CurrentUICulture = cInfo;
if (culture == "de" || culture == "de-DE")
cInfo = new CultureInfo(String.Empty);

Thread.CurrentThread.CurrentCulture = cInfo;


(this as IMaSetResource).SetResource();

}
protected void ApplyRessourcesAllControls(Control control,
ComponentResourceManager resManager, CultureInfo cInfo, string culture)
{
foreach (Control ctl in control.Controls)
{
if (ctl.Controls.Count > 0) ApplyRessourcesAllControls(ctl,
resManager, cInfo, culture);
resManager.ApplyResources(ctl, ctl.Name, cInfo);
}
}

1.) Problem
In dem Dialog und allen anderen Childfenstern wird auch die Cultur geàndert.
Nur mein MDI Fenster àndert die Sprache nicht. I habe einen Breakpoint
gesetzt und als Thread.CurrentThread.CurrentUICulture wird mir auch die
gewàhlte angezeigt. Wenn das das Programm neu Starte, dann wird mit alles
richtig angezeigt.
Ich habe schon this.Refresh(); versucht aber das hat nichts geholfen. Hat
jemand eine Idee oder einen Tipp?
Alle Fenster welche ich öffne werden immer in der richtigne Sprache
angezeigt. Bis auf:

2.) Problem
Mein Fenster in der DLL. Bei Dieser DLL mache ich ein late Binding. Die Form
ist ein MDI-Child. Hier wird mir auch die richtige Cultur angezeigt aber aus
den Ressourcen wird immer nur die Deutsche "Standard" genommen.
Ich nutze DevExpress und habe deren Ressoucen in beiden Sprachen
installiert. Mein Grid z.B. wird inder gewàhlten Sprache angezeigt nur meine
Daten immer in Deutsch.


Danke für jeden Hinweis und Tipp!!!


Grüße Ingo
 

Lesen sie die antworten

#1 ingo
07/08/2009 - 12:37 | Warnen spam
Hallo NG,
ic glaube mein Problem gelößt zu haben.
Der Grund ist, das ich SateliteAsemblys nicht im GA sind.

Grüße Ingo

Ähnliche fragen