推薦:Asp.Net MVC 多語言(html+js共用一套資源文件)


        此文主要是最近做多語言的工作的一個經驗分享。文中的內容為參照多位大神的方案后,自己揉捏出來的一個新的方案,對於html和javascript部分的多語言的切換,共用一套資源文件。代碼中主要是使用 IHttpModule + cookie 的方式實現。具體原理不多說(請問度娘或谷歌),旨在共享代碼。 如果有不喜歡的也請繞行,勿噴!

        此方案比較簡單易懂,也不low,還是緊跟國際范的,如果覺得好,不妨用用看!

第一步:創建資源文件

第二步:添加 IHttpModule 接口實現類

namespace PIMS_WebConsole
{
    public class CultureAwareHttpModule : IHttpModule
    {
        public void Dispose() { }
        public void Init(HttpApplication context)
        {
            context.BeginRequest += SetCurrentCulture;
        }
        private void SetCurrentCulture(object sender, EventArgs args)
        {
            string cultureName = string.Empty;
            HttpCookie cultureCookie = System.Web.HttpContext.Current.Request.Cookies[Const.CookieName_Language];
            if (cultureCookie != null)
            {
                cultureName = cultureCookie.Value;
                Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureName);
                Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
            }
        }
    }
}

第三步: web.config中注冊實例類

  <system.webServer>
    <modules>
      <add name="CultureAwareHttpModule" type="PIMS_WebConsole.CultureAwareHttpModule"/>
    </modules>
  </system.webServer>
  

到此,后台的多語言切換部分的代碼齊了。后面是腳本的代碼

第四步:javascript部分的核心代碼

var __page = __page || {};//語言cookie名稱
__page.langcookiename = "_pims_lang";//選擇語言
__page.lang = $.cookie(__page.langcookiename);
if (!__page.lang) {
    __page.lang = "zh-CN";
    _setLanguageCookie(__page.lang);
};
__page.localization();
__page.setLanguageCookie = _setLanguageCookie;

function _setLanguageCookie(lang) {
    $.cookie(__page.langcookiename, lang, { expires: 9999 });
    window.location.reload();
}

第五步:view+js中語言的使用

view中直接@Resource的方式就可以了(不要跟我說怎么我的不行呢?我不會告訴你需要去view的config中using這個命名空間的),JS中,主要是在view中定義一個Json對象,然后JS中使用此Json對象。 能一定程度的解決某些強迫症選手,對於自己代碼中各類名稱的自定義癖好。

view中示例:

<script>var $PageLanguage = {
        OK: "@Html.Raw(@Resource.OK)",
        Cancel: "@Html.Raw(@Resource.Cancel)",
        Create: "@Html.Raw(@Resource.Create)",
        Query: "@Html.Raw(@Resource.Query)",
        MachineName: "@Html.Raw(@Resource.MachineName)",
        Shift: "@Html.Raw(@Resource.Shift)"
    };
</script>

@section Scripts {
  @Scripts.Render("~/CustomJS/test.js?v=1.0")

}

<label class="toolbar-label" for="Shift">@Resource.Shift</label>

JS中示例:

$(function () {
    alert($PageLanguage.OK);
});

 

到此,你已經完成了所有的內容,可以開始你的表演了!

謝謝!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM