基于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 相关文章推荐
vue中如何引入jQuery和Bootstrap
Apr 10 jQuery
node.js+jQuery实现用户登录注册AJAX交互
Apr 28 jQuery
jQuery滚动插件scrollable.js用法分析
May 25 jQuery
jQuery上传插件webupload使用方法
Aug 01 jQuery
jQuery实现滚动效果
Nov 17 jQuery
jQuery实现常见的隐藏与展示列表效果示例
Jun 04 jQuery
jQuery实现的老虎机跑动效果示例
Dec 29 jQuery
Jquery实现无缝向上循环滚动列表的特效
Feb 13 jQuery
jQuery实现简单的Ajax调用功能示例
Feb 15 jQuery
jQuery实现的导航条点击后高亮显示功能示例
Mar 04 jQuery
jQuery 查找元素操作实例小结
Oct 02 jQuery
基于jQuery实现挂号平台首页源码
Jan 06 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实现把数组按指定的个数分隔
2014/02/17 PHP
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
PHP 闭包详解及实例代码
2016/09/28 PHP
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
捕获键盘事件(且兼容各浏览器)
2013/07/03 Javascript
js 实现浏览历史记录示例
2014/04/20 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
jQuery为动态生成的select元素添加事件的方法
2016/08/29 Javascript
jQuery内容筛选选择器实例代码
2017/02/06 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
2017/02/07 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
JavaScript中var、let、const区别浅析
2018/06/24 Javascript
vue2 设置router-view默认路径的实例
2018/09/20 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
2019/04/17 Javascript
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
vue实现可移动的悬浮按钮
2021/03/04 Vue.js
Python环境下搭建属于自己的pip源的教程
2016/05/05 Python
Python实现PS滤镜功能之波浪特效示例
2018/01/26 Python
python3.5基于TCP实现文件传输
2020/03/20 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
Python学习笔记之For循环用法详解
2019/08/14 Python
python 用 xlwings 库 生成图表的操作方法
2019/12/22 Python
html5 css3 动态气泡按钮实例演示
2012/12/02 HTML / CSS
基于css3实现漂亮便签样式
2013/03/18 HTML / CSS
世界最大的私人旅行指南出版商:孤独星球
2016/08/23 全球购物
Hammitt官网:设计师手袋
2020/05/23 全球购物
酒店拾金不昧表扬信
2014/01/18 职场文书
装配出错检讨书
2014/09/23 职场文书
安全先进班组材料
2014/12/26 职场文书
艺术节开幕词
2015/01/28 职场文书
员工离职通知函
2015/04/25 职场文书
2015年企业工作总结范文
2015/04/28 职场文书
谢师宴学生致辞
2015/07/27 职场文书
mysql 带多个条件的查询方式
2021/06/05 MySQL
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle
redis lua限流算法实现示例
2022/07/15 Redis