В чем разница между CurrentCulture и CurrentUICulture свойства CultureInfo in.NET?


в .NET есть CultureInfo класс System.Globalization пространство имен. Он имеет два похожих свойства, оба возвращающие значения CultureInfo тип: CurrentCulture и CurrentUICulture.

в чем разница между ними?

какой я должен использовать, когда и почему?

5 320

5 ответов:

CurrentCulture - Это представление .NET языкового стандарта пользователя системы по умолчанию. Это управляет форматированием номера и даты по умолчанию и тому подобное.

CurrentUICulture относится к языку пользовательского интерфейса по умолчанию, параметр, введенный в Windows 2000. Это в первую очередь касается части локализации/перевода пользовательского интерфейса вашего приложения.

любые региональные параметры, которые система настроила, будут "текущими" значениями в вашем приложении .NET.

часто они они оба одинаковы. Но в моей системе они были бы другими: я предпочитаю свои числа и даты в немецком формате, поэтому CurrentCulture будет немецкий, но я также предпочитаю все мои приложения на английском языке, так что CurrentUICulture было бы по-английски.

есть хорошая статья на тему: сортировка все это: почему у нас есть и CurrentCulture и CurrentUICulture

Это простой трюк, который я использую, чтобы вспомнить, какой из них использовать:

(date, currency, double).tostring = CurrentCulture

resource.fr-CA.resx file = currentUICulture

хороший способ изменить ситуацию в дополнение к хорошим объяснениям, сделанным другими пользователями, и важным аспектом в разработке веб-приложений является следующее:

  • CurrentCulture представляет настройку веб-сервера. Например, если ваш ASP.NET веб-приложение размещается в Германии, значение CutlureInfo.CurrentCulture скорее всего de-DE. Таким образом, по умолчанию .ToString() форматирование IFormattable типы будут использовать немецкие форматирования по умолчанию или те, которые были настроены на серверной ОС по умолчанию.

  • CurrentUICulture может быть захвачен из пользовательского агента и может представлять культуру пользовательского интерфейса клиента, подключающегося к веб-сайту. Например, если вы загружаете этот веб-сайт из России, ваши локальные настройки настроены на использование русского языка, и ваш пользовательский агент отправляет ваши настройки локали на сервер (Opera и IE делают это автоматически, не уверен для Chrome и FireFox),CurrenUICulture представляют ru-RU. Эта воля вызовите любые ресурсы, такие как локализованные строки, полученные с помощью ResourceManager или выражений локализации в ASP.NET файлы aspx / ascx должны быть на русском языке (при наличии переводов).

стоит отметить, что CurrentUICulture поддерживает локали, не относящиеся к конкретной стране, такие как " en " (нейтральные культуры), тогда как CurrentCulture поддерживает только специфические для страны локали, такие как "en-GB". Установка CurrentCulture в нейтральную культуру будет бросать ArgumentException.

Я предполагаю, что это связано с тем, что такие форматы, как даты и валюта, более тесно связаны с самой страной, но отображаемый язык часто взаимозаменяем между странами.

отличия:

  1. CurrentCulture для форматирования дат и валют, в то время как CurrentUICulture идет с язык/перевод. Он будет использоваться ResourceManager поиск ресурсов по культуре.
  2. пространство имен CurrentCulture класс System.Globalization пока CurrentUICulture происходит от System.Threading.
  3. CurrentCulture сохраняется по-разному запросы в сессии, в то время как CurrentUICulture должен быть установлен с каждого запроса.

подобие:

они System.Globalization.CultureInfo экземпляров.