[英]Localization in MVC 5 - How can I render multi-lingual text in my view using a resource file?
我正在尝试在MVC 5应用程序中创建多语言导航。
我所做的:
System.Threading.Thread.CurrentThread.CurrentUICulture
设置为“ en-US”或“ es-ES”(默认为英语,除非用户选择西班牙语) 创建了三个资源文件(这是我第一次使用它们,所以我不确定我是否完全理解这个概念...)Index.resx,Resouce.en-US.resx,Resouce.es-ES.resx。 每个资源文件都位于名为App_GlobalResources的文件夹中
为每个.resx文件添加了名称/值组合,为Index.resx和en-US.resx添加了Home / Home,为es-ES.resx添加了Home / Casa。
@Resources.Index.Home
进行了尝试,认为当CurrentUICulture
的值从en-US更改为es-ES,反之亦然时,该语言将根据我的资源文件中的值而更改。 有人可以让我知道当CurrentUICulture
值为“ es-ES”时如何获得西班牙语文本,而当值为“ en-US”时如何获得英语文本吗?
编辑
我应该说过- @Resources.Index.Home
确实在导航中呈现了文本“ Home”。 但是,当我将CurrentUICulture
切换为“ es-ES”时,它仍然呈现“主页”,而不是“ Casa”
编辑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");
}
}
}
只需尝试将@Resources.Index.Home
替换为@Resources.Home
。
这是您对本地化的了解。
每个具有本地化的应用程序(例如N个文化)必须具有N个.resx
文件,这些.resx
具有相同的名称但后缀不同。 +默认文化可以不带后缀。 因此,您有2种文化-您必须使用2个.resx文件,不能更多。 因此,根本不需要Index.resx
。
这应该工作。 如果没有,请进行以下修复:
-不要使用App_GlobalResources文件夹。 就像在桌面.NET应用程序中一样,只需在公共项目文件夹或项目根文件夹中创建.resx
。
这对我有所帮助,希望对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.