推荐: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);
});
到此,你已经完成了所有的内容,可以开始你的表演了!
谢谢!
推荐:Asp.Net MVC 多语言(html+js共用一套资源文件)的更多相关文章
- ASP.NET MVC 4 RC的JS/CSS打包压缩功能 (转载)
ASP.NET MVC 4 RC的JS/CSS打包压缩功能 打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载 ...
- EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象
EF+LINQ事物处理 在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...
- (转)ASP.NET MVC 4 RC的JS/CSS打包压缩功能
转自:http://www.cnblogs.com/shanyou/archive/2012/06/22/2558580.html 打包(Bundling)及压缩(Minification)指的是将多 ...
- ASP.NET MVC 4 RC的JS/CSS打包压缩功能
打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载多个文件案才能完成网页显示的延迟感,同时通过移除JS/CSS ...
- 【转】ASP.NET MVC 4 RC的JS/CSS打包压缩功能
原文链接:http://www.cnblogs.com/shanyou/archive/2012/06/22/2558580.html 打包(Bundling)及压缩(Minification)指的是 ...
- ASP.NET MVC 4 RC的JS/CSS打包压缩功能 Scripts.Render和Styles.Render
打包(Bundling)及压缩(Minification)指的是将多个js文件或css文件打包成单一文件并压缩的做法,如此可减少浏览器需下载多个文件案才能完成网页显示的延迟感,同时通过移除JS/CSS ...
- ASP.NET MVC多语言 仿微软网站效果(转)
本文转自: https://blog.csdn.net/Cooldiok/article/details/7831351 2017年10月22日 21:31:22 Cooldiok 微软作为ASP.N ...
- ASP.NET MVC之Bundle压缩JS和CSS
介绍Bundle之前先引用<淘宝技术这十年>中一段话,对Web前端稍微有点常识的人都应该知道,浏览器下一步会加载页面中用到的CSS.JS(JavaScript).图片等样式.脚本和资源文件 ...
- ASP.NET MVC多语言 仿微软网站效果
文章转载自:https://blog.csdn.net/cooldiok/article/details/78313513 微软作为ASP.NET的创造者,它对于官网的结构设计肯定有值得我们借鉴和参考 ...
随机推荐
- PTA (Advanced Level) 1008 Elevator
Elevator The highest building in our city has only one elevator. A request list is made up with Npos ...
- Java源码阅读(不断补充)
java.util.LinkedList LinkedList是实现了List接口的双链表实现,拥有list的所有方法并且允许所有元素(包括null). 双向链表也叫双链表,是链表的一种,它的每个数据 ...
- es6学习笔记7--Set
Set 基本用法 ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set本身是一个构造函数,用来生成Set数据结构. var s = new Set(); [2, ...
- C# Azure 设置云端应用程序的默认时间
在微软云Azure中,应用程序(website)的默认时间是按照美国UTC的时间的. 例如,在应用程序中获取DateTime.Now,的时候,是获取UTC的时间,不是中国的时间. 所以我们开始在这里设 ...
- EF访问数据库报“ExecuteReader 要求已打开且可用的 Connection。连接的当前状态为已关闭。”错误
我发生这个问题的原因是因为我用EF访问数据库时用的用到了两用方式,如下图 第一种方式访问时不会出现此错误,出现错误的是第二种方式,下图是dal层代码 其中红框中的代码是出现错误之后改正的代码,也就是说 ...
- 【模板】 ST表
某dalao的代码 void ST(int n) { ; i <= n; i++) dp[i][] = A[i]; ; ( << j) <= n; j++) { ; i + ( ...
- 关于项目管理工具 maven
众所周知,maven是目前很常用的项目管理工具.一般情况下,通过在pom.xml添加相应内容,再maven-->update就会自动把相应的jar包下载.配置好,非常方便. 一般每新建一个wor ...
- 9102年了,你还在用for循环操作集合?
本文首发于cdream的个人博客,点击获得更好的阅读体验! 欢迎转载,转载请注明出处. 前段时间公司书架多了一本<Java8 实战>,毕竟久闻lambda的大名,于是借来一阅.这一看,简直 ...
- Saving HDU(hdu2111,贪心)
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- Three.js开发指南---学习使用几何体(第五章)
一 基础几何体 1 二维图形:二维图形都是基于x和y轴构建的,即展示的形式就是他们都是“直立”的,如果希望这些二维图形躺下,则需要将几何体沿着x轴向后旋转1/4圈 mesh.rotation.x=-M ...