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 表格分页等操作实现代码(pagedown,pageup)
Apr 11 Javascript
JavaScript 对象链式操作测试代码
Apr 25 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
Jun 14 Javascript
node.js中的fs.unlink方法使用说明
Dec 15 Javascript
javascript版2048小游戏
Mar 18 Javascript
jQuery下拉美化搜索表单效果代码分享
Aug 25 Javascript
ES6扩展运算符的用途实例详解
Aug 20 Javascript
js中getBoundingClientRect的作用及兼容方案详解
Feb 01 Javascript
JavaScript this在函数中的指向及实例详解
Oct 14 Javascript
layui table 复选框跳页后再回来保持原来选中的状态示例
Oct 26 Javascript
Element Card 卡片的具体使用
Jul 26 Javascript
Java 生成随机字符的示例代码
Jan 13 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中去除所有js,html,css代码
2010/10/12 PHP
一组PHP可逆加密解密算法实例代码
2014/01/21 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
js中的string.format函数代码
2020/08/11 Javascript
jQuery验证插件 Validate详解
2014/11/20 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
nodejs批量下载图片的实现方法
2017/05/19 NodeJs
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
vue.js中实现登录控制的方法示例
2018/04/23 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
[03:22]DOTA2超级联赛专访单车:找到属于自己的英雄
2013/06/08 DOTA
python实现2014火车票查询代码分享
2014/01/10 Python
python中requests模块的使用方法
2015/04/08 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
如何查看python关键字
2021/01/17 Python
html5 canvas-2.用canvas制作一个猜字母的小游戏
2013/01/07 HTML / CSS
HTML5获取当前地理位置并在百度地图上展示的实例
2020/07/10 HTML / CSS
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
创建无烟单位实施方案
2014/03/29 职场文书
担保书格式
2015/01/20 职场文书
民事申诉状范本
2015/05/20 职场文书
少年雷锋观后感
2015/06/10 职场文书
导游词之湖北武当山
2019/09/23 职场文书