diff options
| author | hallgren <hallgren@chalmers.se> | 2014-03-28 14:56:56 +0000 |
|---|---|---|
| committer | hallgren <hallgren@chalmers.se> | 2014-03-28 14:56:56 +0000 |
| commit | 98d9946ac425de49880b8f8f783d3b4510a9d762 (patch) | |
| tree | 2f3662c2941b2a8cc75b6066e9f60898c22389ad /src | |
| parent | 035d367b1f2e0da6b4988017ef37f275d02b346f (diff) | |
Wide coverage demo web app improvements
+ Adapt language selection menus to the languages supported by the grammar.
+ Add translation quality colors to the links to alternative translations.
+ Also added more country codes in langcode.js (needed for speech synthesis
voice selection).
Diffstat (limited to 'src')
| -rw-r--r-- | src/www/js/gftranslate.js | 17 | ||||
| -rw-r--r-- | src/www/js/langcode.js | 10 | ||||
| -rw-r--r-- | src/www/js/wc.js | 49 |
3 files changed, 59 insertions, 17 deletions
diff --git a/src/www/js/gftranslate.js b/src/www/js/gftranslate.js index c0a47cfb3..09689b5b2 100644 --- a/src/www/js/gftranslate.js +++ b/src/www/js/gftranslate.js @@ -25,9 +25,8 @@ gftranslate.translate=function(source,from,to,start,limit,cont) { else cont([{error:"sentence too long"}]) } -// Get functions to test which source and target langauges are supported -gftranslate.get_support=function(cont) { - function support(code) { return gftranslate.targets[code] } +// Get list of supported languages +gftranslate.get_languages=function(cont) { function init2(grammar_info) { var ls=grammar_info.languages gftranslate.grammar=grammar_info.name @@ -35,9 +34,19 @@ gftranslate.get_support=function(cont) { for(var i=0;i<ls.length;i++) if(ls[i].name.substr(0,n)==pre) langs.push(ls[i].name.substr(n)) gftranslate.targetlist=langs + cont(langs) + } + if(gftranslate.targetlist) cont(gftranslate.targetlist) + else gftranslate.call("?command=c-grammar",init2) +} + +// Get functions to test which source and target langauges are supported +gftranslate.get_support=function(cont) { + function support(code) { return gftranslate.targets[code] } + function init2(langs) { gftranslate.targets=toSet(langs) cont(support,support) } if(gftranslate.targets) cont(support,support) - else gftranslate.call("?command=c-grammar",init2) + else gftranslate.get_languages(init2) } diff --git a/src/www/js/langcode.js b/src/www/js/langcode.js index 91df409ad..16201ed1f 100644 --- a/src/www/js/langcode.js +++ b/src/www/js/langcode.js @@ -36,6 +36,16 @@ function add_country(code) { case "fi": return "fi-FI" case "zh": return "zh-CN" case "hi": return "hi-IN" + case "es": return "es-ES" + case "it": return "it-IT" + case "bg": return "bg-BG" // ? + case "da": return "da-DK" + case "nb": return "nb-NO" + case "nl": return "nl-NL" + case "ja": return "ja-JP" + case "ro": return "ja-RO" + case "el": return "el-GR" + // ... default: return code } } diff --git a/src/www/js/wc.js b/src/www/js/wc.js index a555f541d..aa3813a4e 100644 --- a/src/www/js/wc.js +++ b/src/www/js/wc.js @@ -20,6 +20,18 @@ wc.translate=function() { } f.translate.disabled=false } + function trans_quality(r) { + var text=r.text + var quality="default_quality" + switch(text[0]) { + case '+': text=text.substr(1); quality="high_quality"; break; + case '*': text=text.substr(1); quality="low_quality"; break; + default: + if(r.tree[0]=="?") quality="low_quality" + } + if(text[0]==" ") text=text.substr(1) + return {quality:quality,text:text} + } function show_pick(i) { return function() { show_trans(i); return false; } } function show_picks() { clear(p) @@ -30,7 +42,8 @@ wc.translate=function() { var pick=node("a",{href:"#"},[pick]) pick.onclick=pick.onmouseover=show_pick(i) } - p.appendChild(span_class("pick",pick)) + var q=trans_quality(wc.r[i]).quality + p.appendChild(span_class("pick "+q,pick)) } p.appendChild(wrap_class("small","pick", node("a",{href:wc.google_translate_url(), @@ -39,21 +52,13 @@ wc.translate=function() { } function show_trans(i) { var r=wc.r[i] - var text=r.text - var quality="default_quality" - switch(text[0]) { - case '+': text=text.substr(1); quality="high_quality"; break; - case '*': text=text.substr(1); quality="low_quality"; break; - default: - if(r.tree[0]=="?") quality="low_quality" - } - if(text[0]==" ") text=text.substr(1) - f.output.value=text - f.output.className=quality + var t=trans_quality(r) + f.output.value=t.text + f.output.className=t.quality if(e) e.innerHTML=r.prob+"<br>"+r.tree wc.current=i if(wc.p /*&& wc.r.length>1*/) show_picks() - if(f.speak.checked) wc.speak(text,f.to.value) + if(f.speak.checked) wc.speak(t.text,f.to.value) } function trans(text,i) { @@ -114,10 +119,28 @@ wc.try_google=function() { } */ +// Update language selection menus with the languages supported by the grammar +function init_languages() { + function init2(langs) { + var langset=toSet(langs) + function update_menu(m) { + var l=m.value + clear(m) + for(var i=0;i<langs.length;i++) + m.appendChild(option(concname(langs[i]),langs[i])) + if(langset[l]) m.value=l + } + update_menu(wc.f.from) + update_menu(wc.f.to) + } + gftranslate.get_languages(init2) +} + function init_speech() { wc.speech=window.speechSynthesis && window.speechSynthesis.getVoices().length>0 if(wc.speech) element("speak").style.display="inline" } +init_languages() init_speech() setTimeout(init_speech,500) // A hack for Chrome. |
