Вопрос

Не мог бы кто-нибудь дать мне немного больше информации о разнице между Culture и UICulture в рамках .СЕТЕВОЙ структуры?Что они делают и когда что использовать?

Это было полезно?

Решение

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.яз..resx) будет загружен в ваше приложение.

Итак, чтобы загрузить немецкие ресурсы (предположительно локализованный текст), вы должны установить UICulture в соответствии с немецкой культурой и для отображения немецкого форматирования (без какого-либо влияния на то, какие ресурсы загружаются) вы бы установили Culture.

Другие советы

Culture and UICulture

Значения представляют собой пары двухбуквенных строк, первая из которых предназначена для определения языка, а вторая - для определения региона.Пример:

en-GB здесь en представляет English и GB представляет Great Briton

en-US здесь en представляет English и US представляет United States

Воспользуйся Culture для функций, зависящих от культуры, таких как дата, время.и UICulture предназначен для корректной загрузки файла ресурсов.

Просто небольшой вопрос, который следует рассмотреть в дополнение к потрясающему объяснению @Vache:Вы можете установить как UICulture, так и Culture at (на уровне страницы и на уровне приложения).

Чтобы установить их на уровне приложения, просто добавьте сеанс глобализации в web.config

напр. <globalization uiCulture="es" culture="es-MX" />

И чтобы установить их на уровне страницы, что хорошо для добавления на конкретную (индивидуальную) страницу, установите атрибуты Culture и UICulture в директиве @ page

напр. <%@ Page UICulture="es" Culture="es-MX" %>

Свойство UICulture может изменяться для каждого веб-браузера, в то время как культура остается постоянной.

Значение Culture может быть установлено только для определенных культур, таких как en-US или en-GB.Это исключает необходимость определения правильного символа валюты для использования в en, где en-US и en-GB имеют разные символы валюты.Пользователи могут устанавливать культуру пользовательского интерфейса и другие параметры в своих браузерах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top