123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /*
- 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'),
- localeFile: "",
- localData: {},
- init: function(localeFile, callback = undefined) {
- applocale.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);
- }
- }
- });
- },
- translate: function(targetLang = "") {
- var targetLang = targetLang || applocale.lang;
- //Check if the given locale exists
- if (applocale.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 = (applocale.localData.keys[targetLang].titles !== undefined);
- let hasStringLocale = (applocale.localData.keys[targetLang].strings !== undefined);
- let hasPlaceHolderLocale = (applocale.localData.keys[targetLang].placeholder !== undefined);
- $("*").each(function() {
- if ($(this).attr("title") != undefined && hasTitleLocale) {
- let targetString = applocale.localData.keys[targetLang].titles[$(this).attr("title")];
- if (targetString != undefined) {
- $(this).attr("title", targetString);
- }
- }
- if ($(this).attr("locale") != undefined && hasStringLocale) {
- let targetString = applocale.localData.keys[targetLang].strings[$(this).attr("locale")];
- if (targetString != undefined) {
- $(this).html(targetString);
- }
- }
- if ($(this).attr("placeholder") != undefined && hasPlaceHolderLocale) {
- let targetString = applocale.localData.keys[targetLang].placeholder[$(this).attr("placeholder")];
- if (targetString != undefined) {
- $(this).attr("placeholder", targetString);
- }
- }
- })
- },
- getString: function(key, original, type = "strings") {
- var targetLang = applocale.lang;
- if (applocale.localData.keys[targetLang] == undefined) {
- return original;
- }
- let targetString = applocale.localData.keys[targetLang].strings[key];
- if (targetString != undefined) {
- return targetString
- } else {
- return original
- }
- }
- }
|