Forums Neueste Beiträge
 

Problem mit der Globalisierung

12/03/2008 - 15:10 von Ingo Manthey | Report spam
Hallo NG,

ich möchte mein Programm in mehreren Sprachen anzeigen.
Wenn der User eine andere Sprache gewàhlt hat:
foreach (Form form in Application.OpenForms)
{
if (form is IMaGlobalisation)
(form as IMaGlobalisation).ChangeCulture(newCulture);
}

Alle Formen haben das Interface IMaGlobalisation.
public void ChangeCulture(string culture)
{
CultureInfo cInfo = new CultureInfo(culture);

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

ApplyRessourcesAllControls(this, resManager, cInfo, culture);

// Deutsch ist die Standardsprache
if (culture == "de")
cInfo = new CultureInfo(String.Empty);

Thread.CurrentThread.CurrentCulture = cInfo;

this.SetResource();

}
private 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);
}
}

Im debugger làuft auch alles schön durch. Zum Beispiel wird mir danach als
Application.CurrentCulture.Name auf "pt-BR" angezeigt. Nur die angezeigte
Sprache bleibt deutsch.
Die resource files sind vorhanden? Was habe ich falsch gemacht?

Danke für jeden Hinweis.

Grüße Ingo
 

Lesen sie die antworten

#1 Ingo Manthey
12/03/2008 - 15:22 | Warnen spam
Hallo NG,

ich habe mein Problem selbergefunden.
Ich darf nicht nur die CurrentCulture setzen muss auch die CurrentUICulture.

Danke Ingo


"Ingo Manthey" schrieb im Newsbeitrag
news:%
Hallo NG,

ich möchte mein Programm in mehreren Sprachen anzeigen.
Wenn der User eine andere Sprache gewàhlt hat:
foreach (Form form in Application.OpenForms)
{
if (form is IMaGlobalisation)
(form as IMaGlobalisation).ChangeCulture(newCulture);
}

Alle Formen haben das Interface IMaGlobalisation.
public void ChangeCulture(string culture)
{
CultureInfo cInfo = new CultureInfo(culture);

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

ApplyRessourcesAllControls(this, resManager, cInfo, culture);

// Deutsch ist die Standardsprache
if (culture == "de")
cInfo = new CultureInfo(String.Empty);

Thread.CurrentThread.CurrentCulture = cInfo;

this.SetResource();

}
private 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);
}
}

Im debugger làuft auch alles schön durch. Zum Beispiel wird mir danach als
Application.CurrentCulture.Name auf "pt-BR" angezeigt. Nur die angezeigte
Sprache bleibt deutsch.
Die resource files sind vorhanden? Was habe ich falsch gemacht?

Danke für jeden Hinweis.

Grüße Ingo

Ähnliche fragen