簡體   English   中英

MVC 5中的本地化-如何使用資源文件在視圖中呈現多語言文本?

[英]Localization in MVC 5 - How can I render multi-lingual text in my view using a resource file?

我正在嘗試在MVC 5應用程序中創建多語言導航。

我所做的:

  1. 根據Cookie值將System.Threading.Thread.CurrentThread.CurrentUICulture設置為“ en-US”或“ es-ES”(默認為英語,除非用戶選擇西班牙語)
  2. 創建了三個資源文件(這是我第一次使用它們,所以我不確定我是否完全理解這個概念...)Index.resx,Resouce.en-US.resx,Resouce.es-ES.resx。 每個資源文件都位於名為App_GlobalResources的文件夾中

  3. 為每個.resx文件添加了名稱/值組合,為Index.resx和en-US.resx添加了Home / Home,為es-ES.resx添加了Home / Casa。

  4. 在布局文件中使用@Resources.Index.Home進行了嘗試,認為當CurrentUICulture的值從en-US更改為es-ES,反之亦然時,該語言將根據我的資源文件中的值而更改。

有人可以讓我知道當CurrentUICulture值為“ es-ES”時如何獲得西班牙語文本,而當值為“ en-US”時如何獲得英語文本嗎?

_Layout.cshtml

Resource.resx

編輯

我應該說過- @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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM