summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/www/js/gfrobust.js35
-rw-r--r--src/www/translator/index.html3
-rw-r--r--src/www/translator/translator.js49
3 files changed, 62 insertions, 25 deletions
diff --git a/src/www/js/gfrobust.js b/src/www/js/gfrobust.js
new file mode 100644
index 000000000..327c77a98
--- /dev/null
+++ b/src/www/js/gfrobust.js
@@ -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
+}
diff --git a/src/www/translator/index.html b/src/www/translator/index.html
index 7f61c3c67..b561f0fc3 100644
--- a/src/www/translator/index.html
+++ b/src/www/translator/index.html
@@ -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>
diff --git a/src/www/translator/translator.js b/src/www/translator/translator.js
index 9115c0cf1..a09286594 100644
--- a/src/www/translator/translator.js
+++ b/src/www/translator/translator.js
@@ -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)
}
}