Как получить язык без страны из CultureInfo

Кто-нибудь знает в ASP.Net, как получить язык текущей культуры без него countryname? Я знаю, что эта инвариантная культура не имеет этой проблемы, но я не знаю, как ее создать, не указав явный язык. Я хочу отобразить активный язык, а в 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);
    }
}

В моем случае культурой является "nl-nl". Проблема в том, что то, что показано на сайте при использовании CurrentCulture.EnglishName - "голландский (Нидерланды)". Я хочу видеть только голландцев!

Спасибо!

Ответы

Ответ 1

Простой:

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);
}

Ответ 2

Объект CultureInfo содержит свойство, называемое родительским - если оно установлено, то есть CultureInfo с желаемым английским именем = голландский

Ответ 3

Вы можете использовать объект HTTP_ACCEPT_LANGUAGE.