mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
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).
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user