我有一个asp.net mvc应用程序,我希望用户能够更改语言。我提供了一系列带有小标志的链接,让用户选择语言。所有这些链接的目标是我的“仪表板”页面,其中控制器我有这个代码:
[HttpGet]
[Authorize]
public ViewResult Dashboard(string id)
{
if (!string.IsNullOrEmpty(id))
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(id);
}
}
“仪表板”页面以所选语言显示。但是当我浏览我的网站时,文化会变回英语(默认)......我错过了什么?不应该更改CurrentUICulture将整个应用程序更改为其他语言吗?
答案 0 :(得分:3)
在 System.Threading.Thread.CurrentThread.CurrentUICulture 中,通过这种方式,仅为用户的当前请求设置区域性,并将其重置为后续用户请求的默认语言。 / p>
您需要在每个要显示基于语言的数据的视图上设置ui文化(本地化数据)。
提示:在会话中保存用户选择的文化ID,并在每个视图上使用它来指定养鸟
像这样,// save users selected culture id in session
Session["SelectedCultureId"] = id;
在每个视图集上设置当前线程ui culture id
if (Session["SelectedCultureId"] != null)
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Session["SelectedCultureId"]);
}