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 相关文章推荐
javascript js cookie的存储,获取和删除
Dec 29 Javascript
Prototype源码浅析 Enumerable部分(二)
Jan 18 Javascript
js网页滚动条滚动事件实例分析
May 05 Javascript
TypeScript 学习笔记之基本类型
Jun 19 Javascript
JS使用post提交的两种方式
Dec 03 Javascript
浅析js绑定事件的常用方法
May 15 Javascript
浅析Bootstrap表格的使用
Jun 23 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
Mar 02 Javascript
AngularJS中filter的使用实例详解
Aug 25 Javascript
javascript防抖函数debounce详解
Jun 11 Javascript
JavaScript自定义超时API代码实例
Apr 30 Javascript
JS实现纸牌发牌动画
Jan 19 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实现MVC开发得最简单的方法――模型
2007/04/10 PHP
php存储过程调用实例代码
2013/02/03 PHP
PHP使用静态方法的几个注意事项
2014/09/16 PHP
PHP实现图片旋转效果实例代码
2014/10/01 PHP
使用Appcan客户端自动更新PHP版本号(全)
2015/07/31 PHP
javascript 写类方式之七
2009/07/05 Javascript
JavaScript随机排序(随即出牌)
2010/09/17 Javascript
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
基于jQuery的图片剪切插件
2011/08/03 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
详细解读AngularJS中的表单验证编程
2015/06/19 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
2016/11/07 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
AngularJS使用ocLazyLoad实现js延迟加载
2017/07/05 Javascript
微信小程序 sha1 实现密码加密实例详解
2017/07/06 Javascript
JavaScript动态加载重复绑定问题
2018/04/01 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
2019/04/29 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
python和shell变量互相传递的几种方法
2013/11/20 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
2019/12/09 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
HTML+CSS3 模仿Windows7 桌面效果
2010/06/17 HTML / CSS
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
介绍一下linux的文件系统
2012/03/20 面试题
公司委托书格式范文
2014/04/04 职场文书
安全生产目标责任书
2014/04/14 职场文书
本科毕业生应聘求职信
2014/07/06 职场文书
购房委托书范本
2014/09/18 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
保护环境建议书作文400字
2015/09/14 职场文书
高中物理教学反思
2016/02/19 职场文书
使用Python开发贪吃蛇游戏 SnakeGame
2022/04/30 Python