Was ist der Unterschied zwischen Kultur und UICulture?

126

Könnte mir jemand ein bisschen mehr Informationen über den Unterschied zwischen Cultureund UICultureinnerhalb des .NET Frameworks geben? Was machen sie und wann sollen sie was verwenden?

Niklas
quelle

Antworten:

148

Culturebeeinflusst, 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

UICulturewirkt 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 UICulturedie deutsche Kultur einstellen und die deutsche Formatierung anzeigen (ohne Auswirkungen darauf, welche Ressourcen geladen werden), die Sie festlegen würden Culture.

dee-see
quelle
39
Dies bedeutet, dass Sie englische Labels und UI (englische UICulture) sowie norwegische Währung, Datum, Uhrzeit und Zahlenformatierung (norwegische Kultur) haben können. Stellen Sie sich Windows-Begriffe so vor, dass ein Sprachpaket für die Menüs und Dialogfelder installiert ist (UICulture), läuft aber mit norwegischen regionalen Einstellungen (Culture.)
Lasse V. Karlsen
2
Um die Auswirkungen hervorzuheben: Auch wenn Sie die Sprache eines Benutzers nicht unterstützen, stellen Sie sicher, dass Sie dessen Kultur für die Formatierung unterstützen! Ich habe Fehler gesehen, bei denen eine App sowohl für Kultur als auch für Sprache auf "en-US" zurückgreift, wenn sie nur für Sprache zurückgreifen muss.
ToolmakerSteve
1
Was bringt es, ein ganzes CultureInfoObjekt zu verwenden, um die Ressourcendatei zu bestimmen, in der a stringausreichen würde? (ZB das LanguageEigentum der FrameworkElement)
Wouter
2

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-GBhier enrepräsentiert Englishund GBrepräsentiertGreat Briton

en-UShier enrepräsentiert Englishund USrepräsentiertUnited States

Verwendung Culturefür kulturabhängige Funktionen wie Datum, Uhrzeit. und UICulturedient zum korrekten Laden von Ressourcendateien.

Waffe X.
quelle
0

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" %>

Hooman
quelle
-4

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.

Mohammed Nazer
quelle