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 相关文章推荐
YUI 读码日记之 YAHOO.lang.is*
Mar 22 Javascript
jquery tools之tooltip
Jul 25 Javascript
初学js插入节点appendChild insertBefore使用方法
Jul 04 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
Aug 30 Javascript
javascript的push使用指南
Dec 05 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
Mar 03 Javascript
angularjs ui-router中路由的二级嵌套
Mar 10 Javascript
JS实现AES加密并与PHP互通的方法分析
Apr 19 Javascript
react项目如何使用iconfont的方法步骤
Mar 13 Javascript
解决vue 子组件修改父组件传来的props值报错问题
Nov 09 Javascript
微信小程序单选框自定义赋值
May 26 Javascript
Ajax实现局部刷新的方法实例
Mar 31 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
ThinkPHP2.x防范XSS跨站攻击的方法
2015/09/25 PHP
PHP goto语句用法实例
2019/08/06 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
jquery tools之tooltip
2009/07/25 Javascript
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
js 弹出菜单/窗口效果
2011/10/30 Javascript
jquery 无限级联菜单案例分享
2013/03/26 Javascript
JS的document.all函数使用示例
2013/12/30 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
2015/03/30 Javascript
3个可以改善用户体验的AngularJS指令介绍
2015/06/18 Javascript
Angular中$state.go页面跳转并传递参数的方法
2017/05/09 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
详解开源的JavaScript插件化框架MinimaJS
2017/10/26 Javascript
js中this对象用法分析
2018/01/05 Javascript
vue 引入公共css文件的简单方法(推荐)
2018/01/20 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
2018/01/31 Javascript
用Golang运行JavaScript的实现示例
2019/11/25 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
微信小程序onShareTimeline()实现分享朋友圈
2021/01/07 Javascript
python下paramiko模块实现ssh连接登录Linux服务器
2015/06/03 Python
matplotlib subplots 调整子图间矩的实例
2018/05/25 Python
Sanic框架异常处理与中间件操作实例分析
2018/07/16 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
2019/05/30 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
python-tornado的接口用swagger进行包装的实例
2019/08/29 Python
解决django框架model中外键不落实到数据库问题
2020/05/20 Python
学生的自我鉴定范文
2013/10/24 职场文书
运动会领导邀请函
2014/01/10 职场文书
贫困证明模板(3篇)
2014/09/16 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
组织生活会发言材料
2014/12/15 职场文书
2015教师年度思想工作总结
2015/04/30 职场文书
工会经费申请报告
2015/05/15 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
2016庆祝教师节新闻稿
2015/11/25 职场文书