天天看点

jquery 原生实现简易多语言

以下该版本实现了简易的多语言方案 ,你可以去维护一套多语言的json ,进行前端的语言切换。通过获取自定义数据 data-trans 来改变语言。

html 结构

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>多语言</title>
</head>
<body>
    <h1 id="locale">en</h1>
    <h3 data-trans="js_gloTitle">多语言</h3>
</body>
<script src="jquery-3.3.1.min.js"></script>
<script src="demo.js"></script>
</html>
           

对应的demo.js 代码:

"use strict";
window.global_lan = 'zh';
// 获取对应的json 对象
var getTranslate = null;
// 改变对应的json 对象
var setTranslate = function (e) {
    var lanObj;
    lanObj = {
        zh: {
            js_gloTitle: "这是最后的机会",
        },
        en: {
            js_gloTitle: "Dream of Your West Journey",
        }
    }[/^zh/.test(e) ? "zh" : "en"];
    // 设置其值
    getTranslate = function (e) {
        return lanObj[e] || e
    }
};
$(function () {
    (function e() {
        window.global_lan = localStorage.language || window.navigator.language;
        setTranslate(global_lan);
        var t = /^zh/.test(global_lan);
        $("#locale").text(t ? "en" : "cn");
        // 获取所有需要翻译的结构化数据
        var r = $("[data-trans]");
        Array.prototype.forEach.call(r, function (e) {
            var a = e.getAttribute("data-trans");
            e.textContent = getTranslate(a)
        })
        // 手动切换语言 en or zh
        $("#locale").off('click').on("click", function () {
            localStorage.setItem("language", t ? "en" : "zh");
            setTranslate(global_lan);
            e();
        });
    })()
});
           

还有更好的方案,看自己需求决定!

继续阅读