forked from GitHub/gf-core
gfrobust.js: adding a JavaScript API to the GF Robust Parser translation service
Factored out from the Simple Translation Tool.
This commit is contained in:
35
src/www/js/gfrobust.js
Normal file
35
src/www/js/gfrobust.js
Normal file
@@ -0,0 +1,35 @@
|
||||
|
||||
/* --- GF robust parser interface ------------------------------------------- */
|
||||
|
||||
var gfrobust = {}
|
||||
|
||||
gfrobust.url="http://www.grammaticalframework.org:41296/robust-parser.cgi"
|
||||
gfrobust.grammar="Parse" // the name of the grammar
|
||||
gfrobust.targetlist=[] // do not use, exposed only for debugging
|
||||
|
||||
gfrobust.call=function(querystring,cont) {
|
||||
http_get_json(gfrobust.url+querystring,cont)
|
||||
}
|
||||
|
||||
// Translate a sentence to the given target language
|
||||
gfrobust.translate=function(source,to,cont) {
|
||||
var enc=encodeURIComponent
|
||||
gfrobust.call("?sentence="+enc(source)+"&to="+gfrobust.grammar+to,cont)
|
||||
}
|
||||
|
||||
// Get functions to test which source and target langauges are supports
|
||||
gfrobust.get_support=function(cont) {
|
||||
function ssupport(code) { return code=="Eng" }
|
||||
function tsupport(code) { return gfrobust.targets[code] }
|
||||
function init2(langstr) {
|
||||
var ls=langstr.split(" "); // ls probably contains an empty string here
|
||||
var langs=[], pre=gfrobust.grammar, n=pre.length
|
||||
for(var i=0;i<ls.length;i++)
|
||||
if(ls[i].substr(0,n)==pre) langs.push(ls[i].substr(n))
|
||||
gfrobust.targetlist=langs
|
||||
gfrobust.targets=toSet(langs)
|
||||
cont(ssupport,tsupport)
|
||||
}
|
||||
if(gfrobust.target) cont(ssupport,tsupport)
|
||||
else gfrobust.call("",init2) // retrieve list of supported target languages
|
||||
}
|
||||
@@ -77,12 +77,13 @@
|
||||
</div>
|
||||
<hr>
|
||||
<div class=modtime><small>HMTL
|
||||
<!-- hhmts start -->Last modified: Fri Apr 5 15:09:28 CEST 2013 <!-- hhmts end -->
|
||||
<!-- hhmts start -->Last modified: Fri Apr 12 14:18:13 CEST 2013 <!-- hhmts end -->
|
||||
</small></div>
|
||||
<a href="about.html">About</a>
|
||||
|
||||
<script type="text/javascript" src="../js/support.js"></script>
|
||||
<script type="text/javascript" src="../js/pgf_online.js"></script>
|
||||
<script type="text/javascript" src="../js/gfrobust.js"></script>
|
||||
<script type="text/javascript" src="../js/localstorage.js"></script>
|
||||
<script type="text/javascript" src="../gfse/localstorage.js"></script>
|
||||
<script type="text/javascript" src="../gfse/cloud2.js"></script>
|
||||
|
||||
@@ -118,7 +118,8 @@ Translator.prototype.update_language_menus=function() {
|
||||
mark_menus(yes,yes)
|
||||
break;
|
||||
case "GFRobust":
|
||||
mark_menus(gfrobust_ssupport,gfrobust_tsupport)
|
||||
if(window.gfrobust) gfrobust.get_support(mark_menus)
|
||||
else mark_menus(no,no)
|
||||
break;
|
||||
case "Apertium":
|
||||
function ssupport(code) {
|
||||
@@ -139,10 +140,6 @@ Translator.prototype.update_language_menus=function() {
|
||||
}
|
||||
}
|
||||
|
||||
function gfrobust_ssupport(code) { return code=="Eng" }
|
||||
var gfrobust_targets=toSet(["Eng","Ger","Fin","Bul","Hin"]) // !!! Get list from server
|
||||
function gfrobust_tsupport(code) { return gfrobust_targets[code] }
|
||||
|
||||
Translator.prototype.gf_supported=function(grammar,langcode) {
|
||||
var t=this;
|
||||
var concname=t.grammar_info[grammar].name+langcode
|
||||
@@ -218,27 +215,31 @@ Translator.prototype.update_translation=function(i) {
|
||||
upd2(translate_output)
|
||||
}
|
||||
function upd0(source) {
|
||||
var url="http://www.grammaticalframework.org:41296/robust-parser.cgi"
|
||||
http_get_json(url+"?sentence="+encodeURIComponent(source)+"&to=Parse"+o.to,upd1)
|
||||
}
|
||||
var fls=gfrobust_ssupport(o.from)
|
||||
var tls=gfrobust_tsupport(o.to)
|
||||
if(fls && tls) {
|
||||
var want={from:o.from, to:o.to, method:"GFRobust"}
|
||||
if(!eq_options(segment.options,want)) {
|
||||
//console.log("Updating "+i)
|
||||
lextext(segment.source,upd0)
|
||||
//upd0(segment.source)
|
||||
}
|
||||
//else console.log("No update ",want,segment.options)
|
||||
gfrobust.translate(source,o.to,upd1)
|
||||
}
|
||||
if(!window.gfrobust)
|
||||
upd3(["[GF robust parser is not available]"])
|
||||
else {
|
||||
var fn=" from "+concname(o.from)
|
||||
var tn=" to "+concname(o.to)
|
||||
var msg="The GF robust translation service: not supported:"
|
||||
if(!fls) msg+=fn+(tls ? "." : ", ")
|
||||
if(!tls) msg+=tn+"."
|
||||
upd3(["["+msg+"]"])
|
||||
function check_support(fls,tls) {
|
||||
if(fls && tls) {
|
||||
var want={from:o.from, to:o.to, method:"GFRobust"}
|
||||
if(!eq_options(segment.options,want)) {
|
||||
//console.log("Updating "+i)
|
||||
lextext(segment.source,upd0)
|
||||
//upd0(segment.source)
|
||||
}
|
||||
//else console.log("No update ",want,segment.options)
|
||||
}
|
||||
else {
|
||||
var fn=" from "+concname(o.from)
|
||||
var tn=" to "+concname(o.to)
|
||||
var msg="The GF robust translation service: not supported:"
|
||||
if(!fls) msg+=fn+(tls ? "." : ", ")
|
||||
if(!tls) msg+=tn+"."
|
||||
upd3(["["+msg+"]"])
|
||||
}
|
||||
}
|
||||
gfrobust.get_support(check_support)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user