2012-02-23 6 views
21

(ASP .NET MVCで)現在の訪問者のCultureInfoを(ブラウザの言語に基づいて)取得するにはどうすればよいですか?これに基づいて、現在のビジターおよび設定リソースからCultureInfoを取得しますか?

どこから始めたらいいかわかりません。私はブラウザで送信された "Accept-Languages"ヘッダーを調べました。しかし、それをする最善の方法はありますか?

答えて

45

Request.UserLanguagesは、探しているプロパティです。この配列には、要求ヘッダーで設定された任意の(exsitentでない)言語も含まれることに注意してください。

UPDATE

例:

// Get Browser languages. 
var userLanguages = Request.UserLanguages; 
CultureInfo ci; 
if (userLanguages.Count() > 0) 
{ 
    try 
    { 
     ci = new CultureInfo(userLanguages[0]); 
    } 
    catch(CultureNotFoundException) 
    { 
     ci = CultureInfo.InvariantCulture; 
    } 
} 
else 
{ 
    ci = CultureInfo.InvariantCulture; 
} 
// Here CultureInfo should already be set to either user's prefereable language 
// or to InvariantCulture if user transmitted invalid culture ID 
+0

?例はうまくいくでしょう。 –

+3

引用: '一般的に、これらは、英語の2文字コード、ハイフン、および文化の2文字コードで構成されます。例えば、英語の場合は「en-us」、フランス語の場合は「fr-ca」です。 '。だから、それはそれらのような値を含む 'string []'配列です。 –

+0

例を追加しました。 –

6
あなたは(言語を含む)ユーザーからのさまざまな詳細情報を取得するには、次のようなコードを使用することができます

:私はマーキングしています

MembershipUser user = Membership.GetUser(model.UserName); 
string browser = HttpContext.Request.Browser.Browser; 
string version = HttpContext.Request.Browser.Version; 
string type = HttpContext.Request.Browser.Type; 
string platform = HttpContext.Request.Browser.Platform; 
string userAgent = HttpContext.Request.UserAgent; 
string[] userLang = HttpContext.Request.UserLanguages 
4

この質問を自分自身で星につけて、Request.UserLanguagesを本質的にCultureInfoの配列に変換するコードをここで共有しますあなたのアプリケーションでのさらなる使用のための姿勢。 CultureInfoを使用すると、Cultureのすべてのプロパティ(名前、2文字の言語名、ネイティブ名など)にアクセスできるため、ISOコードだけでなく、CultureInfoを使用する方が柔軟性があります。

HTHこれらのヘッダは、通常、どのような値の型が含まれているん

-3

var userLanguage = CultureInfo.CurrentUICulture;

+7

これはクライアントのブラウザではなくサーバーから現在のカルチャーを取得します –