推荐: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的创造者,它对于官网的结构设计肯定有值得我们借鉴和参考 ...
随机推荐
- Vue笔记:在项目中使用 SCSS
背景概述 1. CSS预处理器 css预处理器定义了一种新的编程语言,编译后成正常的CSS文件.为CSS增加一些编程的特性,无需考虑浏览器的兼容问题,让CSS更加简洁,适应性更强,可读性更佳,更易于代 ...
- php使用 utf8_encode 来将特殊字符转成 utf8
如果在接受 $_POST 或 $_GET 时发生类似的错误报告:SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xF6te ...
- 2015年第六届蓝桥杯C/C++程序设计本科B组决赛 完美正方形
完美正方形 如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形.历史上,人们花了很久才找到了若干完美正方形.比如:如下边长的22个正方形 2 3 4 6 7 8 12 13 ...
- 200个最常见的JAVA面试问题(附答案)
本文内容: 20个最常见的JAVA面试问题(附答案) 13个单例模式JAVA面试问题(附答案) 说说JVM和垃圾收集是如何工作的(附答案) 说说如何避免JAVA线程死锁(附答案) Java中HashS ...
- Solr 清空数据的简便方法
1. 首先访问你的 core,然后点击左侧的 Documents 2. 在 documents type 选择 XML 3. documents 输入下面语句 <delete><qu ...
- PHP算法------排序
<?php/** * Created by PhpStorm. * User: 63448 * Date: 2018/5/5 * Time: 22:42 */$arr = [3,1,13,5,7 ...
- 【转】CSS和SVG中的剪切——clip-path属性和<clipPath>元素
本文由大漠根据SaraSoueidan的<Clipping in CSS and SVG – The clip-path Property and <clipPath> Elemen ...
- 易错java知识点总结(持续更新)
1. 2.java转义字符的理解 参考知乎大神:http://www.zhihu.com/question/29232624 正向和逆向处理转义字符 正向:把两个字符 \ n 识别为一个转义字符 ne ...
- C#基础知识回顾--C#遍历enum类型、获取enum项个数
C#遍历enum类型 对于enum类型: 使用foreach遍历enum类型的元素并填充combox foreach ( HatchStyle hs1 in Enum.GetValues(typeof ...
- C语言Win32 Application 的标题栏图标,任务栏图标,exe文件图标问题
我们这里新建的首先是一个空工程,新建c文件. 因为是空工程,我们没有资源文件,要用到图标资源,首先要新建和导入图标为资源. 选择引入资源,选择要引入的ico文件 完成,重命名保存Script_icon ...