summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhallgren <hallgren@chalmers.se>2014-05-07 23:42:05 +0000
committerhallgren <hallgren@chalmers.se>2014-05-07 23:42:05 +0000
commitfc6d8f63623c166ed79d2d2e3c4a73cc1de0a9a7 (patch)
tree765d804007e84a9c5b7823cedbf3b1486f5ac4dd /src
parent70b192594e7d3057b6d7422e60e9e08011e4dc00 (diff)
Wide Coverage Demo App: show all Phrasebook translations
Also improve behaviour for languages that are missing in Phrasebook (Chinese). Also update the initial set of languages in the menus to match Translate11.pgf.
Diffstat (limited to 'src')
-rw-r--r--src/www/js/gftranslate.js21
-rw-r--r--src/www/js/wc.js80
-rw-r--r--src/www/wc.html8
3 files changed, 69 insertions, 40 deletions
diff --git a/src/www/js/gftranslate.js b/src/www/js/gftranslate.js
index a232bde50..86cdc477a 100644
--- a/src/www/js/gftranslate.js
+++ b/src/www/js/gftranslate.js
@@ -85,20 +85,23 @@ function trans_text_quality(text) {
}
// find_to :: Lang -> [{to:Lang,...}] -> Int
-find_to=function(to,lins) {
+function find_to(to,lins) {
for(var i=0;i<lins.length;i++)
if(lins[i].to==to) return i
- return 0 // Hmm....
+ return -1 // Hmm....
}
-trans_quality=function(r,to) {
+function trans_quality(r,to) {
var ix=to ? find_to(to,r.linearizations) : 0
- var text=r.linearizations[ix].text
- if(r.prob==0) return {quality:"high_quality",text:text}
+ if(ix<0) return null
else {
- var t=trans_text_quality(text)
- if(t.quality=="default_quality" && r.tree && r.tree[0]=="?")
- t.quality="low_quality"
- return t
+ var text=r.linearizations[ix].text
+ if(r.prob==0) return {quality:"high_quality",text:text}
+ else {
+ var t=trans_text_quality(text)
+ if(t.quality=="default_quality" && r.tree && r.tree[0]=="?")
+ t.quality="low_quality"
+ return t
+ }
}
}
diff --git a/src/www/js/wc.js b/src/www/js/wc.js
index 51fb97a23..7ce80b11a 100644
--- a/src/www/js/wc.js
+++ b/src/www/js/wc.js
@@ -57,9 +57,15 @@ wc.translate=function() {
return s.split(/([.!?]+[ \t\n]+|\n\n+|[ \t\n]*[-•*+#]+[ \t\n]+)/)
}
+ function find_pick(rs) {
+ for(var i=0;i<rs.length && !rs[i].t;i++)
+ ;
+ return i
+ }
+
function translate_segment(so) { // so = segment output
so.rs=[] // list of alternative translations for this segment
- so.current_pick=0 // index of currently selected alternative
+ so.current_pick= -1 // index of currently selected alternative
function show_error(msg) {
//if(e) e.innerHTML="<span class=low_quality>Translation problem: "+msg+"</span>"
@@ -74,14 +80,16 @@ wc.translate=function() {
function show_picks() {
clear(p)
for(var i=0;i<so.rs.length;i++) {
- p.appendChild(text(" "))
- var pick=text(i+1) // +"⃝"
- if(i!=so.current_pick) {
- var pick=node("a",{href:"#"},[pick])
- pick.onclick=pick.onmouseover=show_pick(i)
+ if(so.rs[i].t) {
+ var pick=text(i+1) // +"⃝"
+ if(i!=so.current_pick) {
+ var pick=node("a",{href:"#"},[pick])
+ pick.onclick=pick.onmouseover=show_pick(i)
+ }
+ var q=so.rs[i].t.quality
+ p.appendChild(text(" "))
+ p.appendChild(span_class("pick "+q,pick))
}
- var q=so.rs[i].t.quality
- p.appendChild(span_class("pick "+q,pick))
}
/*
p.appendChild(wrap_class("small","pick",
@@ -101,31 +109,37 @@ wc.translate=function() {
function show_trans(i) {
var r=so.rs[i]
- replaceChildren(so.target,text(r.text))
- so.text=r.text
- so.target.className=r.t.quality
- so.current_pick=i
- if(wc.selected==so) show_more()
+ if(!r.t) {
+ i=find_pick(so.rs)
+ r=so.rs[i]
+ }
+ if(r && r.t) {
+ replaceChildren(so.target,text(r.t.text))
+ so.text=r.t.text
+ so.target.className=r.t.quality
+ so.current_pick=i
+ if(wc.selected==so) show_more()
+ }
}
function showit2(r,grammar) {
r.grammar=grammar
so.rs.push(r)
var j=so.rs.length-1
- if(so.current_pick==j) show_trans(j)
+ if(so.current_pick<0 || so.current_pick==j) show_trans(j)
else if(wc.selected==so) show_picks()
//disable(false)
}
function showit(r,grammar) {
r.t=trans_quality(r,grammar+f.to.value)
- r.text=r.t.text
showit2(r,grammar)
}
function show_words(r) {
var g=gftranslate.grammar
var ix=find_to(g+f.to.value,r.linearizations)
- r.text=r.linearizations[ix].text
- r.t={quality:"bad_quality",text:r.text}
- showit2(r,g)
+ if(ix>=0) {
+ r.t={quality:"bad_quality",text:r.linearizations[ix].text}
+ showit2(r,g)
+ }
}
function word_for_word(text,cont) {
@@ -174,9 +188,11 @@ wc.translate=function() {
function step3cnl(results) {
var trans=results[0].translations
if(trans && trans.length>=1) {
- var r=trans[0]
- r.prob=0
- showit(r,wc.cnl)
+ for(var i=0;i<trans.length;i++) {
+ var r=trans[i]
+ r.prob=0
+ showit(r,wc.cnl)
+ }
}
step2(text)
}
@@ -193,15 +209,19 @@ wc.translate=function() {
function change_segment_to(so,to) {
var rs=so.rs
if(rs) {
- for(var i=0;i<rs.length;i++) {
- var r=rs[i]
- r.t=trans_quality(r,r.grammar+to)
- r.text=r.t.text
- if(i==so.current_pick) {
- so.text=r.text
- replaceChildren(so.target,text(r.text))
- }
+ for(var i=0;i<rs.length;i++)
+ rs[i].t=trans_quality(rs[i],rs[i].grammar+to)
+ var i=so.current_pick
+ if(!rs[i].t) {
+ i=find_pick(rs)
+ so.current_pick=i
+ clear(p)
+ wc.selected=null
}
+ var r=rs[i]
+ so.text=r.t.text
+ replaceChildren(so.target,text(r.t.text))
+ so.target.className=r.t.quality
}
so.to=to
}
@@ -267,7 +287,7 @@ wc.colors=function() {
wc.swap=function() {
var f=wc.f
- function txt(r) { return r.text }
+ function txt(r) { return r.t.text }
f.input.value=wc.os.map(txt).join("").trimRight()
var from=f.from.value
f.from.value=f.to.value
diff --git a/src/www/wc.html b/src/www/wc.html
index 828d68cfc..a5c7ac808 100644
--- a/src/www/wc.html
+++ b/src/www/wc.html
@@ -38,11 +38,14 @@ small { color: #666; }
<select name=from>
<option value=Bul>Bulgarian</option>
<option value=Chi>Chinese</option>
+ <option value=Dut>Dutch</option>
<option value=Eng selected>English</option>
<option value=Fin>Finnish</option>
<option value=Fre>French</option>
<option value=Ger>German</option>
<option value=Hin>Hindi</option>
+ <option value=Ita>Italian</option>
+ <option value=Spa>Spanish</option>
<option value=Swe>Swedish</option>
</select>
<input type=button value="Clear" onclick="wc.clear()">
@@ -52,11 +55,14 @@ small { color: #666; }
<select name=to onchange="wc.translate()">
<option value=Bul>Bulgarian</option>
<option value=Chi>Chinese</option>
+ <option value=Dut>Dutch</option>
<option value=Eng>English</option>
<option value=Fin>Finnish</option>
<option value=Fre>French</option>
<option value=Ger>German</option>
<option value=Hin>Hindi</option>
+ <option value=Ita>Italian</option>
+ <option value=Spa>Spanish</option>
<option value=Swe selected>Swedish</option>
</select>
<input name=colors type=checkbox checked onchange="wc.colors()"> Colors
@@ -83,7 +89,7 @@ small { color: #666; }
</div>
<p>
<div class=modtime><small>
-<!-- hhmts start -->Last modified: Thu Apr 17 15:45:17 CEST 2014 <!-- hhmts end -->
+<!-- hhmts start -->Last modified: Thu May 8 01:37:42 CEST 2014 <!-- hhmts end -->
</small></div>
<script src="js/support.js"></script>
<script src="js/gftranslate.js"></script>