详解使用jQuery.i18n.properties实现js国际化


Posted in jQuery onMay 04, 2018

当我们在做前台页面开发时,由于页面内容过多,过于繁杂,有的时候一个页面上千行的(当然这样的页面也就算一般的),为了减少页面的内容,我们将页面的js文件提取出去,放入一个特定的js文件中,然后在页面中导入进来。这样做当我们需要做应用程序的国际化的时候,就需要考虑js的国际化,这里介绍一下使用JQuery.i18n.properties来实现js的国际化。

PS:jQuery.i18n.properties 是一款轻量级的 jQuery 国际化插件。与 Java 里的资源文件类似,jQuery.i18n.properties 采用 .properties 文件对 JavaScript 进行国际化。jQuery.i18n.properties 插件根据用户指定的(或浏览器提供的 )语言和国家编码(符合 ISO-639 和 ISO-3166 标准)来解析对应的以“.properties”为后缀的资源文件。

利用资源文件实现国际化是一种比较流行的方式,例如 Android 应用就可以采用以语言和国家编码命名的资源文件来实现国际化。jQuery.i18n.properties 插件中的资源文件以“.properties”为后缀,包含了区域相关的键值对。我们知道,Java 程序也可以使用以 .properties 为后缀的资源文件来实现国际化,因此,当我们要在 Java 程序和前端 JavaScript 程序中共享资源文件时,这种方式就显得特别有用。jQuery.i18n.properties 插件首先加载默认的资源文件(例如:strings.properties),然后加载针对特定语言环境的资源文件(例如:strings_zh.properties),这就保证了在未提供某种语言的翻译时,默认值始终有效。开发人员可以以 JavaScript 变量(或函数)或 Map 的方式使用资源文件中的 key。

那么如何使用jQuery.i18n.properties实现js国际化呢?

第一步:创建properties资源文件。

properties资源文件命名规则为:string_浏览器语言简码.properties,例如简体中文:string_zh-CN.properties这里需要注意是中划线而不是下划线,如图我创建了三个资源文件

js_en-US.properties(美国英语),js_ja.properties(日语),js_zh-CN.properties(简体中文)。

 详解使用jQuery.i18n.properties实现js国际化

第二步:在js文件中引入jQuery.i18n.properties所需js文件。

因为jQuery.i18n.properties是依赖于Jquery框架的,所以需要在你的js文件中引入jQuery.i18n.properties所需js文件。

详解使用jQuery.i18n.properties实现js国际化

导入红色部分的js即可使用jQuery.i18n.properties了。

第三步:使用jQuery.i18n.properties API

<script type="text/javascript">
  $(document).ready(function(){
  //国际化加载属性文件
   jQuery.i18n.properties({
    name:'js',
    path:'<%=path%>/js/i18n/',
    mode:'map',
    callback: function() {// 加载成功后设置显示内容
    //alert(jQuery.i18n.prop("theme_manage.js_activity"));
    }
   });
 });
</script>

其中:name后面的值为你定义的资源文件中语言简码前面的字符串,因为我的资源文件为js_xxx.properties,所以这个值就为js

path后面的值为你资源文件的相对路径。即相对于工程结构WebContent下的路径所在

详解使用jQuery.i18n.properties实现js国际化

mode后面的值为加载模式;"vars"表示以JavaScript变量或函数的形式加载资源文件中的key值(默认为这种),“map”表示以map的方式加载资源文件中的key值。“both表示可以同时使用这两种方式”。我这里使用的是map。

callback为回调函数。

是怎样根据不同的语言环境加载不同的资源文件的呢?其实,jQuery.i18n.properties实现的原理就是,根据name后面的值,加上浏览器的语言简码,再加上.properties找到对应的资源文件。这个过程是自动的,只需要进行上面的配置即可

propertites中键值对如下:(在properties文件中中文会自动转换成相对应的ASCII值,当然这里是可以设置的,也可以通过插件进行更改的,我这就没做了反正这些中文是从页面上复制出来的,不管了),等号前的为key,等号后的为值(注意一点的是,不同的资源文件中key必须保持一致,是自定义的)。

 详解使用jQuery.i18n.properties实现js国际化

这样资源文件中的内容已经加载完成了。

第四步:js文件中根据key找对应的值。

 详解使用jQuery.i18n.properties实现js国际化

红色部分就是取值的方式,引号中的字符串对应着上面资源文件中的key值。

需要注意的地方:

此上方法在谷歌和火狐的浏览器中实现完全没有问题。但在IE浏览器中会出现问题,问题在使用IE浏览器每次获取到的语言环境为系统的语言,而不是浏览器的语言。

这个问题我也纠结了很久,网上提供了一些方法来获得浏览器的语言,但是在IE中却不起作用,最后我的解决方法是:在使用jQuery.i18n.properties加载资源文件之前,在request头信息中先获取浏览器的语言,然后设置。

 详解使用jQuery.i18n.properties实现js国际化

这样国际化就到此结束了。

这是我第一篇博客,以前总是看别人的博客,后面发现自己遇到的问题,虽然解决了,但过段时间后发现自己就忘记了,一致多次遇到同样的问题,后又忘记怎么解决,又是上网找资料。这是我决定写写博客的直接原因。不过写博客的感觉确实还是不错的,可以记录一下自己的学习过程。希望大伙也可以这样试试。

以上所述是小编给大家介绍的使用jQuery.i18n.properties实现js国际化实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

jQuery 相关文章推荐
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
Mar 21 jQuery
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
Apr 11 jQuery
jQuery为某个div加入行样式
Jun 09 jQuery
jQuery remove()过滤被删除的元素(推荐)
Jul 18 jQuery
实现jquery放大镜的两种方法
Feb 22 jQuery
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
Jun 05 jQuery
jQuery实现的隔行变色功能【案例】
Feb 18 jQuery
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
May 13 jQuery
jquery实现垂直无限轮播的方法分析
Jul 16 jQuery
jQuery-Citys省市区三级菜单联动插件使用详解
Jul 26 jQuery
jQuery实现异步上传一个或多个文件
Aug 17 jQuery
jquery实现广告上下滚动效果
Mar 04 jQuery
基于jQuery.i18n实现web前端的国际化
May 04 #jQuery
[原创]jquery判断元素内容是否为空的方法
May 04 #jQuery
jQuery实现每隔一段时间自动更换样式的方法分析
May 03 #jQuery
基于jquery实现左右上下移动效果
May 02 #jQuery
jQuery实现遍历XML节点和属性的方法示例
Apr 29 #jQuery
jQuery实现的电子时钟效果完整示例
Apr 28 #jQuery
vue+jquery+lodash实现滑动时顶部悬浮固定效果
Apr 28 #jQuery
You might like
php+dbfile开发小型留言本
2006/10/09 PHP
table标签的结构与合并单元格的实现方法
2013/07/24 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
Json和Jsonp理论实例代码详解
2013/11/15 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
使用vue完成微信公众号网页小记(推荐)
2019/04/28 Javascript
JSON是什么?有哪些优点?JSON和XML的区别?
2019/04/29 Javascript
解决layer 动态加载select 失效的问题
2019/09/18 Javascript
小程序双头slider选择器的实现示例
2020/03/31 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
[13:56]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第一场
2018/04/06 DOTA
Python3随机漫步生成数据并绘制
2018/08/27 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
前端水印的简单实现代码示例
2020/12/02 HTML / CSS
英国剑桥包中文官网:The Cambridge Satchel Company中国
2018/11/06 全球购物
获取邓白氏信用报告:Dun & Bradstreet
2019/01/22 全球购物
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
大学生村官任职感言
2014/01/09 职场文书
高中体育教学反思
2014/01/29 职场文书
《小松树和大松树》教学反思
2014/02/20 职场文书
创建绿色学校先进个人材料
2014/08/20 职场文书
安全月宣传标语
2014/10/07 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
大学毕业生自我评价
2015/03/02 职场文书
《秦兵马俑》教学反思
2016/02/24 职场文书
Python3中最常用的5种线程锁实例总结
2021/07/07 Python
《黑岩★★射手 DAWN FALL》BD发售宣传CM公开
2022/04/04 日漫