summaryrefslogtreecommitdiff
path: root/src/www/js/gftranslate.js
blob: 0043fce617347e2956623c3174eee1c285593397 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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)
}