summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhallgren <hallgren@chalmers.se>2014-04-16 15:37:09 +0000
committerhallgren <hallgren@chalmers.se>2014-04-16 15:37:09 +0000
commit5cb5cdd31eb2168ed823088c40585d48686df112 (patch)
tree6126aa095496311d387ce30880d452017c6ee8bf /src
parentdd96c8a2c67588eaf5f621d20961d4b5a7ffa3e9 (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.js14
-rw-r--r--src/www/js/wc.js44
-rw-r--r--src/www/wc.html5
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>