diff options
| author | hallgren <hallgren@chalmers.se> | 2014-01-21 16:47:23 +0000 |
|---|---|---|
| committer | hallgren <hallgren@chalmers.se> | 2014-01-21 16:47:23 +0000 |
| commit | 14ce8509f8058f3d278b4b90193723ee68843149 (patch) | |
| tree | d80bb414cee66f75eb49b2f2ea1baa468f06c64f | |
| parent | 9d71ffc831164c7cba260d1bb3f0a968cca8c3e7 (diff) | |
simple translator: Replaced 'GF Robust Parser' with 'GF Wide Coverage Translation'
The interface to the wide coverage translation is in js/gftranslate.js
and it assumes that the grammar is installed on the cloud server
as /robust/Translate8.pgf.
The list of supported languages is hardwired in gftranslate.js, since
there is no support for obtaining this info from the C run-time system
at the moment.
| -rw-r--r-- | src/www/js/gftranslate.js | 34 | ||||
| -rw-r--r-- | src/www/translator/index.html | 6 | ||||
| -rw-r--r-- | src/www/translator/translator.js | 16 |
3 files changed, 46 insertions, 10 deletions
diff --git a/src/www/js/gftranslate.js b/src/www/js/gftranslate.js new file mode 100644 index 000000000..0043fce61 --- /dev/null +++ b/src/www/js/gftranslate.js @@ -0,0 +1,34 @@ + +/* --- GF wide coverage translation interface ------------------------------- */ + +var gftranslate = {} + +gftranslate.jsonurl="/robust/Translate8.pgf" +gftranslate.grammar="Translate" // the name of the grammar +gftranslate.languages="Bul Chi Eng Fin Fre Ger Hin Swe".split(" ") + // hardwired for now + +gftranslate.call=function(querystring,cont) { + http_get_json(gftranslate.jsonurl+querystring,cont) +} + +// Translate a sentence to the given target language +gftranslate.translate=function(source,from,to,cont) { + var encsrc=encodeURIComponent(source) + var g=gftranslate.grammar + function extract(result) { + cont(result[0].translations[0].linearizations[0].text) + } + if(encsrc.length<200) // match limit in runtime/c/utils/pgf-server.c + gftranslate.call("?command=c-translate&input="+encsrc + +"&from="+g+from+"&to="+g+to+"&limit=1",extract) + else cont("[GF robust parser: sentence too long]") +} + +// Get functions to test which source and target langauges are supported +gftranslate.get_support=function(cont) { + if(!gftranslate.targets) gftranslate.targets=toSet(gftranslate.languages) + function ssupport(code) { return gftranslate.targets[code] } + function tsupport(code) { return gftranslate.targets[code] } + cont(ssupport,tsupport) +} diff --git a/src/www/translator/index.html b/src/www/translator/index.html index 97eeb22d7..999f6d9c6 100644 --- a/src/www/translator/index.html +++ b/src/www/translator/index.html @@ -61,7 +61,7 @@ <tr><td><span onclick="">Default translation method</span> <dl id=methods> <dt><label><input name=method value=Manual type=radio onchange="translator.change(this)">Manual</label> - <dt><label><input name=method value=GFRobust type=radio onchange="translator.change(this)">GF Robust Parser</label> + <dt><label><input name=method value=GFRobust type=radio onchange="translator.change(this)">GF Wide Coverage Translation</label> </dl> </table> <dt><label><input name=cloud type=checkbox onchange="translator.change(this)"> Save in the cloud</label> @@ -78,14 +78,14 @@ </div> <hr> <div class=modtime><small>HMTL -<!-- hhmts start -->Last modified: Fri Apr 12 17:03:43 CEST 2013 <!-- hhmts end --> +<!-- hhmts start -->Last modified: Tue Jan 21 16:54:12 CET 2014 <!-- hhmts end --> </small></div> <a href="about.html">About</a> <script type="text/JavaScript" src="../js/grammar_manager.js"></script> <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/gftranslate.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 e7b080c78..e124e3523 100644 --- a/src/www/translator/translator.js +++ b/src/www/translator/translator.js @@ -118,7 +118,7 @@ Translator.prototype.update_language_menus=function() { mark_menus(yes,yes) break; case "GFRobust": - if(window.gfrobust) gfrobust.get_support(mark_menus) + if(window.gftranslate) gftranslate.get_support(mark_menus) else mark_menus(no,no) break; case "Apertium": @@ -217,9 +217,9 @@ Translator.prototype.update_translation=function(i) { //console.log(translate_output) upd2(translate_output,punct) } - gfrobust.translate(source,o.to,upd1) + gftranslate.translate(source,o.from,o.to,upd1) } - if(!window.gfrobust) + if(!window.gftranslate) upd3s("[GF robust parser is not available]") else { function check_support(ssupport,tsupport) { @@ -243,7 +243,7 @@ Translator.prototype.update_translation=function(i) { upd3s("["+msg+"]") } } - gfrobust.get_support(check_support) + gftranslate.get_support(check_support) } } @@ -937,7 +937,7 @@ Translator.prototype.draw_segment_given_target=function(s,target,i) { } var autoB=radiobutton("method","Default","Default",change) var manualB=radiobutton("method","Manual","Manual",change) - var gfrobustB=radiobutton("method","GFRobust","GF Robust Parser",change) + var gfrobustB=radiobutton("method","GFRobust","GF Wide Coverage Translation",change) var dl=wrap_class("dl","popupmenu", [dt(autoB), dt([manualB,text(" "),draw_translation(o)]), @@ -969,17 +969,19 @@ Translator.prototype.draw_segment_given_target=function(s,target,i) { var source=wrap_class("td","source",txt) if(!t.document.globalsight) txt.onclick=function() { t.edit_source(source,i); } - if(window.gfrobust && segment_method(t.document,s)=="GFRobust") { + /* + if(window.gftranslate && segment_method(t.document,s)=="GFRobust") { function add_button(src) { var btn=img("../minibar/tree-btn.png") btn.className="right" - btn.other=gfrobust.parsetree_url(src) + btn.other=gftranslate.parsetree_url(src) btn.title="Click to toggle parse tree view." btn.onclick=function() { toggle_img(btn) } source.appendChild(btn) } lexgfrobust(s.source,add_button) } + */ var options=wrap_class("td","options",draw_options()) return node("tr",{"class":"segment",id:i},[actions,source,options,target]) |
