2013-11-19 5 views
2

Мне нужно преобразовать код страны в его прилагательный эквивалент. В настоящее время я использую RegionInfo, который даст мне название страны.Как получить прилагательное страны?

RegionInfo ri = new RegionInfo(languages[0]); 
subtitle = ri.NativeName; 

Если код страны является «en», это даст мне Англию, но я хочу, чтобы это был «английский».

Итак, как я могу получить прилагательное страны?

Благодаря

+0

Просто наденьте 'ish' на конец всего. ;) –

+0

@EdPitt Но это будет «англичанин»? ':)' –

+1

@ SonerGönül Англичанин, Американец, Турция. Люди понимают. –

ответ

4

Там нет класса в стандартной .NET API, который содержит информацию о гражданских присвоении имен прилагательных.

Вы можете, однако, использовать CultureInfo класс для преобразования из кода страны в список разговорных языков - принимает произвольный элемент из этого списка часто дают правильный ответ (но не всегда, как в «китайском (Упрощенный) ")

например:

var cultureInfos = CultureInfo.GetCultures(CultureTypes.AllCultures).Where(c => c.Name.EndsWith("CH")); 
var cultureInfo = cultureInfos.SingleOrDefault(); 
string language = cultureInfo.EnglishName; 

Но я боюсь, что единственный вариант, который будет работать правильно для всех культур, чтобы создать свое собственное отображение.

Dictionary<string, string> adjectiveMap = new Dictionary<string, string>(); 
adjectiveMap.Add("en", "English"); 
adjectiveMap.Add("cn", "Chinese"); 
// etc. etc... 

Если вы готовы выполнить эту задачу, ознакомьтесь с этой вики-страницей! http://en.wikipedia.org/wiki/List_of_adjectival_and_demonymic_forms_for_countries_and_nations

+0

'EnglishName' - это свойство, а не метод: (http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.englishname%28v=vs.110%29.aspx) – Bridge

+0

О да , Упс. Исправлена. –

+0

Я все равно оставил :) – Bridge

1

Не используйте RegionInfo, лучше попробовать использовать CultureInfo.
Там вы можете попробовать его, как следующее:

CultureInfo c = new CultureInfo(languages[0]); 
subtitle = c.DisplayName; 
Смежные вопросы