diff --git a/core/template_files/js/xtr-translator/demo/index.html b/core/template_files/js/xtr-translator/demo/index.html new file mode 100644 index 0000000..db1e695 --- /dev/null +++ b/core/template_files/js/xtr-translator/demo/index.html @@ -0,0 +1,82 @@ + + + + + + + + +jQuery xtr.js plugin Demo + + + +
+
+ +
+
+
+
+
+
+

jQuery xtr.js plugin Demo

+
Welcome
+
Hello
+
Good Bye
+ + + +
+ + + + + + + \ No newline at end of file diff --git a/core/template_files/js/xtr-translator/demo/styles.css b/core/template_files/js/xtr-translator/demo/styles.css new file mode 100644 index 0000000..a6ed151 --- /dev/null +++ b/core/template_files/js/xtr-translator/demo/styles.css @@ -0,0 +1,27 @@ + +#wrapper { + font: 16px/18px Calibri; + margin: 0 auto; + width: 200px; + text-align: center +} + +#wrapper div { + background: #28b7ff; + padding: 15px; + margin: 10px; + text-align: center +} + +label { + font-weight: 700; + margin: 25px 0 5px; + display: block +} + +select { + width: 100%; + height: 30px; + outline: 0; + cursor: pointer +} diff --git a/core/template_files/js/xtr-translator/demo/styles.less b/core/template_files/js/xtr-translator/demo/styles.less new file mode 100644 index 0000000..a26f8be --- /dev/null +++ b/core/template_files/js/xtr-translator/demo/styles.less @@ -0,0 +1,23 @@ +#wrapper { + font: 16px / 18px Calibri; + margin: 0 auto; + width: 200px; + text-align: center; + div { + background: #28b7ff; + padding: 15px; + margin: 10px; + text-align: center; + } +} +label { + font-weight: bold; + margin: 25px 0 5px; + display: block; +} +select { + width: 100%; + height: 30px; + outline: none; + cursor: pointer; +} \ No newline at end of file diff --git a/core/template_files/js/xtr-translator/dictonary.js b/core/template_files/js/xtr-translator/dictonary.js new file mode 100644 index 0000000..ff3df08 --- /dev/null +++ b/core/template_files/js/xtr-translator/dictonary.js @@ -0,0 +1,8 @@ +var data = { + "close": { + en: "close", + hu: "Bezar", + it: "Vicino" + }, + +}; diff --git a/core/template_files/js/xtr-translator/jquery.xtr.js b/core/template_files/js/xtr-translator/jquery.xtr.js new file mode 100644 index 0000000..90458ba --- /dev/null +++ b/core/template_files/js/xtr-translator/jquery.xtr.js @@ -0,0 +1,88 @@ +/*! + * July 2017 + * xtr 1.0.0 + * @author Mario Vidov + * @url http://vidov.it + * @twitter MarioVidov + * MIT license +*/ + +(function($) { + var pluginName = 'xtr'; + + var settings = { + default: 'en', + lang: 'en', + regExp: { + '': /\s/g, + '_': /[&<>"'`\/=]/g + } + }; + + var config = { + defaultClass: 'data-xtr-default', + langClass: 'data-xtr-lang', + langKey : 'data-xtr-key', + langOrig : 'data-xtr-original' + }; + + function Plugin(element, options) { + options = options || {}; + this.$element = $(element); + this.options = $.extend(true, {}, settings, options); + this.selector = '[xtr]'; + this.regExp = this.options.regExp; + this.default = this.options.default; + this.t = this.options.t; + this.l = this.options.lang; + + this.$element.attr(config.langClass, this.l) + .attr(config.defaultClass, this.default); + this.init(); + } + + Plugin.prototype.lang = function(l) { + if (l && l === 'reset') { + this.l = this.default; + } else if (l) { + this.l = l; + } + this.init(); + }; + + Plugin.prototype.set = function(index) { + var $el = $('[' + config.langKey + '="' + index + '"]'); + var original = $el && $el.attr(config.langOrig) || index; + return (this.t && this.t[index] && this.t[index][this.l]) ? this.t[index][this.l] : original; + }; + + Plugin.prototype.init = function() { + var self = this; + this.$element.attr(config.langClass, this.l); + $(self.selector).add('[' + config.langKey + ']').each(function () { + var $this = $(this); + var key = $this.attr(config.langKey); + var original = $this.attr(config.langOrig); + var text = $this.text(); + if (!key) { + key = text; + for (var i in self.regExp) { + key = key.replace(self.regExp[i], i); + } + $this.attr(config.langKey, key); + } + if (!original) { + $this.attr(config.langOrig, text); + } + $this.html(self.set(key)); + }); + }; + + $.fn[pluginName] = function (options) { + return this.each(function () { + if (!$.data(this, 'plugin_' + pluginName)) { + $.data(this, 'plugin_' + pluginName, new Plugin(this, options)); + } + }); + }; +})(jQuery); diff --git a/core/template_files/js/xtr-translator/jquery.xtr.min.js b/core/template_files/js/xtr-translator/jquery.xtr.min.js new file mode 100644 index 0000000..9a8431b --- /dev/null +++ b/core/template_files/js/xtr-translator/jquery.xtr.min.js @@ -0,0 +1 @@ +(function(t){var i="xtr";var a={"default":"en",lang:"en",regExp:{"":/\s/g,_:/[&<>"'`\/=]/g}};var e={defaultClass:"data-xtr-default",langClass:"data-xtr-lang",langKey:"data-xtr-key",langOrig:"data-xtr-original"};function s(i,s){s=s||{};this.$element=t(i);this.options=t.extend(true,{},a,s);this.selector="[xtr]";this.regExp=this.options.regExp;this.default=this.options.default;this.t=this.options.t;this.l=this.options.lang;this.$element.attr(e.langClass,this.l).attr(e.defaultClass,this.default);this.init()}s.prototype.lang=function(t){if(t&&t==="reset"){this.l=this.default}else if(t){this.l=t}this.init()};s.prototype.set=function(i){var a=t("["+e.langKey+'="'+i+'"]');var s=a&&a.attr(e.langOrig)||i;return this.t&&this.t[i]&&this.t[i][this.l]?this.t[i][this.l]:s};s.prototype.init=function(){var i=this;this.$element.attr(e.langClass,this.l);t(i.selector).add("["+e.langKey+"]").each(function(){var a=t(this);var s=a.attr(e.langKey);var n=a.attr(e.langOrig);var r=a.text();if(!s){s=r;for(var l in i.regExp){s=s.replace(i.regExp[l],l)}a.attr(e.langKey,s)}if(!n){a.attr(e.langOrig,r)}a.html(i.set(s))})};t.fn[i]=function(a){return this.each(function(){if(!t.data(this,"plugin_"+i)){t.data(this,"plugin_"+i,new s(this,a))}})}})(jQuery); \ No newline at end of file