diff options
Diffstat (limited to 'sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/vendor/i18n/i18n.js')
-rw-r--r-- | sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/vendor/i18n/i18n.js | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/vendor/i18n/i18n.js b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/vendor/i18n/i18n.js new file mode 100644 index 000000000..de0fc5178 --- /dev/null +++ b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/vendor/i18n/i18n.js @@ -0,0 +1,93 @@ +(function() { + /** + * provides text formatting and i18n key storage features<br> + * implements most of the Sun Java MessageFormat functionality. + * @see <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/MessageFormat.html" target="sun">Sun's Documentation</a> + */ + + var keys = {}; + + var format = function(message, args) { + var substitute = function() { + var format = arguments[1].split(','); + var substr = escape(args[format.shift()]); + if(format.length === 0) { + return substr; // simple substitution eg {0} + } + switch(format.shift()) { + case "number" : return (new Number(substr)).toLocaleString(); + case "date" : return (new Date(+substr)).toLocaleDateString(); // date and time require milliseconds since epoch + case "time" : return (new Date(+substr)).toLocaleTimeString(); // eg i18n.text("Key", +(new Date())); for current time + } + var styles = format.join("").split("|").map(function(style) { + return style.match(/(-?[\.\d]+)(#|<)([^{}]*)/); + }); + var match = styles[0][3]; + for(var i=0; i<styles.length; i++) { + if((styles[i][2] === "#" && (+styles[i][1]) === (+substr)) || + (styles[i][2] === "<" && ((+styles[i][1]) < (+substr)))) { + match = styles[i][3]; + } + } + return match; + }; + + return message && message.replace(/'(')|'([^']+)'|([^{']+)|([^']+)/g, function(x, sq, qs, ss, sub) { + do {} while(sub && (sub !== (sub = (sub.replace(/\{([^{}]+)\}/, substitute))))); + return sq || qs || ss || unescape(sub); + }); + }; + + this.i18n = { + + setKeys: function(strings) { + for(var key in strings) { + keys[key] = strings[key]; + } + }, + + text: function() { + var args = Array.prototype.slice.call(arguments), + key = keys[args.shift()]; + if(args.length === 0) { + return key; + } + return format(key, args); + }, + + complex: function() { + var args = Array.prototype.slice.call(arguments), + key = keys[args.shift()], + ret = [], + replacer = function(x, pt, sub) { ret.push(pt || args[+sub]); return ""; }; + do {} while(key && key !== (key = key.replace(/([^{]+)|\{(\d+)\}/, replacer ))); + return ret; + } + + }; + +})(); + +(function() { + var nav = window.navigator; + var userLang = ( nav.languages && nav.languages[0] ) || nav.language || nav.userLanguage; + var scripts = document.getElementsByTagName('script'); + var data = scripts[ scripts.length - 1].dataset; + if( ! data["langs"] ) { + return; + } + var langs = data["langs"].split(/\s*,\s*/); + var script0 = scripts[0]; + function install( lang ) { + var s = document.createElement("script"); + s.src = data["basedir"] + "/" + lang + '_strings.js'; + s.async = false; + script0.parentNode.appendChild(s); + script0 = s; + } + + install( langs.shift() ); // always install primary language + userLang && langs + .filter( function( lang ) { return userLang.indexOf( lang ) === 0; } ) + .forEach( install ); +}()); |