Как получить язык без страны из 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.