mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-04 00:32:51 -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"}])
|
else cont([{error:"sentence too long"}])
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get functions to test which source and target langauges are supported
|
// Get list of supported languages
|
||||||
gftranslate.get_support=function(cont) {
|
gftranslate.get_languages=function(cont) {
|
||||||
function support(code) { return gftranslate.targets[code] }
|
|
||||||
function init2(grammar_info) {
|
function init2(grammar_info) {
|
||||||
var ls=grammar_info.languages
|
var ls=grammar_info.languages
|
||||||
gftranslate.grammar=grammar_info.name
|
gftranslate.grammar=grammar_info.name
|
||||||
@@ -35,9 +34,19 @@ gftranslate.get_support=function(cont) {
|
|||||||
for(var i=0;i<ls.length;i++)
|
for(var i=0;i<ls.length;i++)
|
||||||
if(ls[i].name.substr(0,n)==pre) langs.push(ls[i].name.substr(n))
|
if(ls[i].name.substr(0,n)==pre) langs.push(ls[i].name.substr(n))
|
||||||
gftranslate.targetlist=langs
|
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)
|
gftranslate.targets=toSet(langs)
|
||||||
cont(support,support)
|
cont(support,support)
|
||||||
}
|
}
|
||||||
if(gftranslate.targets) 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 "fi": return "fi-FI"
|
||||||
case "zh": return "zh-CN"
|
case "zh": return "zh-CN"
|
||||||
case "hi": return "hi-IN"
|
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
|
default: return code
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,18 @@ wc.translate=function() {
|
|||||||
}
|
}
|
||||||
f.translate.disabled=false
|
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_pick(i) { return function() { show_trans(i); return false; } }
|
||||||
function show_picks() {
|
function show_picks() {
|
||||||
clear(p)
|
clear(p)
|
||||||
@@ -30,7 +42,8 @@ wc.translate=function() {
|
|||||||
var pick=node("a",{href:"#"},[pick])
|
var pick=node("a",{href:"#"},[pick])
|
||||||
pick.onclick=pick.onmouseover=show_pick(i)
|
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",
|
p.appendChild(wrap_class("small","pick",
|
||||||
node("a",{href:wc.google_translate_url(),
|
node("a",{href:wc.google_translate_url(),
|
||||||
@@ -39,21 +52,13 @@ wc.translate=function() {
|
|||||||
}
|
}
|
||||||
function show_trans(i) {
|
function show_trans(i) {
|
||||||
var r=wc.r[i]
|
var r=wc.r[i]
|
||||||
var text=r.text
|
var t=trans_quality(r)
|
||||||
var quality="default_quality"
|
f.output.value=t.text
|
||||||
switch(text[0]) {
|
f.output.className=t.quality
|
||||||
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
|
|
||||||
if(e) e.innerHTML=r.prob+"<br>"+r.tree
|
if(e) e.innerHTML=r.prob+"<br>"+r.tree
|
||||||
wc.current=i
|
wc.current=i
|
||||||
if(wc.p /*&& wc.r.length>1*/) show_picks()
|
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) {
|
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() {
|
function init_speech() {
|
||||||
wc.speech=window.speechSynthesis && window.speechSynthesis.getVoices().length>0
|
wc.speech=window.speechSynthesis && window.speechSynthesis.getVoices().length>0
|
||||||
if(wc.speech) element("speak").style.display="inline"
|
if(wc.speech) element("speak").style.display="inline"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
init_languages()
|
||||||
init_speech()
|
init_speech()
|
||||||
setTimeout(init_speech,500) // A hack for Chrome.
|
setTimeout(init_speech,500) // A hack for Chrome.
|
||||||
|
|||||||
Reference in New Issue
Block a user