html+jquery实现页面中英文切换

目的: 前端(只采用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");
        }
    }
});

angular实现国际化方案
http://yijiebuyi.com/blog/3b55056c87b73ba606c19e9338dca679.html

实现Bootstrap jQuery前端网页中英文切换展示,可以采用以下几种方法: 1. 使用前端框架: 一些前端框架(如Vue、React等)提供了国际化(i18n)的支持,可以方便地实现中英文切换。通过配置语言文件,可以在不改变页面结构的情况下,将网页中的文本、日期、货币等信息切换为不同的语言。例如,在Vue框架中,可以使用vue-i18n插件来实现国际化。 2. 使用JavaScript: 可以通过JavaScript代码来实现中英文切换。首先,在HTML页面中定义两种语言的文本内容(可以使用自定义属性或隐藏元素等方式),然后在JavaScript代码中根据当前语言的选择,将对应的文本内容显示出来。例如: ```html <p data-lang="en">Hello World!</p> <p data-lang="zh">你好,世界!</p> ``` ```javascript var lang = 'en'; // 当前语言选择为英文 $('[data-lang]').hide(); // 隐藏所有含有data-lang属性的元素 $('[data-lang="' + lang + '"]').show(); // 显示当前语言对应的元素 ``` 3. 使用服务器端的国际化支持: 如果网页是通过服务器端渲染(如PHP、ASP.NET等)生成的,可以使用服务器端的国际化支持来实现中英文切换。首先,在服务器端定义两种语言的文本内容,在页面中使用占位符(如{0}、{1}等)来代替具体的文本内容,然后在服务器端根据当前语言的选择,将占位符替换为对应的文本内容。例如,在PHP中,可以使用gettext库来实现国际化。 以上是三种常用的实现方式,具体选择哪种方式取决于项目的具体需求和技术栈。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值