Відповіді:
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 мають різні символи валюти. Користувачі можуть встановлювати культуру та культуру інтерфейсу користувача у своїх браузерах.