Відповіді:
Cultureвпливає на представлення залежних від культури даних (дати, валюти, цифри тощо). Ось кілька прикладів:
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
Культура також впливає на розбір введення користувача таким же чином:
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
Остерігайтеся випадків, коли синтаксичний аналіз проходить успішно, але результат не такий, який ви б очікували.
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впливає на те, до якого файлу ресурсів (Resources. lang .resx) буде завантажена ваша програма.
Отже, для завантаження німецьких ресурсів (імовірно, локалізованого тексту) ви б встановили UICultureнімецьку культуру та відображали німецьке форматування (без будь-якого впливу на те, які ресурси завантажуються) Culture.
CultureInfoоб’єкта просто для визначення файлу ресурсу, де а stringбуде достатньо? (Наприклад, Languageвласність FrameworkElement)
Culture and UICulture
Значення - це пари двобуквенних рядків, перша - для визначення мови, а друга - для визначення регіону. Приклад:
en-GBтут enпредставляє Englishі GBпредставляєGreat Briton
en-USтут enпредставляє EnglishіUSпредставляєUnited States
Використовуйте Cultureдля залежних від культури функцій, таких як дата, час. і UICultureпризначено для правильного завантаження файлу ресурсів.
Лише невелика справа, яку слід врахувати на додаток до дивовижного пояснення @ Vache: Ви можете встановити як UICulture, так і культуру на рівні сторінки та на рівні програми.
Щоб встановити їх на рівні програми, просто додайте сеанс глобалізації в web.config
напр <globalization uiCulture="es" culture="es-MX" />
І щоб встановити їх на рівні сторінки, що добре додати на конкретній (індивідуальній) сторінці, встановіть атрибути культури та UICulture в директиві @ page
напр <%@ Page UICulture="es" Culture="es-MX" %>
Властивість UICulture може змінюватися для кожного веб-переглядача, тоді як культура залишається постійною.
Значення «Культура» можна встановити лише для певних культур, наприклад, en-US або en-GB. Це запобігає вимозі ідентифікувати правильний символ валюти, який слід використовувати для en, де en-US та en-GB мають різні символи валюти. Користувачі можуть встановлювати культуру та культуру інтерфейсу користувача у своїх браузерах.