获取当前访问者的文化信息并根据此设置资源?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

如何(在ASP.NETMVC中)获取当前访问者的CultureInfo(基于他/她的浏览器语言)?

我不知道从哪里开始。我试着查看浏览器发送的“接受语言”标题。但这是最好的方法吗?

提问于
用户回答回答于

Request.UserLanguages是你正在寻找的属性。请记住,该数组可能包含由请求标头设置的任意(甚至非外部)语言。

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

扫码关注云+社区