2013-08-14 1 views
2

Возможно ли получить конкретное значение CultureInfo для объекта TwoLetterISOLanguageName? Есть только геттер, а не сеттер ... Как бы вы это сделали. Если возможно, не проходя через все культуры ...Конверсии CultureInfo (C#)

Так не с:

// Get all available cultures on the current system. 
CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures); 
foreach (var culture in cultures) { 
    // Exclude custom cultures. 
    if ((culture.CultureTypes & CultureTypes.UserCustomCulture) == CultureTypes.UserCustomCulture) 
     continue; 

    if (culture.TwoLetterISOLanguageName == "<Whatever>"){ 
     //Do some stuff 
     break; 
    } 
} 

http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.twoletterisolanguagename.aspx

ВТОРОЙ:

Можно показать язык, на котором говорят на этом языке ?
Как
* Dutch -> Nederlands
* Немецкий -> Deutsch
* Испанский -> Español

ответ

4

Вы можете использовать конструктор, например,

CultureInfo germanCulture = new CultureInfo("DE"); 
    CultureInfo russianCulture = new CultureInfo("RU"); 


    String germanNativeLanguage = germanCulture.NativeName; // <- Deutsch 
    String russianNativeLanguage = russianCulture.NativeName; // <- русский 


    String germanLanguage = germanCulture.EnglishName; // <- German 
    String russianLanguage = russianCulture.EnglishName; // <- Russian 
+0

Другой вопрос ... Можно ли показать язык, как говорят на этом языке? – RubenHerman

+0

По-русски -> Nederlands, Немецкий -> Deutsch, Spanish -> Español – RubenHerman

+1

@RubenHerman Используйте свойство CultureInfo.NativeName для его получения. – MarcinJuraszek

2

Использование CultureInfo(string) конструктор:

var culture = new CultureInfo("<Whatever>"); 

Он также работает для культур, которые не имеют два имени письмо культуры

Если ISO 639-1 не определяет двух- код языка письма для конкретной культуры, свойство TwoLetterISOLanguageName возвращает строку, состоящую из трех или более букв.

например. для Нижнелужицких (Германия):

var culture = new CultureInfo("dsb"); 
1

Вы можете использовать конструктор, но я бы предпочел, используя статический метод GetCultureInfo, потому что документы явно говорят, что это возвращает кэшируются экземпляр:

var ci = CultureInfo.GetCultureInfo("<TwoLetterISOLanguageName>");