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 相关文章推荐
juqery 学习之三 选择器 简单 内容
Nov 25 Javascript
replace()方法查找字符使用示例
Oct 28 Javascript
js函数名与form表单元素同名冲突的问题
Mar 07 Javascript
angularJS 中$attrs方法使用指南
Feb 09 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
Mar 31 Javascript
JavaScript实现级联菜单的方法
Jun 29 Javascript
JavaScript从数组的indexOf()深入之Object的Property机制
May 11 Javascript
JS 拼凑字符串的简单实例
Sep 02 Javascript
Vue.js中组件中的slot实例详解
Jul 17 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
Sep 11 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
Jul 25 Javascript
vue 实现购物车总价计算
Nov 06 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
5.PHP的其他功能
2006/10/09 PHP
详细介绍PHP应用提速面面观
2006/10/09 PHP
php字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
PHP使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
判断控件是否已加载完成的代码
2010/02/24 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
jQuery电话号码验证实例
2017/01/05 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
基于Vue单文件组件详解
2017/09/15 Javascript
Javascript 严格模式use strict详解
2017/09/16 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
2020/06/25 Javascript
使用wxpython实现的一个简单图片浏览器实例
2014/07/10 Python
python队列通信:rabbitMQ的使用(实例讲解)
2017/12/22 Python
浅谈python写入大量文件的问题
2018/11/09 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
2019/02/22 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
python 使用递归实现打印一个数字的每一位示例
2020/02/27 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
Python 实现一个计时器
2020/07/28 Python
python如何操作mysql
2020/08/17 Python
基于HTML5的WebSocket的实例代码
2018/08/15 HTML / CSS
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
2013/01/09 HTML / CSS
Elemis美国官网:英国的第一豪华护肤品牌
2018/03/15 全球购物
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
素食餐饮项目创业计划书
2014/02/02 职场文书
节水倡议书范文
2014/04/15 职场文书
企业工会工作总结2015
2015/05/13 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
小学作文指导之如何写人?
2019/07/08 职场文书
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
2021/04/04 Servers
python playwright 自动等待和断言详解
2021/11/27 Python