UNPKG

automizy-js-api

Version:

JavaScript API library for Automizy Marketing Automation software

106 lines (100 loc) 3.65 kB
define([ 'automizy/core' ], function () { var i18n = function (obj) { var t = this; t.d = { language: 'en_US', file: '', hasFile: true, missingTranslates:[], translate: { 'Upload': 'UpLoad' } }; if (typeof obj !== 'undefined') { if (typeof obj.language !== 'undefined') t.language(obj.language); if (typeof obj.file !== 'undefined') t.file(obj.file); if (typeof obj.setTranslate !== 'undefined') t.setTranslate(obj.setTranslate); } }; p = i18n.prototype; p.language = function (lang) { var t = this; if (typeof lang === 'string') { t.d.language = lang; return t; } return t.d.language; }; p.file = function (file) { var t = this; if (typeof file === 'string') { t.d.file = file; $.getScript(file).done(function (script, textStatus) { console.log('Automizy.i18n database rebuilt'); }).fail(function (jqxhr, settings, exception) { console.warn('Automizy.i18n database rebuilding failed: ', exception); }); return t; } return t.d.file; }; p.setTranslate = function (obj) { var t = this; if (typeof obj !== 'undefined') { t.d.translate = obj; } return t; }; p.getTranslate = function () { return this.d.translate; }; p.translate = function (text) { var t = this; if (typeof t.d.translate[text] === 'undefined') { if ($A.d.settings.logTranslateMissings === true) { if($.inArray(text, t.d.missingTranslates) <= -1){ t.d.missingTranslates.push(text); function getErrorObject(){ try { throw Error('') } catch(err) { return err; } } var err = getErrorObject(); var callerLines = err.stack.split("\n"); var mainLine = callerLines[4]; for(var i = 0; i < callerLines.length; i++){ if(callerLines[i].substring(7, 19) === '$A.translate' || callerLines[i].substring(7, 16) === 'translate'){ mainLine = callerLines[i+1]; } } if(mainLine.slice(-1) === ')'){ var mainInfo = mainLine.substring(mainLine.indexOf('http'), mainLine.length-1); }else{ var mainInfo = mainLine.substring(mainLine.indexOf('http')); } console.warn('Missing translate: "' + text + '" - ' + mainInfo); } } } else { var text = t.d.translate[text]; } for (var i = 1; i < arguments.length; i++) { text = text.replace("%s", arguments[i]); } return text; }; $A.m.i18n = i18n; $A.d.i18n = new $A.m.i18n(); $A.translate = function(){ return $A.d.i18n.translate.apply($A.d.i18n, arguments); }; $A.setTranslate = function(){ return $A.d.i18n.setTranslate.apply($A.d.i18n, arguments); }; $A.getTranslate = function(){ return $A.d.i18n.getTranslate.apply($A.d.i18n, []); }; });