Wo wird die Standardkultur in einer .NET-Anwendung festgelegt?

8

Ich schreibe eine WPF App und habe einige Schwierigkeiten mit den Kulturen.

Ich würde gerne wissen, wo .NET-Anwendungen den Wert für CurrentThread.CurrentCulture übernehmen, wenn kein Wert explizit festgelegt ist. Es ist nicht von der Windows-Kultur Info, weil ich das von en-US zu en-GB geändert habe, ohne irgendeine Änderung in der Anwendung beim Laufen zu bemerken.

Bitte helfen Sie!

Markieren

    
serlingpa 10.07.2013, 09:39
quelle

2 Antworten

6

Von dem guten Handbuch :

  

Sehen Sie sich die Eigenschaft CultureInfo.CurrentCulture an, um zu erfahren, wie die Standardkultur eines Threads ermittelt wird und wie Benutzer Kulturinformationen für ihre Computer festlegen.

Ein mühsamer Klick später ...

  

Wie die Kultur eines Threads ermittelt wird

     

Wenn ein Thread gestartet wird, wird seine Kultur zunächst wie folgt bestimmt:

     
  • Durch Abrufen der Kultur, die durch die Eigenschaft DefaultThreadCurrentCulture in der Anwendungsdomäne angegeben wird, in der der Thread ausgeführt wird, wenn der Eigenschaftswert nicht null ist.

  •   
  • Durch Aufruf der Funktion Windows GetUserDefaultLocaleName .

  •   

Beachten Sie, dass die aktuelle Kultur dieser Threads die Kultur ist, die von% co_de zurückgegeben wird, wenn Sie eine bestimmte Kultur festlegen, die sich von der systeminstallierten Kultur oder der bevorzugten Kultur des Benutzers unterscheidet und Ihre Anwendung mehrere Threads startet % -Funktion, es sei denn, Sie weisen der Eigenschaft GetUserDefaultLocaleName in der Anwendungsdomäne, in der der Thread ausgeführt wird, eine Kultur zu.

     

Weitere Informationen zur Ermittlung der Kultur eines Threads finden Sie im Abschnitt "Culture and Threads" im Thema DefaultThreadCurrentCulture .

Ich habe kein Budget für einen weiteren Klick festgelegt, aber trotzdem geklickt .

  

Kultur und Themen

     

Wenn ein neuer Anwendungsthread gestartet wird, werden seine aktuelle Kultur und die aktuelle Benutzeroberflächenkultur von der aktuellen Systemkultur und nicht von der aktuellen Thread-Kultur definiert. Das folgende Beispiel veranschaulicht den Unterschied. Es setzt die aktuelle Kultur und die aktuelle UI-Kultur eines Anwendungsthreads auf die französische (Frankreich) Kultur (fr-FR). Wenn die aktuelle Kultur bereits fr-FR ist, wird sie im Beispiel auf die englische Kultur (en-US) gesetzt. Es zeigt drei Zufallszahlen als Währungswerte an und erstellt dann einen neuen Thread, der wiederum drei weitere Zufallszahlen als Währungswerte anzeigt. Wie die Ausgabe des Beispiels zeigt, entsprechen die vom neuen Thread angezeigten Währungswerte nicht den Formatierungskonventionen der französischen (Frankreich) Kultur, im Gegensatz zur Ausgabe des Hauptanwendungs-Threads.

Beachten Sie, dass angezeigt wird, wenn ein neuer Anwendungsthread gestartet wird . Also, wenn du sagst:

  

Es stammt nicht von der Windows-Kulturinfo, weil ich das von en-US in en-GB geändert habe, ohne irgendwelche Änderungen in der Anwendung beim Ausführen zu bemerken.

Sie können diese Antwort überprüfen.

    
ta.speot.is 10.07.2013, 09:41
quelle
0

Wenn keine spezifische Kultur angegeben ist oder wenn eine leere Zeichenfolge anstelle des Kulturnamens verwendet wird, wird InvariantCulture verwendet.

Es ist mit der englischen Sprache assoziiert, aber nicht mit irgendeinem Land / Gebiet.

    
Zaki 10.07.2013 09:43
quelle

Tags und Links