1
0
forked from GitHub/gf-core

Wide coverage translation demo: show an informative error message for sentences that exceed the length limit

This commit is contained in:
hallgren
2015-04-09 10:18:41 +00:00
parent e2e943eabc
commit 29712a43ac
2 changed files with 14 additions and 5 deletions

View File

@@ -50,6 +50,11 @@ function length_limit(lang) {
}
}
function check_limit(lang,encsrc) {
var len=encsrc.length, limit=length_limit(lang)
return len<=limit ? null : "sentense too long, "+len+">"+limit
}
// Translate a sentence
gftranslate.translate=function(source,from,to,start,limit,cont) {
var g=gftranslate.grammar
@@ -60,11 +65,12 @@ gftranslate.translate=function(source,from,to,start,limit,cont) {
function extract(result) {
cont(unspace_translations(g,result[0].translations))
}
if(encsrc.length<length_limit(from))
var too_long=check_limit(from,encsrc)
if(too_long) cont([{error:too_long}])
else
gftranslate.call("?command=c-translate&jsontree=true&input="+encsrc
+lexer+"&unlexer=text&from="+g+from+"&to="+enc_langs(g,to)
+"&start="+start+"&limit="+limit,extract,errcont)
else cont([{error:"sentence too long"}])
}
// Translate a sentence word for word (if all else fails...)
@@ -78,11 +84,12 @@ gftranslate.wordforword=function(source,from,to,cont) {
cont(unspace_translations(g,result[0].translations))
}
var enc_to = enc_langs(g,to)
if(encsrc.length<length_limit(from))
var too_long=check_limit(from,encsrc)
if(too_long) cont([{error:too_long}])
else
gftranslate.call("?command=c-wordforword&input="+encsrc
+lexer+"&unlexer=text&from="+g+from+"&to="+enc_to
,extract,errcont)
else cont([{error:"sentence too long"}])
}
// Get list of supported languages

View File

@@ -197,6 +197,8 @@ wc.translate=function() {
var r=tra[0]
r.prob = -1
if(r.linearizations) showit(r,gftranslate.grammar)
else if(r.error!=undefined)
show_error(r.error)
}
else if(so.rs.length==0)
show_error("Unable to translate")
@@ -210,7 +212,7 @@ wc.translate=function() {
var r=tra[0]
if(r.error!=undefined) {
if(i==0 && so.rs.length==0) {
//show_error(tra[0].error)
//show_error(r.error)
word_for_word(text)
}
}