UNPKG

ilib

Version:

iLib is a cross-engine library of internationalization (i18n) classes written in pure JS

1 lines 3.75 kB
var ilib=require("./ilib.js");var Locale=require("./Locale.js");var JSUtils=require("./JSUtils.js");var Utils={};Utils.mergeLocData=function(e,i,a,t){var l=undefined;var n=i||new Locale;var g=false;var r=e;var f;l=ilib.data[e]||{};f=l;if(n.getLanguage()){r=e+"_"+n.getLanguage();if(ilib.data[r]){g=true;l=JSUtils.merge(l,ilib.data[r],a);f=ilib.data[r]}}if(n.getRegion()){r=e+"_"+n.getRegion();if(ilib.data[r]){g=true;l=JSUtils.merge(l,ilib.data[r],a);f=ilib.data[r]}}if(n.getLanguage()){r=e+"_"+n.getLanguage();if(n.getScript()){r=e+"_"+n.getLanguage()+"_"+n.getScript();if(ilib.data[r]){g=true;l=JSUtils.merge(l,ilib.data[r],a);f=ilib.data[r]}}if(n.getRegion()){r=e+"_"+n.getLanguage()+"_"+n.getRegion();if(ilib.data[r]){g=true;l=JSUtils.merge(l,ilib.data[r],a);f=ilib.data[r]}}}if(n.getRegion()&&n.getVariant()){r=e+"_"+n.getLanguage()+"_"+n.getVariant();if(ilib.data[r]){g=true;l=JSUtils.merge(l,ilib.data[r],a);f=ilib.data[r]}}if(n.getLanguage()&&n.getScript()&&n.getRegion()){r=e+"_"+n.getLanguage()+"_"+n.getScript()+"_"+n.getRegion();if(ilib.data[r]){g=true;l=JSUtils.merge(l,ilib.data[r],a);f=ilib.data[r]}}if(n.getLanguage()&&n.getRegion()&&n.getVariant()){r=e+"_"+n.getLanguage()+"_"+n.getRegion()+"_"+n.getVariant();if(ilib.data[r]){g=true;l=JSUtils.merge(l,ilib.data[r],a);f=ilib.data[r]}}if(n.getLanguage()&&n.getScript()&&n.getRegion()&&n.getVariant()){r=e+"_"+n.getLanguage()+"_"+n.getScript()+"_"+n.getRegion()+"_"+n.getVariant();if(ilib.data[r]){g=true;l=JSUtils.merge(l,ilib.data[r],a);f=ilib.data[r]}}return g?t?f:l:undefined};Utils.getLocFiles=function(e,i){var a="";var t=[];var l=i||"resources.json";var n=e||new Locale;var g=n.getLanguage();var r=n.getRegion();var f=n.getScript();var o=n.getVariant();t.push(l);if(g){a=g+"/";t.push(a+l)}if(r){a="und/"+r+"/";t.push(a+l)}if(g){if(f){a=g+"/"+f+"/";t.push(a+l)}if(r){a=g+"/"+r+"/";t.push(a+l)}}if(r&&o){a="und/"+r+"/"+o+"/";t.push(a+l)}if(g&&f&&r){a=g+"/"+f+"/"+r+"/";t.push(a+l)}if(g&&r&&o){a=g+"/"+r+"/"+o+"/";t.push(a+l)}if(g&&f&&r&&o){a=g+"/"+f+"/"+r+"/"+o+"/";t.push(a+l)}return t};Utils._callLoadData=function(e,i,a,t){if(typeof ilib._load==="function"){return ilib._load(e,i,a,t)}else if(typeof ilib._load==="object"&&typeof ilib._load.loadFiles==="function"){return ilib._load.loadFiles(e,i,a,t)}return undefined};Utils.loadData=function(e){var i="resources.json",a=undefined,t=new Locale(ilib.getLocale()),l=false,n=undefined,g={},r=undefined,f=false,o=false,s;if(!e||typeof e.callback!=="function"){return}if(e.name){i=e.name}if(e.object){a=e.object}if(e.locale){t=typeof e.locale==="string"?new Locale(e.locale):e.locale}if(e.type){n=e.type}if(e.loadParams){g=e.loadParams}if(e.sync){l=e.sync}if(e.nonlocale){f=!!e.nonlocale}if(typeof e.replace==="boolean"){o=e.replace}r=e.callback;if(a&&!a.cache){a.cache={}}if(!n){var u=i.lastIndexOf(".");n=u!==-1?i.substring(u+1):"text"}var c=(!f&&t.getSpec().replace(/-/g,"_")||"root")+","+i+","+String(JSUtils.hashCode(g));if(!a||typeof a.cache[c]==="undefined"){var d,b=g&&g.returnOne;if(n==="json"){s=i.substring(0,i.lastIndexOf("."));if(f){s=s.replace(/\//g,".").replace(/[\\\+\-]/g,"_");d=ilib.data[s]}else{d=Utils.mergeLocData(s,t,o,b)}if(d){if(a){a.cache[c]=d}r(d);return}}if(typeof ilib._load!=="undefined"){var p=f?[i||"resources.json"]:Utils.getLocFiles(t,i);if(n!=="json"){g.returnOne=true}Utils._callLoadData(p,l,g,ilib.bind(this,function(e){if(n==="json"){d=ilib.data[s]||{};for(var i=0;i<e.length;i++){if(typeof e[i]!=="undefined"){d=g.returnOne?e[i]:JSUtils.merge(d,e[i],o)}}if(a){a.cache[c]=d}r(d)}else{var i=e.length-1;while(i>-1&&!e[i]){i--}if(i>-1){if(a){a.cache[c]=e[i]}r(e[i])}else{r(undefined)}}}))}else{if(n==="json"){d=ilib.data[s]}if(a&&d){a.cache[c]=d}r(d)}}else{r(a.cache[c])}};module.exports=Utils;