jquery.i18n.properties-min-1.0.9.js 5.17 KB
!function($){function loadAndParseFile(a,b){$.ajax({url:a,async:!1,cache:b.cache,contentType:"text/plain;charset="+b.encoding,dataType:"text",success:function(a){parseData(a,b.mode)}})}function parseData(data,mode){var i,pair,name,value,s,unicodeMatches,u,parts,first,fnArgs,usedArgs,p,fnExpr,parsed="",parameters=data.split(/\n/),regPlaceHolder=/(\{\d+\})/g,regRepPlaceHolder=/\{(\d+)\}/g,unicodeRE=/(\\u.{4})/gi;for(i=0;i<parameters.length;i++)if(parameters[i]=parameters[i].replace(/^\s\s*/,"").replace(/\s\s*$/,""),parameters[i].length>0&&"#"!=parameters[i].match("^#")&&(pair=parameters[i].split("="),pair.length>0)){for(name=unescape(pair[0]).replace(/^\s\s*/,"").replace(/\s\s*$/,""),value=1==pair.length?"":pair[1];"\\"==value.match(/\\$/);)value=value.substring(0,value.length-1),value+=parameters[++i].replace(/\s\s*$/,"");for(s=2;s<pair.length;s++)value+="="+pair[s];if(value=value.replace(/^\s\s*/,"").replace(/\s\s*$/,""),"map"==mode||"both"==mode){if(unicodeMatches=value.match(unicodeRE))for(u=0;u<unicodeMatches.length;u++)value=value.replace(unicodeMatches[u],unescapeUnicode(unicodeMatches[u]));$.i18n.map[name]=value}if("vars"==mode||"both"==mode)if(value=value.replace(/"/g,'\\"'),checkKeyNamespace(name),regPlaceHolder.test(value)){for(parts=value.split(regPlaceHolder),first=!0,fnArgs="",usedArgs=[],p=0;p<parts.length;p++)!regPlaceHolder.test(parts[p])||0!=usedArgs.length&&-1!=usedArgs.indexOf(parts[p])||(first||(fnArgs+=","),fnArgs+=parts[p].replace(regRepPlaceHolder,"v$1"),usedArgs.push(parts[p]),first=!1);parsed+=name+"=function("+fnArgs+"){",fnExpr='"'+value.replace(regRepPlaceHolder,'"+v$1+"')+'"',parsed+="return "+fnExpr+";"+"};"}else parsed+=name+'="'+value+'";'}eval(parsed)}function checkKeyNamespace(key){var fullname,names,i,regDot=/\./;if(regDot.test(key))for(fullname="",names=key.split(/\./),i=0;i<names.length;i++)i>0&&(fullname+="."),fullname+=names[i],eval("typeof "+fullname+' == "undefined"')&&eval(fullname+"={};")}function getFiles(a){return a&&a.constructor==Array?a:[a]}function normaliseLanguageCode(a){return a=a.toLowerCase(),a.length>3&&(a=a.substring(0,3)+a.substring(3).toUpperCase()),a}function unescapeUnicode(a){var d,e,b=[],c=parseInt(a.substr(2),16);for(c>=0&&c<Math.pow(2,16)&&b.push(c),d="",e=0;e<b.length;++e)d+=String.fromCharCode(b[e]);return d}$.i18n={},$.i18n.map={},$.i18n.properties=function(a){var c,b={name:"Messages",language:"",path:"",mode:"vars",cache:!1,encoding:"UTF-8",callback:null};for(a=$.extend(b,a),(null===a.language||""==a.language)&&(a.language=$.i18n.browserLang()),null===a.language&&(a.language=""),c=getFiles(a.name),i=0;i<c.length;i++)loadAndParseFile(a.path+c[i]+".properties",a),a.language.length>=2&&a.language.length<5&&loadAndParseFile(a.path+c[i]+"_"+a.language.substring(0,2)+".properties",a),a.language.length>=5&&loadAndParseFile(a.path+c[i]+"_"+a.language.substring(0,5)+".properties",a);a.callback&&a.callback()},$.i18n.prop=function(a){var c,e,f,d,g,b=$.i18n.map[a];if(null==b)return"["+a+"]";if("string"==typeof b){for(c=0;-1!=(c=b.indexOf("\\",c));)b="t"==b[c+1]?b.substring(0,c)+"	"+b.substring(c++ +2):"r"==b[c+1]?b.substring(0,c)+"\r"+b.substring(c++ +2):"n"==b[c+1]?b.substring(0,c)+"\n"+b.substring(c++ +2):"f"==b[c+1]?b.substring(0,c)+"\f"+b.substring(c++ +2):"\\"==b[c+1]?b.substring(0,c)+"\\"+b.substring(c++ +2):b.substring(0,c)+b.substring(c+1);for(d=[],c=0;c<b.length;)if("'"==b[c])if(c==b.length-1)b=b.substring(0,c);else if("'"==b[c+1])b=b.substring(0,c)+b.substring(++c);else{for(e=c+2;-1!=(e=b.indexOf("'",e));){if(e==b.length-1||"'"!=b[e+1]){b=b.substring(0,c)+b.substring(c+1,e)+b.substring(e+1),c=e-1;break}b=b.substring(0,e)+b.substring(++e)}-1==e&&(b=b.substring(0,c)+b.substring(c+1))}else"{"==b[c]?(e=b.indexOf("}",c+1),-1==e?c++:(f=parseInt(b.substring(c+1,e)),!isNaN(f)&&f>=0?(g=b.substring(0,c),""!=g&&d.push(g),d.push(f),c=0,b=b.substring(e+1)):c=e+1)):c++;""!=b&&d.push(b),b=d,$.i18n.map[a]=d}if(0==b.length)return"";if(1==b.lengh&&"string"==typeof b[0])return b[0];for(g="",c=0;c<b.length;c++)g+="string"==typeof b[c]?b[c]:b[c]+1<arguments.length?arguments[b[c]+1]:"{"+b[c]+"}";return g},$.i18n.browserLang=function(){return normaliseLanguageCode(navigator.language||navigator.userLanguage)};var cbSplit;cbSplit||(cbSplit=function(a,b,c){if("[object RegExp]"!==Object.prototype.toString.call(b))return"undefined"==typeof cbSplit._nativeSplit?a.split(b,c):cbSplit._nativeSplit.call(a,b,c);var g,h,i,j,d=[],e=0,f=(b.ignoreCase?"i":"")+(b.multiline?"m":"")+(b.sticky?"y":""),b=RegExp(b.source,f+"g");if(a+="",cbSplit._compliantExecNpcg||(g=RegExp("^"+b.source+"$(?!\\s)",f)),void 0===c||0>+c)c=1/0;else if(c=Math.floor(+c),!c)return[];for(;(h=b.exec(a))&&(i=h.index+h[0].length,!(i>e&&(d.push(a.slice(e,h.index)),!cbSplit._compliantExecNpcg&&h.length>1&&h[0].replace(g,function(){for(var a=1;a<arguments.length-2;a++)void 0===arguments[a]&&(h[a]=void 0)}),h.length>1&&h.index<a.length&&Array.prototype.push.apply(d,h.slice(1)),j=h[0].length,e=i,d.length>=c)));)b.lastIndex===h.index&&b.lastIndex++;return e===a.length?(j||!b.test(""))&&d.push(""):d.push(a.slice(e)),d.length>c?d.slice(0,c):d},cbSplit._compliantExecNpcg=void 0===/()??/.exec("")[1],cbSplit._nativeSplit=String.prototype.split),String.prototype.split=function(a,b){return cbSplit(this,a,b)}}(jQuery);