Какие культуры поддерживаются классом CultureInfo в .NET 3.5?
Мне нужен список культур, поддерживаемых .NET 3.5, независимо от используемой ОС.
Это, похоже, довольно сложно получить, хотя я не уверен, почему!
Изменить: Arghh, я не знал, что он зависит от ОС, что объясняет отсутствие документации. Любые идеи о том, что поддерживается операционной системой Mac/Linux?
Спасибо:)
Ответы
Ответ 1
К сожалению, это зависит от ОС. Проверьте здесь для поддержки языка по умолчанию для каждой ОС.
Обратите внимание: Документация CultureInfo предупреждает:
Windows-версии или пакеты обновления могут изменять доступные культуры.
В ASP.NET это браузер, который имеет важное значение по сравнению с ОС. Он может рассказать вам, какой язык пользователь предпочитает через Accept-Language (раздел 14.4) заголовок запроса. Если вы настроили конфигурацию приложения globalization для enableClientBasedCulture = "true", ASP.NET попытается автоматически установить UICulture и Culture в значение, предоставляемое браузера. Кроме того, вы можете установить Культуру вручную, просмотрев свойство Request.UserLanguages:
К сожалению, нет возможности генерировать исчерпывающий список возможных языков из ОС или браузера. Самое близкое - это Itas Language Subtag Registry. Это реестр языков, описанный в RFC 4646 - документ, который определяет теги .NET CultureInfo.
Имейте в виду, что языковые теги в Request.UserLanguages не гарантируются. Вы хотите проверить их. HTTP 1.1 использует более старую рекомендацию для языковых тегов, и ничто не мешает кому-то отправлять тарабарщину в заголовок языка.
Ответ 2
Справочник по API поддержки национальных языков (NLS) содержит информацию о локали и позволяет выбрать ОС.
Microsoft Locale Builder - это инструмент для создания пользовательских локалей для Windows Vista и более поздних версий.
Получить список поддерживаемых культур, включая пользовательские, для ОС.
Пример С#,
System.Globalization.CultureInfo[] cultures = System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures);
Ответ 3
Можно создавать собственные культуры, но класс по умолчанию поддерживает те культуры, которые предоставляются операционной системой, в которой вы работаете. Существует ссылка культур поддерживается по умолчанию в MSDN
Ответ 4
Я только что проверил с помощью Culture Explorer 2.0, существует различие между культурами только для Windows и установленными культурами, а также культурами .NET Framework (которые, по крайней мере, в моей системе, содержат только культуры только для языка). Все они поддерживаются классом CultureInfo (и RegionInfo, NumberFormatInfo и т.д.).
Я также запускал его на Mono (в Linux), это примерно то же самое, что и культуры .NET Framework, и культуры только для Windows, но существуют конкретные и нейтральные культуры. RegionInfo.CurrencyNativeName
, похоже, не реализован в моей версии Mono, поэтому он вылетает при выборе любой культуры.
К сожалению, Culture Explorer 2.0 в настоящее время недоступен нигде (был на gotdotnet.com), я загрузил его некоторое время назад. Это удобный инструмент для таких вещей. Возможно, вам повезло найти его в некоторых архивах.