| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | /*    Application Locale Module    author: tobychui    This module translate the current web application page     to the desired language specific by the browser.    Example Usage:     if (applocale){        //Applocale found. Do localization        applocale.init("../locale/file_explorer.json", function(){            applocale.translate();            //Do other init things on the page        });    }*/var applocale = {    lang: (localStorage.getItem('global_language') == null || localStorage.getItem('global_language') == "default" ? navigator.language : localStorage.getItem('global_language')).toLowerCase(),    localeFile: "",    localData: {},    init: function(localeFile, callback = undefined) {        this.localeFile = localeFile;        $.ajax({            dataType: "json",            url: localeFile,            success: function(data) {                applocale.localData = data;                if (callback != undefined) {                    callback(data);                }                                if (data.keys[applocale.lang] != undefined && data.keys[applocale.lang].fwtitle != undefined && ao_module_virtualDesktop) {                    //Update the floatwindow title as well                    ao_module_setWindowTitle(data.keys[applocale.lang].fwtitle);                }                if (data.keys[applocale.lang] != undefined && data.keys[applocale.lang].fontFamily != undefined){                    //This language has a prefered font family. Inject it                    $("h1, h2, h3, p, span, div, a, button").css({                        "font-family":data.keys[applocale.lang].fontFamily                    });                    console.log("[Applocale] Updating font family to: ", data.keys[applocale.lang].fontFamily)                }                          }        });    },    translate: function(targetLang = "") {        var targetLang = targetLang || this.lang;        //Check if the given locale exists        if (this.localData == undefined || this.localData.keys === undefined || this.localData.keys[targetLang] == undefined) {            console.log("[Applocale] This language is not supported. Using default")            return        }        //Update the page content to fit the localization        let hasTitleLocale = (this.localData.keys[targetLang].titles !== undefined);        let hasStringLocale = (this.localData.keys[targetLang].strings !== undefined);        let hasPlaceHolderLocale = (this.localData.keys[targetLang].placeholder !== undefined);        let localizedDataset =  this.localData.keys[targetLang];        $("*").each(function() {            if ($(this).attr("title") != undefined && hasTitleLocale) {                let targetString = localizedDataset.titles[$(this).attr("title")];                if (targetString != undefined) {                    $(this).attr("title", targetString);                }            }            if ($(this).attr("locale") != undefined && hasStringLocale) {                let targetString = localizedDataset.strings[$(this).attr("locale")];                if (targetString != undefined) {                    $(this).html(targetString);                }            }            if ($(this).attr("placeholder") != undefined && hasPlaceHolderLocale) {                let targetString = localizedDataset.placeholder[$(this).attr("placeholder")];                if (targetString != undefined) {                    $(this).attr("placeholder", targetString);                }            }        })        if (applocale.localData.keys[applocale.lang] != undefined && applocale.localData.keys[applocale.lang].fontFamily != undefined){            //This language has a prefered font family. Inject it            $("h1, h2, h3, p, span, div, a").css({                "font-family":applocale.localData.keys[applocale.lang].fontFamily            });        }    },    getString: function(key, original, type = "strings") {        var targetLang = this.lang;        if (this.localData.keys === undefined || this.localData.keys[targetLang] == undefined) {            return original;        }        let targetString = this.localData.keys[targetLang].strings[key];        if (targetString != undefined) {            return targetString        } else {            return original        }    }}
 |