Was ist der Unterschied zwischen Current und CurrentUICulture Eigenschaften von Culture in .NET?
-
11-07-2019 - |
Frage
In .NET gibt es die CultureInfo
Klasse im System.Globalization
Namespace. Es hat zwei ähnliche Objekte beide Rückkehr Wert des CultureInfo
Typs:. CurrentCulture
und CurrentUICulture
Was ist der Unterschied zwischen ihnen?
Welche soll ich verwenden, wann und warum?
Lösung
CurrentCulture
ist die .NET-Darstellung des Standard-Benutzergebietsschema des Systems. Dies steuert Standardnummer und Datumsformatierung und dergleichen.
bezieht sich CurrentUICulture
auf die Standardsprache der Benutzeroberfläche, eine Einstellung in Windows 2000 eingeführt Dies wird in erster Linie in Bezug auf die UI-Lokalisierung / Übersetzung Teil Ihrer App.
Was auch immer das System regionale Optionen konfiguriert ist, um die „Current“ Werte in Ihrem .NET-App haben wird.
Oft sind sie beide gleich. Aber auf meinem System würden sie anders sein. Ich ziehe meine Zahlen und Daten im deutschen Format, so dass die CurrentCulture
Deutsch wäre, aber ich ziehe auch all meine Anwendungen auf Englisch, so dass die CurrentUICulture
wäre Englisch
Es gibt einen schönen Artikel zum Thema: alles Out Reihenfolge: Warum wir haben beide Current und CurrentUICulture
Andere Tipps
Dies ist ein einfacher Trick, den ich verwenden zu erinnern, die man zu verwenden:
(date, currency, double).tostring = CurrentCulture
resource.fr-CA.resx file = currentUICulture
Unterschiede:
-
CurrentCulture
ist für die Formatierung von Daten und Währung währendCurrentUICulture
geht mit Sprache / Übersetzungen. Es wird vonResourceManager
verwendet werden, um Ressourcen zu suchen durch Kultur. - Namespace von
CurrentCulture
Klasse ist inSystem.Globalization
währendCurrentUICulture
stammt ausSystem.Threading
. -
CurrentCulture
über unterschiedliche Anforderungen in der beibehalten wird Sitzung währendCurrentUICulture
muss mit jeder Anforderung eingestellt werden.
Figur:
Sie sind beide System.Globalization.CultureInfo
Instanzen.
Eine gute Möglichkeit, einen Unterschied zusätzlich zu den schönen Erklärungen getan, um von anderen Anwendern, und ein wichtiger Aspekt in der Entwicklung von Webanwendungen ist die folgende:
-
CurrentCulture
stellt den Aufbau des Web-Servers. Zum Beispiel, wenn Ihre ASP.NET Web-Anwendung in Deutschland gehostet wird, würde der Wert vonCutlureInfo.CurrentCulture
höchstwahrscheinlichde-DE
werden. Somit würde die Standardformatierung für.ToString()
IFormattable
Typen verwenden die Standard deutschen Formatierungen, oder diejenigen, die auf dem Server-Betriebssystem als Standardwerte eingerichtet wurden. -
CurrentUICulture
kann aus dem User-Agent erfasst werden, und kann die Benutzeroberfläche Kultur des Clients eine Verbindung zu der Website darstellen. Zum Beispiel, wenn Sie diese Website aus Russland, den lokalen Einstellungen laden gesetzt russische Sprache zu verwenden, und Ihr User-Agent sendet Ihre locale-Einstellungen an den Server (Opera und IE tun dies automatisch, nicht sicher für Chrome und Firefox), dieCurrenUICulture
darstellen würderu-RU
. Dies bewirkt, dass alle Ressourcen wie lokalisierte Strings über Resourcemanager oder Lokalisierungs Ausdrücke in ASP.NET aspx / ascx Dateien abgerufen auf Russisch (wenn Übersetzungen zur Verfügung stehen).
Es ist erwähnenswert, dass die CurrentUICulture
nicht-länderspezifische Orte wie ‚de‘ (Neutral Kulturen) unterstützt, während CurrentCulture
nur länderspezifische Orte wie ‚en-GB‘ unterstützt. Einstellen CurrentCulture
zu einer neutralen Kultur wird ein ArgumentException
werfen.
Ich gehe davon aus, dass dies, weil Formate wie Termine und Währung stärker an das Land selbst verknüpft, aber die angezeigte Sprache ist oft austauschbar zwischen den Ländern.