基于jQuery.i18n实现web前端的国际化


Posted in jQuery onMay 04, 2018

在介绍 jQuery.i18n.properties 之前,我们先来看一下什么是国际化。国际化英文单词为:Internationalization,又称 i18n,“i”为单词的第一个字母,“18”为“i”和“n”之间单词的个数,而“n”代表这个单词的最后一个字母。在计算机领域,国际化是指设计能够适应各种区域和语言环境的软件的过程。

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。

下面介绍一下如何在项目中如何使用i18n,说明一下,我这里与官网并不相同,i18n的一些方法我并没有用,只是用到了很少的一部分,而且找出了比较适合我们项目使用的方式。

1.首先,建立资源文件:

基于jQuery.i18n实现web前端的国际化

locales/en-us/ns.jsp.json:

{ 
 "reSendMail": { 
  "emailSendFail": "Failed to send the email", 
  "emailHasSendToYourEmail": "The email has be sent to your email address. " 
 }, 
 "login": { 
  "pleaseWriteUserName": "Please input your username", 
  "pleaseWritePassword": "Please input your password " 
 }, 
 "activeRegist": { 
  "thisUserEmailHasUsed":"Email has already been used", 
  "thisUserNameHasUsed":"User Name has already been used", 
  "4to30Char":"Please enter 4-30 characters", 
  "1to50Char":"Please enter 1-50 characters", 
  "1to16Linkman":"Please enter 1-16 characters", 
  "loginPage":"Login Page", 
  "EmailMustNotEmpty": "Email can't be blank", 
  "PWDNotEmpty": "Password can't be blank", 
  "nameNotEmpty":"Name can't be blank", 
  "conpanyNotEmpty":"Company can't be blank", 
  "qqNotEmpty":"QQ can not be blank", 
  "phoneNotEmpty":"Mobile can not be blank", 
  "least50charEmailAddress":"No more than 50 characters for email address", 
  "enterEmailAddressLikeThis":"Email address format 'abc@abc.com'", 
  "enter6To32Character":"Please enter 6-32 characters", 
  "NameMost30Character":"No more than 30 characters for name", 
  "QQTypeIsWrong":"Incorrent QQ format", 
  "phoneTypeNotCorrect":"Incorrent mobile format", 
  "thisEmailHasRegistered":"Email address has already been registered", 
  "registerFail":"Registration failed!", 
   "TwoTimesPWDIsDifferent":"The passwords you entered do not match. Please try again." 
 } 
}

中文配置文件就不写了,格式一样,用了map的形式份模块来写。

2.在jsp页面上引入i18n.js并初始化i18n

<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script> 
<script type="text/javascript" src="js/i18next.js"></script> 
<script type="text/javascript"> 
i18n.init({ 
 lng:'${sessionScope.language }', 
 ns: { namespaces: ['ns.jsp'], defaultNs: 'ns.jsp'}, 
 useLocalStorage: false 
}); 
</script>

3.js引用

var emailflag = false; 
function checkemail() { 
 check('email', 'emailmessage'); 
 var email = $("#email").attr("value"); 
 if(email != null && email != "") { 
  if(email.length > 50) { 
   setDivInfo("emaildiv", i18n.t('activeRegist.least50charEmailAddress'), 1);//请输入50字符内的邮箱地址 
  } else { 
   if(isEmail(email, $("#email"))) { 
    checkemailForServer(email); 
   } else { 
    setDivInfo("emaildiv", i18n.t('activeRegist.enterEmailAddressLikeThis'), 1);//请输入邮箱地址,格式为abc@abc.com 
   } 
  } 
 } 
}

4.测试

基于jQuery.i18n实现web前端的国际化

基于jQuery.i18n实现web前端的国际化

参考:

http://i18next.com/

jQuery 相关文章推荐
jQuery 控制文本框自动缩小字体填充
Jun 16 jQuery
jquery.validate.js 多个相同name的处理方式
Jul 10 jQuery
基于jQuery解决ios10以上版本缩放问题
Nov 03 jQuery
基于jQuery实现定位导航位置效果
Nov 15 jQuery
jQuery实现所有验证通过方可提交的表单验证
Nov 21 jQuery
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
Dec 18 jQuery
vue.js2.0点击获取自己的属性和jquery方法
Feb 23 jQuery
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
Apr 26 jQuery
jQuery基于随机数解决中午吃什么去哪吃问题示例
Dec 29 jQuery
JQuery判断radio单选框是否选中并获取值的方法
Jan 17 jQuery
jQuery 选择器用法实例分析【prev + next】
May 22 jQuery
Jquery使用each函数实现遍历及数组处理
Jul 14 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
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
Apr 27 #jQuery
You might like
通过PHP CLI实现简单的数据库实时监控调度
2009/07/01 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
详解PHP防止盗链防止迅雷下载的方法
2017/04/26 PHP
提高Laravel应用性能方法详解
2019/06/24 PHP
图片自动缩小的js代码,用以防止图片撑破页面
2007/03/12 Javascript
javascript操作文本框readOnly
2007/05/15 Javascript
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
jQuery 操作option的实现代码
2011/03/03 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
14 个折磨人的 JavaScript 面试题
2016/08/08 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
Vue.js使用v-show和v-if的注意事项
2016/12/13 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
Nodejs中获取当前函数被调用的行数及文件名详解
2018/12/12 NodeJs
一些可能会用到的Node.js面试题
2019/06/15 Javascript
[03:04]2018年度DOTA2玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
python实现的简单RPG游戏流程实例
2015/06/28 Python
Python基础篇之初识Python必看攻略
2016/06/23 Python
Python使用SocketServer模块编写基本服务器程序的教程
2016/07/12 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
Python中shapefile转换geojson的示例
2019/01/03 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
2020/01/02 Python
在keras中实现查看其训练loss值
2020/06/16 Python
CSS3 rgb and rgba(透明色)的使用详解
2020/09/25 HTML / CSS
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
写一个用矩形法求定积分的通用函数
2012/11/08 面试题
Ajax的优点和缺点
2014/11/21 面试题
大学教师年终总结的自我评价
2013/10/29 职场文书
农村改厕实施方案
2014/03/22 职场文书
2014年维修工作总结
2014/11/22 职场文书
2014年保险业务员工作总结
2014/12/23 职场文书