/
jqueryTranslator.min.js
1 lines (1 loc) · 2.03 KB
/
jqueryTranslator.min.js
1
(function(a,b,c,d){var e={initialize:function(b,c){var d=this,e=d.getUserLanguage();d.loaded=a.Deferred();d.translatable=true;d.options=a.extend({},a.fn.jqTranslate.options,c);if(typeof b==="string")d.packages.push(b);else d.packages=b;if(d.isTranslatable(e))d.loadLanguages();else d.translatable=false;return d.loaded.promise()},getUserLanguage:function(){var b=navigator.language||navigator.userLanguage;b=b.replace(/_/,"-").toLowerCase();if(b.length>3){b=b.substring(0,3)+b.substring(3).toUpperCase();this.languages=[b.substring(0,2),b.substring(3).toUpperCase()]}else this.languages=[b];a.fn.jqTranslate.userLang=b;return b},isTranslatable:function(a){if(this.options.defaultLang===a)return false;else return this.options.skip.indexOf(a)===-1},loadLanguages:function(){var b=0,c=e.languages.length*e.packages.length;this.translatedStrings={};a.each(e.packages,function(d,f){var g=f;a.each(e.languages,function(a,d){e.getLanguage(g,d).done(e.storeLangFile).always(function(){b++;if(b>=c)e.loaded.resolve()})})})},getLanguage:function(b,c){var d=this,e="";if(d.options.path){e=d.options.path+"/"}e+=[b,c].join("-")+".json";return a.ajax({url:e,dataType:"json",cache:d.options.cache})},storeLangFile:function(b){a.extend(e.translatedStrings,b)},translate:function(){var b=a(this),c=b.data("translate");if(e.translatable){if(e.translatedStrings[c]){if(e.translatedStrings[c].length===d){e.translateElement(b,e.translatedStrings[c].text);delete e.translatedStrings[c].text;b.attr(e.translatedStrings[c])}else e.translateElement(b,e.translatedStrings[c])}}if(typeof e.options.onComplete==="function")e.options.onComplete.apply(this,arguments);return b},translateElement:function(a,b){if(a.is("input")){if(a.is("[placeholder]"))a.attr("placeholder",b);else a.val(b)}else if(a.is("optgroup")){a.attr("label",b)}else if(a.is("img")){a.attr("alt",b)}else{a.html(b)}}};a.fn.jqTranslate=function(a,b){var c=this;e.initialize(a,b).done(function(){return c.each(e.translate)})};a.fn.jqTranslate.options={path:null,defaultLang:null,skip:[],cache:true,onComplete:null}})(jQuery,window,document)