forked from GitHub/gf-core
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.
This commit is contained in:
34
src/www/js/gftranslate.js
Normal file
34
src/www/js/gftranslate.js
Normal file
@@ -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)
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
@@ -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])
|
||||
|
||||
Reference in New Issue
Block a user