it-swarm.com.de

Was ist der Unterschied zwischen den Eigenschaften CurrentCulture und CurrentUICulture von CultureInfo in .NET?

In .NET gibt es die Klasse CultureInfo in der Klasse System.Globalization Namespace. Es hat zwei ähnliche Eigenschaften, die beide Werte vom Typ CultureInfo zurückgeben: CurrentCulture und CurrentUICulture.

Was ist der Unterschied zwischen ihnen?

Welches sollte ich wann und warum verwenden?

343
splattne

CurrentCulture ist die .NET-Darstellung des Standardbenutzergebietsschemas des Systems. Dies steuert die Standardformatierung für Zahlen und Datum und dergleichen.

CurrentUICulture bezieht sich auf die Standardsprache der Benutzeroberfläche, eine Einstellung, die in Windows 2000 eingeführt wurde. Dies betrifft in erster Linie den UI-Lokalisierungs-/Übersetzungsteil Ihrer App.

Unabhängig von den regionalen Optionen, für die das System konfiguriert ist, werden die "aktuellen" Werte in Ihrer .NET-App verwendet.

Oft sind beide gleich. Aber auf meinem System wären sie anders: Ich bevorzuge meine Zahlen und Daten im deutschen Format, also wäre das CurrentCulture deutsch, aber ich bevorzuge auch alle meine Bewerbungen in englischer Sprache, also das CurrentUICulture wäre englisch.

Es gibt einen netten Artikel zum Thema: Alles aussortieren: Warum wir sowohl CurrentCulture als auch CurrentUICulture haben

336
Tomalak

Dies ist ein einfacher Trick, mit dem ich mich erinnere, welchen ich verwenden soll:

(date, currency, double).tostring = CurrentCulture

resource.fr-CA.resx file = currentUICulture
105
foxontherock

Unterschiede:

  1. CurrentCulture dient zur Formatierung von Datum und Währung, während CurrentUICulture zu Sprache/Übersetzungen gehört. Es wird von ResourceManager verwendet, um Ressourcen nach Kultur zu durchsuchen.
  2. Der Namespace der Klasse CurrentCulture befindet sich in System.Globalization while CurrentUICulture kommt von System.Threading.
  3. CurrentCulture wird für verschiedene Anforderungen in der Sitzung beibehalten, während CurrentUICulture für jede Anforderung festgelegt werden muss.

Ähnlichkeit:

Sie sind beide System.Globalization.CultureInfo Instanzen.

12

Ein guter Weg, um zusätzlich zu den netten Erklärungen anderer Benutzer einen Unterschied zu machen, und ein wichtiger Aspekt bei der Entwicklung von Webanwendungen ist der folgende:

  • CurrentCulture repräsentiert das Setup des Webservers. Wenn Ihre ASP.NET-Webanwendung beispielsweise in Deutschland gehostet wird, ist der Wert von CutlureInfo.CurrentCulture Höchstwahrscheinlich de-DE. Daher werden für die Standardformatierung von .ToString() für IFormattable die deutschen Standardformatierungen verwendet, oder diejenigen, die auf dem Serverbetriebssystem als Standardeinstellungen eingerichtet wurden.

  • CurrentUICulture kann vom Benutzeragenten erfasst werden und repräsentiert möglicherweise die Benutzeroberflächenkultur des Clients, der eine Verbindung zur Website herstellt. Wenn Sie beispielsweise diese Website aus Russland laden, werden Ihre lokalen Einstellungen auf die Verwendung der russischen Sprache festgelegt, und Ihr Benutzeragent sendet Ihre Gebietsschemaeinstellungen an den Server (Opera und IE tun dies nicht automatisch Stellen Sie sicher, dass für Chrome und FireFox) das CurrenUICultureru-RU darstellt. Dies führt dazu, dass Ressourcen wie lokalisierte Zeichenfolgen über ResourceManager oder Lokalisierungsausdrücke in ASP.NET abgerufen werden aspx/ascx-Dateien müssen in russischer Sprache vorliegen (sofern Übersetzungen verfügbar sind).

12
Ivaylo Slavov

Es ist zu beachten, dass CurrentUICulture nicht länderspezifische Ländereinstellungen wie 'en' (neutrale Kulturen) unterstützt, während CurrentCulture NUR länderspezifische Ländereinstellungen wie 'en-GB' unterstützt. Das Setzen von CurrentCulture auf eine neutrale Kultur wirft ein ArgumentException.

Ich gehe davon aus, dass dies daran liegt, dass Formate wie Datum und Währung stärker mit dem Land selbst verknüpft sind, die angezeigte Sprache jedoch häufig zwischen den Ländern austauschbar ist.

8
Sebris87