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-75d572ba1ddd
master
Alexis Deveria 2009-11-10 21:31:47 +00:00
parent 237fd96b0f
commit 55f791910a
4 changed files with 102 additions and 51 deletions

View File

@ -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?"
}
}
];

View File

@ -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");
};

View File

@ -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>

View File

@ -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){