2010-07-19 9 views
12

Ich bin ein mehrsprachiges Programm in C# unter WindowsSprache ändern in C#

Entwicklung von Windows Schriftsprache auf bestimmte Aktionen ändern ...
z.B. Wechsel von Englisch nach Arabisch im Fokus Event.

Dank

+0

Diese ähnliche Position etwas Licht kann http://stackoverflow.com/questions/397356/entwickeln-multilingual-windows-application-c http://stackoverflow.com/questions/270829/internationalizing-desktop-app-within-a-couple-years-what-should-we-donow- Prost! – CoderHawk

Antwort

11

Um eine ganz neue Kultur auszuwählen, setze CurrentThread.CurrentCulture auf eine neue Kultur, z. bis auf Französisch:

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("fr-FR"); 
System.Threading.Thread.CurrentThread.CurrentCulture = ci; 

Sie eine Liste der vordefinierten CultureInfo Namen here und here finden.

Wenn Sie bestimmte Aspekte der Standardkultur ändern möchten, können Sie die Kultur des aktuellen Threads abrufen, den Namen des Threads verwenden, um eine neue CultureInfo-Instanz zu erstellen, und die neue Kultur des Threads mit einigen Änderungen festlegen, z. die aktuelle Kultur ändern Symbol des ‚Euro‘ zu verwenden:

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo(System.Threading.Thread.CurrentThread.CurrentCulture.Name); 
ci.NumberFormat.CurrencySymbol = "€"; 
System.Threading.Thread.CurrentThread.CurrentCulture = ci; 
+1

Für einige Situationen ist es auch notwendig, System.Threading.Thread.CurrentThread.CurrentUICulture einzustellen. (Beachten Sie die "UI" in der Mitte der Eigenschaft Name.) – RenniePet

+0

dieser Link hat Codes http://www.lingoes.net/en/translator/langcode.htm – barlop

3
Thread.CurrentThread.CurrentCulture = yournewculture; 

Siehe auch die CurrentUICulture Eigenschaft.

+0

Können Sie bitte sagen, wie Sie "yournewculture" bekommen – Betamoo

+0

Ich denke, DrHerbie tat es schon :) – leppie

1

Darüber hinaus, wenn Sie alle Steuerelemente Ressourcen zur Laufzeit aktualisieren möchten, müssen Sie etwas verwenden:

private void RefreshResources(Control ctrl, ComponentResourceManager res) 
{ 
    ctrl.SuspendLayout(); 
    res.ApplyResources(ctrl, ctrl.Name, CurrentLocale); 
    foreach (Control control in ctrl.Controls) 
     RefreshResources(control, res); // recursion 
    ctrl.ResumeLayout(false); 
} 

Wenn Sie ein besseres Beispiel wünschen, überprüfen Sie my blog.

1

Diese Aussagen für mich hilfreich waren:

string myLanguage = "HE-IL"; 
InputLanguage.CurrentInputLanguage = 
    InputLanguage.FromCulture(new System.Globalization.CultureInfo(myLanguage)); 
+0

das ist auch toll, die Änderung der ersten Zeile, kann tun es für welches Land auch immer http://www.lingoes.net/en/translator/langcode.htm – barlop

3

In Last Event den Code einfügen:

InputLanguage.CurrentInputLanguage = 
     InputLanguage.FromCulture(new System.Globalization.CultureInfo("fa-IR"));