我正在尝试在MVC 5应用程序中创建多语言导航。MVC中的本地化5 - 如何使用资源文件在我的视图中呈现多语言文本?
我所做的:
- 设置
System.Threading.Thread.CurrentThread.CurrentUICulture
要么 “EN-US” 或 “ES-ES” 基于cookie的值(默认为英语 除非用户选择西班牙) 创建三个资源文件(这是我第一次使用它们,所以我不确定我完全理解这个概念......)Index.resx,Resouce.en-US.resx,Resouce.es-ES.resx。每个资源文件是在一个文件夹,名为App_GlobalResources文件夹
增加了一个名称/值对每个.resx文件,家庭/家庭的Index.resx和EN-US.resx和家庭/卡萨为ES-ES。 RESX
- 在我的布局文件中使用
@Resources.Index.Home
,认为当CurrentUICulture
值从EN-US改为ES-ES,反之亦然,语言会改变根据我在资源文件中的值尝试。
有人请让我知道当价值CurrentUICulture
是“es-ES”时我怎么能得到西班牙文本,而英文文本是“en-US”时?
编辑
我应该说明 - @Resources.Index.Home
确实呈现在导航文本 “家”。然而,当我切换到CurrentUICulture
“ES-ES”,它仍然呈现 “家”,而不是 “卡萨”
EDIT 2
这是我如何设置CurrentUICulture
是Global.asax的
public void Application_AuthenticateRequest(Object sender, EventArgs e)
{
if (Request.Cookies["lang"] == null)
{
HttpCookie lang = new HttpCookie("lang");
lang.Value = "english";
lang.Expires = DateTime.Now.AddDays(30d);
Response.Cookies.Add(lang);
}
else if (Request.Cookies["lang"] != null)
{
if (Request.Cookies["lang"].Value != null && Request.Cookies["lang"].Value == "english")
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-us");
}
else if (Request.Cookies["lang"].Value != null && Request.Cookies["lang"].Value == "spanish")
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("es-es");
}
}
}
它应该工作,你有任何错误信息?你可以发布你的控制器如何初始化你的CurrentUICulture?你有什么在@ Resources.Index.Home?它显示任何东西吗? – Yanga
感谢 - 好点 - 没有错误。请参阅我的更新。 '@ Resources.Index。Home“会显示文字”Home“,但是当CurrentUICulture设置为”es-ES“时,它不会变为”Casa“ – tradez
您可以发布初始化您刚刚发布的CurrentUICulture – Yanga