问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

纯JS文件用什么方法实现国际化最好

发布网友 发布时间:2022-04-23 00:27

我来回答

2个回答

懂视网 时间:2022-04-23 04:48

这次给大家带来怎样使自己的js代码国际化,使js代码国际化的注意事项有哪些,下面就是实战案例,一起来看一下。

当我们在做前台页面开发时,由于页面内容过多,过于繁杂,有的时候一个页面上千行的(当然这样的页面也就算一般的),为了减少页面的内容,我们将页面的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(简体中文)。

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

因为jQuery.i18n.properties是依赖于Jquery框架的,所以需要在你的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下的路径所在

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

callback为回调函数。

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

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

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

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

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

需要注意的地方:

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

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

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

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

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

怎样使用Vue三层嵌套路由

如何使用Vue.js计算属性与侦听器

热心网友 时间:2022-04-23 01:56

lang/ch.js
lang/eng.js
lang/jp.js
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
哪些女人不值得男人珍惜? 潘集区第一小学优秀学生 优秀干部登记表 ...没想到洗几次更大了 有什么办法能让他变小点吗 纯棉的 济南哪里卖手机放心,便宜 飞利浦手机在烟台的售后服务在哪里 ? 济南哪里有飞利浦专卖店 微信群内发红包,怎么会让陌生人就领取了???为什么?? 我的戴尔笔记本电脑 无意中出现飞行模式。关闭不了。求大家帮忙_百度知 ... 什么是受伤庄股 为了贯彻可靠性要求,企业应该怎么做? 华硕电恼开机出现自动修复但进不了系统 电子产品硬件可靠性试验制定,参照的标准是什么,比如样机的数量,反复开关机的次数等,是根据什么规定的 《建筑结构可靠度设计统一标准》 GB 50068-2001废止了吗 关于手机触摸屏的可靠性测试相关标准,有国家标准或行业标准吗?望专业人士解答,急,谢谢! 小的时候特别爱吹牛,你还记得你和朋友吹过最大的牛是什么? 什么动物喜欢吹牛皮 牛皮大王爱吹牛,满嘴口水跑火车,走过九州上蓝天,指点江山如翻掌,是什么生肖 吹牛皮的是哪个生肖? 天花烂醉爱吹牛是什么生肖? 十二生肖哪个最会吹牛 设计一个logo,圆环中怎么写单位的拼音或字母? 朋友不好,带坏我们 ,跑得快又爱吹牛是什么动物? 用&quot;DAHE&quot;四个拼音设计成漂亮的标志? 什么动物最喜欢吹牛 LJ两个字母如何设计logo 贵阳哪里能买到乳胶衣 2014浙江三项高考技术笔试和技术机考分值各为多少 二手房年满几年免税,买卖双方要交哪些费用 2022年浙江高考技术还有优势吗? 为什么手机百度导航提示更新,之后就不能用了 百度导航提示更新之后就不能用了,怎么回事? 在信息导入指点天下提交问卷时显示手机号已存在是怎么回事 锻造外协生产接单网站哪个靠谱? AO史密斯热水器怎么用, 指点天下可以用电脑签到吗 深圳市指点天下科技有限公司怎么样? 前几天听同事说百度导航不再更新了,是吗 百度导航发现更新版本却无法更新是什么原因 平安信用卡 密码输错几次会锁住 24小时后会自动解锁吗 第一大外汇储备国是哪个? 全球持有多少人民币外汇储备 IMF首次公布全球人民币外汇储备持有情况是怎么回事? 您知道什么是外汇储备吗? 被辣椒辣到手为什么不可以冲水? 业造如山不自知 瞒心昧己莫相欺 清夜自思结累定 当知地狱难推移什么意思什么意思 为什么LINUX没有取代UNIX 累累是什么意思呢? 为什么Linux比其它类Unix系统更成功 财务情况的办学结累怎样计算?