Ответ 1
Ответ: По дизайну
CultureInfo.GetCultures
не, разработанный как полный и окончательный список всех культур в мире. Он предназначен только для того, чтобы получить культуры, которые можно найти на компьютере.
Документация CultureInfo говорит:
Помните, что имена и идентификаторы культуры представляют только подмножество культур, которое можно найти на конкретном компьютере. Windows версии или пакеты обновления могут изменять доступные культуры. Приложения добавляют пользовательские культуры, используя CultureAndRegionInfoBuilder класс. Пользователи добавляют свои собственные культуры с помощью Microsoft Locale Инструмент Builder. Microsoft Locale Builder написан в управляемом коде используя класс CultureAndRegionInfoBuilder.
Примечания
Ссылки на MSDN, которые могут быть полезны:
- Предопределенный список RegionInfo: http://msdn.microsoft.com/en-us/library/system.globalization.regioninfo(VS.80).aspx
- Как создать пользовательские культуры: http://msdn.microsoft.com/en-us/library/ms172469(VS.80).aspx
И, кстати, вы можете сократить свой код с помощью простой команды LINQ:
var regionInfos = CultureInfo.GetCultures(CultureTypes.SpecificCultures)
.Select(c => new RegionInfo(c.LCID))
.Distinct()
.ToList();