mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-23 11:42:49 -06:00
Simple Translation Tool: initial support for editing source segments in the minibar
This commit is contained in:
@@ -33,12 +33,13 @@ This page does not work without JavaScript.
|
|||||||
<hr>
|
<hr>
|
||||||
<div class=modtime><small>
|
<div class=modtime><small>
|
||||||
HTML
|
HTML
|
||||||
<!-- hhmts start -->Last modified: Tue Nov 20 13:39:47 CET 2012 <!-- hhmts end -->
|
<!-- hhmts start -->Last modified: Wed Apr 3 20:30:24 CEST 2013 <!-- hhmts end -->
|
||||||
</small></div>
|
</small></div>
|
||||||
<a href="about.html">About</a>
|
<a href="about.html">About</a>
|
||||||
<pre id=debug></pre>
|
<pre id=debug></pre>
|
||||||
<script type="text/javascript" src="config.js"></script> <!-- optional -->
|
<script type="text/javascript" src="config.js"></script> <!-- optional -->
|
||||||
<script type="text/javascript" src="../js/support.js"></script>
|
<script type="text/javascript" src="../js/support.js"></script>
|
||||||
|
<script type="text/javascript" src="../js/localstorage.js"></script>
|
||||||
<script type="text/javascript" src="localstorage.js"></script>
|
<script type="text/javascript" src="localstorage.js"></script>
|
||||||
<script type="text/javascript" src="gf_abs.js"></script>
|
<script type="text/javascript" src="gf_abs.js"></script>
|
||||||
<script type="text/javascript" src="example_based.js"></script>
|
<script type="text/javascript" src="example_based.js"></script>
|
||||||
|
|||||||
@@ -1,29 +1,4 @@
|
|||||||
|
|
||||||
// Grammars are stored locally in the browser using localStorage.
|
//Needs ../js/localstorage.js
|
||||||
// See http://diveintohtml5.info/storage.html
|
|
||||||
|
|
||||||
function supports_html5_storage() {
|
var local=appLocalStorage("gf.editor.simple.grammar")
|
||||||
try {
|
|
||||||
return 'localStorage' in window && window['localStorage'] !== null;
|
|
||||||
} catch (e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var local={
|
|
||||||
prefix:"gf.editor.simple.grammar",
|
|
||||||
get: function (name,def) {
|
|
||||||
var id=this.prefix+name
|
|
||||||
return localStorage[id] ? JSON.parse(localStorage[id]) : def;
|
|
||||||
},
|
|
||||||
put: function (name,value) {
|
|
||||||
var id=this.prefix+name;
|
|
||||||
localStorage[id]=JSON.stringify(value);
|
|
||||||
},
|
|
||||||
remove: function(name) {
|
|
||||||
var id=this.prefix+name;
|
|
||||||
localStorage.removeItem(id);
|
|
||||||
},
|
|
||||||
get count() { return this.get("count",0); },
|
|
||||||
set count(v) { this.put("count",v); }
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -13,8 +13,9 @@
|
|||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
<address></address>
|
<address></address>
|
||||||
<!-- hhmts start -->Last modified: Tue Nov 20 13:39:57 CET 2012 <!-- hhmts end -->
|
<!-- hhmts start -->Last modified: Wed Apr 3 21:53:09 CEST 2013 <!-- hhmts end -->
|
||||||
<script type="text/javascript" src="../js/support.js"></script>
|
<script type="text/javascript" src="../js/support.js"></script>
|
||||||
|
<script type="text/javascript" src="../js/localstorage.js"></script>
|
||||||
<script type="text/javascript" src="localstorage.js"></script>
|
<script type="text/javascript" src="localstorage.js"></script>
|
||||||
<script type="text/javascript" src="gf_abs.js"></script>
|
<script type="text/javascript" src="gf_abs.js"></script>
|
||||||
<script type="text/javascript" src="editor.js"></script>
|
<script type="text/javascript" src="editor.js"></script>
|
||||||
|
|||||||
@@ -27,12 +27,13 @@
|
|||||||
& <a href="http://www.grammaticalframework.org:41296/translate/">Translator</a>]
|
& <a href="http://www.grammaticalframework.org:41296/translate/">Translator</a>]
|
||||||
</small>
|
</small>
|
||||||
<small class=modtime>
|
<small class=modtime>
|
||||||
HTML <!-- hhmts start -->Last modified: Fri Nov 23 16:07:35 CET 2012 <!-- hhmts end -->
|
HTML <!-- hhmts start -->Last modified: Wed Apr 3 18:48:06 CEST 2013 <!-- hhmts end -->
|
||||||
</small>
|
</small>
|
||||||
<address>
|
<address>
|
||||||
|
|
||||||
<script type="text/JavaScript" src="../js/grammar_manager.js"></script>
|
<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/support.js"></script>
|
||||||
|
<script type="text/JavaScript" src="../js/localstorage.js"></script>
|
||||||
<script type="text/JavaScript" src="minibar.js"></script>
|
<script type="text/JavaScript" src="minibar.js"></script>
|
||||||
<script type="text/JavaScript" src="minibar_input.js"></script>
|
<script type="text/JavaScript" src="minibar_input.js"></script>
|
||||||
<script type="text/JavaScript" src="minibar_translations.js"></script>
|
<script type="text/JavaScript" src="minibar_translations.js"></script>
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ function Input(server,translations,opts) { // Input object constructor
|
|||||||
|
|
||||||
var o=options;
|
var o=options;
|
||||||
if(o.initial_grammar && o.initial && o.initial.from && o.initial.input)
|
if(o.initial_grammar && o.initial && o.initial.from && o.initial.input)
|
||||||
t.set_input_for(o.initial_grammar,o.initial.from,o.initial.input)
|
t.set_input_for(o.initial_grammar,o.initial)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --- Input client state initialization --- */
|
/* --- Input client state initialization --- */
|
||||||
@@ -89,11 +89,12 @@ Input.prototype.change_language=function () {
|
|||||||
this.add_words(new_input)
|
this.add_words(new_input)
|
||||||
}
|
}
|
||||||
|
|
||||||
Input.prototype.set_input_for=function(grammar_url,from,new_input) {
|
Input.prototype.set_input_for=function(grammar_url,initial) {
|
||||||
var t=this
|
var t=this
|
||||||
var local=mi_local(grammar_url)
|
var local=mi_local(grammar_url)
|
||||||
local.put("from",from)
|
local.put("from",initial.from)
|
||||||
local.put("current",{from:from,input:new_input})
|
local.put("current",{from:initial.from,input:initial.input})
|
||||||
|
if(initial.startcat) local.put("startcat",initial.startcat)
|
||||||
}
|
}
|
||||||
|
|
||||||
Input.prototype.clear_all2=function() {
|
Input.prototype.clear_all2=function() {
|
||||||
@@ -484,26 +485,7 @@ Input.prototype.browse=function(id,cont) {
|
|||||||
|
|
||||||
|
|
||||||
function mi_local(grammar_url) {
|
function mi_local(grammar_url) {
|
||||||
function dummy() {
|
return appLocalStorage("gf.minibar_input."+grammar_url+".")
|
||||||
return {
|
|
||||||
get: function(name,def) { return def },
|
|
||||||
put: function(name,value) { }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function real() {
|
|
||||||
var prefix="gf.minibar_input."+grammar_url+"."
|
|
||||||
return {
|
|
||||||
get: function (name,def) {
|
|
||||||
var id=prefix+name
|
|
||||||
return localStorage[id] ? JSON.parse(localStorage[id]) : def;
|
|
||||||
},
|
|
||||||
put: function (name,value) {
|
|
||||||
var id=prefix+name;
|
|
||||||
localStorage[id]=JSON.stringify(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return window.localStorage ? real() : dummy()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,11 @@ function Translations(server,opts) {
|
|||||||
var tom=this.to_menu=node("select",{id:"to_menu",multiple:"",size:5},[]);
|
var tom=this.to_menu=node("select",{id:"to_menu",multiple:"",size:5},[]);
|
||||||
appendChildren(this.menus,[text(" To: "), this.to_menu])
|
appendChildren(this.menus,[text(" To: "), this.to_menu])
|
||||||
tom.onchange=bind(this.change_language,this);
|
tom.onchange=bind(this.change_language,this);
|
||||||
|
var o=this.options
|
||||||
|
if(o.initial_grammar && o.initial_toLangs) {
|
||||||
|
var local=mt_local(o.initial_grammar);
|
||||||
|
local.put("toLangs",o.initial_toLangs)
|
||||||
|
}
|
||||||
/* // This seems triggers weird scrolling behavior in Firefox and Chrome:
|
/* // This seems triggers weird scrolling behavior in Firefox and Chrome:
|
||||||
tom.onmouseover=function() { var n=tom.options.length;
|
tom.onmouseover=function() { var n=tom.options.length;
|
||||||
tom.size=n<12 ? n : 12; }
|
tom.size=n<12 ? n : 12; }
|
||||||
@@ -39,8 +44,9 @@ function Translations(server,opts) {
|
|||||||
Translations.prototype.change_grammar=function(grammar) {
|
Translations.prototype.change_grammar=function(grammar) {
|
||||||
var t=this
|
var t=this
|
||||||
t.grammar=grammar;
|
t.grammar=grammar;
|
||||||
|
|
||||||
t.local=mt_local(t.server.current_grammar_url)
|
t.local=mt_local(t.server.current_grammar_url)
|
||||||
|
|
||||||
update_language_menu(t.to_menu,grammar);
|
update_language_menu(t.to_menu,grammar);
|
||||||
insertFirst(t.to_menu,option("All","All"));
|
insertFirst(t.to_menu,option("All","All"));
|
||||||
t.to_menu.value="All";
|
t.to_menu.value="All";
|
||||||
@@ -263,6 +269,10 @@ Translations.prototype.parsetree_button=function(abs,lang) {
|
|||||||
|
|
||||||
/* --- Auxiliary functions -------------------------------------------------- */
|
/* --- Auxiliary functions -------------------------------------------------- */
|
||||||
|
|
||||||
|
function mt_local(grammar_url) {
|
||||||
|
return appLocalStorage("gf.minibar_translations."+grammar_url+".")
|
||||||
|
}
|
||||||
|
|
||||||
function tree_button(img_url,opt) {
|
function tree_button(img_url,opt) {
|
||||||
var imgs=[tree_icon,img_url+(opt||"&nofun=true"),img_url]
|
var imgs=[tree_icon,img_url+(opt||"&nofun=true"),img_url]
|
||||||
var current=0;
|
var current=0;
|
||||||
@@ -283,31 +293,6 @@ function draw_brackets(b) {
|
|||||||
b.children.map(draw_brackets))
|
b.children.map(draw_brackets))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Access to localStorage, if available
|
|
||||||
function mt_local(grammar_url) {
|
|
||||||
function dummy() {
|
|
||||||
return {
|
|
||||||
get: function(name,def) { return def },
|
|
||||||
put: function(name,value) { }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function real() {
|
|
||||||
var prefix="gf.minibar_translations."+grammar_url+"."
|
|
||||||
return {
|
|
||||||
get: function (name,def) {
|
|
||||||
var id=prefix+name
|
|
||||||
return localStorage[id] ? JSON.parse(localStorage[id]) : def;
|
|
||||||
},
|
|
||||||
put: function (name,value) {
|
|
||||||
var id=prefix+name;
|
|
||||||
localStorage[id]=JSON.stringify(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return window.localStorage ? real() : dummy()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert an array of strings to a set (for quick & easy membership tests)
|
// Convert an array of strings to a set (for quick & easy membership tests)
|
||||||
function toSet(a) {
|
function toSet(a) {
|
||||||
var set={}
|
var set={}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
<title>Simple Translation Tool</title>
|
<title>Simple Translation Tool</title>
|
||||||
<link rel="stylesheet" type="text/css" href="../gfse/editor.css" title="Cloud">
|
<link rel="stylesheet" type="text/css" href="../gfse/editor.css" title="Cloud">
|
||||||
<link rel="stylesheet" type="text/css" href="translator.css" title="Cloud">
|
<link rel="stylesheet" type="text/css" href="translator.css" title="Cloud">
|
||||||
|
<link rel="stylesheet" type="text/css" href="../minibar/minibar.css">
|
||||||
<meta name = "viewport" content = "width = device-width">
|
<meta name = "viewport" content = "width = device-width">
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
</head>
|
</head>
|
||||||
@@ -75,15 +76,23 @@
|
|||||||
</div>
|
</div>
|
||||||
<hr>
|
<hr>
|
||||||
<div class=modtime><small>HMTL
|
<div class=modtime><small>HMTL
|
||||||
<!-- hhmts start -->Last modified: Mon Feb 11 16:09:58 CET 2013 <!-- hhmts end -->
|
<!-- hhmts start -->Last modified: Wed Apr 3 20:29:44 CEST 2013 <!-- hhmts end -->
|
||||||
</small></div>
|
</small></div>
|
||||||
<a href="about.html">About</a>
|
<a href="about.html">About</a>
|
||||||
|
|
||||||
<script type="text/javascript" src="../js/support.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/pgf_online.js"></script>
|
||||||
<script type="text/javascript" src="../gfse/cloud2.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/localstorage.js"></script>
|
||||||
|
<script type="text/javascript" src="../gfse/cloud2.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="../minibar/minibar.js"></script>
|
||||||
|
<script type="text/javascript" src="../minibar/minibar_input.js"></script>
|
||||||
|
<script type="text/javascript" src="../minibar/minibar_translations.js"></script>
|
||||||
|
<script type="text/javascript" src="../minibar/minibar_support.js"></script>
|
||||||
|
|
||||||
<script type="text/javascript" src="translator.js"></script>
|
<script type="text/javascript" src="translator.js"></script>
|
||||||
|
|
||||||
<script type="text/javascript" >
|
<script type="text/javascript" >
|
||||||
var translator = new Translator()
|
var translator = new Translator()
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -119,3 +119,9 @@ div.overlay > div {
|
|||||||
box-shadow: 4px 4px 12px rgba(0,0,0,0.33);
|
box-shadow: 4px 4px 12px rgba(0,0,0,0.33);
|
||||||
/*border-radius: 5px;*/
|
/*border-radius: 5px;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div#minibar {
|
||||||
|
border: 1px solid black;
|
||||||
|
padding: 5px;
|
||||||
|
background: #ccc url("../minibar/brushed-metal.png");
|
||||||
|
}
|
||||||
|
|||||||
@@ -4,11 +4,12 @@
|
|||||||
|
|
||||||
function Translator() {
|
function Translator() {
|
||||||
var t=this
|
var t=this
|
||||||
t.local=tr_local();
|
|
||||||
|
t.local=appLocalStorage("gf.translator.")
|
||||||
t.view=element("document")
|
t.view=element("document")
|
||||||
t.filebox=element("filebox")
|
t.filebox=element("filebox")
|
||||||
if(!supports_html5_storage()) {
|
if(!supports_html5_storage()) {
|
||||||
var warning=span_class("error",text("It appears that localStorage is unsupported or disabled in this browser. Documents will not be preserved after you leave or reload this page!"))
|
var warning=span_class("error",text("It appears that localStorage is unsupported or disabled in this browser. Local documents will not be preserved after you leave or reload this page!"))
|
||||||
insertAfter(warning,t.view)
|
insertAfter(warning,t.view)
|
||||||
}
|
}
|
||||||
if(!supports_local_files()) {
|
if(!supports_local_files()) {
|
||||||
@@ -18,6 +19,16 @@ function Translator() {
|
|||||||
t.servers={}; //The API is stateful, use one pgf_online object per grammar
|
t.servers={}; //The API is stateful, use one pgf_online object per grammar
|
||||||
t.grammar_info={};
|
t.grammar_info={};
|
||||||
pgf_online({}).get_grammarlist(bind(t.extend_methods,t))
|
pgf_online({}).get_grammarlist(bind(t.extend_methods,t))
|
||||||
|
|
||||||
|
function update_language_menu(t,id) {
|
||||||
|
var dl=element(id);
|
||||||
|
clear(dl);
|
||||||
|
for(var i in languages) {
|
||||||
|
var l=languages[i]
|
||||||
|
dl.appendChild(dt(radiobutton(id,l.code,l.name,bind(t.change,t))))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
update_language_menu(t,"source")
|
update_language_menu(t,"source")
|
||||||
update_language_menu(t,"target")
|
update_language_menu(t,"target")
|
||||||
if(window.apertium) t.add_apertium()
|
if(window.apertium) t.add_apertium()
|
||||||
@@ -30,15 +41,6 @@ function Translator() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function update_language_menu(t,id) {
|
|
||||||
var dl=element(id);
|
|
||||||
clear(dl);
|
|
||||||
for(var i in languages) {
|
|
||||||
var l=languages[i]
|
|
||||||
dl.appendChild(dt(radiobutton(id,l.code,l.name,bind(t.change,t))))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Translator.prototype.redraw=function() {
|
Translator.prototype.redraw=function() {
|
||||||
var t=this;
|
var t=this;
|
||||||
if(t.current=="/") t.browse()
|
if(t.current=="/") t.browse()
|
||||||
@@ -67,7 +69,7 @@ Translator.prototype.switch_grammar=function(grammar,cont) {
|
|||||||
var pgf=t.servers[grammar]
|
var pgf=t.servers[grammar]
|
||||||
if(pgf) pgf.waiting.push(cont)
|
if(pgf) pgf.waiting.push(cont)
|
||||||
else {
|
else {
|
||||||
pgf=t.servers[grammar]=pgf_online({})
|
pgf=t.servers[grammar]=pgf_online({grammar_list:[grammar]})
|
||||||
pgf.waiting=[cont]
|
pgf.waiting=[cont]
|
||||||
function cont2(gr_info) {
|
function cont2(gr_info) {
|
||||||
t.grammar_info[grammar]=gr_info
|
t.grammar_info[grammar]=gr_info
|
||||||
@@ -201,11 +203,9 @@ Translator.prototype.update_translation=function(i) {
|
|||||||
var server=t.servers[grammar]
|
var server=t.servers[grammar]
|
||||||
function upd3(txts) { update_segment(grammar,txts) }
|
function upd3(txts) { update_segment(grammar,txts) }
|
||||||
function upd2(ts) {
|
function upd2(ts) {
|
||||||
function unlex(txt,cont) { gfshell('ps -unlextext "'+txt+'"',cont) }
|
|
||||||
|
|
||||||
switch(ts.length) {
|
switch(ts.length) {
|
||||||
case 0: upd3(["[no translation]"]);break;
|
case 0: upd3(["[no translation]"]);break;
|
||||||
default: mapc(unlex,ts,upd3); break;
|
default: mapc(unlextext,ts,upd3); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function upd1(translate_output) {
|
function upd1(translate_output) {
|
||||||
@@ -221,7 +221,7 @@ Translator.prototype.update_translation=function(i) {
|
|||||||
var want={from:o.from, to:o.to, method:grammar}
|
var want={from:o.from, to:o.to, method:grammar}
|
||||||
if(!eq_options(segment.options,want)) {
|
if(!eq_options(segment.options,want)) {
|
||||||
//console.log("Updating "+i)
|
//console.log("Updating "+i)
|
||||||
gfshell('ps -lextext "'+segment.source+'"',upd0)
|
lextext(segment.source,upd0)
|
||||||
}
|
}
|
||||||
//else console.log("No update ",want,segment.options)
|
//else console.log("No update ",want,segment.options)
|
||||||
}
|
}
|
||||||
@@ -253,6 +253,18 @@ Translator.prototype.update_translation=function(i) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return the name of the grammar if the segment uses GF for translation
|
||||||
|
function uses_gf(doc,segment) {
|
||||||
|
var m= segment.options.method || doc.options.method
|
||||||
|
var d=segment.use_default
|
||||||
|
if(d || d==null) m=doc.options.method
|
||||||
|
switch(m) {
|
||||||
|
case "Manual": return null
|
||||||
|
case "Apertium": return null
|
||||||
|
default: return m
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Translator.prototype.add_apertium=function() {
|
Translator.prototype.add_apertium=function() {
|
||||||
var dl=element("methods")
|
var dl=element("methods")
|
||||||
if(dl) add_apertium_to_menu(dl,bind(this.change,this))
|
if(dl) add_apertium_to_menu(dl,bind(this.change,this))
|
||||||
@@ -688,11 +700,12 @@ Translator.prototype.pick_translation=function(i,txt) {
|
|||||||
|
|
||||||
Translator.prototype.edit_source=function(source,i) {
|
Translator.prototype.edit_source=function(source,i) {
|
||||||
var t=this
|
var t=this
|
||||||
var s=t.document.segments[i]
|
var doc=t.document
|
||||||
|
var s=doc.segments[i]
|
||||||
|
|
||||||
function restore() { t.replace_segment(i,t.draw_segment(s,i)) }
|
function restore() { t.replace_segment(i,t.draw_segment(s,i)) }
|
||||||
function done() {
|
function change(str) {
|
||||||
s.source=inp.value // side effect, updating the document in-place
|
s.source=str // side effect, updating the document in-place
|
||||||
restore();
|
restore();
|
||||||
if(s.options.method!="Manual") {
|
if(s.options.method!="Manual") {
|
||||||
s.options.to="" // hack to force an update
|
s.options.to="" // hack to force an update
|
||||||
@@ -700,9 +713,55 @@ Translator.prototype.edit_source=function(source,i) {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
function done() { change(inp.value) }
|
||||||
|
|
||||||
|
function goto_minibar() {
|
||||||
|
function cont(grammar_info) {
|
||||||
|
var gname=grammar_info.name
|
||||||
|
var gfrom=gname+doc.options.from
|
||||||
|
var gto=gname+doc.options.to
|
||||||
|
var pgf_server=t.servers[grammarname]
|
||||||
|
function cont2(source) {
|
||||||
|
function ok() {
|
||||||
|
unlextext(gf_unlex(minibar.input.current.input),change)
|
||||||
|
t.hide_filebox()
|
||||||
|
}
|
||||||
|
function cancel() {
|
||||||
|
restore()
|
||||||
|
t.hide_filebox()
|
||||||
|
}
|
||||||
|
var minibar_options= {
|
||||||
|
startcat_menu: false,
|
||||||
|
random_button: false,
|
||||||
|
try_google: false,
|
||||||
|
show_abstract: true,
|
||||||
|
show_trees: true,
|
||||||
|
show_grouped_translations: false,
|
||||||
|
word_replacements: true,
|
||||||
|
default_source_language: "Eng",
|
||||||
|
initial_grammar: pgf_server.current_grammar_url,
|
||||||
|
initial:{from:gfrom,
|
||||||
|
startcat:grammar_info.startcat,
|
||||||
|
input:source.split(" ")},
|
||||||
|
initial_toLangs: [gto]
|
||||||
|
}
|
||||||
|
replaceChildren(t.filebox,empty_id("div","minibar"))
|
||||||
|
var minibar=new Minibar(pgf_server,minibar_options)
|
||||||
|
appendChildren(t.filebox,[button("OK",ok),
|
||||||
|
button("Cancel",cancel)])
|
||||||
|
t.show_filebox()
|
||||||
|
}
|
||||||
|
lextext(s.source,cont2)
|
||||||
|
|
||||||
|
}
|
||||||
|
t.switch_grammar(grammarname,cont)
|
||||||
|
}
|
||||||
|
|
||||||
var inp=node("input",{name:"it",value:s.source})
|
var inp=node("input",{name:"it",value:s.source})
|
||||||
var e=wrap("form",[inp, submit(), button("Cancel",restore)])
|
var e=wrap("form",[inp, submit(), button("Cancel",restore),
|
||||||
|
text(" ")])
|
||||||
|
var grammarname=uses_gf(doc,s)
|
||||||
|
if(grammarname) e.appendChild(button("Minibar",goto_minibar))
|
||||||
clear(source)
|
clear(source)
|
||||||
source.appendChild(e)
|
source.appendChild(e)
|
||||||
e.onsubmit=done
|
e.onsubmit=done
|
||||||
@@ -930,35 +989,6 @@ for(var i in languages) {
|
|||||||
function concname(code) { return langname[code] || code; }
|
function concname(code) { return langname[code] || code; }
|
||||||
function alangcode(code) { return langcode2[code] || code; }
|
function alangcode(code) { return langcode2[code] || code; }
|
||||||
|
|
||||||
function tr_local() {
|
|
||||||
function real(storage) {
|
|
||||||
var appPrefix="gf.translator."
|
|
||||||
return {
|
|
||||||
get: function (name,def) {
|
|
||||||
var id=appPrefix+name
|
|
||||||
return storage[id] ? JSON.parse(storage[id]) : def;
|
|
||||||
},
|
|
||||||
put: function (name,value) {
|
|
||||||
var id=appPrefix+name;
|
|
||||||
storage[id]=JSON.stringify(value);
|
|
||||||
},
|
|
||||||
remove: function(name) {
|
|
||||||
var id=appPrefix+name;
|
|
||||||
delete storage[id]
|
|
||||||
},
|
|
||||||
ls: function(prefix) {
|
|
||||||
var pre=appPrefix+prefix
|
|
||||||
var files=[]
|
|
||||||
for(var i in storage)
|
|
||||||
if(hasPrefix(i,pre)) files.push(i.substr(pre.length))
|
|
||||||
files.sort()
|
|
||||||
return files
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return supports_html5_storage() ? real(localStorage) : real([])
|
|
||||||
}
|
|
||||||
|
|
||||||
// Collect alternative texts in the output from PGF service translate command
|
// Collect alternative texts in the output from PGF service translate command
|
||||||
function collect_texts(ts) {
|
function collect_texts(ts) {
|
||||||
var list=[]
|
var list=[]
|
||||||
@@ -1096,6 +1126,10 @@ function save_in_cloud(filename,document,cont) {
|
|||||||
with_dir(save)
|
with_dir(save)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function unlextext(txt,cont) { gfshell('ps -unlextext "'+txt+'"',cont) }
|
||||||
|
function lextext(txt,cont) { gfshell('ps -lextext "'+txt+'"',cont) }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* --- DOM Support ---------------------------------------------------------- */
|
/* --- DOM Support ---------------------------------------------------------- */
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user