{"version":3,"sources":["transposh.js"],"sourcesContent":["/* Copyright © 2009-2018 Transposh Team (website : http://transposh.org)\n *\n *\tThis program is free software; you can redistribute it and/or modify\n *\tit under the terms of the GNU General Public License as published by\n *\tthe Free Software Foundation; either version 2 of the License, or\n *\t(at your option) any later version.\n *\n *\tThis program is distributed in the hope that it will be useful,\n *\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n *\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n *\tGNU General Public License for more details.\n *\n *\tYou should have received a copy of the GNU General Public License\n *\talong with this program; if not, write to the Free Software\n *\tFoundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\n */\n\n// List of exposed functions:\n// t_jp.dgpt = do_mass_google_translate;\n// t_jp.dbt = do_mass_bing_translate;\n// t_jp.dyt = do_mass_yandex_translate;\n// t_jp.dat = do_mass_apertium_translate;\n// t_jp.tfl = test_for_lazyrun;\n// t_jp.tfju = test_for_jqueryui;\n// t_jp.at = do_auto_translate;\n\n/*global Date, Math, alert, escape, clearTimeout, document, jQuery, setTimeout, t_jp, window, _mstConfig */\n(function ($) { // closure\n var\n // this is the size of strings to queue, we don't want too much there\n BATCH_SIZE = 1024,\n // number of phrases that might be translated\n possibly_translateable,\n // ids of progress bars\n t_jp_prefix = t_jp.prefix,\n // source - 0 is human, 1 google , 2 bing, 3 apertium, 4 yandex, 5 baidu - higher reserved for future engines\n source = 1,\n //Ajax translation\n done_posted = 0, /*Timer for translation aggregation*/ timer, tokens = [], translations = [],\n loadingmsn = 0\n ;\n\n // This function fixes the page, it gets a token and translation and fixes this,\n // since here we only get the automated source, we use this to reduce the code size\n function fix_page(token, translation) {\n // Todo - Probably not needed, but in case we get bad stuff\n if ($.trim(translation).length === 0) {\n return;\n }\n // this is an inner function used to fix the images in the case of being inside the edit mode.\n // if we are not editing, no images will be found and nothing will happen.\n // even if this happens before the edit scripts adds the images, it won't matter as source is changed too and the\n // edit script will fix this\n var fix_image = function () { // handle the image changes\n var img_segment_id = $(this).attr('id').substr($(this).attr('id').lastIndexOf('_') + 1),\n img = $(\"#\" + t_jp_prefix + \"img_\" + img_segment_id);\n $(\"#\" + t_jp_prefix + img_segment_id).attr('data-source', 1); // source is 1\n img.removeClass('tr-icon-yellow').removeClass('tr-icon-green').addClass('tr-icon-yellow');\n };\n\n // might need to escape the token selectors\n token = token.replace(/([;&,\\.\\+\\*\\~':\"\\!\\^#$%@\\[\\]\\(\\)=>\\|])/g, '\\\\$1');\n //window.console && console.log(token);\n // rewrite text for all matching items at once\n $(\"*[data-orig='\" + token + \"'][data-hidden!='y']\")\n .html(translation)\n .each(fix_image);\n\n // TODO - FIX hidden elements too (need to update father's title)\n $(\"*[data-orig='\" + token + \"'][data-hidden='y']\")\n .attr('data-trans', translation)\n .each(fix_image);\n }\n\n // we have four params, here two are implicit (source =1 auto translate, lang = target language)\n function ajax_translate(token, translation) {\n // we aggregate translations together, 200ms from the last translation we will send the timer\n // so here we remove it so nothing unexpected happens\n clearTimeout(timer);\n // push translations\n tokens.push(token);\n translations.push(translation);\n // This is a change - as we fix the pages before we got actual confirmation (worked well for auto-translation)\n fix_page(token, translation);\n timer = setTimeout(function () {\n var data = {\n ln0: t_jp.lang, // implicit\n sr0: source, // implicit auto translate... 1 if google, 2 if msn\n action: 'tp_translation',\n items: tokens.length // we can do this here because all tokens will be different\n }, i;\n for (i = 0; i < tokens.length; i += 1) {\n data[\"tk\" + i] = tokens[i];\n data[\"tr\" + i] = translations[i];\n // We are pre-accounting the progress bar here - which is not very nice\n //if (source > 0) {\n done_posted += $(\"*[data-orig='\" + tokens[i].replace(/([;&,\\.\\+\\*\\~':\"\\!\\^#$%@\\[\\]\\(\\)=>\\|])/g, '\\\\$1') + \"']\").length;\n //}\n }\n $.ajax({\n type: \"POST\",\n url: t_jp.ajaxurl,\n data: data,\n success: function () {\n // Success now only updates the save progress bar (green)\n console.window && console.log(done_posted + \"/\" + possibly_translateable + \" translations posted\");\n }\n // we removed the error function, as there is no alert for automated thing, this will silently fail\n // which although bad, is what we can do for now\n });\n translations = [];\n tokens = [];\n }, 200); // wait 200 ms... -- TODO, maybe do - items*3\n }\n\n // happens on traslate success\n function auto_translate_success(token, translation) {\n ajax_translate(token, $(\"
\" + $.trim(translation) + \"
\").text());\n window.console && console.log(possibly_translateable - $(\".\" + t_jp_prefix + '[data-source=\"\"]').length + \"/\" + possibly_translateable + \" auto translated\");\n }\n\n // mass google translation - using proxy\n function do_mass_google_translate(batchtrans, callback, lang) {\n /*var sl = '';\n if (usedefault) {\n sl = t_jp.olang;\n }*/\n $.ajax({\n url: t_jp.ajaxurl,\n dataType: \"json\",\n type: \"GET\",\n // check each\n data: {\n action: 'tp_tp',\n e: 'g',\n tl: lang,\n // sl: sl,\n q: batchtrans\n },\n success: callback\n });\n }\n function do_mass_google_invoker(tokens, trans) {\n do_mass_google_translate(trans, function (result) {\n $(result.results).each(function (i) {\n auto_translate_success(tokens[i], this);\n });\n }, t_jp.lang);\n }\n\n /* // mass google translation using an api key\n function do_mass_google_api_translate(batchtrans, callback, lang) {\n $.ajax({\n url: 'https://www.googleapis.com/language/translate/v2',\n dataType: \"jsonp\",\n data: {\n key: t_jp.google_key,\n q: batchtrans,\n target: lang,\n source: t_jp.olang\n },\n traditional: true,\n success: callback\n });\n }\n function do_mass_google_api_invoker(tokens, trans) {\n do_mass_google_api_translate(trans, function (result) {\n // if there was an error we will try the other invoker\n if (typeof result.error !== 'undefined') {\n do_mass_google_invoker(tokens, trans);\n } else {\n $(result.data.translations).each(function (i) {\n auto_translate_success(tokens[i], this.translatedText);\n });\n }\n }, t_jp.lang);\n }*/\n\n // mass bing translation\n function do_mass_bing_translate(batchtrans, callback, lang) {\n if (t_jp.msn_key) {\n var q = \"[\";\n $(batchtrans).each(function (i) {\n q += '\"' + encodeURIComponent(batchtrans[i].replace(/[\\\\\"]/g, '\\\\$&').replace(/(\\r\\n|\\n|\\r)/gm, \" \")) + '\",';\n });\n q = q.slice(0, -1) + ']';\n $.ajax({\n url: '//api.microsofttranslator.com/V2/Ajax.svc/TranslateArray?appId=' + t_jp.msn_key + '&to=' + lang + '&texts=' + q,\n dataType: \"jsonp\",\n jsonp: \"oncomplete\",\n success: callback\n });\n } else {\n if (loadingmsn === 1) {\n setTimeout(function () {\n do_mass_bing_translate(batchtrans, callback, lang);\n }, 500);\n } else {\n loadingmsn = 1;\n $.getScript('//www.microsofttranslator.com/ajax/v2/toolkit.ashx?loc=en&toolbar=none', function () {\n t_jp.msn_key = _mstConfig.appId;\n do_mass_bing_translate(batchtrans, callback, lang);\n });\n }\n }\n }\n\n function do_mass_bing_invoker(tokens, trans) {\n source = 2;\n do_mass_bing_translate(trans, function (result) {\n $(result).each(function (i) {\n auto_translate_success(tokens[i], this.TranslatedText);\n });\n }, t_jp.blang);\n }\n\n // mass yandex translation - using proxy\n function do_mass_yandex_translate(batchtrans, callback, lang) {\n /*var sl = '';\n if (usedefault) {\n sl = t_jp.olang;\n }*/\n $.ajax({\n url: t_jp.ajaxurl,\n dataType: \"json\",\n type: \"GET\",\n // check each\n data: {\n action: 'tp_tp',\n e: 'y',\n tl: lang,\n // sl: sl,\n q: batchtrans\n },\n success: callback\n });\n }\n function do_mass_yandex_invoker(tokens, trans) {\n source = 4;\n do_mass_yandex_translate(trans, function (result) {\n $(result.results).each(function (i) {\n auto_translate_success(tokens[i], this);\n });\n }, t_jp.lang);\n }\n\n // mass baidu translation - using proxy\n function do_mass_baidu_translate(batchtrans, callback, lang) {\n /*var sl = '';\n if (usedefault) {\n sl = t_jp.olang;\n }*/\n $.ajax({\n url: t_jp.ajaxurl,\n dataType: \"json\",\n type: \"GET\",\n // check each\n data: {\n action: 'tp_tp',\n e: 'u',\n tl: lang,\n // sl: sl,\n q: batchtrans\n },\n success: callback\n });\n }\n function do_mass_baidu_invoker(tokens, trans) {\n source = 5;\n do_mass_baidu_translate(trans, function (result) {\n $(result.results).each(function (i) {\n auto_translate_success(tokens[i], this);\n });\n }, t_jp.lang);\n }\n\n // mass apertium translation\n function do_mass_apertium_translate(batchtrans, callback, lang) {\n $.ajax({\n url: 'http://api.apertium.org/json/translate',\n data: {\n q: batchtrans,\n langpair: t_jp.olang + '|' + lang,\n markUnknown: 'no'\n },\n dataType: \"jsonp\",\n traditional: true,\n success: callback\n });\n }\n\n function do_mass_apertium_invoker(tokens, trans) {\n source = 3;\n do_mass_apertium_translate(trans, function (result) {\n // we assume that 2xx answer should be good, 200 is good, 206 is partially good (some errors)\n if (result.responseStatus >= 200 && result.responseStatus < 300) {\n // single items get handled differently\n if (result.responseData.translatedText !== undefined) {\n auto_translate_success(tokens[0], result.responseData.translatedText);\n } else {\n $(result.responseData).each(function (i) {\n if (this.responseStatus === 200) {\n auto_translate_success(tokens[i], this.responseData.translatedText);\n }\n });\n }\n }\n }, t_jp.lang);\n }\n\n // invokes the correct mass translator based on the preferred one...\n function do_mass_invoke(batchtokens, batchtrans) {\n t_jp.preferred.some(function (engine) {\n //console.log(engine);\n if (t_jp.engines[engine]) {\n if (engine === 'a') {\n do_mass_apertium_invoker(batchtokens, batchtrans);\n }\n if (engine === 'b') {\n do_mass_bing_invoker(batchtokens, batchtrans);\n }\n if (engine === 'g') {\n do_mass_google_invoker(batchtokens, batchtrans);\n }\n if (engine === 'y') {\n do_mass_yandex_invoker(batchtokens, batchtrans);\n }\n if (engine === 'u') {\n do_mass_baidu_invoker(batchtokens, batchtrans);\n }\n return true;\n }\n });\n }\n\n //function for auto translation\n function do_auto_translate() {\n // auto_translated_previously...\n var auto_translated_phrases = [], batchlength = 0, batchtrans = [], batchtokens = [];\n\n $(\".\" + t_jp_prefix + '[data-source=\"\"]').each(function () {\n var token = $(this).attr('data-orig'),\n // we only have orig if we have some translation? so it should probably not be here... ? (or maybe for future invalidations of cached auto translations)\n to_trans = $(this).attr('data-orig');\n if (to_trans === undefined) {\n to_trans = $(this).html();\n }\n if (auto_translated_phrases[to_trans] !== 1) {\n auto_translated_phrases[to_trans] = 1;\n if (batchlength + encodeURIComponent(to_trans).length > BATCH_SIZE) {\n do_mass_invoke(batchtokens, batchtrans);\n batchlength = 0;\n batchtrans = [];\n batchtokens = [];\n }\n batchlength += encodeURIComponent(to_trans).length;\n batchtokens.push(token);\n batchtrans.push(to_trans);\n }\n });\n // this invokation is for the remaining items\n do_mass_invoke(batchtokens, batchtrans);\n }\n\n // helper function for lazy running\n function test_for_lazyrun(callback) {\n if (typeof $.xLazyLoader === 'function') {\n callback();\n } else {\n t_jp.$ = $; // We wanted the same jQuery... hmmm\n $.getScript(t_jp.plugin_url + '/js/lazy.js', callback).done(callback);\n }\n }\n\n function test_for_jqueryui(callback) {\n if (test_for_jqueryui.hit /* might be needed? - && typeof $.fn.dialog !== 'function' */) {\n callback();\n } else {\n test_for_jqueryui.hit = true;\n test_for_lazyrun(function () {\n // This is needed when old jQueryUI is being loaded (default for wp3.2)\n $.fn.propAttr = $.fn.prop || $.fn.attr;\n $.xLazyLoader({\n js: t_jp.jQueryUI + 'jquery-ui.min.js',\n css: t_jp.jQueryUI + 'themes/' + t_jp.theme + '/jquery-ui.css',\n success: callback\n });\n });\n }\n }\n\n // expose some functions\n t_jp.dgpt = do_mass_google_translate;\n //t_jp.dgt = do_mass_google_api_translate;\n t_jp.dbt = do_mass_bing_translate;\n t_jp.dyt = do_mass_yandex_translate;\n t_jp.dut = do_mass_baidu_translate;\n t_jp.dat = do_mass_apertium_translate;\n t_jp.at = do_auto_translate;\n t_jp.tfl = test_for_lazyrun;\n t_jp.tfju = test_for_jqueryui;\n\n $(function () {\n // set a global binglang (if needed)\n if (typeof t_jp.blang === 'undefined')\n t_jp.blang = t_jp.lang;\n\n // this is the set_default_language function\n // attach a function to the set_default_language link if its there\n $('.' + t_jp_prefix + 'setdeflang').on(\"click\", function () {\n $.ajax({\n url: t_jp.ajaxurl,\n data: {\n action: 'tp_cookie'\n },\n cache: false\n });\n $('.' + t_jp_prefix + 'setdeflang').hide(\"slow\");\n return false;\n });\n\n // how many phrases are yet untranslated\n possibly_translateable = $(\".\" + t_jp_prefix + '[data-source=\"\"]').length;\n\n //now = new Date();\n // we make sure script sub loaded are cached\n $.ajaxSetup({\n cache: true\n });\n // was: we'll only auto-translate and load the stuff if we either have more than 5 candidate translations, or more than one at 4am, and this language is supported...\n // we'll translate if there's any candidate...?\n if (possibly_translateable && !t_jp.noauto && !$.isEmptyObject(t_jp.engines)) {\n do_auto_translate();\n }\n\n // this is the part when we have editor support\n if (t_jp.edit) {\n $.getScript(t_jp.plugin_url + '/js/transposhedit.js');\n }\n });\n}(jQuery)); // end of closure"],"names":["$","possibly_translateable","timer","t_jp_prefix","t_jp","prefix","source","done_posted","tokens","translations","loadingmsn","ajax_translate","token","translation","fix_image","clearTimeout","push","trim","length","img_segment_id","this","attr","substr","lastIndexOf","img","removeClass","addClass","replace","html","each","setTimeout","data","ln0","lang","sr0","action","items","i","ajax","type","url","ajaxurl","success","console","window","log","auto_translate_success","text","do_mass_google_translate","batchtrans","callback","dataType","e","tl","q","do_mass_bing_translate","msn_key","encodeURIComponent","slice","jsonp","getScript","_mstConfig","appId","do_mass_yandex_translate","do_mass_baidu_translate","do_mass_apertium_translate","langpair","olang","markUnknown","traditional","do_mass_invoke","batchtokens","preferred","some","engine","engines","result","responseStatus","undefined","responseData","translatedText","TranslatedText","blang","results","do_auto_translate","auto_translated_phrases","batchlength","to_trans","test_for_lazyrun","xLazyLoader","plugin_url","done","test_for_jqueryui","hit","fn","propAttr","prop","js","jQueryUI","css","theme","dgpt","dbt","dyt","dut","dat","at","tfl","tfju","on","cache","hide","ajaxSetup","noauto","isEmptyObject","edit","jQuery"],"mappings":"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"}