asp.net-mvc - 如何使用 ASP.NET MVC 以浏览器的首选语言显示我的主页
问题描述
我想创建一个多语言网站。我发现一种方法是根据用户浏览器的首选语言以他们自己的语言显示网页。我尝试了下面的代码,它似乎工作正常。
public ActionResult Index()
{
var userLanguages = Request.UserLanguages;
string preferredLanguage = "";
preferredLanguage = userLanguages[0];
if (preferredLanguage == "fr-FR")
{
return RedirectToAction("fr", "Home");
}
else
{
return RedirectToAction("en", "Home");
}
}
我认为这很简单,所以我四处搜索并找到了这个链接
我有点困惑 - 我应该添加这段代码吗?它到底是做什么的?当我调试代码时,我发现每次ci
都是空的。我应该如何使用它?
// 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 preferable language
// or to InvariantCulture if user transmitted invalid
culture ID
感谢任何帮助。
在 Alex 的帮助下,它现在是我的代码,它运行良好,但我担心可能的扩展
public ActionResult Index()
{
CultureInfo ci;
var userLanguages = Request.UserLanguages;
if (userLanguages == null)
{
ci = new CultureInfo("en-US");
}
else if (userLanguages.Count() > 0)
{
try
{
ci = new CultureInfo(userLanguages[0]);
}
catch (CultureNotFoundException)
{
ci = new CultureInfo("en-US");
}
}
else
{
ci = new CultureInfo("en-US");
}
return RedirectToAction(ci.TwoLetterISOLanguageName, "Home");
}
解决方案
尝试这个。
public ActionResult Index()
{
CultureInfo ci;
var userLanguages = Request.UserLanguages;
if (userLanguages.Count() > 0)
{
try
{
ci = new CultureInfo(userLanguages[0]);
}
catch (CultureNotFoundException)
{
ci = CultureInfo.InvariantCulture;
}
}
else
{
ci = CultureInfo.InvariantCulture;
}
return RedirectToAction(ci.TwoLetterISOLanguageName, "Home");
}
TwoLetterISOLanguageName
获取两个字母的语言代码(例如= fr-FR
)fr
。这避免了if...else
重定向语句。
推荐阅读
- rest - 如何通过rest api从yammer中提取基于人口统计的活动?
- c# - DataTable.AsEnumerable() 中的 C# Nullreferenceexception 在哪里
- cucumber - 如何为所有 Cucumber 步骤添加默认超时?
- reactjs - 优化组件树
- react-native - Native Base - 放置在 Header 中的组件不是垂直居中的 react-native
- java - 调用对象时,这些括号是什么意思?
- javascript - Google Analytics Reporting API:Javascript 中的活跃用户数
- c# - .NET Core 2 项目的 StackExchange.Exceptional 错误的 URL 是什么?
- html - 如何处理多选项卡式 html 表单上的验证,我如何知道存在验证错误
- javascript - 通过 jquery 选择单选按钮(按值或按 id)