我正在嘗試在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