#c# #.net #localization #cultureinfo
#c# #.net #локализация #cultureinfo
Вопрос:
Если я запускаю эту строку кода ниже на разных компьютерах, я получаю разные результаты:
int cultureCount = CultureInfo.GetCultures(CultureTypes.SpecificCultures).Count();
В Windows 10 с .NET 4.0 cultureCount = 535
В другой Windows 10 с .NET 4.0 cultureCount = 554
В Windows 7 с .NET 4.0 cultureCount = 210.
Есть ли причина, по которой я получаю разные результаты на разных компьютерах?
Существует ли стандартный минимальный набор культур, который гарантированно присутствует на всех компьютерах?
Комментарии:
1. .NET также предоставляет культуры, поддерживаемые ОС. Постоянно растущее число. Номер сборки Win10 имеет значение, до сих пор их было 3. Не о чем беспокоиться, эти дополнения довольно неясны.
2. @HansPassant спасибо за информацию. Итак, если я получил все культуры на компьютере с Windows XP, то этот набор всегда должен быть доступен для любой машины под управлением XP или новее?
Ответ №1:
Согласно этой ссылке из MSDN: https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo (v = против 110).aspx
Помните, что имена и идентификаторы культур представляют только подмножество культур, которые можно найти на конкретном компьютере. Версии Windows или пакеты обновления могут изменять доступные культуры.
Причиной разных культур являются различия в Windows или пакетах обновления.
Однако я не нашел ни одной ссылки Microsoft, которая предполагала бы, что существует минимальный набор культур. По моим наблюдениям, более поздняя версия Windows включает более старые культуры.
Мое решение — проверить более старые версии Windows и убедиться, что культура там существует. Если нет, я создам пользовательскую культуру для обратной поддержки.