推荐:Asp.Net MVC 多语言(html+js共用一套资源文件)
2017-10-17 11:47
567 查看
此文主要是最近做多语言的工作的一个经验分享。文中的内容为参照多位大神的方案后,自己揉捏出来的一个新的方案,对于html和javascript部分的多语言的切换,共用一套资源文件。代码中主要是使用 IHttpModule + cookie 的方式实现。具体原理不多说(请问度娘或谷歌),旨在共享代码。 如果有不喜欢的也请绕行,勿喷!
此方案比较简单易懂,也不low,还是紧跟国际范的,如果觉得好,不妨用用看!
第一步:创建资源文件
第二步:添加 IHttpModule 接口实现类
第三步: web.config中注册实例类
到此,后台的多语言切换部分的代码齐了。后面是脚本的代码
第四步:javascript部分的核心代码
第五步:view+js中语言的使用
view中直接@Resource的方式就可以了(不要跟我说怎么我的不行呢?我不会告诉你需要去view的config中using这个命名空间的),JS中,主要是在view中定义一个Json对象,然后JS中使用此Json对象。 能一定程度的解决某些强迫症选手,对于自己代码中各类名称的自定义癖好。
view中示例:
@section Scripts {
@Scripts.Render("~/CustomJS/test.js?v=1.0")
}
JS中示例:
到此,你已经完成了所有的内容,可以开始你的表演了!
谢谢!
此方案比较简单易懂,也不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); });
到此,你已经完成了所有的内容,可以开始你的表演了!
谢谢!
相关文章推荐
- ASP.NET MVC 5 访问在views文件夹中的JS文件。 ASP.NET MVC html与JS分离
- ASP.NET MVC资源文件多语言实现方式
- ASP.NET MVC资源文件多语言实现方式
- Asp.net中使用资源文件实现网站多语言
- Asp.net多语言处理(数据库,XML,资源文件等)
- 那些年朋友劝,该知道的ASP.NET -如何在HTML/后台,中调用另一个js文件中的方法
- Asp.net资源文件解决多语言问题
- 让asp.net网站支持多语言,使用资源文件
- 解决asp.net mvc中*.resx资源文件访问报错
- ASP.NET MVC 4 的JS/CSS打包压缩功能-------过滤文件
- Asp.net MVC 利用(aspose+pdfobject.js) 实现在线预览word、excel、ppt、pdf文件
- [Asp.net MVC]Bundle合并,压缩js、css文件
- ASP.NET MVC 重点教程一周年版 第十一回 母版页、用户自定义控件及文件上传 推荐
- 解决asp.net mvc中*.resx资源文件访问报错
- asp.net 多语言 在IIS7.5发布出现找不到资源文件
- 让asp.net网站支持多语言,使用资源文件
- Asp.net 使用资源文件实现双语言
- ASP.NET MVC ScriptBundle 不能加载.min.js文件
- Asp.net 组件开发中web资源文件(图片、js)的调用问题
- C#结合js 上传文件和删除文件(技术点有:asp.net mvc ,nhibernate,ajax等)