(ASP .NET MVCで)現在の訪問者のCultureInfoを(ブラウザの言語に基づいて)取得するにはどうすればよいですか?これに基づいて、現在のビジターおよび設定リソースからCultureInfoを取得しますか?
どこから始めたらいいかわかりません。私はブラウザで送信された "Accept-Languages"ヘッダーを調べました。しかし、それをする最善の方法はありますか?
(ASP .NET MVCで)現在の訪問者のCultureInfoを(ブラウザの言語に基づいて)取得するにはどうすればよいですか?これに基づいて、現在のビジターおよび設定リソースからCultureInfoを取得しますか?
どこから始めたらいいかわかりません。私はブラウザで送信された "Accept-Languages"ヘッダーを調べました。しかし、それをする最善の方法はありますか?
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
:私はマーキングしています
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
この質問を自分自身で星につけて、Request.UserLanguages
を本質的にCultureInfoの配列に変換するコードをここで共有しますあなたのアプリケーションでのさらなる使用のための姿勢。 CultureInfoを使用すると、Cultureのすべてのプロパティ(名前、2文字の言語名、ネイティブ名など)にアクセスできるため、ISOコードだけでなく、CultureInfoを使用する方が柔軟性があります。
HTHこれらのヘッダは、通常、どのような値の型が含まれているん
var userLanguage = CultureInfo.CurrentUICulture;
これはクライアントのブラウザではなくサーバーから現在のカルチャーを取得します –
?例はうまくいくでしょう。 –
引用: '一般的に、これらは、英語の2文字コード、ハイフン、および文化の2文字コードで構成されます。例えば、英語の場合は「en-us」、フランス語の場合は「fr-ca」です。 '。だから、それはそれらのような値を含む 'string []'配列です。 –
例を追加しました。 –