diff --git a/src/www/js/gftranslate.js b/src/www/js/gftranslate.js index c5acaa988..5bf1aaa6f 100644 --- a/src/www/js/gftranslate.js +++ b/src/www/js/gftranslate.js @@ -27,6 +27,20 @@ gftranslate.translate=function(source,from,to,start,limit,cont) { else cont([{error:"sentence too long"}]) } +// Translate a sentence word for word (if all else fails...) +gftranslate.wordforword=function(source,from,to,cont) { + var g=gftranslate.grammar + var lexer="&lexer=text" + if(from=="Chi") lexer="",source=source.split("").join(" ") + var encsrc=encodeURIComponent(source) + function extract(result) { cont(result[0].translations) } + if(encsrc.length<500) + gftranslate.call("?command=c-wordforword&input="+encsrc + +lexer+"&unlexer=text&from="+g+from+"&to="+g+to + ,extract) + else cont([{error:"sentence too long"}]) +} + // Get list of supported languages gftranslate.get_languages=function(cont) { function init2(grammar_info) { diff --git a/src/www/js/wc.js b/src/www/js/wc.js index af60475be..5395c9618 100644 --- a/src/www/js/wc.js +++ b/src/www/js/wc.js @@ -97,7 +97,7 @@ wc.translate=function() { function show_more() { selected=si var r=rs[current_pick] - if(e) e.innerHTML=(r.prob||"")+"
"+r.tree + if(e) e.innerHTML=(r.prob||"")+"
"+(r.tree||"") if(wc.p /*&& rs.length>1*/) show_picks() //if(f.speak.checked) wc.speak(t.text,f.to.value) if(get_more) { @@ -116,18 +116,25 @@ wc.translate=function() { current_pick=i if(selected==si) show_more() } - - function showit(r) { - r.t=trans_quality(r) - //r.t.text=r.t.text.trimRight() - r.text=r.t.text + function showit2(r) { rs.push(r) var j=rs.length-1 if(current_pick==j) show_trans(j) else if(selected==si) show_picks() //disable(false) } - function trans(text,i,count) { + function showit(r) { + r.t=trans_quality(r) + r.text=r.t.text + showit2(r) + } + function show_words(r) { + r.text=r.linearizations[0].text + r.t={quality:"bad_quality",text:r.text} + showit2(r) + } + + function word_for_word(text,cont) { function step3(tra) { if(wc.serial==current) { if(tra.length>=1) { @@ -135,6 +142,29 @@ wc.translate=function() { if(r.error!=undefined) { if(i==0 && rs.length==0) show_error(tra[0].error) } + else { + var r=tra[0] + if(r.linearizations) show_words(r) + } + } + else if(i==0 && rs.length==0) + show_error("Unable to translate") + } + } + gftranslate.wordforword(text,f.from.value,f.to.value,step3) + } + + function trans(text,i,count) { + function step3(tra) { + if(wc.serial==current) { + if(tra.length>=1) { + var r=tra[0] + if(r.error!=undefined) { + if(i==0 && rs.length==0) { + //show_error(tra[0].error) + word_for_word(text) + } + } else { for(var ti=0;ti @@ -79,7 +80,7 @@ small { color: #666; }

-Last modified: Wed Apr 9 22:35:17 CEST 2014 +Last modified: Wed Apr 16 16:48:16 CEST 2014