Frage

Ich habe mit der Globalisierung Einstellungen in der Vergangenheit gearbeitet, aber nicht innerhalb der .NET-Umgebung, die das Thema dieser Frage ist. Was ich sehe ist sicherlich aufgrund Wissen, das ich noch zu lernen, so dass ich Beleuchtung auf dem folgende schätzen würde.


Setup: Meine Standardsprache ist Englisch (en-us speziell). Ich fügte hinzu, eine zweite Sprache (Dänisch) auf meinem Entwicklungssystem (WinXP) und dann die Sprache Bar geöffnet, damit ich nach Belieben wählen Sie entweder konnte.


Wie wähle ich die dänische auf der Sprachleiste dann geöffnet Notepad und fand die Sprache in Englisch auf der Sprachleiste rückgängig gemacht. Ich verstehe, dass die Spracheinstellung ist pro Anwendung , so schien es, dass Notepad des Standard zurück auf Englisch eingestellt. (Ich fand, dass die seltsame seit Windows und damit Notepad auf der ganzen Welt verwendet wird.) Schließen Editor, um die Einstellung auf der Sprachleiste auf dänische zurückgegeben. Ich habe dann meine offene benutzerdefinierte Windows Forms-Anwendung gestartet - was ich nicht weiß, die Sprache festgelegt - und es auch aus dem Englischen in dänischen zurückgekehrt, wenn sie geöffnet, dann dänischen zurück, wenn beendet

Frage # 1A: Wie erhalte ich meine WinForm Anwendung beim Start der aktuelle Einstellung der Sprachleiste zu erben? Mein Experiment scheint, dass jede Anwendung beginnt mit dem System-Standard, um anzuzeigen, und den Benutzer erfordert, um es manuell zu ändern, sobald die App läuft - dies scheint ein großer Nachteil für jedermann zu sein, die mit mehr als einer Sprache arbeiten wollen

Frage # 1 B: Wenn man muß in der Tat, die Sprache manuell in einem mehrsprachigen Szenario festgelegt, wie kann ich meine Standard-Systemsprache ändern (zB auf Dänisch), so kann ich meine testen App Start in einer anderen Sprache?


habe ich eine Anzeige der aktuellen Sprache in meiner Anwendung für dieses nächste Experiment. Insbesondere stellte ich einen MouseEnter Handler auf ein Etikett, das sein Tooltip CultureInfo.CurrentCulture.Name so jedes Mal, wenn ich Maus-Set über dachte ich, soll ich die aktuelle Spracheinstellung sehen. Da die Spracheinstellung, bevor ich meine app starten nicht Arbeit, tat startete ich dann die Sprache auf Dänisch eingestellt. Ich fand, dass einige Dinge (wie die Eingabe in einem Text) haben diese dänische Einstellung ehren. Aber über das instrumentierte Label mousing noch en-us zeigte!

Frage # 2A: Warum CultureInfo.CurrentCulture.Name nicht den Wechsel von meiner Sprache Bar reflektiert, während andere Teile meiner App scheinen die Änderung zu erkennen? (Der Versuch, CultureInfo.CurrentUICulture.Name erzeugt das gleiche Ergebnis.)

Frage # 2B: Gibt es ein Ereignis, das Feuer auf Veränderungen auf der Sprachleiste, damit ich in meiner Anwendung, wenn die Spracheinstellung Änderungen erkennen kann

?

2010.05.13 aktualisieren

Die kurzen, aber süß Informationen von Eric von Microsoft zur Verfügung gestellt (siehe seine Antwort unten) adressierten direkt nur einen meiner vier Fragen (# 2A), aber es vorgesehen, nur den Anstoß ich tauchen musste weiter und Figur aus dem Rest. Zum Wohle der anderen, die auch durch diese benebelt sein kann, hier ist das, was ich entdeckt:

Antwort # 1A: Eine Anwendung erbt die Einstellung der Standardeingabesprache, nicht die Sprache, die Sie auf der Sprachleiste angeben. Sobald Ihre Anwendung ausgeführt wird, dann ändert sich auf der Sprachleiste wird sofort von Ihrer App bemerkt werden.

Die Antwort # 1B:. Einstellen der Standardeingabesprache erfolgt über Regions- und Sprachoptionen Bedienfeld >> Registerkarte Sprachen >> Details >> Registerkarte Einstellungen >> Standardeingabesprache

Antwort # 2A: Beantwortet von Eric, die aktuelle Kultur unterscheidet sich von der aktuellen Eingabesprache, die auf der Sprachleiste reflektiert wird; Eingabe in einem Textfeld wird nur durch die aktuelle Eingabesprache beeinflusst.

Antwort # 2B: Es gibt keine vordefinierten Ereignis für beide Eingabesprache oder aktuelle Kultur Änderungsbenachrichtigung. Eine wichtige Tatsache zu beachten ist hier, dass die EingabespracheÄnderungen werden sofort automatisch erkannt, während aktuelle Kultur Änderungen nicht. Sie müssen Ihren Antrag auf eine aktuelle Kultur Änderung wirksam neu zu starten - es sei denn, Sie die Änderung bemerken und sich auf ihn einwirken. Zu diesem Zweck fand ich einen MSDN-Artikel ( Die vielen Gesichter der Cultureinfo-Klasse ), dass ein solcher Haken liefert die Änderung zu bemerken.

War es hilfreich?

Lösung

Es gibt drei verschiedene Spracheinstellungen im Spiel. Die Sprachleiste steuert die Eingabesprache ( Inputlanguage ), die für die Anzeige von UI (CurrentUICulture), die sich von der Sprache unterscheidet, zum Sortieren / Formatierung / Parsen (Current).

Es ist wahr, dass dies verwirrend ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top