我的应用程序没有记住设置CurrentUICulture

时间:2011-02-16 10:55:49

标签: asp.net-mvc globalization

我有一个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将整个应用程序更改为其他语言吗?

1 个答案:

答案 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"]);
}