2009-10-01 19 views
15

誰でも、現在のカルチャーの言語を取得する方法をASP.Netで知っていますか? この不変の文化にはこの問題はありませんが、明示的な言語を指定せずに作成する方法はわかりません。私はアクティブな言語を表示したいと思うし、nl-nlではオランダ語(オランダ語)です。CultureInfoから国なしで言語を取得する方法

これは私がの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を使用しているときにサイトに表示される内容が「Dutch(Netherlands)」であることです。 私はオランダを見たいです!

ありがとうございます!

答えて

36

であり:

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

ありがとうございます!これは明らかでした! MSDNは何も教えてくれませんでした... – Peter

+0

恐ろしい..... ..... –

+0

残念ながら、英国(gb)の場合、「Unknown Language(gb)」という結果になります。 –

6

CultureInfoオブジェクトは、親と呼ばれるプロパティが含まれている - それが設定だ場合、その後のCultureInfoが望まEnglishName =オランダ

シンプル
0

あなたはHTTP_ACCEPT_LANGUAGEオブジェクトを使用することができます。

関連する問題