用户工具

站点工具


jsutls

JS Utils 工具类

集合了一些常用的方法,采用了es6语法 var utils = require('utils/utils.js');

使用说明

初始化:new translation().init("en"); //传入需要使用的语言名称

调用:new translation().tr("dinghui");

占位符匹配:new translation().tr("ding%1hui%2","str1","str2");

资源引入

<script src="translation.js"></script>

JS部分

(function(window, document) {

    var translation = function() {
        // this.init();
    };

    translation.prototype = {
        default: "en",
        init: function(language) {
            console.log("初始化");
            window.languagename = language ? language : this.default;

            var that = this;
            var ajax = new XMLHttpRequest();
            ajax.open('get', 'translation/' + window.languagename + '.json');
            ajax.send();
            ajax.onreadystatechange = function() {
                if (ajax.readyState == 4 && ajax.status == 200) {
                    var data = that.getJsonObject(ajax.responseText)
                    console.log(data)
                    window.languagename = data.name;
                    window.languagelist = data.list;
                }
            }
        },
        getJsonObject: function(p) {
            var res = null;

            if (typeof(p) == "object") {
                return p;
            } else if (typeof(p) == "string") {
                try {
                    return JSON.parse(p);
                } catch (e) {
                    return p;
                }
            }
            return null;
        },
        tr() {
            for (var i = 0; i < arguments.length; i++) {
                if (typeof(arguments[i]) !== "string") {
                    throw err = new Error('Incorrect parameter type');
                }
            }
            return this.getMsgstr(arguments);
        },
        getMsgstr: function(argument) {
            var msgid = argument[0];
            var msgstr = msgid;
            var languagelist = window.languagelist;
            for (var i = 0; i < languagelist.length; i++) {
                if (languagelist[i].msgid == msgid) {
                    msgstr = this.msgEscape(languagelist[i], argument);
                    break;
                }
            }
            return msgstr;
        },
        msgEscape: function() {
            var msgid = arguments[0].msgid;
            var msgstr = arguments[0].msgstr;
            var escapelist = msgid.match(/[%]\d+/g) ? msgid.match(/[%]\d+/g) : [];
            for (var i = 0; i < escapelist.length; i++) {
                if (arguments[1][parseInt(escapelist[i].substring(1))]) {
                    msgstr = msgstr.replace(escapelist[i], this.tr(arguments[1][parseInt(escapelist[i].substring(1))]));
                }
            }

            return msgstr
        }
    }

    window.translation = translation;

    new translation().init("en");

}(window, document));

json部分

zh.json(中文翻译文件)
{
    "name": "zh",
    "list": [{
        "msgid": "my name dinghui",
        "msgstr": "我的名字丁辉"
    }, {
        "msgid": "dinghui",
        "msgstr": "丁辉"
    }, {
        "msgid": "ding%1hui%2",
        "msgstr": "丁%1辉%2"
    }]
}

en.json(英文翻译文件)
{
    "name": "en",
    "list": [{
        "msgid": "my name dinghui",
        "msgstr": "my name dinghui"
    }, {
        "msgid": "dinghui",
        "msgstr": "dinghui"
    }, {
        "msgid": "ding%1hui%2",
        "msgstr": "ding%1hui%2"
    }]
}
jsutls.txt · 最后更改: 2021/12/23 17:19 (外部编辑)