diff options
| -rw-r--r-- | src/www/js/gftranslate.js | 21 | ||||
| -rw-r--r-- | src/www/js/wc.js | 80 | ||||
| -rw-r--r-- | src/www/wc.html | 8 |
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> |
