【发布时间】:2018-09-23 10:58:10
【问题描述】:
我发现此链接可作为制作多语言网站的指南,该网站应使用用户在浏览器上设置的首选语言运行。
Get CultureInfo from current visitor and setting resources based on that?
正如你所见,它有这个代码来做它
// 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
但我的问题是我不知道CultureInfo.InvariantCulture 的职责到底是什么,而且它在我的项目中根本不起作用。它始终为空。
我将代码更改为这个,它工作正常,但我不确定它可能有异常。我真的很感激任何帮助。
这就是我所拥有的,它工作得很好,但不确定可能的例外情况。我希望默认语言为"en-US"
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");
}
【问题讨论】: