summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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>