【问题标题】:Setting CurrentUICulture is not being remembered by my application我的应用程序没有记住设置 CurrentUICulture
【发布时间】:2011-02-16 10:55:49
【问题描述】:

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

【问题讨论】:

    标签: asp.net-mvc globalization


    【解决方案1】:

    System.Threading.Thread.CurrentThread.CurrentUICulture中,这种方式只为用户当前的请求设置了文化,对于后续的用户请求,它将重置为默认语言。

    您需要在要显示基于语言的数据(本地化数据)的每个视图上设置 ui 文化。

    提示:将用户选择的文化id保存在会话中,并在每个视图上使用它来指定uiculture

    像这样,

    // save users selected culture id in session
    Session["SelectedCultureId"] = id;
    

    在每个视图上设置当前线程 ui 文化 ID

    if (Session["SelectedCultureId"] != null)
    {
        System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Session["SelectedCultureId"]);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      • 2014-04-20
      相关资源
      最近更新 更多