Könnte mir jemand ein bisschen mehr Informationen über den Unterschied zwischen Culture
und UICulture
innerhalb des .NET Frameworks geben? Was machen sie und wann sollen sie was verwenden?
126
Culture
beeinflusst, wie kulturabhängige Daten (Daten, Währungen, Zahlen usw.) dargestellt werden. Hier einige Beispiele:
var date = new DateTime(2000, 1, 2);
var number = 12345.6789;
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
Console.WriteLine(date); // 02.01.2000 00:00:00
Console.WriteLine(number.ToString("C")); // 12.345,68 €
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA");
Console.WriteLine(date); // 2000-01-02 00:00:00
Console.WriteLine(number.ToString("C")); // 12 345,68 $
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Console.WriteLine(date); // 1/2/2000 12:00:00 AM
Console.WriteLine(number.ToString("C")); // $12,345.68
Kultur beeinflusst auch das Parsen von Benutzereingaben auf die gleiche Weise:
const string numberString = "12.345,68";
decimal money;
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
money = decimal.Parse(numberString); // OK!
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
money = decimal.Parse(numberString); // FormatException is thrown, TryParse would return false
Hüten Sie sich vor Fällen, in denen das Parsen erfolgreich ist , das Ergebnis jedoch nicht dem entspricht, was Sie erwarten würden.
const string numberString = "12.345";
decimal money;
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
money = decimal.Parse(numberString); // 12345
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
money = decimal.Parse(numberString); // 12.345, where the . is a decimal point
UICulture
wirkt sich darauf aus, in welche Ressourcendatei (Resources. lang .resx) von Ihrer Anwendung geladen wird.
Um deutsche Ressourcen (vermutlich lokalisierten Text) zu laden, würden Sie UICulture
die deutsche Kultur einstellen und die deutsche Formatierung anzeigen (ohne Auswirkungen darauf, welche Ressourcen geladen werden), die Sie festlegen würden Culture
.
CultureInfo
Objekt zu verwenden, um die Ressourcendatei zu bestimmen, in der astring
ausreichen würde? (ZB dasLanguage
Eigentum derFrameworkElement
)Culture and UICulture
Werte sind Paare von Zeichenfolgen mit zwei Buchstaben, die erste dient zum Definieren der Sprache und die zweite zum Definieren der Region. Beispiel:
en-GB
hieren
repräsentiertEnglish
undGB
repräsentiertGreat Briton
en-US
hieren
repräsentiertEnglish
undUS
repräsentiertUnited States
Verwendung
Culture
für kulturabhängige Funktionen wie Datum, Uhrzeit. undUICulture
dient zum korrekten Laden von Ressourcendateien.quelle
Nur eine kleine Sache, die zusätzlich zu @ Vaches großartiger Erklärung zu beachten ist: Sie können sowohl UICulture als auch Culture auf (Seitenebene und Anwendungsebene) einstellen.
Um sie auf Anwendungsebene festzulegen, fügen Sie einfach eine Globalisierungssitzung in web.config hinzu
z.B
<globalization uiCulture="es" culture="es-MX" />
Um sie auf Seitenebene festzulegen, was sich gut zum Hinzufügen auf einer bestimmten (einzelnen) Seite eignet, legen Sie die Attribute Culture und UICulture in der @ page-Direktive fest
z.B
<%@ Page UICulture="es" Culture="es-MX" %>
quelle
Die UICulture-Eigenschaft kann sich für jeden Webbrowser ändern, während die Culture konstant bleibt.
Der Kulturwert kann nur für bestimmte Kulturen festgelegt werden, z. B. en-US oder en-GB. Dies verhindert, dass das richtige Währungssymbol für en identifiziert werden muss, wenn en-US und en-GB unterschiedliche Währungssymbole haben. Benutzer können die UI-Kultur und -Kultur in ihren Browsern festlegen.
quelle