mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
Add language selectors to JavaScript translator.
This commit is contained in:
@@ -7,17 +7,27 @@ function GFGrammar(abstract, concretes) {
|
||||
/* Translates a string from any concrete syntax to all concrete syntaxes.
|
||||
Uses the start category of the grammar.
|
||||
*/
|
||||
GFGrammar.prototype.translate = function (input) {
|
||||
var outputs = new Array();
|
||||
for (var c1 in this.concretes) {
|
||||
GFGrammar.prototype.translate = function (input, fromLang, toLang) {
|
||||
var outputs = new Object();
|
||||
var fromConcs = this.concretes;
|
||||
if (fromLang) {
|
||||
fromConcs = new Object();
|
||||
fromConcs[fromLang] = this.concretes[fromLang];
|
||||
}
|
||||
var toConcs = this.concretes;
|
||||
if (toLang) {
|
||||
toConcs = new Object();
|
||||
toConcs[toLang] = this.concretes[toLang];
|
||||
}
|
||||
for (var c1 in fromConcs) {
|
||||
var p = this.concretes[c1].parser;
|
||||
if (p) {
|
||||
var trees = p.parseString(input, this.abstract.startcat);
|
||||
if (trees.length > 0) {
|
||||
outputs[c1] = new Array();
|
||||
for (var i in trees) {
|
||||
outputs[c1][i] = new Array();
|
||||
for (var c2 in this.concretes) {
|
||||
outputs[c1][i] = new Object();
|
||||
for (var c2 in toConcs) {
|
||||
outputs[c1][i][c2] = this.concretes[c2].linearize(trees[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,10 +8,16 @@
|
||||
<script type="text/javascript" src="translator.js"></script>
|
||||
<title>Web-based GF Translator</title>
|
||||
</head>
|
||||
<body>
|
||||
<form>
|
||||
<input type="text" name="inputText" value="this cheese is warm" />
|
||||
<input type="button" value="Translate" onclick="document.getElementById('output').appendChild(formatTranslation(Food.translate(this.form.inputText.value))); return false;" />
|
||||
<body onload="populateLangs(Food, 'fromLang', 'toLang')">
|
||||
<form id="translate">
|
||||
<p>
|
||||
<input type="text" name="inputText" id="inputText" value="this cheese is warm" size="50" />
|
||||
</p>
|
||||
<p>
|
||||
From: <select name="fromLang" id="fromLang" onchange=""><option value="">Any language</option></select>
|
||||
To: <select name="toLang" id="toLang"><option value="">All languages</option></select>
|
||||
<input type="button" value="Translate" onclick="updateTranslation(Food, 'inputText','fromLang','toLang','output'); return false;" />
|
||||
</p>
|
||||
</form>
|
||||
<div id="output"></div>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user