Best practice javascript and multilanguage

后端 未结 9 1901
走了就别回头了
走了就别回头了 2020-11-29 17:37

what is the best practice for multilanguage website using DOM Manipulating with javascript? I build some dynamic parts of the website using javascript. My first thought was

9条回答
  •  栀梦
    栀梦 (楼主)
    2020-11-29 17:51

    function Language(lang)
    {
        var __construct = function() {
            if (eval('typeof ' + lang) == 'undefined')
            {
                lang = "en";
            }
            return;
        }()
    
        this.getStr = function(str, defaultStr) {
            var retStr = eval('eval(lang).' + str);
            if (typeof retStr != 'undefined')
            {
                return retStr;
            } else {
                if (typeof defaultStr != 'undefined')
                {
                    return defaultStr;
                } else {
                    return eval('en.' + str);
                }
            }
        }
    }
    

    After adding this to your page, you can work with it like this:

    var en = {
        SelPlace:"Select this place?",
        Save:"Saved."
    };
    
    var tr = {
        SelPlace:"Burayı seçmek istiyor musunuz?"
    };
    
    var translator = new Language("en");
    alert(translator.getStr("SelPlace")); // result: Select this place?
    alert(translator.getStr("Save")); // result: Saved.
    alert(translator.getStr("DFKASFASDFJK", "Default string for non-existent string")); // result: Default string for non-existent string
    
    var translator = new Language("tr");
    alert(translator.getStr("SelPlace")); // result: Burayı seçmek istiyor musunuz?
    alert(translator.getStr("Save")); // result: Saved. (because it doesn't exist in this language, borrowed from english as default)
    alert(translator.getStr("DFKASFASDFJK", "Default string for non-existent string")); // result: Default string for non-existent string
    

    If you call the class with a language that you haven't defined, English(en) will be selected.

提交回复
热议问题