【发布时间】:2018-08-27 15:12:29
【问题描述】:
我正在开发一个必须同时使用英语和西班牙语的网站。我使用了 resx 文件,并且正在根据浏览器的语言设置调整文化设置,如下面的代码所示(这是在 global.asax.cs 上):
protected void Application_AcquireRequestState(object sender, EventArgs e)
{
string culture = "en-US";
if (Request.UserLanguages != null)
{
culture = Request.UserLanguages[0];
}
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(culture);
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(culture);
}
这确实有效!但是,用户也应该能够更改语言。为此,我创建了一个 CultureController,如下面的代码所示,网站通过链接使用它:
public class CultureController : Controller
{
public ActionResult SetLanguage(string name)
{
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(name);
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
System.Web.HttpContext.Current.Session["culture"] = name;
return RedirectToAction("Index", "Home");
}
}
我的网站上有这些链接:
<li><a href="@Url.Action("SetLanguage", "Culture", new { @name = "es-ES" })">Español</a></li>
<li><a href="@Url.Action("SetLanguage", "Culture", new { @name = "en-US" })">English</a></li>
这不起作用。这很奇怪,因为当我调试它时,实际使用了该方法并且数据流似乎正确,它获取名称参数并设置它,但是在重定向之后语言没有改变并且请求显示为失败。你有什么建议我做错了什么?
【问题讨论】:
-
你设置了
Session["culture"]。然后我希望还有代码可以读取它,请edit 显示您(尝试)在何处以及如何应用存储值的问题。
标签: c# asp.net asp.net-mvc visual-studio