diff options
| author | hallgren <hallgren@chalmers.se> | 2014-04-16 15:37:09 +0000 |
|---|---|---|
| committer | hallgren <hallgren@chalmers.se> | 2014-04-16 15:37:09 +0000 |
| commit | 5cb5cdd31eb2168ed823088c40585d48686df112 (patch) | |
| tree | 6126aa095496311d387ce30880d452017c6ee8bf /src | |
| parent | dd96c8a2c67588eaf5f621d20961d4b5a7ffa3e9 (diff) | |
Wide Coverage Demo App: show a word-for-word translation if all else fails
Diffstat (limited to 'src')
| -rw-r--r-- | src/www/js/gftranslate.js | 14 | ||||
| -rw-r--r-- | src/www/js/wc.js | 44 | ||||
| -rw-r--r-- | src/www/wc.html | 5 |
3 files changed, 54 insertions, 9 deletions
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||"")+"<br>"+r.tree + if(e) e.innerHTML=(r.prob||"")+"<br>"+(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) { @@ -136,6 +143,29 @@ wc.translate=function() { 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<tra.length;ti++) { var r=tra[ti] if(r.linearizations) showit(r) diff --git a/src/www/wc.html b/src/www/wc.html index 41c80e1a5..f791a6877 100644 --- a/src/www/wc.html +++ b/src/www/wc.html @@ -19,7 +19,8 @@ small { color: #666; } #speak { display: none; } .colors .default_quality { background-color: #ffc; } .colors .high_quality { background-color: #cfc; } -.colors .low_quality { background-color: #fcc; } +.colors .low_quality { background-color: #fba; } +.colors .bad_quality { background-color: #f88; } .placeholder { color: #999; } .error { color: #c00; } </style> @@ -79,7 +80,7 @@ small { color: #666; } </div> <p> <div class=modtime><small> -<!-- hhmts start -->Last modified: Wed Apr 9 22:35:17 CEST 2014 <!-- hhmts end --> +<!-- hhmts start -->Last modified: Wed Apr 16 16:48:16 CEST 2014 <!-- hhmts end --> </small></div> <script src="js/support.js"></script> <script src="js/gftranslate.js"></script> |
