我有一个 asp.net mvc 应用程序,我希望用户能够更改语言。我提供了一系列带有小标志的链接,让用户选择语言。所有这些链接的目标是我的“仪表板”页面,其中 Controller 我有以下代码:
[HttpGet]
[Authorize]
public ViewResult Dashboard(string id)
{
if (!string.IsNullOrEmpty(id))
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(id);
}
}
“仪表板”页面按其应有的方式以所选语言显示。但是当我浏览我的网站时,文化会变回英语(默认)......我错过了什么吗?更改 CurrentUICulture 是否应该将整个应用程序更改为其他语言?
最佳答案
在System.Threading.Thread.CurrentThread.CurrentUICulture中,这种方式仅为用户当前请求设置区域性,并且在后续用户请求时将重置为默认语言。
您需要在要显示基于语言的数据(本地化数据)的每个 View 上设置 ui 区域性。
提示:将用户选择的区域性 ID 保存在 session 中,并在每个 View 上使用它来指定 uiculture
像这样,
// save users selected culture id in session
Session["SelectedCultureId"] = id;
在每个 View 上设置当前线程 ui 区域性 id
if (Session["SelectedCultureId"] != null)
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Session["SelectedCultureId"]);
}
关于asp.net-mvc - 我的应用程序没有记住设置 CurrentUICulture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5015525/