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 相关文章推荐
关于setInterval、setTimeout在jQuery中的使用注意事项
Sep 28 Javascript
基于JavaScript实现弹出框效果
Feb 19 Javascript
Vue.js 单页面多路由区域操作的实例详解
Jul 17 Javascript
详谈js对url进行编码和解码(三种方式的区别)
Aug 16 Javascript
Vue中对比scoped css和css module的区别
May 17 Javascript
jquery实现下载图片功能
Jul 18 jQuery
javascript实现异形滚动轮播
Nov 28 Javascript
Servlet返回的数据js解析2种方法
Dec 12 Javascript
node.js使用http模块创建服务器和客户端完整示例
Feb 10 Javascript
Vue点击切换Class变化,实现Active当前样式操作
Jul 17 Javascript
vue键盘事件点击事件加native操作
Jul 27 Javascript
MutationObserver在页面水印实现起到的作用详解
Jul 07 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
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
PHP笔记之:基于面向对象设计的详解
2013/05/14 PHP
跟我学Laravel之请求(Request)的生命周期
2014/10/15 PHP
PHP会话控制实例分析
2016/12/24 PHP
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
jQuery中innerWidth()方法用法实例
2015/01/19 Javascript
JQUERY简单按钮轮换选中效果实现方法
2015/05/07 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
2015/09/23 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
js实现随机点名
2021/01/19 Javascript
Django中实现一个高性能计数器(Counter)实例
2014/07/09 Python
Python实现的科学计算器功能示例
2017/08/04 Python
在python中对变量判断是否为None的三种方法总结
2019/01/23 Python
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
Python 继承,重写,super()调用父类方法操作示例
2019/09/29 Python
Python用摘要算法生成token及检验token的示例代码
2020/12/01 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
基于ccs3的timeline时间线实现方法
2020/04/30 HTML / CSS
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
UNOde50美国官网:西班牙珠宝品牌
2020/08/15 全球购物
千元咖啡店的创业计划书范文
2013/12/29 职场文书
微型企业创业投资计划书
2014/01/10 职场文书
20岁生日感言
2014/01/13 职场文书
培训楼经理岗位责任制
2014/02/10 职场文书
社会实践活动总结报告
2014/04/29 职场文书
五分钟演讲稿
2014/04/30 职场文书
消防隐患整改通知书
2015/04/22 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
首次购房证明
2015/06/19 职场文书
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers