Почему CultureInfo.GetCultures(CultureTypes.SpecificCultures) возвращает разные наборы культур на разных компьютерах

#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 и убедиться, что культура там существует. Если нет, я создам пользовательскую культуру для обратной поддержки.