我在 .NET Framework 4 中使用 EF 5 在 asp.net mvc 4 中工作(感谢 Azure 还不是 4.5)。我试图让用户通过按下按钮来更改当前的语言设置。需要更改的内容保存在资源文件中。
首先,我在 web.config 中获取浏览器设置
<globalization culture="auto" uiCulture="auto"/>
然后我尝试通过超链接更改它。这是我正在使用的链接的示例:
<li>@Html.ActionLink("FR", "ChangeLanguage", "Account", new { language = "fr" }, null)</li>
<li>@Html.ActionLink("EN", "ChangeLanguage", "Account", new { language = "en" }, null)</li>
<li>@Html.ActionLink("NL", "ChangeLanguage", "Account", new { language = "nl" }, null)</li>
这是我填充文本的方式:
@Html.Encode(MyProject.Web.Resources.General.Header_UserBadge_SettingsDeleteCurrentPicture)
这是它们链接到的控制器操作:
public ActionResult ChangeLanguage(string language)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(language);
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(language);
}
资源文件命名为:
- General.fr.resx => 法语
- General.resx => 英语
- General.nl.resx => 荷兰语
现在显然这不起作用。我似乎找不到任何我正在尝试做的事情的例子。我能找到的所有示例都刷新了页面。
所以我有两个问题:
- 这可以做到吗?如果是,我怎么做错了?
- 如果无法做到这一点,那么什么是好的解决方案?目前在操作结束时重定向似乎不会更改语言设置。