Update translation scripts

This commit is contained in:
Gres 2020-03-20 21:44:46 +03:00
parent 2bf5515b0b
commit 0da289e16f
7 changed files with 187 additions and 203 deletions

View File

@ -1,41 +1,42 @@
var isPageLoaded = false;
var isTranslationFinished = false; // async translation request
var isScheduled = false;
var lastText = '';
var active = window.location.href !== "about:blank";
function checkFinished () {
if (!isPageLoaded || !isTranslationFinished || isScheduled) return;
isScheduled = true;
setTimeout(function () {
var text = document.querySelector ('#tta_output_ta').value;
console.log (text);
st_wtp.translated (text);
isTranslationFinished = isScheduled = false;
}, 2000); // wait for gui fill
function checkFinished() {
if (!active) return;
let area = document.querySelector('#tta_output_ta')
if (!area)
return;
let text = area.value.trim();
if (text === lastText || text === lastText + ' ...' || text === '' || text === '...')
return;
console.log('translated text', text, 'old', lastText, 'size', text.length, lastText.length);
lastText = text;
active = false;
proxy.setTranslated(text);
}
function onResourceLoad (url) {
if (url.indexOf ('bing.com/translator/?') > -1) {
isTranslationFinished = true;
if (isPageLoaded) {
checkFinished ();
}
}
}
st_wtp.resourceLoaded.connect (onResourceLoad);
function onPageLoad () {
if (window.location.href.indexOf('about:blank') === 0) {
translate ();
function translate(text, from, to) {
console.log('start translate', text, from, to)
active = true;
if (window.location.href.indexOf('bing.com/translator') !== -1
&& window.location.href.indexOf('&to=' + to + '&') !== -1) {
document.querySelector('textarea#tta_input_ta').value = text;
document.querySelector('textarea#tta_input_ta').dispatchEvent(
new Event("input", { bubbles: true, cancelable: true }));
return;
}
isPageLoaded = true;
if (isTranslationFinished) {
checkFinished ();
}
}
window.onload = onPageLoad();
let url = 'https://www.bing.com/translator/?from=auto&to=' + to + '&text=' + text;
console.log("setting url", url);
window.location = encodeURI(url);
function translate (){
var url = 'https://bing.com/translator/?from=auto&to=' + st_wtp.resultLanguage +
'&text=' + st_wtp.sourceText;
window.location = encodeURI (url);
}
function init() {
proxy.translate.connect(translate);
setInterval(checkFinished, 300);
}

View File

@ -1,71 +1,54 @@
var isPageLoaded = false;
var isTranslationFinished = false; // async translation request
var isScheduled = false;
var lastText = '';
var active = window.location.href !== "about:blank";
function checkFinished() {
if (!isPageLoaded || !isTranslationFinished || isScheduled) return;
isScheduled = true;
setTimeout(function () {
var area = document.querySelector('.lmt__target_textarea');
var text = area ? area.value : '';
console.log('result text', text);
st_wtp.translated(text);
isTranslationFinished = isScheduled = false;
}, 2000); // wait for gui fill
if (!active) return;
let area = document.querySelector('textarea[dl-test=translator-target-input]');
let text = area ? area.value : '';
if (text === lastText || text === '')
return;
console.log('translated text', text, 'old', lastText, 'size', text.length, lastText.length);
lastText = text;
active = false;
proxy.setTranslated(text);
}
var timeout = null;
function onResourceLoad(url) {
if (url.indexOf('www2.deepl.com/jsonrpc') > -1) {
if (timeout !== null) {
console.log('clear resource timeout');
clearTimeout(timeout);
}
timeout = setTimeout(function () {
console.log('last resource loaded');
isTranslationFinished = true;
if (isPageLoaded) {
checkFinished();
}
}, 500);
}
}
st_wtp.resourceLoaded.connect(onResourceLoad);
function translate(text, from, to) {
console.log('start translate', text, from, to)
from = from == 'zh-CN' ? 'zh' : from;
to = to == 'zh-CN' ? 'zh' : to;
function onPageLoad() {
console.log('page loaded');
isPageLoaded = true;
if (isTranslationFinished) {
checkFinished();
let supported = ['ru', 'en', 'de', 'fr', 'es', 'pt', 'it', 'nl', 'pl', 'ja', 'zh']
if (supported.indexOf(from) == -1) {
proxy.setFailed('Source language not supported');
return;
}
}
window.onload = onPageLoad();
function translate() {
var langs = {
'eng': 'en',
"rus": 'ru',
"deu": 'de',
"spa": 'es',
"por": 'pt',
"ita": 'it',
"pol": 'pl'
}
if (langs[st_wtp.sourceLanguage] == undefined) {
st_wtp.translated('');
if (supported.indexOf(to) == -1) {
proxy.setFailed('Target language not supported');
return;
}
if (window.location.href.indexOf('www.deepl.com/translator') === -1) {
var url = 'https://www.deepl.com/translator#' +
langs[st_wtp.sourceLanguage] + '/' + st_wtp.resultLanguage + '/' +
st_wtp.sourceText.replace("\n", " ");
window.location = encodeURI(url);
active = true;
let langs = from + '/' + to + '/';
if (window.location.href.indexOf('www.deepl.com/translator') !== -1
&& window.location.href.indexOf(langs) !== -1) {
document.querySelector('textarea[dl-test=translator-source-input]').value = text;
document.querySelector('textarea[dl-test=translator-source-input]').dispatchEvent(
new Event("input", { bubbles: true, cancelable: true }));
return;
}
var input = document.querySelector('.lmt__source_textarea');
input.value = st_wtp.sourceText.replace("\n", " ");
input.dispatchEvent(new Event('change'));
let url = 'https://www.deepl.com/translator#' + langs +
text.replace('\n', ' ').replace('|', '');
console.log("setting url", url);
window.location = encodeURI(url);
}
function init() {
proxy.translate.connect(translate);
setInterval(checkFinished, 300);
}

View File

@ -1,41 +1,41 @@
var lastText = '';
var active = window.location.href !== "about:blank";
function checkFinished () {
function checkFinished() {
if (!active) return;
let spans = [].slice.call (document.querySelectorAll ('span.translation > span, #result_box > span'));
let text = spans.reduce (function (res, i) {
let spans = [].slice.call(document.querySelectorAll('span.translation > span, #result_box > span'));
let text = spans.reduce(function (res, i) {
return res + ' ' + i.innerText;
}, '');
if (text === lastText || text === '')
return;
console.log ('translated text', text, 'old', lastText, 'size', text.length, lastText.length);
console.log('translated text', text, 'old', lastText, 'size', text.length, lastText.length);
lastText = text;
active = false;
proxy.setTranslated (text);
proxy.setTranslated(text);
}
function translate (text, from, to){
function translate(text, from, to) {
console.log('start translate', text, from, to)
active = true;
if (window.location.href.indexOf('//translate.google') !== -1
&& window.location.href.indexOf('&tl='+to+'&') !== -1) {
document.querySelector('textarea#source').value=text;
&& window.location.href.indexOf('&tl=' + to + '&') !== -1) {
document.querySelector('textarea#source').value = text;
return;
}
// var url = 'https://translate.google.com/#auto/' + to + '/' + text;
// let url = 'https://translate.google.com/#auto/' + to + '/' + text;
let url = 'https://translate.google.com/#view=home&op=translate&sl=auto&tl=' + to + '&text=' + text;
console.log("setting url", url);
window.location = encodeURI (url);
window.location = encodeURI(url);
}
function init() {
proxy.translate.connect (translate);
proxy.translate.connect(translate);
setInterval(checkFinished, 300);
}

View File

@ -1,27 +1,30 @@
function httpGetAsync(theUrl, callback)
{
console.log(theUrl);
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
callback(xmlHttp.responseText);
}
xmlHttp.open("GET", theUrl, true);
xmlHttp.send(null);
function httpGetAsync(url, callback) {
let xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
callback(xmlHttp.responseText);
}
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}
function translate (){
var url = 'https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl='
+ st_wtp.resultLanguage + '&dt=t&q=' + st_wtp.sourceText;
httpGetAsync(url, function(responce) {
console.log(responce);
var object = JSON.parse(responce);
var result = '';
object[0].forEach(function(element) {
result += element[0] + ' ';
});
console.log(object);
st_wtp.translated (result);
function translate(text, from, to) {
console.log('start translate', text, from, to)
let url = 'https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=' + to + '&dt=t&q=' + text;
console.log("loading url", url);
httpGetAsync(url, function (response) {
console.log('received', response);
let object = JSON.parse(response);
let result = '';
object[0].forEach(function (element) {
result += element[0] + ' ';
});
proxy.setTranslated(result);
});
}
function init() {
proxy.translate.connect(translate);
}

View File

@ -1,69 +1,65 @@
var isPageLoaded = false;
var isTranslationFinished = false; // async translation request
var isScheduled = false;
var lastText = '';
var active = window.location.href !== "about:blank";
function getText() {
let spans = [].slice.call(document.querySelectorAll('#txtTarget span'));
let text = spans.reduce(function (res, i) {
return res + i.innerText + ' ';
}, '');
return text.trim()
}
function checkFinished() {
if (!isPageLoaded || !isTranslationFinished || isScheduled) return;
isScheduled = true;
setTimeout(function () {
var spans = [].slice.call (document.querySelectorAll ('#txtTarget span'));
var text = spans.reduce (function (res, i) {
return res + i.innerText + ' ';
}, '');
console.log('result text', text);
st_wtp.translated(text);
isTranslationFinished = isScheduled = false;
}, 2000); // wait for gui fill
if (!active) return;
let text = getText()
if (text === lastText || text === lastText + '...' || text === '')
return;
active = false;
// maybe translation will be updated
setTimeout(function() {
text = getText();
console.log('translated text', text, 'old', lastText, 'size', text.length, lastText.length);
lastText = text;
active = false;
proxy.setTranslated(text);
}, 1000);
}
var timeout = null;
function onResourceLoad(url) {
console.log(url);
if (url.indexOf('apis/n2mt/translate') > -1) {
if (timeout !== null) {
console.log('clear resource timeout');
clearTimeout(timeout);
}
timeout = setTimeout(function () {
console.log('last resource loaded');
isTranslationFinished = true;
if (isPageLoaded) {
checkFinished();
}
}, 1000);
}
}
st_wtp.resourceLoaded.connect(onResourceLoad);
function translate(text, from, to) {
console.log('start translate', text, from, to)
let supported = ['ko', 'ru', 'en', 'fr', 'pt', 'th', 'ja',
'zh-CN', 'zh-TW', 'de', 'it', 'id', 'es', 'vi', 'hi'];
function onPageLoad() {
if (window.location.href.indexOf('about:blank') === 0) {
translate ();
if (supported.indexOf(from) == -1) {
proxy.setFailed('Source language not supported');
return;
}
isPageLoaded = true;
if (isTranslationFinished) {
checkFinished();
}
}
window.onload = onPageLoad();
function translate() {
console.log(st_wtp.resultLanguage)
var langs = ['ko', 'ru', 'en', 'fr', 'pt', 'th', 'ja',
'zb-CN', 'zn-TW', 'de', 'it', 'id', 'es', 'vi', 'hi'];
if (langs.indexOf(st_wtp.resultLanguage) === -1) {
st_wtp.translated('');
console.log('language not supported by this translator ', st_wtp.resultLanguage);
if (supported.indexOf(to) == -1) {
proxy.setFailed('Target language not supported');
return;
}
if (window.location.href.indexOf('https://papago.naver.com/') === -1) {
var url = 'https://papago.naver.com/?sk=auto&tk='+st_wtp.resultLanguage+'&st=' +
st_wtp.sourceText.replace("\n", " ");
window.location = encodeURI(url);
}
else {
window.location = 'about:blank';
lastText = getText(); // because it can be updated after previous translation
active = true;
let langs = '?sk=auto&tk=' + to + '&';
if (window.location.href.indexOf('//papago.naver.com/') !== -1
&& window.location.href.indexOf(langs) !== -1) {
document.querySelector('textarea#txtSource').value = text
document.querySelector('textarea#txtSource').dispatchEvent(
new Event("input", { bubbles: true, cancelable: true }));
return;
}
let url = 'https://papago.naver.com/?sk=auto&tk=' + to + '&st=' +
text.replace("\n", " ");
window.location = encodeURI(url);
}
function init() {
proxy.translate.connect(translate);
setInterval(checkFinished, 300);
}

View File

@ -1,42 +1,43 @@
var lastText = '';
var active = window.location.href !== "about:blank";
function checkFinished () {
function checkFinished() {
if (!active) return;
var spans = [].slice.call (document.querySelectorAll ('span.translation-chunk'));
let text = spans.reduce (function (res, i) {
let spans = [].slice.call(document.querySelectorAll('span.translation-chunk'));
let text = spans.reduce(function (res, i) {
return res + ' ' + i.innerText;
}, '');
if (text === lastText || text === '')
return;
console.log ('translated text', text, 'old', lastText, 'size', text.length, lastText.length);
console.log('translated text', text, 'old', lastText, 'size', text.length, lastText.length);
lastText = text;
active = false;
proxy.setTranslated (text);
proxy.setTranslated(text);
}
function translate (text, from, to){
function translate(text, from, to) {
console.log('start translate', text, from, to)
active = true;
var langs = 'lang=' + from + '-' + to;
let langs = 'lang=' + from + '-' + to;
if (window.location.href.indexOf('//translate.yandex') !== -1
&& window.location.href.indexOf(langs) !== -1) {
document.querySelector('textarea#textarea').value=text
&& window.location.href.indexOf(langs) !== -1) {
document.querySelector('textarea#textarea').value = text
document.querySelector('div#textbox').dispatchEvent(
new Event("input", {bubbles: true, cancelable: true}));
new Event("input", { bubbles: true, cancelable: true }));
return;
}
var url = 'https://translate.yandex.ru/?' + langs + '&text=' + text;
url = url.replace(new RegExp(' ','g') , '%20')
let url = 'https://translate.yandex.ru/?' + langs + '&text=' + text;
url = url.replace(new RegExp(' ', 'g'), '%20')
console.log("setting url", url);
window.location = url;
}
function init() {
proxy.translate.connect (translate);
proxy.translate.connect(translate);
setInterval(checkFinished, 300);
}

View File

@ -384,22 +384,22 @@
,"translators":{
"bing": {"files":[
{"url":"https://raw.githubusercontent.com/OneMoreGres/ScreenTranslator/master/translators/bing.js", "path":"$translators$/bing.js", "md5":"23178a0a19f54c8dc6befd18c67decf7"}
{"url":"https://raw.githubusercontent.com/OneMoreGres/ScreenTranslator/master/translators/bing.js", "path":"$translators$/bing.js", "md5":"fc69c1e05a3462a88131ee0a8422ad89"}
]}
,"google": {"files":[
{"url":"https://raw.githubusercontent.com/OneMoreGres/ScreenTranslator/master/translators/google.js", "path":"$translators$/google.js", "md5":"232ffcfff1ab743d295e6c8a04695272"}
{"url":"https://raw.githubusercontent.com/OneMoreGres/ScreenTranslator/master/translators/google.js", "path":"$translators$/google.js", "md5":"58128258211838ac23c84d18edc9c268"}
]}
,"google_api": {"files":[
{"url":"https://raw.githubusercontent.com/OneMoreGres/ScreenTranslator/master/translators/google_api.js", "path":"$translators$/google_api.js", "md5":"7fa9fb03d4cfc3e69cd0120c51d82c95"}
{"url":"https://raw.githubusercontent.com/OneMoreGres/ScreenTranslator/master/translators/google_api.js", "path":"$translators$/google_api.js", "md5":"087dfe395c6ee803bf0e69693a27a41a"}
]}
,"yandex": {"files":[
{"url":"https://raw.githubusercontent.com/OneMoreGres/ScreenTranslator/master/translators/yandex.js", "path":"$translators$/yandex.js", "md5":"2c4d64c30fa74b875f48dc99f2745c1f"}
{"url":"https://raw.githubusercontent.com/OneMoreGres/ScreenTranslator/master/translators/yandex.js", "path":"$translators$/yandex.js", "md5":"931306b7cf54c529638a730ad2ada0ef"}
]}
,"deepl": {"files":[
{"url":"https://raw.githubusercontent.com/OneMoreGres/ScreenTranslator/master/translators/deepl.js", "path":"$translators$/deepl.js", "md5":"05ac33e02469710bc69fc20c55773c91"}
{"url":"https://raw.githubusercontent.com/OneMoreGres/ScreenTranslator/master/translators/deepl.js", "path":"$translators$/deepl.js", "md5":"eb333c2e210dc955d523e68339e68b84"}
]}
,"papago": {"files":[
{"url":"https://raw.githubusercontent.com/OneMoreGres/ScreenTranslator/master/translators/papago.js", "path":"$translators$/papago.js", "md5":"c3c6bb456a48a47f50e634ee43862434"}
{"url":"https://raw.githubusercontent.com/OneMoreGres/ScreenTranslator/master/translators/papago.js", "path":"$translators$/papago.js", "md5":"27d8031bcab27cf2f14c815c60785f0b"}
]}
}
}