Как получить язык без страны из CultureInfo
Кто-нибудь знает в ASP.Net, как получить язык текущей культуры без названия страны? Я знаю, что у этой инвариантной культуры такой проблемы нет, но я не знаю, как их создать, не указав явно язык. Я хочу отобразить активный язык, а в nl-nl это голландский (Нидерланды).
Вот как я устанавливаю currentCulture:
private void Application_BeginRequest(Object source, EventArgs e)
{
string[] languages = HttpContext.Current.Request.UserLanguages;
string language = languages[0].ToLowerInvariant().Trim();
if (!string.IsNullOrEmpty(language))
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(language);
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(language);
}
}
В моем случае культура "нл-нл". Проблема в том, что при использовании CurrentCulture.EnglishName на сайте отображается "Голландский (Нидерланды)". Я только хочу увидеть голландский!
Спасибо!
3 ответа
Решение
Просто:
CultureInfo ci = CultureInfo.GetCultureInfo ("nl-nl");
if( ci.IsNeutralCulture )
{
Console.WriteLine (ci.EnglishName);
Console.WriteLine (ci.NativeName);
}
else
{
Console.WriteLine (ci.Parent.EnglishName);
Console.WriteLine (ci.Parent.NativeName);
}
Объект CultureInfo содержит свойство Parent - если оно установлено, то есть CultureInfo с желаемым EnglishName = Dutch