2016-10-10 14 views
0

Если я запускаю эту строку кода ниже на разных компьютерах, то я получаю разные результаты:Почему CultureInfo.GetCultures (CultureTypes.SpecificCultures) возвращают различные наборы культур на разных компьютерах

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.

Есть ли причина, по которой я получаю разные результаты на разных компьютерах?

Существует ли стандартный минимальный набор культур, который гарантированно присутствует на всех компьютерах?

+2

.NET также предоставляет культуры, поддерживаемые ОС. Все большее число. Номер сборки Win10 имеет значение, на данный момент их было 3. Ничто, о чем не волнует, эти дополнения довольно неясны. –

+0

@ HansPassant спасибо за информацию. Так что, если я получаю все культуры на компьютере под управлением Windows XP, тогда этот набор всегда должен быть доступен для любой машины с XP или более новой? – tjsmith

ответ

1

По этой ссылке из MSDN: https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(v=vs.110).aspx

Помните, что имена культуры и идентификаторы представляют собой лишь подмножество культур, которые можно найти на конкретном компьютере. Windows-версии или пакеты обновления могут изменять доступные культуры.

Причина для разных культур заключается в различиях в Windows или пакетах обновления.

Однако, я не нашел ссылку Microsoft, которая предполагает наличие минимального набора культур. По моим наблюдениям, более поздняя версия Windows включает более старые культуры.

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