Added locale improvements: JS strings - see lang.en.js, dropdown list in doc props, browser language detect on startup
git-svn-id: http://svg-edit.googlecode.com/svn/branches/transformlist@928 eee81c28-f429-11dd-99c0-75d572ba1dddmaster
parent
237fd96b0f
commit
55f791910a
|
@ -116,5 +116,19 @@
|
|||
{"id":"tool_node_delete","title":"Delete Node"},
|
||||
{"id":"selLayerLabel","textContent":"Move elements to:"},
|
||||
{"id":"selLayerNames","title":"Move selected elements to a different layer"},
|
||||
{"id":"sidepanel_handle","title":"Drag left/right to resize side panel [X]","textContent":"L a y e r s"}
|
||||
{"id":"sidepanel_handle","title":"Drag left/right to resize side panel [X]","textContent":"L a y e r s"},
|
||||
{"js_strings": {
|
||||
"invalidAttrValGiven":"Invalid value given",
|
||||
"noContentToFitTo":"No content to fit to",
|
||||
'layer':"Layer",
|
||||
"dupeLayerName":"There is already a layer named that!",
|
||||
"enterUniqueLayerName":"Please enter a unique layer name",
|
||||
"enterNewLayerName":"Please enter the new layer name",
|
||||
"layerHasThatName":"Layer already has that name",
|
||||
"QmoveElemsToLayer":"Move selected elements to layer '%s'?",
|
||||
"QwantToClear":"Do you want to clear the drawing?\nThis will also erase your undo history!",
|
||||
"QerrorsRevertToSource":"There were parsing errors in your SVG source.\nRevert back to original SVG source?",
|
||||
"QignoreSourceChanges":"Ignore changes made to SVG source?"
|
||||
}
|
||||
}
|
||||
];
|
||||
|
|
|
@ -1,33 +1,35 @@
|
|||
// function GUP is taken from http://www.netlobo.com/url_query_string_javascript.html
|
||||
// gup = get URL parameter
|
||||
function gup( name )
|
||||
{
|
||||
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
|
||||
var regexS = "[\\?&]"+name+"=([^&#]*)";
|
||||
var regex = new RegExp( regexS );
|
||||
var results = regex.exec( window.location.href );
|
||||
if( results == null )
|
||||
return "";
|
||||
else
|
||||
return results[1];
|
||||
}
|
||||
|
||||
var put_locale = function(){
|
||||
var lang_param = gup("lang");
|
||||
if (lang_param == "")
|
||||
return;
|
||||
var put_locale = function(svgCanvas, given_param){
|
||||
var lang_param;
|
||||
if(!given_param) {
|
||||
if (navigator.userLanguage) // Explorer
|
||||
lang_param = navigator.userLanguage;
|
||||
else if (navigator.language) // FF, Opera, ...
|
||||
lang_param = navigator.language;
|
||||
if (lang_param == "")
|
||||
return;
|
||||
} else {
|
||||
lang_param = given_param;
|
||||
}
|
||||
// don't bother on first run if language is English
|
||||
if(!given_param && lang_param.indexOf("en") == 0) return;
|
||||
|
||||
var url = "locale/lang." + lang_param + ".js";
|
||||
$.get(url, function(data){
|
||||
var LangData = eval(data);
|
||||
var LangData = eval(data), js_strings;
|
||||
for (var i=0;i<LangData.length;i++)
|
||||
{
|
||||
var elem = document.getElementById(LangData[i].id);
|
||||
if(elem){
|
||||
if(LangData[i].title)
|
||||
elem.title = LangData[i].title;
|
||||
if(LangData[i].textContent)
|
||||
elem.textContent = LangData[i].textContent;
|
||||
if(LangData[i].id) {
|
||||
var elem = document.getElementById(LangData[i].id);
|
||||
if(elem){
|
||||
if(LangData[i].title)
|
||||
elem.title = LangData[i].title;
|
||||
if(LangData[i].textContent)
|
||||
elem.textContent = LangData[i].textContent;
|
||||
}
|
||||
} else if(LangData[i].js_strings) {
|
||||
js_strings = LangData[i].js_strings;
|
||||
}
|
||||
}
|
||||
svgCanvas.setLang(lang_param, js_strings);
|
||||
},"json");
|
||||
};
|
||||
|
|
|
@ -397,6 +397,18 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
|
|||
<fieldset id="svg_docprops_prefs">
|
||||
<legend id="svginfo_editor_profs">Editor Preferences</legend>
|
||||
|
||||
<label><span id="svginfo_lang">Language:</span>
|
||||
<select id="lang_select">
|
||||
<option value="cs">Czech</option>
|
||||
<option value="nl">Dutch</option>
|
||||
<option value="en" selected="selected">English</option>
|
||||
<option value="fr">French</option>
|
||||
<option value="de">German</option>
|
||||
<option value="ro">Romanian</option>
|
||||
<option value="sk">Slovak</option>
|
||||
</select>
|
||||
</label>
|
||||
|
||||
<label><span id="svginfo_icons">Icon size:</span>
|
||||
<select id="iconsize">
|
||||
<option id="icon_small" value="s">Small</option>
|
||||
|
|
|
@ -8,8 +8,23 @@ if(!window.console) {
|
|||
*/
|
||||
|
||||
function svg_edit_setup() {
|
||||
var uiStrings = {
|
||||
'invalidAttrValGiven':'Invalid value given',
|
||||
'noContentToFitTo':'No content to fit to',
|
||||
'layer':"Layer",
|
||||
'dupeLayerName':"There is already a layer named that!",
|
||||
'enterUniqueLayerName':"Please enter a unique layer name",
|
||||
'enterNewLayerName':"Please enter the new layer name",
|
||||
'layerHasThatName':"Layer already has that name",
|
||||
'QmoveElemsToLayer':"Move selected elements to layer '%s'?",
|
||||
'QwantToClear':'Do you want to clear the drawing?\nThis will also erase your undo history!',
|
||||
'QerrorsRevertToSource':'There were parsing errors in your SVG source.\nRevert back to original SVG source?',
|
||||
'QignoreSourceChanges':'Ignore changes made to SVG source?'
|
||||
};
|
||||
|
||||
var palette = ["#000000","#202020","#404040","#606060","#808080","#a0a0a0","#c0c0c0","#e0e0e0","#ffffff","#800000","#ff0000","#808000","#ffff00","#008000","#00ff00","#008080","#00ffff","#000080","#0000ff","#800080","#ff00ff","#2b0000","#550000","#800000","#aa0000","#d40000","#ff0000","#ff2a2a","#ff5555","#ff8080","#ffaaaa","#ffd5d5","#280b0b","#501616","#782121","#a02c2c","#c83737","#d35f5f","#de8787","#e9afaf","#f4d7d7","#241c1c","#483737","#6c5353","#916f6f","#ac9393","#c8b7b7","#e3dbdb","#2b1100","#552200","#803300","#aa4400","#d45500","#ff6600","#ff7f2a","#ff9955","#ffb380","#ffccaa","#ffe6d5","#28170b","#502d16","#784421","#a05a2c","#c87137","#d38d5f","#deaa87","#e9c6af","#f4e3d7","#241f1c","#483e37","#6c5d53","#917c6f","#ac9d93","#c8beb7","#e3dedb","#2b2200","#554400","#806600","#aa8800","#d4aa00","#ffcc00","#ffd42a","#ffdd55","#ffe680","#ffeeaa","#fff6d5","#28220b","#504416","#786721","#a0892c","#c8ab37","#d3bc5f","#decd87","#e9ddaf","#f4eed7","#24221c","#484537","#6c6753","#918a6f","#aca793","#c8c4b7","#e3e2db","#222b00","#445500","#668000","#88aa00","#aad400","#ccff00","#d4ff2a","#ddff55","#e5ff80","#eeffaa","#f6ffd5","#22280b","#445016","#677821","#89a02c","#abc837","#bcd35f","#cdde87","#dde9af","#eef4d7","#22241c","#454837","#676c53","#8a916f","#a7ac93","#c4c8b7","#e2e3db","#112b00","#225500","#338000","#44aa00","#55d400","#66ff00","#7fff2a","#99ff55","#b3ff80","#ccffaa","#e5ffd5","#17280b","#2d5016","#447821","#5aa02c","#71c837","#8dd35f","#aade87","#c6e9af","#e3f4d7","#1f241c","#3e4837","#5d6c53","#7c916f","#9dac93","#bec8b7","#dee3db","#002b00","#005500","#008000","#00aa00","#00d400","#00ff00","#2aff2a","#55ff55","#80ff80","#aaffaa","#d5ffd5","#0b280b","#165016","#217821","#2ca02c","#37c837","#5fd35f","#87de87","#afe9af","#d7f4d7","#1c241c","#374837","#536c53","#6f916f","#93ac93","#b7c8b7","#dbe3db","#002b11","#005522","#008033","#00aa44","#00d455","#00ff66","#2aff80","#55ff99","#80ffb3","#aaffcc","#d5ffe6","#0b2817","#16502d","#217844","#2ca05a","#37c871","#5fd38d","#87deaa","#afe9c6","#d7f4e3","#1c241f","#37483e","#536c5d","#6f917c","#93ac9d","#b7c8be","#dbe3de","#002b22","#005544","#008066","#00aa88","#00d4aa","#00ffcc","#2affd5","#55ffdd","#80ffe6","#aaffee","#d5fff6","#0b2822","#165044","#217867","#2ca089","#37c8ab","#5fd3bc","#87decd","#afe9dd","#d7f4ee","#1c2422","#374845","#536c67","#6f918a","#93aca7","#b7c8c4","#dbe3e2","#00222b","#004455","#006680","#0088aa","#00aad4","#00ccff","#2ad4ff","#55ddff","#80e5ff","#aaeeff","#d5f6ff","#0b2228","#164450","#216778","#2c89a0","#37abc8","#5fbcd3","#87cdde","#afdde9","#d7eef4","#1c2224","#374548","#53676c","#6f8a91","#93a7ac","#b7c4c8","#dbe2e3","#00112b","#002255","#003380","#0044aa","#0055d4","#0066ff","#2a7fff","#5599ff","#80b3ff","#aaccff","#d5e5ff","#0b1728","#162d50","#214478","#2c5aa0","#3771c8","#5f8dd3","#87aade","#afc6e9","#d7e3f4","#1c1f24","#373e48","#535d6c","#6f7c91","#939dac","#b7bec8","#dbdee3","#00002b","#000055","#000080","#0000aa","#0000d4","#0000ff","#2a2aff","#5555ff","#8080ff","#aaaaff","#d5d5ff","#0b0b28","#161650","#212178","#2c2ca0","#3737c8","#5f5fd3","#8787de","#afafe9","#d7d7f4","#1c1c24","#373748","#53536c","#6f6f91","#9393ac","#b7b7c8","#dbdbe3","#11002b","#220055","#330080","#4400aa","#5500d4","#6600ff","#7f2aff","#9955ff","#b380ff","#ccaaff","#e5d5ff","#170b28","#2d1650","#442178","#5a2ca0","#7137c8","#8d5fd3","#aa87de","#c6afe9","#e3d7f4","#1f1c24","#3e3748","#5d536c","#7c6f91","#9d93ac","#beb7c8","#dedbe3","#22002b","#440055","#660080","#8800aa","#aa00d4","#cc00ff","#d42aff","#dd55ff","#e580ff","#eeaaff","#f6d5ff","#220b28","#441650","#672178","#892ca0","#ab37c8","#bc5fd3","#cd87de","#ddafe9","#eed7f4","#221c24","#453748","#67536c","#8a6f91","#a793ac","#c4b7c8","#e2dbe3","#2b0022","#550044","#800066","#aa0088","#d400aa","#ff00cc","#ff2ad4","#ff55dd","#ff80e5","#ffaaee","#ffd5f6","#280b22","#501644","#782167","#a02c89","#c837ab","#d35fbc","#de87cd","#e9afdd","#f4d7ee","#241c22","#483745","#6c5367","#916f8a","#ac93a7","#c8b7c4","#e3dbe2","#2b0011","#550022","#800033","#aa0044","#d40055","#ff0066","#ff2a7f","#ff5599","#ff80b2","#ffaacc","#ffd5e5","#280b17","#50162d","#782144","#a02c5a","#c83771","#d35f8d","#de87aa","#e9afc6","#f4d7e3","#241c1f","#48373e","#6c535d","#916f7c","#ac939d","#c8b7be","#e3dbde"]
|
||||
|
||||
var currentLang = 'en';
|
||||
var isMac = false; //(navigator.platform.indexOf("Mac") != -1);
|
||||
var modKey = ""; //(isMac ? "meta+" : "ctrl+");
|
||||
var svgCanvas = new SvgCanvas(document.getElementById("svgcanvas"));
|
||||
|
@ -425,8 +440,8 @@ function svg_edit_setup() {
|
|||
var promptMoveLayerOnce = false;
|
||||
$('#selLayerNames').change(function(){
|
||||
var destLayer = this.options[this.selectedIndex].value;
|
||||
// TODO: localize this prompt
|
||||
if (destLayer && (promptMoveLayerOnce || confirm('Move selected elements to layer \'' + destLayer + '\'?'))) {
|
||||
var confirm_str = uiStrings.QmoveElemsToLayer.replace('%s',destLayer);
|
||||
if (destLayer && (promptMoveLayerOnce || confirm(confirm_str))) {
|
||||
promptMoveLayerOnce = true;
|
||||
svgCanvas.moveSelectedToLayer(destLayer);
|
||||
svgCanvas.clearSelection();
|
||||
|
@ -470,9 +485,7 @@ function svg_edit_setup() {
|
|||
} else valid = true;
|
||||
|
||||
if(!valid) {
|
||||
// TODO: localize this
|
||||
alert('Invalid value given for' + $(this).attr('title').replace('Change','')
|
||||
+ '.');
|
||||
alert(uiStrings.invalidAttrValGiven);
|
||||
this.value = selectedElement.getAttribute(attr);
|
||||
return false;
|
||||
}
|
||||
|
@ -765,8 +778,7 @@ function svg_edit_setup() {
|
|||
}
|
||||
|
||||
var clickClear = function(){
|
||||
// TODO: localize this prompt
|
||||
if( confirm('Do you want to clear the drawing?\nThis will also erase your undo history!') ) {
|
||||
if( confirm(uiStrings.QwantToClear) ) {
|
||||
svgCanvas.clear();
|
||||
updateContextPanel();
|
||||
}
|
||||
|
@ -904,8 +916,7 @@ function svg_edit_setup() {
|
|||
if (!editingsource) return;
|
||||
|
||||
if (!svgCanvas.setSvgString($('#svg_source_textarea').val())) {
|
||||
// TODO: localize this prompt
|
||||
if( !confirm('There were parsing errors in your SVG source.\nRevert back to original SVG source?') ) {
|
||||
if( !confirm(uiStrings.QerrorsRevertToSource) ) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -934,7 +945,7 @@ function svg_edit_setup() {
|
|||
x ='fit';
|
||||
}
|
||||
if(!svgCanvas.setResolution(x,y)) {
|
||||
alert('No content to fit to');
|
||||
alert(uiStrings.noContentToFitTo);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -958,6 +969,12 @@ function svg_edit_setup() {
|
|||
$('#background_img').remove();
|
||||
}
|
||||
|
||||
// set language
|
||||
var lang = $('#lang_select').val();
|
||||
if(lang != currentLang) {
|
||||
put_locale(svgCanvas, lang);
|
||||
}
|
||||
|
||||
// set icon size
|
||||
setIconSize($('#iconsize').val());
|
||||
hideDocProperties();
|
||||
|
@ -1109,8 +1126,7 @@ function svg_edit_setup() {
|
|||
if (editingsource) {
|
||||
var oldString = svgCanvas.getSvgString();
|
||||
if (oldString != $('#svg_source_textarea').val()) {
|
||||
// TODO: localize this prompt
|
||||
if( !confirm('Ignore changes made to SVG source?') ) {
|
||||
if( !confirm(uiStrings.QignoreSourceChanges) ) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -1479,16 +1495,15 @@ function svg_edit_setup() {
|
|||
for (var i = 0; i < curNames.length; ++i) { curNames[i] = svgCanvas.getLayer(i); }
|
||||
|
||||
var j = (curNames.length+1);
|
||||
var uniqName = "Layer " + j;
|
||||
while (jQuery.inArray(uniqName, curNames) != -1) {
|
||||
var uniqName = uiStrings.layer + " " + j;
|
||||
while ($.inArray(uniqName, curNames) != -1) {
|
||||
j++;
|
||||
uniqName = "Layer " + j;
|
||||
uniqName = uiStrings.layer + " " + j;
|
||||
}
|
||||
// TODO: localize this
|
||||
var newName = prompt("Please enter a unique layer name",uniqName);
|
||||
var newName = prompt(uiStrings.enterUniqueLayerName,uniqName);
|
||||
if (!newName) return;
|
||||
if (jQuery.inArray(newName, curNames) != -1) {
|
||||
alert("There is already a layer named that!");
|
||||
if ($.inArray(newName, curNames) != -1) {
|
||||
alert(uiStrings.dupeLayerName);
|
||||
return;
|
||||
}
|
||||
svgCanvas.createLayer(newName);
|
||||
|
@ -1539,18 +1554,17 @@ function svg_edit_setup() {
|
|||
$('#layer_rename').click(function() {
|
||||
var curIndex = $('#layerlist tr.layersel').prevAll().length;
|
||||
var oldName = $('#layerlist tr.layersel td.layername').text();
|
||||
// TODO: localize this
|
||||
var newName = prompt("Please enter the new layer name","");
|
||||
var newName = prompt(uiStrings.enterNewLayerName,"");
|
||||
if (!newName) return;
|
||||
if (oldName == newName) {
|
||||
alert("Layer already has that name");
|
||||
alert(uiStrings.layerHasThatName);
|
||||
return;
|
||||
}
|
||||
|
||||
var curNames = new Array(svgCanvas.getNumLayers());
|
||||
for (var i = 0; i < curNames.length; ++i) { curNames[i] = svgCanvas.getLayer(i); }
|
||||
if (jQuery.inArray(newName, curNames) != -1) {
|
||||
alert("There is already a layer named that!");
|
||||
if ($.inArray(newName, curNames) != -1) {
|
||||
alert(uiStrings.layerHasThatName);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1820,6 +1834,15 @@ function svg_edit_setup() {
|
|||
|
||||
svgCanvas.setIconSize = setIconSize;
|
||||
|
||||
svgCanvas.setLang = function(lang, strings) {
|
||||
currentLang = lang;
|
||||
$('#lang_select').val(lang);
|
||||
if(strings) {
|
||||
// $.extend will only replace the given strings
|
||||
$.extend(uiStrings,strings);
|
||||
}
|
||||
};
|
||||
|
||||
svgCanvas.setCustomHandlers = function(opts) {
|
||||
if(opts.open) {
|
||||
$('#tool_open').show();
|
||||
|
@ -1975,8 +1998,8 @@ function setSVGIcons() {
|
|||
|
||||
// This happens when the page is loaded
|
||||
$(function() {
|
||||
put_locale();
|
||||
svgCanvas = svg_edit_setup();
|
||||
put_locale(svgCanvas);
|
||||
|
||||
try{
|
||||
window.addEventListener("message", function(e){
|
||||
|
|
Loading…
Reference in New Issue