Локализованные названия регионов/стран в .NET

Можно ли получить локализованное название страны в .NET?

Класс RegionInfo имеет только EnglishName, DisplayName и NativeName, но, похоже, невозможно получить, например, местное датское название для «Австрия», то есть «Østrig». Они всегда будут возвращать английское имя, независимо от того, с какой культурой или UICulture работает поток.

Есть ли метод, который я могу использовать, или мне придется создать для этого хранилище данных?


person JacobE    schedule 09.05.2009    source источник


Ответы (3)


Локализованные имена доступны только в том случае, если в фреймворке есть ресурсы на нужном языке. Поэтому вам необходимо установить языковой пакет, прежде чем DisplayName вернет нужные имена (конечно, с правильной культурой, установленной в приложении).

Загрузите датский языковой пакет 3.5 SP1 здесь (можно выбрать и многие другие языки).

person Lucero    schedule 09.05.2009

Ребята, вы совершенно неправильно поняли утверждение MSDN:

Свойство DisplayName отображает название страны/региона на языке локализованной версии .NET Framework.

Поэтому вам нужно реализовать собственную локализацию для названий стран.

person balint    schedule 09.05.2009
comment
Не нужно реализовывать его самостоятельно, просто убедитесь, что в фреймворке есть ресурсы на нужном языке. - person Lucero; 09.05.2009
comment
ну, 35,6 МБ - 73,4 МБ* для ~120 строк кажется мне немного странным :) - person balint; 09.05.2009

Согласно документам MSDN, RegionInfo.DisplayName должен получить локализованное (в вашем случае датское) название страны. Учитывая, что он по-прежнему возвращает вам английскую версию, я подозреваю, что вам просто нужно настроить локаль при (пере)установке .NET Framework. Дайте мне знать, если это сработает.

person Noldorin    schedule 09.05.2009
comment
Похоже, вам нужно именно NativeName: msdn.microsoft. com/ru-ru/library/ - person Greg Beech; 09.05.2009
comment
Все различные свойства *Name возвращают английское имя - всегда - оно кажется безразличным к текущей культуре потока. - person JacobE; 09.05.2009
comment
@JacobE: В этом случае я подозреваю, что это потому, что у вас установлена ​​английская версия .NET framework. Если вы устанавливаете версию на датском языке, DisplayName должно возвращать именно то, что вы хотите. - person Noldorin; 09.05.2009
comment
@Noldorin: ... и вы правильно установили текущую локаль. - person Richard; 09.05.2009
comment
@ Ричард: Да, точно. Я считаю, что это тот же установочный пакет, ему просто нужно выбрать датскую локаль при установке. - person Noldorin; 09.05.2009
comment
Спасибо, ребята, но у меня не может быть 8 разных установок .NET framework для 8-язычного веб-сайта, над которым я работаю... :) Мне нужно сделать собственную реализацию. - person JacobE; 09.05.2009
comment
Справедливо. В этом случае, да, вам нужно создать свой собственный набор данных. - person Noldorin; 09.05.2009