1
0
forked from GitHub/gf-core
Files
gf-core/lib/javascript/translator.js
2008-08-13 11:11:25 +00:00

56 lines
1.7 KiB
JavaScript

function updateTranslation (grammar, inputID, fromLangID, toLangID, outputID) {
var input = document.getElementById(inputID).value;
var fromLang = document.getElementById(fromLangID).value;
var toLang = document.getElementById(toLangID).value;
var output = document.getElementById(outputID);
output.appendChild(formatTranslation(grammar.translate(input, fromLang, toLang)));
}
function populateLangs (grammar, fromLang, toLang) {
var f = document.getElementById(fromLang);
var t = document.getElementById(toLang);
for (var c in grammar.concretes) {
addOption(f, c, c);
addOption(t, c, c);
}
}
function formatTranslation (outputs) {
var dl1 = document.createElement("dl");
for (var fromLang in outputs) {
var ul = document.createElement("ul");
addDefinition(dl1, document.createTextNode(fromLang), ul);
for (var i in outputs[fromLang]) {
var dl2 = document.createElement("dl");
for (var toLang in outputs[fromLang][i]) {
addDefinition(dl2, document.createTextNode(toLang), document.createTextNode(outputs[fromLang][i][toLang]));
}
addItem(ul, dl2);
}
}
return dl1;
}
function addDefinition (dl, t, d) {
var dt = document.createElement("dt");
dt.appendChild(t);
dl.appendChild(dt);
var dd = document.createElement("dd");
dd.appendChild(d);
dl.appendChild(dd);
}
function addItem (ul, i) {
var li = document.createElement("ul");
li.appendChild(i);
ul.appendChild(li);
}
function addOption (select, value, content) {
var option = document.createElement("option");
option.value = value;
option.appendChild(document.createTextNode(content));
select.appendChild(option);
}