Какие культуры поддерживаются классом CultureInfo в .NET 3.5? - PullRequest
12 голосов
/ 17 февраля 2010

Мне нужен список культур, которые поддерживаются .NET 3.5, независимо от используемой ОС. Кажется, это довольно сложно, хотя я не уверен, почему!

Редактировать: Arghh, я не знал, что это зависит от ОС, что может объяснить отсутствие документации Любые идеи о том, что также поддерживается ОС Mac / Linux?

Спасибо:)

Ответы [ 4 ]

8 голосов
/ 17 февраля 2010

К сожалению, это зависит от ОС. Проверьте здесь для языковой поддержки по умолчанию для ОС.

Примечание: Документация CultureInfo предупреждает:

Версии Windows или пакеты обновления могут изменить доступные культуры.

В ASP.NET браузер важен по сравнению с ОС. Он может сказать вам, какой язык предпочитает пользователь, используя заголовок запроса Accept-Language (раздел 14.4). Если вы установите для конфигурации глобализация своего приложения значение enableClientBasedCulture = "true", ASP.NET попытается автоматически установить для UICulture и Culture значение, предоставленное браузером. Кроме того, вы можете установить Культуру вручную, проверив свойство Request.UserLanguages ​​:

К сожалению, нет никакого способа создать исчерпывающий список возможных языков из ОС или браузера. Наиболее близким является Реестр языковых подтэгов IANA . Это языковой реестр, описанный в RFC 4646 - документе, определяющем теги .NET CultureInfo.

Имейте в виду, языковые теги в Request.UserLanguages ​​не гарантируются действительными. Вы хотите проверить их. HTTP 1.1 использует более старую рекомендацию для языковых тегов , и ничто не мешает кому-то посылать бред в заголовке языка.

4 голосов
/ 14 апреля 2010

Справочник по API поддержки национальных языков (NLS) перечисляет информацию о языковых стандартах и ​​позволяет выбирать ОС.

Microsoft Locale Builder - это инструмент для создания пользовательских языковых стандартов для Windows Vista и более поздних версий.

Получить список поддерживаемых культур, включая пользовательские, для ОС.

Пример C #,

System.Globalization.CultureInfo[] cultures = System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures);
1 голос
/ 17 февраля 2010

Можно создавать пользовательские культуры, но класс по умолчанию поддерживает те культуры, которые предоставляются операционной системой, в которой вы работаете. Существует ссылка на культуры , поддерживаемые по умолчанию на MSDN

0 голосов
/ 17 февраля 2010

Я только что проверил в Culture Explorer 2.0, есть различие между культурами только для Windows и установленными культурами, а также культурами .NET Framework (которые, по крайней мере в моей системе, содержат только языковые культуры). Все они поддерживаются классом CultureInfo (и RegionInfo, NumberFormatInfo и т. Д.).

Я также запустил его на Mono (на Linux), он примерно одинаков с отсутствием культур .NET Framework и культур только для Windows, но есть культуры Specific и Neutral. RegionInfo.CurrencyNativeName, похоже, не реализован в моей версии Mono, поэтому он вылетает при выборе любой культуры.

К сожалению, Culture Explorer 2.0 в настоящее время недоступен нигде (был на сайте gotdotnet.com), я скачал его некоторое время назад. Это удобный инструмент для таких вещей. Возможно, вам повезет найти его в некоторых архивах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...