Odpowiedzi:
Culturewpływa na sposób prezentowania danych kulturowych (daty, waluty, liczby itd.). Oto kilka przykładów:
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
Kultura wpływa również na analizowanie danych wejściowych użytkownika w ten sam sposób:
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
Uważaj na przypadki, w których parsowanie powiedzie się, ale wynik nie jest taki, jakiego byś się spodziewał.
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
UICulturewpływa na to, do którego pliku zasobów (Resources. lang .resx) będzie ładowana aplikacja.
Tak więc, aby załadować niemieckie zasoby (prawdopodobnie zlokalizowany tekst), należy ustawić UICulturekulturę niemiecką i wyświetlić niemieckie formatowanie (bez wpływu na to, które zasoby są ładowane), które należy ustawić Culture.
CultureInfoobiektu tylko do określenia pliku zasobów, gdzie stringwystarczyłoby? (Np. LanguageWłasność FrameworkElement)
Culture and UICulture
Wartości to pary dwuliterowych ciągów, pierwsza służy do definiowania języka, a druga do definiowania regionu. Przykład:
en-GBtutaj enreprezentuje Englishi GBreprezentujeGreat Briton
en-UStutaj enreprezentuje Englishi USreprezentujeUnited States
Użyj Culturedla funkcji zależnych od kultury, takich jak data, godzina. i UICulturesłuży do prawidłowego ładowania pliku zasobów.
Tylko mała sprawa do rozważenia oprócz niesamowitego wyjaśnienia @ Vache: możesz ustawić zarówno UICulture, jak i Culture na (poziom strony i poziom aplikacji).
Aby ustawić je na poziomie aplikacji, wystarczy dodać sesję globalizacji w web.config
na przykład <globalization uiCulture="es" culture="es-MX" />
Aby ustawić je na poziomie strony, co dobrze jest dodać na określonej (indywidualnej) stronie, ustaw atrybuty Culture i UICulture w ramach dyrektywy @ page
na przykład <%@ Page UICulture="es" Culture="es-MX" %>
Właściwość UICulture może ulec zmianie dla każdej przeglądarki sieci Web, podczas gdy Culture pozostaje niezmienna.
Wartość Culture można ustawić tylko na określone kultury, takie jak en-US lub en-GB. Zapobiega to wymogowi identyfikacji prawidłowego symbolu waluty, który ma być używany dla en, gdzie en-US i en-GB mają różne symbole walut. Użytkownicy mogą ustawić kulturę i kulturę interfejsu użytkownika w swoich przeglądarkach.