Tidy up of editor i18n messages

This commit is contained in:
Nick O'Leary 2015-06-30 23:42:03 +01:00
parent bc76499957
commit c47da013ff
17 changed files with 530 additions and 515 deletions

View File

@ -81,7 +81,7 @@ RED.comms = (function() {
}; };
ws.onclose = function() { ws.onclose = function() {
if (errornotification == null) { if (errornotification == null) {
errornotification = RED.notify(RED._("notification.lostConnectionError"),"error",true); errornotification = RED.notify(RED._("notification.error",{message:RED._("notification.errors.lostConnection")}),"error",true);
} else if (clearErrorTimer) { } else if (clearErrorTimer) {
clearTimeout(clearErrorTimer); clearTimeout(clearErrorTimer);
clearErrorTimer = null; clearErrorTimer = null;

View File

@ -110,7 +110,7 @@ var RED = (function() {
} }
if (addedTypes.length) { if (addedTypes.length) {
typeList = "<ul><li>"+addedTypes.join("</li><li>")+"</li></ul>"; typeList = "<ul><li>"+addedTypes.join("</li><li>")+"</li></ul>";
RED.notify(RED._("notification.nodeAdded", {count:addedTypes.length})+typeList,"success"); RED.notify(RED._("palette.event.nodeAdded", {count:addedTypes.length})+typeList,"success");
} }
} else if (topic == "node/removed") { } else if (topic == "node/removed") {
for (i=0;i<msg.length;i++) { for (i=0;i<msg.length;i++) {
@ -118,7 +118,7 @@ var RED = (function() {
info = RED.nodes.removeNodeSet(m.id); info = RED.nodes.removeNodeSet(m.id);
if (info.added) { if (info.added) {
typeList = "<ul><li>"+m.types.join("</li><li>")+"</li></ul>"; typeList = "<ul><li>"+m.types.join("</li><li>")+"</li></ul>";
RED.notify(RED._("notification.nodeRemoved", {count:m.types.length})+typeList,"success"); RED.notify(RED._("palette.event.nodeRemoved", {count:m.types.length})+typeList,"success");
} }
} }
} else if (topic == "node/enabled") { } else if (topic == "node/enabled") {
@ -127,12 +127,12 @@ var RED = (function() {
if (info.added) { if (info.added) {
RED.nodes.enableNodeSet(msg.id); RED.nodes.enableNodeSet(msg.id);
typeList = "<ul><li>"+msg.types.join("</li><li>")+"</li></ul>"; typeList = "<ul><li>"+msg.types.join("</li><li>")+"</li></ul>";
RED.notify(RED._("notification.nodeEnabled", {count:msg.types.length})+typeList,"success"); RED.notify(RED._("palette.event.nodeEnabled", {count:msg.types.length})+typeList,"success");
} else { } else {
$.get('nodes/'+msg.id, function(data) { $.get('nodes/'+msg.id, function(data) {
$("body").append(data); $("body").append(data);
typeList = "<ul><li>"+msg.types.join("</li><li>")+"</li></ul>"; typeList = "<ul><li>"+msg.types.join("</li><li>")+"</li></ul>";
RED.notify(RED._("notification.nodeAdded", {count:msg.types.length})+typeList,"success"); RED.notify(RED._("palette.event.nodeAdded", {count:msg.types.length})+typeList,"success");
}); });
} }
} }
@ -140,7 +140,7 @@ var RED = (function() {
if (msg.types) { if (msg.types) {
RED.nodes.disableNodeSet(msg.id); RED.nodes.disableNodeSet(msg.id);
typeList = "<ul><li>"+msg.types.join("</li><li>")+"</li></ul>"; typeList = "<ul><li>"+msg.types.join("</li><li>")+"</li></ul>";
RED.notify(RED._("notfication.nodeDisabled", {count:msg.types.length})+typeList,"success"); RED.notify(RED._("palette.event.nodeDisabled", {count:msg.types.length})+typeList,"success");
} }
} }
}); });

View File

@ -133,7 +133,8 @@ RED.nodes = (function() {
}, },
removeNodeType: function(nt) { removeNodeType: function(nt) {
if (nt.substring(0,8) != "subflow:") { if (nt.substring(0,8) != "subflow:") {
throw new Error(RED._("error.apiSubflowOnly"),nt); // NON-NLS - internal debug message
throw new Error("this api is subflow only. called with:",nt);
} }
delete nodeDefinitions[nt]; delete nodeDefinitions[nt];
RED.palette.remove(nt); RED.palette.remove(nt);
@ -549,7 +550,7 @@ RED.nodes = (function() {
try { try {
newNodes = JSON.parse(newNodesObj); newNodes = JSON.parse(newNodesObj);
} catch(err) { } catch(err) {
var e = new Error(RED._("error.invalidFlow")+err.message); var e = new Error(RED._("clipboard.invalidFlow",{message:err.message}));
e.code = "NODE_RED"; e.code = "NODE_RED";
throw e; throw e;
} }
@ -576,8 +577,7 @@ RED.nodes = (function() {
if (unknownTypes.length > 0) { if (unknownTypes.length > 0) {
var typeList = "<ul><li>"+unknownTypes.join("</li><li>")+"</li></ul>"; var typeList = "<ul><li>"+unknownTypes.join("</li><li>")+"</li></ul>";
var type = "type"+(unknownTypes.length > 1?"s":""); var type = "type"+(unknownTypes.length > 1?"s":"");
RED.notify("<strong>"+RED._("notification.importUnrecognised")+type+":</strong>"+typeList,"error",false,10000); RED.notify("<strong>"+RED._("clipboard.importUnrecognised",{count:unknownTypes.length})+"</strong>"+typeList,"error",false,10000);
//"DO NOT DEPLOY while in this state.<br/>Either, add missing types to Node-RED, restart and then reload page,<br/>or delete unknown "+n.name+", rewire as required, and then deploy.","error");
} }
var activeWorkspace = RED.workspaces.active(); var activeWorkspace = RED.workspaces.active();
@ -589,17 +589,16 @@ RED.nodes = (function() {
var subflowId = m[1]; var subflowId = m[1];
var err; var err;
if (subflowId === activeSubflow.id) { if (subflowId === activeSubflow.id) {
err = new Error(RED._("error.cannotAddSubflowToItself")); err = new Error(RED._("notification.errors.cannotAddSubflowToItself"));
} }
if (subflowContains(m[1],activeSubflow.id)) { if (subflowContains(m[1],activeSubflow.id)) {
err = new Error(RED._("error.cannotAddCircularReference")); err = new Error(RED._("notification.errors.cannotAddCircularReference"));
} }
if (err) { if (err) {
// TODO: standardise error codes // TODO: standardise error codes
err.code = "NODE_RED"; err.code = "NODE_RED";
throw err; throw err;
} }
} }
} }
} }

View File

@ -33,7 +33,7 @@ RED.clipboard = (function() {
buttons: [ buttons: [
{ {
id: "clipboard-dialog-ok", id: "clipboard-dialog-ok",
text: RED._("dialog.ok"), text: RED._("common.label.ok"),
click: function() { click: function() {
if (/Import/.test(dialog.dialog("option","title"))) { if (/Import/.test(dialog.dialog("option","title"))) {
RED.view.importNodes($("#clipboard-import").val()); RED.view.importNodes($("#clipboard-import").val());
@ -43,14 +43,14 @@ RED.clipboard = (function() {
}, },
{ {
id: "clipboard-dialog-cancel", id: "clipboard-dialog-cancel",
text: RED._("dialog.cancel"), text: RED._("common.label.cancel"),
click: function() { click: function() {
$( this ).dialog( "close" ); $( this ).dialog( "close" );
} }
}, },
{ {
id: "clipboard-dialog-close", id: "clipboard-dialog-close",
text: RED._("dialog.close"), text: RED._("common.label.close"),
click: function() { click: function() {
$( this ).dialog( "close" ); $( this ).dialog( "close" );
} }
@ -68,15 +68,17 @@ RED.clipboard = (function() {
dialogContainer = dialog.children(".dialog-form"); dialogContainer = dialog.children(".dialog-form");
exportNodesDialog = '<div class="form-row">'+ exportNodesDialog = '<div class="form-row">'+
'<label for="node-input-export" style="display: block; width:100%;"><i class="fa fa-clipboard"></i>'+RED._("dialog.nodes")+'</label>'+ '<label for="node-input-export" style="display: block; width:100%;"><i class="fa fa-clipboard"></i> '+RED._("clipboard.nodes")+'</label>'+
'<textarea readonly style="resize: none; width: 100%; border-radius: 0px;font-family: monospace; font-size: 12px; background:#eee; padding-left: 0.5em; box-sizing:border-box;" id="clipboard-export" rows="5"></textarea>'+ '<textarea readonly style="resize: none; width: 100%; border-radius: 0px;font-family: monospace; font-size: 12px; background:#eee; padding-left: 0.5em; box-sizing:border-box;" id="clipboard-export" rows="5"></textarea>'+
'</div>'+ '</div>'+
'<div class="form-tips">'+ '<div class="form-tips">'+
RED._("dialog.selectToCopy")+ RED._("clipboard.selectNodes")+
'</div>'; '</div>';
importNodesDialog = '<div class="form-row">'+ importNodesDialog = '<div class="form-row">'+
'<textarea style="resize: none; width: 100%; border-radius: 0px;font-family: monospace; font-size: 12px; background:#eee; padding-left: 0.5em; box-sizing:border-box;" id="clipboard-import" rows="5" placeholder="'+RED._("dialog.pasteNodesHere")+'"></textarea>'+ '<textarea style="resize: none; width: 100%; border-radius: 0px;font-family: monospace; font-size: 12px; background:#eee; padding-left: 0.5em; box-sizing:border-box;" id="clipboard-import" rows="5" placeholder="'+
RED._("clipboard.pasteNodes")+
'"></textarea>'+
'</div>'; '</div>';
} }
@ -105,7 +107,7 @@ RED.clipboard = (function() {
$("#clipboard-import").keyup(validateImport); $("#clipboard-import").keyup(validateImport);
$("#clipboard-import").on('paste',function() { setTimeout(validateImport,10)}); $("#clipboard-import").on('paste',function() { setTimeout(validateImport,10)});
dialog.dialog("option","title",RED._("dialog.importNodes")).dialog("open"); dialog.dialog("option","title",RED._("clipboard.importNodes")).dialog("open");
} }
function exportNodes() { function exportNodes() {
@ -127,7 +129,7 @@ RED.clipboard = (function() {
return false; return false;
}) })
}); });
dialog.dialog("option","title",RED._("dialog.exportNodesClipboard")).dialog( "open" ); dialog.dialog("option","title",RED._("clipboard.exportNodes")).dialog( "open" );
} }
} }

View File

@ -83,7 +83,7 @@ RED.deploy = (function() {
height: "auto", height: "auto",
buttons: [ buttons: [
{ {
text: RED._("deploy.confirmDeploy"), text: RED._("deploy.confirm.button.confirm"),
click: function() { click: function() {
var ignoreChecked = $( "#node-dialog-confirm-deploy-hide" ).prop("checked"); var ignoreChecked = $( "#node-dialog-confirm-deploy-hide" ).prop("checked");
@ -95,7 +95,7 @@ RED.deploy = (function() {
} }
}, },
{ {
text: RED._("deploy.cancelDeploy"), text: RED._("deploy.confirm.button.cancel"),
click: function() { click: function() {
$( this ).dialog( "close" ); $( this ).dialog( "close" );
} }
@ -114,7 +114,7 @@ RED.deploy = (function() {
RED.nodes.on('change',function(state) { RED.nodes.on('change',function(state) {
if (state.dirty) { if (state.dirty) {
window.onbeforeunload = function() { window.onbeforeunload = function() {
return RED._("deploy.undeployedChanges"); return RED._("deploy.confirm.undeployedChanges");
} }
$("#btn-deploy").removeClass("disabled"); $("#btn-deploy").removeClass("disabled");
} else { } else {
@ -236,9 +236,9 @@ RED.deploy = (function() {
}).fail(function(xhr,textStatus,err) { }).fail(function(xhr,textStatus,err) {
RED.nodes.dirty(true); RED.nodes.dirty(true);
if (xhr.responseText) { if (xhr.responseText) {
RED.notify(RED._("deploy.error")+xhr.responseJSON.message,"error"); RED.notify(RED._("notification.error",{message:xhr.responseJSON.message}),"error");
} else { } else {
RED.notify(RED._("deploy.error")+RED._("deploy.noResponseError"),"error"); RED.notify(RED._("notification.error",{message:RED._("deploy.errors.noResponse")}),"error");
} }
}).always(function() { }).always(function() {
$("#btn-deploy-icon").removeClass('spinner'); $("#btn-deploy-icon").removeClass('spinner');

View File

@ -179,7 +179,7 @@ RED.editor = (function() {
buttons: [ buttons: [
{ {
id: "node-dialog-ok", id: "node-dialog-ok",
text: RED._("dialog.ok"), text: RED._("common.label.ok"),
click: function() { click: function() {
if (editing_node) { if (editing_node) {
var changes = {}; var changes = {};
@ -286,7 +286,7 @@ RED.editor = (function() {
contentType: "application/json; charset=utf-8" contentType: "application/json; charset=utf-8"
}).done(function() { }).done(function() {
RED.library.loadFlowLibrary(); RED.library.loadFlowLibrary();
RED.notify(RED._("editor.savedNodes"),"success"); RED.notify(RED._("library.savedNodes"),"success");
}); });
} }
} }
@ -295,7 +295,7 @@ RED.editor = (function() {
}, },
{ {
id: "node-dialog-cancel", id: "node-dialog-cancel",
text: RED._("dialog.cancel"), text: RED._("common.label.cancel"),
click: function() { click: function() {
if (editing_node && editing_node._def) { if (editing_node && editing_node._def) {
if (editing_node._def.oneditcancel) { if (editing_node._def.oneditcancel) {
@ -567,7 +567,7 @@ RED.editor = (function() {
var buttons = $( "#dialog" ).dialog("option","buttons"); var buttons = $( "#dialog" ).dialog("option","buttons");
buttons.unshift({ buttons.unshift({
class: 'leftButton', class: 'leftButton',
text: RED._("editor.editFlow"), text: RED._("subflow.edit"),
click: function() { click: function() {
RED.workspaces.show(id); RED.workspaces.show(id);
$("#node-dialog-ok").click(); $("#node-dialog-ok").click();
@ -745,7 +745,7 @@ RED.editor = (function() {
buttons: [ buttons: [
{ {
id: "node-config-dialog-ok", id: "node-config-dialog-ok",
text: RED._("dialog.ok"), text: RED._("common.label.ok"),
click: function() { click: function() {
var configProperty = $(this).dialog('option','node-property'); var configProperty = $(this).dialog('option','node-property');
var configId = $(this).dialog('option','node-id'); var configId = $(this).dialog('option','node-id');
@ -805,7 +805,7 @@ RED.editor = (function() {
}, },
{ {
id: "node-config-dialog-cancel", id: "node-config-dialog-cancel",
text: RED._("dialog.cancel"), text: RED._("common.label.cancel"),
click: function() { click: function() {
var configType = $(this).dialog('option','node-type'); var configType = $(this).dialog('option','node-type');
var configId = $(this).dialog('option','node-id'); var configId = $(this).dialog('option','node-id');
@ -861,7 +861,7 @@ RED.editor = (function() {
buttons: [ buttons: [
{ {
id: "subflow-dialog-ok", id: "subflow-dialog-ok",
text: RED._("dialog.ok"), text: RED._("common.label.ok"),
click: function() { click: function() {
if (editing_node) { if (editing_node) {
var i; var i;
@ -875,7 +875,7 @@ RED.editor = (function() {
changes['name'] = editing_node.name; changes['name'] = editing_node.name;
editing_node.name = newName; editing_node.name = newName;
changed = true; changed = true;
$("#menu-item-workspace-menu-"+editing_node.id.replace(".","-")).text(RED._("editor.subflow")+newName); $("#menu-item-workspace-menu-"+editing_node.id.replace(".","-")).text(RED._("subflow.tabLabel",{name:newName}));
} }
RED.palette.refresh(); RED.palette.refresh();
@ -908,7 +908,7 @@ RED.editor = (function() {
}, },
{ {
id: "subflow-dialog-cancel", id: "subflow-dialog-cancel",
text: RED._("dialog.cancel"), text: RED._("common.label.cancel"),
click: function() { click: function() {
$( this ).dialog( "close" ); $( this ).dialog( "close" );
editing_node = null; editing_node = null;
@ -949,8 +949,8 @@ RED.editor = (function() {
} }
}); });
$("#subflow-dialog-user-count").html(RED._("editor.subflowInstances", {count:userCount})).show(); $("#subflow-dialog-user-count").html(RED._("subflow.subflowInstances", {count:userCount})).show();
$("#subflow-dialog").dialog("option","title",RED._("editor.editFlow")+subflow.name).dialog( "open" ); $("#subflow-dialog").dialog("option","title",RED._("subflow.editSubflow",{name:subflow.name})).dialog( "open" );
} }

View File

@ -239,7 +239,7 @@ RED.library = (function() {
height: 450, height: 450,
buttons: [ buttons: [
{ {
text: RED._("dialog.ok"), text: RED._("common.label.ok"),
click: function() { click: function() {
if (selectedLibraryItem) { if (selectedLibraryItem) {
for (var i=0;i<options.fields.length;i++) { for (var i=0;i<options.fields.length;i++) {
@ -252,7 +252,7 @@ RED.library = (function() {
} }
}, },
{ {
text: RED._("dialog.cancel"), text: RED._("common.label.cancel"),
click: function() { click: function() {
$( this ).dialog( "close" ); $( this ).dialog( "close" );
} }
@ -279,7 +279,7 @@ RED.library = (function() {
var filename = $("#node-dialog-library-save-filename").val().replace(/(^\s*)|(\s*$)/g,""); var filename = $("#node-dialog-library-save-filename").val().replace(/(^\s*)|(\s*$)/g,"");
var pathname = $("#node-dialog-library-save-folder").val().replace(/(^\s*)|(\s*$)/g,""); var pathname = $("#node-dialog-library-save-folder").val().replace(/(^\s*)|(\s*$)/g,"");
if (filename === "" || !/.+\.js$/.test(filename)) { if (filename === "" || !/.+\.js$/.test(filename)) {
RED.notify(RED._("notification.invalidFilename"),"warning"); RED.notify(RED._("library.invalidFilename"),"warning");
return; return;
} }
var fullpath = pathname+(pathname===""?"":"/")+filename; var fullpath = pathname+(pathname===""?"":"/")+filename;
@ -327,9 +327,9 @@ RED.library = (function() {
data: JSON.stringify(data), data: JSON.stringify(data),
contentType: "application/json; charset=utf-8" contentType: "application/json; charset=utf-8"
}).done(function(data,textStatus,xhr) { }).done(function(data,textStatus,xhr) {
RED.notify(RED._("notification.savedType", {type:options.type}),"success"); RED.notify(RED._("library.savedType", {type:options.type}),"success");
}).fail(function(xhr,textStatus,err) { }).fail(function(xhr,textStatus,err) {
RED.notify(RED._("notification.saveFailed")+xhr.responseJSON.message,"error"); RED.notify(RED._("library.saveFailed",{message:xhr.responseJSON.message}),"error");
}); });
} }
$( "#node-dialog-library-save-confirm" ).dialog({ $( "#node-dialog-library-save-confirm" ).dialog({
@ -340,14 +340,14 @@ RED.library = (function() {
height: 230, height: 230,
buttons: [ buttons: [
{ {
text: RED._("dialog.ok"), text: RED._("common.label.ok"),
click: function() { click: function() {
saveToLibrary(true); saveToLibrary(true);
$( this ).dialog( "close" ); $( this ).dialog( "close" );
} }
}, },
{ {
text: RED._("dialog.cancel"), text: RED._("common.label.cancel"),
click: function() { click: function() {
$( this ).dialog( "close" ); $( this ).dialog( "close" );
} }
@ -362,14 +362,14 @@ RED.library = (function() {
height: 230, height: 230,
buttons: [ buttons: [
{ {
text: RED._("dialog.ok"), text: RED._("common.label.ok"),
click: function() { click: function() {
saveToLibrary(false); saveToLibrary(false);
$( this ).dialog( "close" ); $( this ).dialog( "close" );
} }
}, },
{ {
text: RED._("dialog.cancel"), text: RED._("common.label.cancel"),
click: function() { click: function() {
$( this ).dialog( "close" ); $( this ).dialog( "close" );
} }

View File

@ -84,7 +84,8 @@ RED.palette = (function() {
}).slice(0,2); }).slice(0,2);
} catch(err) { } catch(err) {
// Malformed HTML may cause errors. TODO: need to understand what can break // Malformed HTML may cause errors. TODO: need to understand what can break
console.log(RED._("palette.popOverError",{type:type})); // NON-NLS: internal debug
console.log("Error generating pop-over label for ",type);
console.log(err.toString()); console.log(err.toString());
popOverContent = "<p><b>"+label+"</b></p><p>"+RED._("palette.noInfo")+"</p>"; popOverContent = "<p><b>"+label+"</b></p><p>"+RED._("palette.noInfo")+"</p>";
} }

View File

@ -216,7 +216,7 @@ RED.subflow = (function() {
function convertToSubflow() { function convertToSubflow() {
var selection = RED.view.selection(); var selection = RED.view.selection();
if (!selection.nodes) { if (!selection.nodes) {
RED.notify(RED._("notification.noNodesSelected"),"error"); RED.notify(RED._("subflow.errors.noNodesSelected"),"error");
return; return;
} }
var i; var i;
@ -276,7 +276,7 @@ RED.subflow = (function() {
candidateOutputs.sort(function(a,b) { return a.source.y-b.source.y}); candidateOutputs.sort(function(a,b) { return a.source.y-b.source.y});
if (candidateInputs.length > 1) { if (candidateInputs.length > 1) {
RED.notify(RED._("notification.multipleInputsToSelection"),"error"); RED.notify(RED._("subflow.errors.multipleInputsToSelection"),"error");
return; return;
} }
//if (candidateInputs.length == 0) { //if (candidateInputs.length == 0) {

View File

@ -25,7 +25,7 @@ RED.sidebar.config = (function() {
function show() { function show() {
if (!RED.sidebar.containsTab("config")) { if (!RED.sidebar.containsTab("config")) {
RED.sidebar.addTab(RED._("sidebar.config"),content,true); RED.sidebar.addTab(RED._("sidebar.config.title"),content,true);
} }
refresh(); refresh();
RED.sidebar.show("config"); RED.sidebar.show("config");

View File

@ -36,7 +36,7 @@ RED.sidebar.info = (function() {
function show() { function show() {
if (!RED.sidebar.containsTab("info")) { if (!RED.sidebar.containsTab("info")) {
RED.sidebar.addTab(RED._("sidebar.info"),content,false); RED.sidebar.addTab(RED._("sidebar.info.title"),content,false);
} }
RED.sidebar.show("info"); RED.sidebar.show("info");
} }
@ -60,12 +60,12 @@ RED.sidebar.info = (function() {
function refresh(node) { function refresh(node) {
var table = '<table class="node-info"><tbody>'; var table = '<table class="node-info"><tbody>';
table += '<tr class="blank"><td colspan="2">'+RED._("tabInfo.node")+'</td></tr>'; table += '<tr class="blank"><td colspan="2">'+RED._("sidebar.info.node")+'</td></tr>';
if (node.type != "subflow" && node.name) { if (node.type != "subflow" && node.name) {
table += "<tr><td>Name</td><td>&nbsp;"+node.name+"</td></tr>"; table += "<tr><td>"+RED._("common.label.name")+"</td><td>&nbsp;"+node.name+"</td></tr>";
} }
table += "<tr><td>"+RED._("tabInfo.type")+"</td><td>&nbsp;"+node.type+"</td></tr>"; table += "<tr><td>"+RED._("sidebar.info.type")+"</td><td>&nbsp;"+node.type+"</td></tr>";
table += "<tr><td>"+RED._("tabInfo.id")+"</td><td>&nbsp;"+node.id+"</td></tr>"; table += "<tr><td>"+RED._("sidebar.info.id")+"</td><td>&nbsp;"+node.id+"</td></tr>";
var m = /^subflow(:(.+))?$/.exec(node.type); var m = /^subflow(:(.+))?$/.exec(node.type);
if (m) { if (m) {
@ -76,7 +76,7 @@ RED.sidebar.info = (function() {
subflowNode = node; subflowNode = node;
} }
table += '<tr class="blank"><td colspan="2">'+RED._("tabInfo.subflow")+'</td></tr>'; table += '<tr class="blank"><td colspan="2">'+RED._("sidebar.info.subflow")+'</td></tr>';
var userCount = 0; var userCount = 0;
var subflowType = "subflow:"+subflowNode.id; var subflowType = "subflow:"+subflowNode.id;
@ -85,12 +85,12 @@ RED.sidebar.info = (function() {
userCount++; userCount++;
} }
}); });
table += "<tr><td>"+RED._("tabInfo.name")+"</td><td>"+subflowNode.name+"</td></tr>"; table += "<tr><td>"+RED._("common.label.name")+"</td><td>"+subflowNode.name+"</td></tr>";
table += "<tr><td>"+RED._("tabInfo.instances")+"</td><td>"+userCount+"</td></tr>"; table += "<tr><td>"+RED._("sidebar.info.instances")+"</td><td>"+userCount+"</td></tr>";
} }
if (!m && node.type != "subflow" && node.type != "comment") { if (!m && node.type != "subflow" && node.type != "comment") {
table += '<tr class="blank"><td colspan="2"><a href="#" class="node-info-property-header"><i style="width: 10px; text-align: center;" class="fa fa-caret-'+(propertiesExpanded?"down":"right")+'"></i> '+RED._("tabInfo.properties")+'</a></td></tr>'; table += '<tr class="blank"><td colspan="2"><a href="#" class="node-info-property-header"><i style="width: 10px; text-align: center;" class="fa fa-caret-'+(propertiesExpanded?"down":"right")+'"></i> '+RED._("sidebar.info.properties")+'</a></td></tr>';
if (node._def) { if (node._def) {
for (var n in node._def.defaults) { for (var n in node._def.defaults) {
if (n != "name" && node._def.defaults.hasOwnProperty(n)) { if (n != "name" && node._def.defaults.hasOwnProperty(n)) {
@ -98,7 +98,7 @@ RED.sidebar.info = (function() {
var type = typeof val; var type = typeof val;
if (type === "string") { if (type === "string") {
if (val.length === 0) { if (val.length === 0) {
val += '<span style="font-style: italic; color: #ccc;">'+RED._("tabInfo.blank")+'</span>'; val += '<span style="font-style: italic; color: #ccc;">'+RED._("sidebar.info.blank")+'</span>';
} else { } else {
if (val.length > 30) { if (val.length > 30) {
val = val.substring(0,30)+" ..."; val = val.substring(0,30)+" ...";
@ -114,7 +114,7 @@ RED.sidebar.info = (function() {
val += "&nbsp;"+i+": "+vv+"<br/>"; val += "&nbsp;"+i+": "+vv+"<br/>";
} }
if (node[n].length > 10) { if (node[n].length > 10) {
val += "&nbsp;... "+node[n].length+" items<br/>"; val += "&nbsp;... "+RED._("sidebar.info.arrayItems",{count:node[n].length})+"<br/>";
} }
val += "]"; val += "]";
} else { } else {

View File

@ -309,11 +309,11 @@ RED.view = (function() {
if (activeSubflow && m) { if (activeSubflow && m) {
var subflowId = m[1]; var subflowId = m[1];
if (subflowId === activeSubflow.id) { if (subflowId === activeSubflow.id) {
RED.notify(RED._("notification.cannotAddSubflowToItself"),"error"); RED.notify(RED._("notification.error",{message: RED._("notification.errors.cannotAddSubflowToItself")}),"error");
return; return;
} }
if (RED.nodes.subflowContains(m[1],activeSubflow.id)) { if (RED.nodes.subflowContains(m[1],activeSubflow.id)) {
RED.notify(RED._("notification.cannotAddCircularReference"),"error"); RED.notify(RED._("notification.error",{message: RED._("notification.errors.cannotAddCircularReference")}),"error");
return; return;
} }
@ -856,7 +856,7 @@ RED.view = (function() {
} }
} }
clipboard = JSON.stringify(nns); clipboard = JSON.stringify(nns);
RED.notify(RED._("notification.nodeCopied",{count:nns.length})); RED.notify(RED._("clipboard.nodeCopied",{count:nns.length}));
} }
} }
@ -1043,9 +1043,9 @@ RED.view = (function() {
redraw(); redraw();
} }
} else if (d.changed) { } else if (d.changed) {
RED.notify(RED._("notification.undeployedChanges"),"warning"); RED.notify(RED._("notification.warning", {message:RED._("notification.warnings.undeployedChanges")}),"warning");
} else { } else {
RED.notify(RED._("notification.nodeActionDisabled"),"warning"); RED.notify(RED._("notification.warning", {message:RED._("notification.warnings.nodeActionDisabled")}),"warning");
} }
d3.event.preventDefault(); d3.event.preventDefault();
} }

View File

@ -56,7 +56,7 @@ RED.workspaces = (function() {
RED.nodes.dirty(true); RED.nodes.dirty(true);
} else { } else {
$( "#node-dialog-delete-workspace" ).dialog('option','workspace',ws); $( "#node-dialog-delete-workspace" ).dialog('option','workspace',ws);
$( "#node-dialog-delete-workspace-content" ).text(RED._("workspaces.deleteDialog",{label:ws.label})); $( "#node-dialog-delete-workspace-content" ).text(RED._("workspace.delete",{label:ws.label}));
$( "#node-dialog-delete-workspace" ).dialog('open'); $( "#node-dialog-delete-workspace" ).dialog('open');
} }
} }
@ -125,11 +125,11 @@ RED.workspaces = (function() {
modal: true, modal: true,
autoOpen: false, autoOpen: false,
width: 500, width: 500,
title: RED._("dialog.renameSheet"), title: RED._("workspace.renameSheet"),
buttons: [ buttons: [
{ {
class: 'leftButton', class: 'leftButton',
text: RED._("dialog.delete"), text: RED._("common.label.delete"),
click: function() { click: function() {
var workspace = $(this).dialog('option','workspace'); var workspace = $(this).dialog('option','workspace');
$( this ).dialog( "close" ); $( this ).dialog( "close" );
@ -137,7 +137,7 @@ RED.workspaces = (function() {
} }
}, },
{ {
text: RED._("dialog.ok"), text: RED._("common.label.ok"),
click: function() { click: function() {
var workspace = $(this).dialog('option','workspace'); var workspace = $(this).dialog('option','workspace');
var label = $( "#node-input-workspace-name" ).val(); var label = $( "#node-input-workspace-name" ).val();
@ -151,7 +151,7 @@ RED.workspaces = (function() {
} }
}, },
{ {
text: RED._("dialog.cancel"), text: RED._("common.label.cancel"),
click: function() { click: function() {
$( this ).dialog( "close" ); $( this ).dialog( "close" );
} }
@ -168,10 +168,10 @@ RED.workspaces = (function() {
modal: true, modal: true,
autoOpen: false, autoOpen: false,
width: 500, width: 500,
title: RED._("dialog.confirmDelete"), title: RED._("workspace.confirmDelete"),
buttons: [ buttons: [
{ {
text: RED._("dialog.ok"), text: RED._("common.label.ok"),
click: function() { click: function() {
var workspace = $(this).dialog('option','workspace'); var workspace = $(this).dialog('option','workspace');
deleteWorkspace(workspace,true); deleteWorkspace(workspace,true);
@ -179,7 +179,7 @@ RED.workspaces = (function() {
} }
}, },
{ {
text: RED._("dialog.cancel"), text: RED._("common.label.cancel"),
click: function() { click: function() {
$( this ).dialog( "close" ); $( this ).dialog( "close" );
} }
@ -256,7 +256,7 @@ RED.workspaces = (function() {
if (!workspace_tabs.contains(id)) { if (!workspace_tabs.contains(id)) {
var sf = RED.nodes.subflow(id); var sf = RED.nodes.subflow(id);
if (sf) { if (sf) {
addWorkspace({type:"subflow",id:id,label:RED._("workspaces.subflow")+sf.name, closeable: true}); addWorkspace({type:"subflow",id:id,label:RED._("subflow.tabLabel",{name:sf.name}), closeable: true});
} }
} }
workspace_tabs.activateTab(id); workspace_tabs.activateTab(id);
@ -264,7 +264,7 @@ RED.workspaces = (function() {
refresh: function() { refresh: function() {
RED.nodes.eachSubflow(function(sf) { RED.nodes.eachSubflow(function(sf) {
if (workspace_tabs.contains(sf.id)) { if (workspace_tabs.contains(sf.id)) {
workspace_tabs.renameTab(sf.id,RED._("workspaces.subflow")+sf.name); workspace_tabs.renameTab(sf.id,RED._("subflow.tabLabel",{name:sf.name}));
} }
}); });
}, },

View File

@ -72,9 +72,9 @@ RED.user = (function() {
} }
row.appendTo("#node-dialog-login-fields"); row.appendTo("#node-dialog-login-fields");
} }
$('<div class="form-row" style="text-align: right; margin-top: 10px;"><span id="node-dialog-login-failed" style="line-height: 2em;float:left;" class="hide">'+RED._("dialog.loginFailed")+'</span><img src="red/images/spin.svg" style="height: 30px; margin-right: 10px; " class="login-spinner hide"/>'+ $('<div class="form-row" style="text-align: right; margin-top: 10px;"><span id="node-dialog-login-failed" style="line-height: 2em;float:left;" class="hide">'+RED._("user.loginFailed")+'</span><img src="red/images/spin.svg" style="height: 30px; margin-right: 10px; " class="login-spinner hide"/>'+
(opts.cancelable?'<a href="#" id="node-dialog-login-cancel" style="margin-right: 20px;" tabIndex="'+(i+1)+'">'+RED._("dialog.cancel")+'</a>':'')+ (opts.cancelable?'<a href="#" id="node-dialog-login-cancel" style="margin-right: 20px;" tabIndex="'+(i+1)+'">'+RED._("common.label.cancel")+'</a>':'')+
'<input type="submit" id="node-dialog-login-submit" style="width: auto;" tabIndex="'+(i+2)+'" value="'+RED._("dialog.login")+'"></div>').appendTo("#node-dialog-login-fields"); '<input type="submit" id="node-dialog-login-submit" style="width: auto;" tabIndex="'+(i+2)+'" value="'+RED._("user.login")+'"></div>').appendTo("#node-dialog-login-fields");
$("#node-dialog-login-submit").button(); $("#node-dialog-login-submit").button();
@ -141,7 +141,7 @@ RED.user = (function() {
onselect: function() { onselect: function() {
RED.user.login({cancelable:true},function() { RED.user.login({cancelable:true},function() {
RED.settings.load(function() { RED.settings.load(function() {
RED.notify(RED._("notification.loggedInAs")+RED.settings.user.username,"success"); RED.notify(RED._("user.loggedInAs",{name:RED.settings.user.username}),"success");
updateUserMenu(); updateUserMenu();
}); });
}); });

View File

@ -55,10 +55,10 @@
<div id="workspace-add-tab"><a id="btn-workspace-add-tab" href="#"><i class="fa fa-plus"></i></a></div> <div id="workspace-add-tab"><a id="btn-workspace-add-tab" href="#"><i class="fa fa-plus"></i></a></div>
<div id="chart"></div> <div id="chart"></div>
<div id="workspace-toolbar"> <div id="workspace-toolbar">
<a class="button" id="workspace-subflow-edit" href="#" data-i18n="[append]workspaces.editSubflowName"><i class="fa fa-pencil"></i> </a> <a class="button" id="workspace-subflow-edit" href="#" data-i18n="[append]subflow.editSubflowName"><i class="fa fa-pencil"></i> </a>
<a class="button disabled" id="workspace-subflow-add-input" href="#" data-i18n="[append]workspaces.input"><i class="fa fa-plus"></i> </a> <a class="button disabled" id="workspace-subflow-add-input" href="#" data-i18n="[append]subflow.input"><i class="fa fa-plus"></i> </a>
<a class="button" id="workspace-subflow-add-output" href="#" data-i18n="[append]workspaces.output"><i class="fa fa-plus"></i> </a> <a class="button" id="workspace-subflow-add-output" href="#" data-i18n="[append]subflow.output"><i class="fa fa-plus"></i> </a>
<a class="button" id="workspace-subflow-delete" href="#" data-i18n="[append]workspaces.deleteSubflow"><i class="fa fa-trash"></i> </a> <a class="button" id="workspace-subflow-delete" href="#" data-i18n="[append]subflow.deleteSubflow"><i class="fa fa-trash"></i> </a>
</div> </div>
</div> </div>
@ -80,14 +80,14 @@
</div> </div>
<div id="notifications"></div> <div id="notifications"></div>
<div id="dropTarget"><div data-i18n="[append]workspaces.dropFlowHere"><br/><i class="fa fa-download"></i></div></div> <div id="dropTarget"><div data-i18n="[append]workspace.dropFlowHere"><br/><i class="fa fa-download"></i></div></div>
<div id="dialog" class="hide"><form id="dialog-form" class="form-horizontal"></form></div> <div id="dialog" class="hide"><form id="dialog-form" class="form-horizontal"></form></div>
<div id="node-config-dialog" class="hide"><form id="dialog-config-form" class="form-horizontal"></form><div class="form-tips" id="node-config-dialog-user-count"></div></div> <div id="node-config-dialog" class="hide"><form id="dialog-config-form" class="form-horizontal"></form><div class="form-tips" id="node-config-dialog-user-count"></div></div>
<div id="subflow-dialog" class="hide"> <div id="subflow-dialog" class="hide">
<form class="form-horizontal"> <form class="form-horizontal">
<div class="form-row"> <div class="form-row">
<label data-i18n="workspaces.subflowName"></label><input type="text" id="subflow-input-name"> <label data-i18n="common.label.name"></label><input type="text" id="subflow-input-name">
</div> </div>
</form> </form>
<div class="form-tips" id="subflow-dialog-user-count"></div> <div class="form-tips" id="subflow-dialog-user-count"></div>
@ -95,11 +95,11 @@
<div id="node-dialog-confirm-deploy" class="hide"> <div id="node-dialog-confirm-deploy" class="hide">
<form class="form-horizontal"> <form class="form-horizontal">
<div id="node-dialog-confirm-deploy-config" style="text-align: left; padding-top: 30px;" data-i18n="workspaces.confirmDeployImproperlyConfigured"></div> <div id="node-dialog-confirm-deploy-config" style="text-align: left; padding-top: 30px;" data-i18n="[prepend]deploy.confirm.improperlyConfigured;[append]deploy.confirm.confirm"> </div>
<div id="node-dialog-confirm-deploy-unknown" style="text-align: left; padding-top: 10px;" data-i18n="[prepend]workspaces.confirmDeployUnknown;[append]workspaces.confirmDeploy"> <div id="node-dialog-confirm-deploy-unknown" style="text-align: left; padding-top: 10px;" data-i18n="[prepend]deploy.confirm.unknown;[append]deploy.confirm.confirm">
<ul style="font-size: 0.9em; width: 400px; margin: 10px auto; text-align: left;" id="node-dialog-confirm-deploy-unknown-list"></ul> <ul style="font-size: 0.9em; width: 400px; margin: 10px auto; text-align: left;" id="node-dialog-confirm-deploy-unknown-list"></ul>
</div> </div>
<div id="node-dialog-confirm-deploy-unused" style="text-align: left; padding-top: 10px;" data-i18n="[prepend]workspaces.confirmDeployUnusedConfig;[append]workspaces.confirmDeploy"> <div id="node-dialog-confirm-deploy-unused" style="text-align: left; padding-top: 10px;" data-i18n="[prepend]deploy.confirm.unusedConfig;[append]deploy.confirm.confirm">
<ul style="font-size: 0.9em; width: 400px; margin: 10px auto; text-align: left;" id="node-dialog-confirm-deploy-unused-list"></ul> <ul style="font-size: 0.9em; width: 400px; margin: 10px auto; text-align: left;" id="node-dialog-confirm-deploy-unused-list"></ul>
</div> </div>
</form> </form>
@ -115,12 +115,12 @@
<div id="node-dialog-library-save" class="hide"> <div id="node-dialog-library-save" class="hide">
<form class="form-horizontal"> <form class="form-horizontal">
<div class="form-row"> <div class="form-row">
<label for="node-dialog-library-save-folder" data-i18n="[append]workspaces.folderLabel"><i class="fa fa-folder-open"></i> </label> <label for="node-dialog-library-save-folder" data-i18n="[append]library.folder"><i class="fa fa-folder-open"></i> </label>
<input type="text" id="node-dialog-library-save-folder" data-i18n="[placeholder]workspaces.folderPlaceholder"> <input type="text" id="node-dialog-library-save-folder" data-i18n="[placeholder]library.folderPlaceholder">
</div> </div>
<div class="form-row"> <div class="form-row">
<label for="node-dialog-library-save-filename" data-i18n="[append]workspaces.filenameLabel"><i class="fa fa-file"></i> </label> <label for="node-dialog-library-save-filename" data-i18n="[append]library.filename"><i class="fa fa-file"></i> </label>
<input type="text" id="node-dialog-library-save-filename" data-i18n="[placeholder]workspaces.filenamePlaceholder"> <input type="text" id="node-dialog-library-save-filename" data-i18n="[placeholder]library.filenamePlaceholder">
</div> </div>
</form> </form>
</div> </div>
@ -129,7 +129,7 @@
<form class="form-horizontal"> <form class="form-horizontal">
<div class="form-row"> <div class="form-row">
<ul id="node-dialog-library-breadcrumbs" class="breadcrumb"> <ul id="node-dialog-library-breadcrumbs" class="breadcrumb">
<li class="active" data-i18n="[append]workspaces.libraryBreadcrumb"><a href="#"></a></li> <li class="active" data-i18n="[append]library.breadcrumb"><a href="#"></a></li>
</ul> </ul>
</div> </div>
<div class="form-row"> <div class="form-row">
@ -145,7 +145,7 @@
<div id="node-dialog-rename-workspace" class="hide"> <div id="node-dialog-rename-workspace" class="hide">
<form class="form-horizontal"> <form class="form-horizontal">
<div class="form-row"> <div class="form-row">
<label for="node-input-workspace-name" ><i class="fa fa-tag"></i> <span data-i18n="workspace.label.name"></span></label> <label for="node-input-workspace-name" ><i class="fa fa-tag"></i> <span data-i18n="common.label.name"></span></label>
<input type="text" id="node-input-workspace-name"> <input type="text" id="node-input-workspace-name">
</div> </div>
</form> </form>
@ -159,15 +159,15 @@
<script type="text/x-red" data-template-name="export-library-dialog"> <script type="text/x-red" data-template-name="export-library-dialog">
<div class="form-row"> <div class="form-row">
<label for="node-input-filename" data-i18n="[append]editor:workspaces.libraryFilenameLabel"><i class="fa fa-file"></i> </label> <label for="node-input-filename" data-i18n="[append]editor:library.filename"><i class="fa fa-file"></i> </label>
<input type="text" id="node-input-filename" data-i18n="[placeholder]editor:workspaces.libraryFilenamePlaceholder"> <input type="text" id="node-input-filename" data-i18n="[placeholder]editor:library.fullFilenamePlaceholder">
</div> </div>
</script> </script>
<script type="text/x-red" data-template-name="subflow"> <script type="text/x-red" data-template-name="subflow">
<div class="form-row"> <div class="form-row">
<label for="node-input-name" data-i18n="[append]editor:workspaces.libraryNameLabel"><i class="fa fa-tag"></i> </label> <label for="node-input-name" data-i18n="[append]editor:common.label.name"><i class="fa fa-tag"></i> </label>
<input type="text" id="node-input-name" data-i18n="[placeholder]editor:workspaces.libraryNamePlaceholder"> <input type="text" id="node-input-name">
</div> </div>
</script> </script>

View File

@ -1,131 +1,156 @@
{ {
"workspace": { "common": {
"label": { "label": {
"name": "Name:" "name": "Name",
"ok": "Ok",
"cancel": "Cancel",
"delete": "Delete",
"close": "Close"
} }
}, },
"menu": { "workspace": {
"label": { "renameSheet": "Rename sheet",
"sidebar": "Sidebar", "confirmDelete": "Confirm delete",
"displayStatus": "Display node status", "delete": "Are you sure you want to delete '__label__'?",
"import": "Import", "dropFlowHere": "Drop the flow here"
"export": "Export", },
"clipboard": "Clipboard", "menu": {
"library": "Library", "label": {
"configurationNodes": "Configuration nodes", "sidebar": "Sidebar",
"subflows": "Subflows", "displayStatus": "Display node status",
"createSubflow": "Create subflow", "import": "Import",
"selectionToSubflow": "Selection to subflow", "export": "Export",
"workspaces": "Workspaces", "clipboard": "Clipboard",
"add": "Add", "library": "Library",
"rename": "Rename", "configurationNodes": "Configuration nodes",
"delete": "Delete", "subflows": "Subflows",
"keyboardShortcuts": "Keyboard Shortcuts", "createSubflow": "Create subflow",
"login": "Login", "selectionToSubflow": "Selection to subflow",
"logout": "Logout" "workspaces": "Workspaces",
} "add": "Add",
}, "rename": "Rename",
"notification": { "delete": "Delete",
"nodeAdded": "Node added to palette:", "keyboardShortcuts": "Keyboard Shortcuts",
"nodeAdded_plural": "Nodes added to palette", "login": "Login",
"nodeRemoved": "Node removed from palette:", "logout": "Logout"
"nodeRemoved_plural": "Nodes removed from palette:", }
"nodeEnabled": "Node enabled:", },
"nodeEnabled_plural": "Nodes enabled:", "user": {
"nodeDisabled": "Node disabled:", "loggedInAs": "Logged in as __name__",
"nodeDisabled_plural": "Nodes disabled:", "login": "Login",
"lostConnectionError": "<b>Error</b>: Lost connection to server", "loginFailed": "Login failed"
"importUnrecognised": "Imported unrecognised ", },
"loggedInAs": "Logged in as ", "notification": {
"invalidFilename": "Invalid filename", "warning": "<strong>Warning</strong>: __message__",
"savedType": "Saved __type__", "warnings": {
"saveFailed": "Save failed: ", "undeployedChanges": "node has undeployed changes",
"noNodesSelected": "<strong>Cannot create subflow</strong>: no nodes selected", "nodeActionDisabled": "node actions disabled within subflow"
"multipleInputsToSelection": "<strong>Cannot create subflow</strong>: multiple inputs to selection", },
"cannotAddSubflowToItself": "<strong>Error</strong>: Cannot add subflow to itself",
"cannotAddCircularReference": "<strong>Error</strong>: Cannot add subflow - circular reference detected", "error": "<strong>Error</strong>: __message__",
"nodeCopied": "__count__ node copied", "errors": {
"nodeCopied_plural": "__count__ nodes copied", "lostConnection": "Lost connection to server",
"undeployedChanges": "<strong>Warning</strong>: node has undeployed changes", "cannotAddSubflowToItself": "Cannot add subflow to itself",
"nodeActionDisabled": "<strong>Warning</strong>: node actions disabled within subflow", "cannotAddCircularReference": "Cannot add subflow - circular reference detected"
"error": "<strong>Error</strong>: " }
}, },
"error": { "clipboard": {
"apiSubflowOnly": "this api is subflow only. called with:", "nodes": "Nodes:",
"invalidFlow": "Invalid flow: ", "selectNodes": "Select the text above and copy to the clipboard.",
"cannotAddSubflowToItself": "Cannot add subflow to itself", "pasteNodes": "Paste nodes here",
"cannotAddCircularReference": "Cannot add subflow - circular reference detected" "importNodes": "Import nodes",
}, "exportNodes": "Export nodes to clipboard",
"dialog": { "importUnrecognised": "Imported unrecognised type:",
"cancel": "Cancel", "importUnrecognised_plural": "Imported unrecognised types:",
"login": "Login", "nodeCopied": "__count__ node copied",
"loginFailed": "Login failed", "nodeCopied_plural": "__count__ nodes copied",
"ok": "Ok", "invalidFlow": "Invalid flow: __message__"
"delete": "Delete", },
"close": "Close", "deploy": {
"nodes": " Nodes:", "deploy": "Deploy",
"selectToCopy": "Select the text above and copy to the clipboard with Ctrl-C.", "full": "Full",
"pasteNodesHere": "Paste nodes here", "fullDesc": "Deploys everything in the workspace",
"importNodes": "Import nodes", "modifiedFlows": "Modified Flows",
"exportNodesClipboard": "Export nodes to clipboard", "modifiedFlowsDesc": "Only deploys flows that contain changed nodes",
"renameSheet": "Rename sheet", "modifiedNodes": "Modified Nodes",
"confirmDelete": "Confirm delete" "modifiedNodesDesc": "Only deploys nodes that have changed",
}, "successfulDeploy": "Successfully Deployed",
"deploy": { "errors": {
"deploy": "Deploy", "noResponse": "no response from server"
"full": "Full", },
"modifiedFlows": "Modified Flows", "confirm": {
"modifiedNodes": "Modified Nodes", "button": {
"fullDesc": "Deploys everything in the workspace", "confirm": "Confirm deploy",
"modifiedFlowsDesc": "Only deploys flows that contain changed nodes", "cancel": "Cancel"
"modifiedNodesDesc": "Only deploys nodes that have changed", },
"confirmDeploy": "Confirm deploy", "undeployedChanges": "You have undeployed changes.\n\nLeaving this page will lose these changes.",
"cancelDeploy": "Cancel", "improperlyConfigured": "Some of the nodes are not properly configured.",
"undeployedChanges": "You have undeployed changes.\n\nLeaving this page will lose these changes.", "unknown": "The workspace contains some unknown node types:",
"successfulDeploy": "Successfully Deployed", "unusedConfig": "The workspace contains some unused configuration nodes:",
"error": "<strong>Error</strong>: ", "confirm": "Are you sure you want to deploy?"
"noResponseError": "no response from server" }
}, },
"editor": { "subflow": {
"savedNodes": "Saved nodes", "tabLabel": "Subflow: __name__",
"configEdit": "edit", "editSubflow": "Edit flow __name__",
"configAdd": "add", "edit": "Edit flow",
"configDelete": "Delete", "subflowInstances": "There is __count__ instance of this subflow",
"editFlow": "Edit flow ", "subflowInstances_plural": "There are __count__ instances of this subflow",
"nodesUse": "__count__ node uses this config", "editSubflowName": "edit name",
"nodesUse_plural": "__count__ nodes use this config", "input": "input",
"addNewConfig": "Add new __type__ config node", "output": "output",
"editConfig": "Edit __type__ config node", "deleteSubflow": "delete subflow",
"addNewType": "Add new __type__...", "errors": {
"subflow": "Subflow: ", "noNodesSelected": "<strong>Cannot create subflow</strong>: no nodes selected",
"subflowInstances": "There is __count__ instance of this subflow", "multipleInputsToSelection": "<strong>Cannot create subflow</strong>: multiple inputs to selection"
"subflowInstances_plural": "There are __count__ instances of this subflow" }
}, },
"keyboard": { "editor": {
"selectAll": "Select all nodes", "configEdit": "edit",
"selectAllConnected": "Select all connected nodes", "configAdd": "add",
"addRemoveNode": "Add/remove node from selection", "configDelete": "Delete",
"deleteSelected": "Delete selected nodes or link", "nodesUse": "__count__ node uses this config",
"importNode": "Import nodes", "nodesUse_plural": "__count__ nodes use this config",
"exportNode": "Export selected nodes", "addNewConfig": "Add new __type__ config node",
"toggleSidebar": "Toggle sidebar", "editConfig": "Edit __type__ config node",
"deleteNode": "Delete selected nodes or link", "addNewType": "Add new __type__..."
"copyNode": "Copy selected nodes", },
"cutNode": "Cut selected nodes", "keyboard": {
"pasteNode": "Paste nodes" "selectAll": "Select all nodes",
}, "selectAllConnected": "Select all connected nodes",
"library": { "addRemoveNode": "Add/remove node from selection",
"openLibrary": "Open Library...", "deleteSelected": "Delete selected nodes or link",
"saveToLibrary": "Save to Library...", "importNode": "Import nodes",
"typeLibrary": "__type__ library", "exportNode": "Export selected nodes",
"unnamedType": "Unnamed __type__", "toggleSidebar": "Toggle sidebar",
"saveToLibrary": "Save to Library", "deleteNode": "Delete selected nodes or link",
"exportToLibrary": "Export nodes to library", "copyNode": "Copy selected nodes",
"dialogSaveOverwrite": "A __libraryType__ called __libraryName__ already exists. Overwrite?" "cutNode": "Cut selected nodes",
}, "pasteNode": "Paste nodes"
"palette": { },
"noInfo": "no information available", "library": {
"popOverError": "Error generating pop-over label for '__type__'.", "openLibrary": "Open Library...",
"saveToLibrary": "Save to Library...",
"typeLibrary": "__type__ library",
"unnamedType": "Unnamed __type__",
"saveToLibrary": "Save to Library",
"exportToLibrary": "Export nodes to library",
"dialogSaveOverwrite": "A __libraryType__ called __libraryName__ already exists. Overwrite?",
"invalidFilename": "Invalid filename",
"savedNodes": "Saved nodes",
"savedType": "Saved __type__",
"saveFailed": "Save failed: __message__",
"filename": "Filename",
"folder": "Folder",
"filenamePlaceholder": "file",
"fullFilenamePlaceholder": "a/b/file",
"folderPlaceholder": "a/b",
"breadcrumb": "Library"
},
"palette": {
"noInfo": "no information available",
"filter": "filter", "filter": "filter",
"label": { "label": {
"subflows": "subflows", "subflows": "subflows",
@ -136,43 +161,32 @@
"storage": "storage", "storage": "storage",
"analysis": "analysis", "analysis": "analysis",
"advanced": "advanced" "advanced": "advanced"
},
"event": {
"nodeAdded": "Node added to palette:",
"nodeAdded_plural": "Nodes added to palette",
"nodeRemoved": "Node removed from palette:",
"nodeRemoved_plural": "Nodes removed from palette:",
"nodeEnabled": "Node enabled:",
"nodeEnabled_plural": "Nodes enabled:",
"nodeDisabled": "Node disabled:",
"nodeDisabled_plural": "Nodes disabled:"
} }
},
"tabInfo": {
"node": "Node",
"type": "Type",
"id": "ID",
"subflow": "Subflow",
"name": "name",
"instances": "instances",
"properties": "Properties",
"blank": "blank"
},
"sidebar": {
"info": "info",
"config": "config"
}, },
"workspaces": { "sidebar": {
"subflow": "Subflow: ", "info": {
"editSubflowName": "edit name", "title": "info",
"input": "input", "node": "Node",
"output": "output", "type": "Type",
"deleteSubflow": "delete subflow", "id": "ID",
"dropFlowHere": "Drop the flow here", "subflow": "Subflow",
"subflowName": "Name", "instances": "Instances",
"folderPlaceholder": "Folder", "properties": "Properties",
"filenamePlaceholder": "Filename", "blank": "blank",
"folderLabel": "Folder", "arrayItems": "__count__ items"
"filenameLabel": "Filename", },
"libraryBreadcrumb": "Library", "config": {
"libraryFilenamePlaceholder": "Filename", "title": "config"
"libraryFilenameLabel": "Filename:", }
"libraryNamePlaceholder": "Name",
"libraryNameLabel": "Name",
"confirmDeployImproperlyConfigured": "Some of the nodes are not properly configured. Are you sure you want to deploy?",
"confirmDeployUnknown": "The workspace contains some unknown node types:",
"confirmDeployUnusedConfig": "The workspace contains some unused configuration nodes:",
"confirmDeploy": "Are you sure you want to deploy?",
"deleteDialog": "Are you sure you want to delete '__label__'?"
} }
} }

View File

@ -82,7 +82,6 @@
"stopped": "Stopped", "stopped": "Stopped",
"missing-types": "Waiting for missing types to be registered:", "missing-types": "Waiting for missing types to be registered:",
"missing-type-provided": " - __type__ (provided by npm module __module__)", "missing-type-provided": " - __type__ (provided by npm module __module__)",
"missing-type-install-1": "To install any of these missing modules, run:", "missing-type-install-1": "To install any of these missing modules, run:",
"missing-type-install-2": "in the directory:" "missing-type-install-2": "in the directory:"
}, },