jquery结合html实现中英文页面切换


Posted in Javascript onNovember 29, 2016

目的:前端(只采用thymeleaf模板+jquery) 实现国际化

由:前端没有采用流行的vue.js angular 等框架,纯html不可以引用js中定义的常量
采用jquery赋值(维护2个模板(中,英)界面) 直接out

方案:采用https://github.com/coderifous/jquery-localize/ 一个本地化插件
a jQuery plugin that makes it easy to internationalize your web site

步骤:

1 html

<!DOCTYPE>
<html lang="en">
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Language</title>
  <!-- 引用三个js文件 language_cookie.js实现记忆功能 下一次用户刷新界面之后 记得之前用户使用了那个语种 -->
  <script src="jquery.js" type="text/javascript" charset="utf-8"></script>
  <script src="jquery.localize.js" type="text/javascript" charset="utf-8"></script>
  <script src="language_cookie.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
 <div class="top_lan"> 
     <select id="ddlSomoveLanguage" onchange="chgLang();">
        <option value="">LAGUAGE</option>
        <option value="ja">日本</option>
        <option value="en">ENGLISH</option>
      </select>
     </div>
 <div id="prod_navright">
      <ul> <!-- data-localize="hpt.management" 固定写法 对应语言包文件中的key -->
       <li><a data-localize="hpt.management" href="hospitality_management_ja.html" >MANAGEMENT</a></li>
       <li><a data-localize="hpt.support" href="hospitality_support_ja.html">SUPPORT</a></li>
       <li><a data-localize="hpt.tutorial" href="hospitality_tutorial_ja.html">TUTORIAL</a></li>
       <li><a data-localize="hpt.features" href="hospitality_features_ja.html">FEATURES</a></li>
      </ul>
     </div>
</body>
</html>

2 语言包文件

text-en.json

{
 "hpt":{ 
  "features": "FEATURES",
  "tutorial": "TUTORIAL",
  "support": "SUPPORT",
  "management": "MANAGEMENT"
}
}

text-ja.json
·······

3 language_cookie.js 需要在服务器上执行 本机执行无法获取需要的json文件 主要的代码 标记处的代码底层可能使用的是xmlHttpRequest实现获取.json语言包文件

var name = "somoveLanguage";
function chgLang() {
  var value = $("#ddlSomoveLanguage").children('option:selected').val();
  SetCookie(name, value);
  console.log("come in chgLang" + name + value);
  location.reload();
}
function SetCookie(name, value) {
  var Days = 30; //此 cookie 将被保存 30 天
  var exp = new Date(); //new Date("December 31, 9998");
  exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
  document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString();
}
function getCookie(name){ //取cookies函数
  var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
  if (arr != null) return unescape(arr[2]);
  return null
}
$(function() {
  var uulanguage = (navigator.language || navigator.browserLanguage).toLowerCase();
  console.log("come in readly" + uulanguage);

  if (uulanguage.indexOf("en") > -1) {
    $("[data-localize]").localize("text", {  //**主要的代码** jquery.localize.js 底层实现切换逻辑
      pathPrefix: "lang",
      language: "en"
    });
     console.log("come in en");
  } else if (uulanguage.indexOf("ja") > -1) {
    $("[data-localize]").localize("text", {
      pathPrefix: "lang",
      language: "ja"
    });
     console.log("come in ja");
  } else {
    $("[data-localize]").localize("text", {
      pathPrefix: "lang",
      language: "en"
    });
    console.log("come in moren en");
  };
   //根据cookie选择语言
  if (getCookie(name) != "") {
    if (getCookie(name) == "ja") {
      $("[data-localize]").localize("text", {
        pathPrefix: "lang",
        language: "ja"
      });
      console.log("come in cookie ja");
    }
    if (getCookie(name) == "en") {
      $("[data-localize]").localize("text", {
        pathPrefix: "lang",
        language: "en"
      });
      console.log("come in cookie en");
    }
  }
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery BS,dialog控件自适应大小
Jul 06 Javascript
JS面向对象编程 for Cookie
Sep 19 Javascript
div模拟滚动条效果示例代码
Oct 16 Javascript
JavaScript实现重置表单(reset)的方法
Apr 02 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
Aug 12 Javascript
jQuery实现Select左右复制移动内容
Aug 05 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
Aug 08 Javascript
微信小程序图表插件(wx-charts)实例代码
Jan 17 Javascript
JavaScript对JSON数据进行排序和搜索
Jul 24 Javascript
js封装成插件_Canvas统计图插件编写实例
Sep 12 Javascript
关于Vue的路由权限管理的示例代码
Mar 06 Javascript
JS实现将对象转化为数组的方法分析
Jan 21 Javascript
基于Three.js插件制作360度全景图
Nov 29 #Javascript
jquery购物车结算功能实现方法
Oct 29 #Javascript
JavaScript微信定位功能实现方法
Nov 29 #Javascript
jQuery中的select操作详解
Nov 29 #Javascript
微信小程序加载更多 点击查看更多
Nov 29 #Javascript
AngularJs表单验证实例代码解析
Nov 29 #Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
Nov 29 #Javascript
You might like
PHP 源代码压缩小工具
2009/12/22 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
js获取网页高度(详细整理)
2012/12/28 Javascript
jquery放大镜效果超漂亮噢
2013/11/15 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
分享纯手写漂亮的表单验证
2015/11/19 Javascript
浅谈javascript中onbeforeunload与onunload事件
2015/12/10 Javascript
javascript 判断页面访问方式电脑或者移动端
2016/09/19 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
2019/04/26 Javascript
微信小程序实现左侧滑栏过程解析
2019/08/26 Javascript
Python编程实现的简单神经网络算法示例
2018/01/26 Python
pandas 条件搜索返回列表的方法
2018/10/30 Python
对python中Json与object转化的方法详解
2018/12/31 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
django 中使用DateTime常用的时间查询方式
2019/12/03 Python
关于python 跨域处理方式详解
2020/03/28 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
Python实现LR1文法的完整实例代码
2020/10/25 Python
override和overload的区别
2016/03/09 面试题
应届毕业生自我评价分享
2013/12/15 职场文书
财产公证书格式
2014/04/10 职场文书
工商企业管理专业自荐信范文
2014/04/12 职场文书
大学生社团活动总结
2014/04/26 职场文书
感恩母亲节演讲稿
2014/05/07 职场文书
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
台风停课通知
2015/04/24 职场文书
农业项目合作意向书
2015/05/08 职场文书
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP
Win7/8.1用户可以免费升级到Windows 11系统吗?
2021/11/21 数码科技
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸