2014-10-23 3 views
0

Наш код прост, получите культуры и поместите их в выпадающий список.Почему мы получаем тот же CultureInfo.LCID из CultureInfo.GetCultures (CultureTypes.AllCultures)

items = new SortedDictionary<int, string>(); 
foreach (CultureInfo info in CultureInfo.GetCultures(CultureTypes.AllCultures)) 
{ 
    string value = string.Format(System.Globalization.CultureInfo.CurrentCulture, "{0} - {1}", info.LCID, info.DisplayName); 
    if (!items.ContainsKey(info.LCID)) 
    { 
     items.Add(info.LCID, value); 
    } 
} 

Мы хотим использовать LCID в качестве нашего ключа к словарю.

Однако иногда мы получаем одно и то же значение LCID, например, когда LCID равно 4, отображаемое имя является «китайским (упрощенным)» или «китайским (упрощенным) наследием», в чем разница между этими данными CultureInfo?

Можем ли мы по-прежнему использовать LCID в качестве ключа?

Спасибо за ваш ответ

+0

LCID - это старое число, датированное версиями Windows, выпущенными в предыдущем столетии. Поддерживается только для совместимости со старым кодом, в частности, с COM Automation. Просто идентификатор языка, это уже не надежный способ различать культуры. –

ответ

0

«китайский (упрощенный)» и «китайский (упрощенный) Наследие» относится к той же культуре (так же LCID). Вы можете использовать LCID в качестве ключа.

This was a change introduced in .NET Framework 4, чтобы следовать соглашению об именах LanguageName ([Script,] Country/RegionName).

Отображаемые имена китайских культур изменились, чтобы следовать соглашению об именах LanguageName ([Script,] Country/RegionName). В .NET Framework 4 слово «Legacy» добавлено к именам zh-CHS и zh-CHT, чтобы отличать их от zh-Hans и zh-Hant.

Смежные вопросы