From 104fa03676ca6f4f908f58d15cceaf43821c2049 Mon Sep 17 00:00:00 2001 From: hallgren Date: Thu, 15 May 2014 13:58:42 +0000 Subject: [PATCH] Simple Translator: fall back to word-for-word translation if the parser fails Same as in the Wide Coverage demo app. --- src/www/translator/translator.css | 1 + src/www/translator/translator.js | 54 +++++++++++++++++++------------ 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/src/www/translator/translator.css b/src/www/translator/translator.css index 65db73261..171875c72 100644 --- a/src/www/translator/translator.css +++ b/src/www/translator/translator.css @@ -102,6 +102,7 @@ span.choices { color: blue; font-weight: bold; font-family: sans-serif; } .default_quality { background-color: #ffc; background-color: rgba(255,255,0,0.20) } .high_quality { background-color: #cfc; background-color: rgba(0,255,0,0.20); } .low_quality { background-color: #fcc; background-color: rgba(255,0,0,0.20); } +.bad_quality { background-color: #f88; background-color: rgba(255,0,0,0.53); } .manual_quality { background-color: #ccf; background-color: rgba(0,0,255,0.20); } div.overlay { diff --git a/src/www/translator/translator.js b/src/www/translator/translator.js index 3661257f4..4a088e66c 100644 --- a/src/www/translator/translator.js +++ b/src/www/translator/translator.js @@ -206,35 +206,49 @@ Translator.prototype.update_translation=function(i) { upd3s("[Apertium does not support "+show_translation(o)+"]") } function update_gfrobust_translation() { - function upd3(txts) { - update_segment("GFRobust",txts.map(trans_text_quality)) + function upd3(trans,sp,qf) { + var ts=[] + for(var i=0;i () + function upd0b(sp) { + function upd1b(translate_output) { + //console.log(translate_output) + upd2b(translate_output,sp) + } + gftranslate.wordforword(sp.txt,o.from,o.to,upd1b) + } + + function upd2(trans,sp) { + if(trans.length==0) upd0b(sp) // upd3s("[no translation]") + else if(trans[0].error!=undefined) + //upd3s("[GF robust translation problem: "+trans[0].error+"]") + upd0b(sp) + else upd3(trans,sp) + } + // upd0 :: {txt:String,punct:String} -> () + function upd0(sp) { function upd1(translate_output) { //console.log(translate_output) - upd2(translate_output,punct) + upd2(translate_output,sp) } - gftranslate.translate(source,o.from,o.to,0,10,upd1) + gftranslate.translate(sp.txt,o.from,o.to,0,10,upd1) } if(!window.gftranslate) upd3s("[GF robust parser is not available]") @@ -247,8 +261,7 @@ Translator.prototype.update_translation=function(i) { if(!eq_options(segment.options,want)) { //console.log("Updating "+i) //lexgfrobust(segment.source,upd0) - var sp=rmpunct(segment.source) - upd0(sp.txt,sp.punct) + upd0(rmpunct(segment.source)) } //else console.log("No update ",want,segment.options) } @@ -1224,6 +1237,7 @@ function lexgfrobust(txt,cont) { lextext(txt,rmpunct) } */ +// rmpunct :: String -> {txt:String,punct:String} function rmpunct(txt) { function ispunct(c) { switch(c) {