[英]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.