From fc4c8b0058e425baf4e2b516256f96ed900de29c Mon Sep 17 00:00:00 2001 From: hallgren Date: Fri, 20 Jun 2014 18:39:28 +0000 Subject: [PATCH] Cloud service & apps: better error handling in wide coverage translation The wide coverage demo apps now shows a "please wait" message while the grammar is loading, and a red error message if the grammar is not found on the server. The Simple Translation Tool also show red error messages if the grammar is not found. --- src/www/js/gftranslate.js | 36 ++++++++++++++++++++++---------- src/www/js/wc.js | 11 +++++++++- src/www/translator/translator.js | 5 ++++- src/www/wc.html | 7 ++++--- 4 files changed, 43 insertions(+), 16 deletions(-) diff --git a/src/www/js/gftranslate.js b/src/www/js/gftranslate.js index df08616c7..591f02217 100644 --- a/src/www/js/gftranslate.js +++ b/src/www/js/gftranslate.js @@ -6,10 +6,7 @@ var gftranslate = {} gftranslate.jsonurl="/robust/Translate11.pgf" gftranslate.grammar="Translate" // the name of the grammar -gftranslate.call=function(querystring,cont) { - function errcont(text,code) { - cont([{translations:[{error:code+" "+text}]}]) - } +gftranslate.call=function(querystring,cont,errcont) { http_get_json(gftranslate.jsonurl+querystring,cont,errcont) } @@ -25,11 +22,12 @@ gftranslate.translate=function(source,from,to,start,limit,cont) { var lexer="&lexer=text" if(from=="Chi") lexer="",source=source.split("").join(" ") var encsrc=encodeURIComponent(source) + function errcont(text,code) { cont([{error:code+" "+text}]) } function extract(result) { cont(result[0].translations) } if(encsrc.length<500) gftranslate.call("?command=c-translate&input="+encsrc +lexer+"&unlexer=text&from="+g+from+"&to="+enc_langs(g,to) - +"&start="+start+"&limit="+limit,extract) + +"&start="+start+"&limit="+limit,extract,errcont) else cont([{error:"sentence too long"}]) } @@ -39,17 +37,19 @@ gftranslate.wordforword=function(source,from,to,cont) { var lexer="&lexer=text" if(from=="Chi") lexer="",source=source.split("").join(" ") var encsrc=encodeURIComponent(source) + function errcont(text,code) { cont([{error:code+" "+text}]) } function extract(result) { cont(result[0].translations) } var enc_to = enc_langs(g,to) if(encsrc.length<500) gftranslate.call("?command=c-wordforword&input="+encsrc +lexer+"&unlexer=text&from="+g+from+"&to="+enc_to - ,extract) + ,extract,errcont) else cont([{error:"sentence too long"}]) } // Get list of supported languages -gftranslate.get_languages=function(cont) { +gftranslate.waiting=[] +gftranslate.get_languages=function(cont,errcont) { function init2(grammar_info) { var ls=grammar_info.languages gftranslate.grammar=grammar_info.name @@ -57,21 +57,35 @@ gftranslate.get_languages=function(cont) { for(var i=0;i {quality:String, text:String} diff --git a/src/www/js/wc.js b/src/www/js/wc.js index e35b8f9c9..04686fee7 100644 --- a/src/www/js/wc.js +++ b/src/www/js/wc.js @@ -3,10 +3,12 @@ wc.cnl="Phrasebook" // try this controlled natural language first wc.f=document.forms[0] wc.o=element("output") wc.e=element("extra") +wc.i=element("grammarinfo") wc.p=element("pick") wc.os=[] // output segment list wc.cache={} // output segment cache, indexed by source text wc.local=appLocalStorage("gf.wc.") +wc.translating="" wc.delayed_translate=function() { function restart(){ if(wc.f.input.value!=wc.translating) wc.translate() } @@ -298,6 +300,7 @@ wc.try_google=function() { // Update language selection menus with the languages supported by the grammar function init_languages() { function init2(langs) { + replaceInnerHTML(wc.i,"Enter text to translate above") wc.languages=langs var langset=toSet(langs) function update_menu(m) { @@ -310,7 +313,13 @@ function init_languages() { update_menu(wc.f.from) update_menu(wc.f.to) } - gftranslate.get_languages(init2) + function initerror(errortext,status,ct) { + var msg = status==404 ? "The wide cover translation grammar was not found on the server" : "Server problem "+status + replaceChildren(wc.i,text(msg)) + if(wc.i) wc.i.className="error" + } + replaceInnerHTML(wc.i,"Loading the wide coverage translation grammar, please wait...") + gftranslate.get_languages(init2,initerror) } function init_speech() { diff --git a/src/www/translator/translator.js b/src/www/translator/translator.js index 4a088e66c..7ea5e0882 100644 --- a/src/www/translator/translator.js +++ b/src/www/translator/translator.js @@ -274,7 +274,10 @@ Translator.prototype.update_translation=function(i) { upd3s("["+msg+"]") } } - gftranslate.get_support(check_support) + function no_support(text,status,ct) { + upd3s("[GF Robust translation service error: "+status+"]") + } + gftranslate.get_support(check_support,no_support) } } diff --git a/src/www/wc.html b/src/www/wc.html index a5c7ac808..66b747f37 100644 --- a/src/www/wc.html +++ b/src/www/wc.html @@ -75,7 +75,7 @@ small { color: #666; }
- Enter text to translate above. + Enter text to translate above. @@ -87,10 +87,11 @@ small { color: #666; }
-

+


-Last modified: Thu May 8 01:37:42 CEST 2014 +Last modified: Fri Jun 20 20:21:52 CEST 2014
+About