mirror of
https://github.com/scratchfoundation/scratch-blocks.git
synced 2025-08-28 22:10:31 -04:00
Merge branch 'master' into develop
This commit is contained in:
commit
e849c93db9
17 changed files with 277 additions and 232 deletions
|
@ -5,4 +5,4 @@ blocks together to build programs. All code is free and open source.
|
|||
|
||||
**The project page is https://developers.google.com/blockly/**
|
||||
|
||||

|
||||

|
||||
|
|
|
@ -110,8 +110,11 @@ Blockly.Blocks['procedures_defnoreturn'] = {
|
|||
// The params field is deterministic based on the mutation,
|
||||
// no need to fire a change event.
|
||||
Blockly.Events.disable();
|
||||
this.setFieldValue(paramString, 'PARAMS');
|
||||
Blockly.Events.enable();
|
||||
try {
|
||||
this.setFieldValue(paramString, 'PARAMS');
|
||||
} finally {
|
||||
Blockly.Events.enable();
|
||||
}
|
||||
},
|
||||
/**
|
||||
* Create XML to represent the argument inputs.
|
||||
|
@ -567,8 +570,11 @@ Blockly.Blocks['procedures_callnoreturn'] = {
|
|||
// The argument name field is deterministic based on the mutation,
|
||||
// no need to fire a change event.
|
||||
Blockly.Events.disable();
|
||||
field.setValue(this.arguments_[i]);
|
||||
Blockly.Events.enable();
|
||||
try {
|
||||
field.setValue(this.arguments_[i]);
|
||||
} finally {
|
||||
Blockly.Events.enable();
|
||||
}
|
||||
} else {
|
||||
// Add new input.
|
||||
field = new Blockly.FieldLabel(this.arguments_[i]);
|
||||
|
|
|
@ -204,39 +204,42 @@ Blockly.Block.prototype.dispose = function(healStack) {
|
|||
}
|
||||
Blockly.Events.disable();
|
||||
|
||||
// This block is now at the top of the workspace.
|
||||
// Remove this block from the workspace's list of top-most blocks.
|
||||
if (this.workspace) {
|
||||
this.workspace.removeTopBlock(this);
|
||||
// Remove from block database.
|
||||
delete this.workspace.blockDB_[this.id];
|
||||
this.workspace = null;
|
||||
}
|
||||
|
||||
// Just deleting this block from the DOM would result in a memory leak as
|
||||
// well as corruption of the connection database. Therefore we must
|
||||
// methodically step through the blocks and carefully disassemble them.
|
||||
|
||||
// First, dispose of all my children.
|
||||
for (var i = this.childBlocks_.length - 1; i >= 0; i--) {
|
||||
this.childBlocks_[i].dispose(false);
|
||||
}
|
||||
// Then dispose of myself.
|
||||
// Dispose of all inputs and their fields.
|
||||
for (var i = 0, input; input = this.inputList[i]; i++) {
|
||||
input.dispose();
|
||||
}
|
||||
this.inputList.length = 0;
|
||||
// Dispose of any remaining connections (next/previous/output).
|
||||
var connections = this.getConnections_(true);
|
||||
for (var i = 0; i < connections.length; i++) {
|
||||
var connection = connections[i];
|
||||
if (connection.isConnected()) {
|
||||
connection.disconnect();
|
||||
try {
|
||||
// This block is now at the top of the workspace.
|
||||
// Remove this block from the workspace's list of top-most blocks.
|
||||
if (this.workspace) {
|
||||
this.workspace.removeTopBlock(this);
|
||||
// Remove from block database.
|
||||
delete this.workspace.blockDB_[this.id];
|
||||
this.workspace = null;
|
||||
}
|
||||
connections[i].dispose();
|
||||
|
||||
// Just deleting this block from the DOM would result in a memory leak as
|
||||
// well as corruption of the connection database. Therefore we must
|
||||
// methodically step through the blocks and carefully disassemble them.
|
||||
|
||||
// First, dispose of all my children.
|
||||
for (var i = this.childBlocks_.length - 1; i >= 0; i--) {
|
||||
this.childBlocks_[i].dispose(false);
|
||||
}
|
||||
// Then dispose of myself.
|
||||
// Dispose of all inputs and their fields.
|
||||
for (var i = 0, input; input = this.inputList[i]; i++) {
|
||||
input.dispose();
|
||||
}
|
||||
this.inputList.length = 0;
|
||||
// Dispose of any remaining connections (next/previous/output).
|
||||
var connections = this.getConnections_(true);
|
||||
for (var i = 0; i < connections.length; i++) {
|
||||
var connection = connections[i];
|
||||
if (connection.isConnected()) {
|
||||
connection.disconnect();
|
||||
}
|
||||
connections[i].dispose();
|
||||
}
|
||||
} finally {
|
||||
Blockly.Events.enable();
|
||||
}
|
||||
Blockly.Events.enable();
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -156,8 +156,11 @@ Blockly.BlockSvg.prototype.select = function() {
|
|||
oldId = Blockly.selected.id;
|
||||
// Unselect any previously selected block.
|
||||
Blockly.Events.disable();
|
||||
Blockly.selected.unselect();
|
||||
Blockly.Events.enable();
|
||||
try {
|
||||
Blockly.selected.unselect();
|
||||
} finally {
|
||||
Blockly.Events.enable();
|
||||
}
|
||||
}
|
||||
var event = new Blockly.Events.Ui(null, 'selected', oldId, this.id);
|
||||
event.workspaceId = this.workspace.id;
|
||||
|
@ -998,11 +1001,14 @@ Blockly.BlockSvg.prototype.dispose = function(healStack, animate) {
|
|||
this.rendered = false;
|
||||
|
||||
Blockly.Events.disable();
|
||||
var icons = this.getIcons();
|
||||
for (var i = 0; i < icons.length; i++) {
|
||||
icons[i].dispose();
|
||||
try {
|
||||
var icons = this.getIcons();
|
||||
for (var i = 0; i < icons.length; i++) {
|
||||
icons[i].dispose();
|
||||
}
|
||||
} finally {
|
||||
Blockly.Events.enable();
|
||||
}
|
||||
Blockly.Events.enable();
|
||||
Blockly.BlockSvg.superClass_.dispose.call(this, healStack);
|
||||
|
||||
goog.dom.removeNode(this.svgGroup_);
|
||||
|
|
|
@ -126,17 +126,20 @@ Blockly.ContextMenu.hide = function() {
|
|||
Blockly.ContextMenu.callbackFactory = function(block, xml) {
|
||||
return function() {
|
||||
Blockly.Events.disable();
|
||||
var newBlock = Blockly.Xml.domToBlock(xml, block.workspace);
|
||||
// Move the new block next to the old block.
|
||||
var xy = block.getRelativeToSurfaceXY();
|
||||
if (block.RTL) {
|
||||
xy.x -= Blockly.SNAP_RADIUS;
|
||||
} else {
|
||||
xy.x += Blockly.SNAP_RADIUS;
|
||||
try {
|
||||
var newBlock = Blockly.Xml.domToBlock(xml, block.workspace);
|
||||
// Move the new block next to the old block.
|
||||
var xy = block.getRelativeToSurfaceXY();
|
||||
if (block.RTL) {
|
||||
xy.x -= Blockly.SNAP_RADIUS;
|
||||
} else {
|
||||
xy.x += Blockly.SNAP_RADIUS;
|
||||
}
|
||||
xy.y += Blockly.SNAP_RADIUS * 2;
|
||||
newBlock.moveBy(xy.x, xy.y);
|
||||
} finally {
|
||||
Blockly.Events.enable();
|
||||
}
|
||||
xy.y += Blockly.SNAP_RADIUS * 2;
|
||||
newBlock.moveBy(xy.x, xy.y);
|
||||
Blockly.Events.enable();
|
||||
if (Blockly.Events.isEnabled() && !newBlock.isShadow()) {
|
||||
Blockly.Events.fire(new Blockly.Events.Create(newBlock));
|
||||
}
|
||||
|
|
|
@ -956,8 +956,11 @@ Blockly.Flyout.prototype.createBlockFunc_ = function(originBlock) {
|
|||
return;
|
||||
}
|
||||
Blockly.Events.disable();
|
||||
var block = flyout.placeNewBlock_(originBlock);
|
||||
Blockly.Events.enable();
|
||||
try {
|
||||
var block = flyout.placeNewBlock_(originBlock);
|
||||
} finally {
|
||||
Blockly.Events.enable();
|
||||
}
|
||||
if (Blockly.Events.isEnabled()) {
|
||||
Blockly.Events.setGroup(true);
|
||||
Blockly.Events.fire(new Blockly.Events.Create(block));
|
||||
|
|
162
core/toolbox.js
162
core/toolbox.js
|
@ -265,85 +265,12 @@ Blockly.Toolbox.prototype.position = function() {
|
|||
* @private
|
||||
*/
|
||||
Blockly.Toolbox.prototype.populate_ = function(newTree) {
|
||||
var rootOut = this.tree_;
|
||||
var that = this;
|
||||
rootOut.removeChildren(); // Delete any existing content.
|
||||
rootOut.blocks = [];
|
||||
var hasColours = false;
|
||||
function syncTrees(treeIn, treeOut, pathToMedia) {
|
||||
var lastElement = null;
|
||||
for (var i = 0, childIn; childIn = treeIn.childNodes[i]; i++) {
|
||||
if (!childIn.tagName) {
|
||||
// Skip over text.
|
||||
continue;
|
||||
}
|
||||
switch (childIn.tagName.toUpperCase()) {
|
||||
case 'CATEGORY':
|
||||
var childOut = rootOut.createNode(childIn.getAttribute('name'));
|
||||
childOut.blocks = [];
|
||||
treeOut.add(childOut);
|
||||
var custom = childIn.getAttribute('custom');
|
||||
if (custom) {
|
||||
// Variables and procedures are special dynamic categories.
|
||||
childOut.blocks = custom;
|
||||
} else {
|
||||
syncTrees(childIn, childOut, pathToMedia);
|
||||
}
|
||||
var colour = childIn.getAttribute('colour');
|
||||
if (goog.isString(colour)) {
|
||||
if (colour.match(/^#[0-9a-fA-F]{6}$/)) {
|
||||
childOut.hexColour = colour;
|
||||
} else {
|
||||
childOut.hexColour = Blockly.hueToRgb(colour);
|
||||
}
|
||||
hasColours = true;
|
||||
} else {
|
||||
childOut.hexColour = '';
|
||||
}
|
||||
if (childIn.getAttribute('expanded') == 'true') {
|
||||
if (childOut.blocks.length) {
|
||||
rootOut.setSelectedItem(childOut);
|
||||
}
|
||||
childOut.setExpanded(true);
|
||||
} else {
|
||||
childOut.setExpanded(false);
|
||||
}
|
||||
lastElement = childIn;
|
||||
break;
|
||||
case 'SEP':
|
||||
if (lastElement) {
|
||||
if (lastElement.tagName.toUpperCase() == 'CATEGORY') {
|
||||
// Separator between two categories.
|
||||
// <sep></sep>
|
||||
treeOut.add(new Blockly.Toolbox.TreeSeparator(
|
||||
that.treeSeparatorConfig_));
|
||||
} else {
|
||||
// Change the gap between two blocks.
|
||||
// <sep gap="36"></sep>
|
||||
// The default gap is 24, can be set larger or smaller.
|
||||
// Note that a deprecated method is to add a gap to a block.
|
||||
// <block type="math_arithmetic" gap="8"></block>
|
||||
var newGap = parseFloat(childIn.getAttribute('gap'));
|
||||
if (!isNaN(newGap)) {
|
||||
var oldGap = parseFloat(lastElement.getAttribute('gap'));
|
||||
var gap = isNaN(oldGap) ? newGap : oldGap + newGap;
|
||||
lastElement.setAttribute('gap', gap);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'BLOCK':
|
||||
case 'SHADOW':
|
||||
treeOut.blocks.push(childIn);
|
||||
lastElement = childIn;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
syncTrees(newTree, this.tree_, this.workspace_.options.pathToMedia);
|
||||
this.hasColours_ = hasColours;
|
||||
this.tree_.removeChildren(); // Delete any existing content.
|
||||
this.tree_.blocks = [];
|
||||
this.hasColours_ = false;
|
||||
this.syncTrees_(newTree, this.tree_, this.workspace_.options.pathToMedia);
|
||||
|
||||
if (rootOut.blocks.length) {
|
||||
if (this.tree_.blocks.length) {
|
||||
throw 'Toolbox cannot have both blocks and categories in the root level.';
|
||||
}
|
||||
|
||||
|
@ -351,6 +278,84 @@ Blockly.Toolbox.prototype.populate_ = function(newTree) {
|
|||
Blockly.resizeSvgContents(this.workspace_);
|
||||
};
|
||||
|
||||
/**
|
||||
* Sync trees of the toolbox.
|
||||
* @param {Node} treeIn DOM tree of blocks, or null.
|
||||
* @param {Blockly.Toolbox.TreeControl} treeOut
|
||||
* @param {string} pathToMedia
|
||||
* @private
|
||||
*/
|
||||
Blockly.Toolbox.prototype.syncTrees_ = function(treeIn, treeOut, pathToMedia) {
|
||||
var lastElement = null;
|
||||
for (var i = 0, childIn; childIn = treeIn.childNodes[i]; i++) {
|
||||
if (!childIn.tagName) {
|
||||
// Skip over text.
|
||||
continue;
|
||||
}
|
||||
switch (childIn.tagName.toUpperCase()) {
|
||||
case 'CATEGORY':
|
||||
var childOut = this.tree_.createNode(childIn.getAttribute('name'));
|
||||
childOut.blocks = [];
|
||||
treeOut.add(childOut);
|
||||
var custom = childIn.getAttribute('custom');
|
||||
if (custom) {
|
||||
// Variables and procedures are special dynamic categories.
|
||||
childOut.blocks = custom;
|
||||
} else {
|
||||
this.syncTrees_(childIn, childOut, pathToMedia);
|
||||
}
|
||||
var colour = childIn.getAttribute('colour');
|
||||
if (goog.isString(colour)) {
|
||||
if (colour.match(/^#[0-9a-fA-F]{6}$/)) {
|
||||
childOut.hexColour = colour;
|
||||
} else {
|
||||
childOut.hexColour = Blockly.hueToRgb(colour);
|
||||
}
|
||||
this.hasColours_ = true;
|
||||
} else {
|
||||
childOut.hexColour = '';
|
||||
}
|
||||
if (childIn.getAttribute('expanded') == 'true') {
|
||||
if (childOut.blocks.length) {
|
||||
this.tree_.setSelectedItem(childOut);
|
||||
}
|
||||
childOut.setExpanded(true);
|
||||
} else {
|
||||
childOut.setExpanded(false);
|
||||
}
|
||||
lastElement = childIn;
|
||||
break;
|
||||
case 'SEP':
|
||||
if (lastElement) {
|
||||
if (lastElement.tagName.toUpperCase() == 'CATEGORY') {
|
||||
// Separator between two categories.
|
||||
// <sep></sep>
|
||||
treeOut.add(new Blockly.Toolbox.TreeSeparator(
|
||||
this.treeSeparatorConfig_));
|
||||
} else {
|
||||
// Change the gap between two blocks.
|
||||
// <sep gap="36"></sep>
|
||||
// The default gap is 24, can be set larger or smaller.
|
||||
// Note that a deprecated method is to add a gap to a block.
|
||||
// <block type="math_arithmetic" gap="8"></block>
|
||||
var newGap = parseFloat(childIn.getAttribute('gap'));
|
||||
if (!isNaN(newGap)) {
|
||||
var oldGap = parseFloat(lastElement.getAttribute('gap'));
|
||||
var gap = isNaN(oldGap) ? newGap : oldGap + newGap;
|
||||
lastElement.setAttribute('gap', gap);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'BLOCK':
|
||||
case 'SHADOW':
|
||||
treeOut.blocks.push(childIn);
|
||||
lastElement = childIn;
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Recursively add colours to this toolbox.
|
||||
* @param {Blockly.Toolbox.TreeNode} opt_tree Starting point of tree.
|
||||
|
@ -450,6 +455,7 @@ Blockly.Toolbox.TreeControl.prototype.enterDocument = function() {
|
|||
this.handleTouchEvent_);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Handles touch events.
|
||||
* @param {!goog.events.BrowserEvent} e The browser event.
|
||||
|
|
|
@ -535,51 +535,54 @@ Blockly.WorkspaceSvg.prototype.paste = function(xmlBlock) {
|
|||
}
|
||||
Blockly.terminateDrag_(); // Dragging while pasting? No.
|
||||
Blockly.Events.disable();
|
||||
var block = Blockly.Xml.domToBlock(xmlBlock, this);
|
||||
// Move the duplicate to original position.
|
||||
var blockX = parseInt(xmlBlock.getAttribute('x'), 10);
|
||||
var blockY = parseInt(xmlBlock.getAttribute('y'), 10);
|
||||
if (!isNaN(blockX) && !isNaN(blockY)) {
|
||||
if (this.RTL) {
|
||||
blockX = -blockX;
|
||||
}
|
||||
// Offset block until not clobbering another block and not in connection
|
||||
// distance with neighbouring blocks.
|
||||
do {
|
||||
var collide = false;
|
||||
var allBlocks = this.getAllBlocks();
|
||||
for (var i = 0, otherBlock; otherBlock = allBlocks[i]; i++) {
|
||||
var otherXY = otherBlock.getRelativeToSurfaceXY();
|
||||
if (Math.abs(blockX - otherXY.x) <= 1 &&
|
||||
Math.abs(blockY - otherXY.y) <= 1) {
|
||||
collide = true;
|
||||
break;
|
||||
}
|
||||
try {
|
||||
var block = Blockly.Xml.domToBlock(xmlBlock, this);
|
||||
// Move the duplicate to original position.
|
||||
var blockX = parseInt(xmlBlock.getAttribute('x'), 10);
|
||||
var blockY = parseInt(xmlBlock.getAttribute('y'), 10);
|
||||
if (!isNaN(blockX) && !isNaN(blockY)) {
|
||||
if (this.RTL) {
|
||||
blockX = -blockX;
|
||||
}
|
||||
if (!collide) {
|
||||
// Check for blocks in snap range to any of its connections.
|
||||
var connections = block.getConnections_(false);
|
||||
for (var i = 0, connection; connection = connections[i]; i++) {
|
||||
var neighbour = connection.closest(Blockly.SNAP_RADIUS,
|
||||
new goog.math.Coordinate(blockX, blockY));
|
||||
if (neighbour.connection) {
|
||||
// Offset block until not clobbering another block and not in connection
|
||||
// distance with neighbouring blocks.
|
||||
do {
|
||||
var collide = false;
|
||||
var allBlocks = this.getAllBlocks();
|
||||
for (var i = 0, otherBlock; otherBlock = allBlocks[i]; i++) {
|
||||
var otherXY = otherBlock.getRelativeToSurfaceXY();
|
||||
if (Math.abs(blockX - otherXY.x) <= 1 &&
|
||||
Math.abs(blockY - otherXY.y) <= 1) {
|
||||
collide = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (collide) {
|
||||
if (this.RTL) {
|
||||
blockX -= Blockly.SNAP_RADIUS;
|
||||
} else {
|
||||
blockX += Blockly.SNAP_RADIUS;
|
||||
if (!collide) {
|
||||
// Check for blocks in snap range to any of its connections.
|
||||
var connections = block.getConnections_(false);
|
||||
for (var i = 0, connection; connection = connections[i]; i++) {
|
||||
var neighbour = connection.closest(Blockly.SNAP_RADIUS,
|
||||
new goog.math.Coordinate(blockX, blockY));
|
||||
if (neighbour.connection) {
|
||||
collide = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
blockY += Blockly.SNAP_RADIUS * 2;
|
||||
}
|
||||
} while (collide);
|
||||
block.moveBy(blockX, blockY);
|
||||
if (collide) {
|
||||
if (this.RTL) {
|
||||
blockX -= Blockly.SNAP_RADIUS;
|
||||
} else {
|
||||
blockX += Blockly.SNAP_RADIUS;
|
||||
}
|
||||
blockY += Blockly.SNAP_RADIUS * 2;
|
||||
}
|
||||
} while (collide);
|
||||
block.moveBy(blockX, blockY);
|
||||
}
|
||||
} finally {
|
||||
Blockly.Events.enable();
|
||||
}
|
||||
Blockly.Events.enable();
|
||||
if (Blockly.Events.isEnabled() && !block.isShadow()) {
|
||||
Blockly.Events.fire(new Blockly.Events.Create(block));
|
||||
}
|
||||
|
|
51
core/xml.js
51
core/xml.js
|
@ -332,32 +332,35 @@ Blockly.Xml.domToBlock = function(xmlBlock, workspace) {
|
|||
}
|
||||
// Create top-level block.
|
||||
Blockly.Events.disable();
|
||||
var topBlock = Blockly.Xml.domToBlockHeadless_(xmlBlock, workspace);
|
||||
if (workspace.rendered) {
|
||||
// Hide connections to speed up assembly.
|
||||
topBlock.setConnectionsHidden(true);
|
||||
// Generate list of all blocks.
|
||||
var blocks = topBlock.getDescendants();
|
||||
// Render each block.
|
||||
for (var i = blocks.length - 1; i >= 0; i--) {
|
||||
blocks[i].initSvg();
|
||||
}
|
||||
for (var i = blocks.length - 1; i >= 0; i--) {
|
||||
blocks[i].render(false);
|
||||
}
|
||||
// Populating the connection database may be defered until after the blocks
|
||||
// have renderend.
|
||||
setTimeout(function() {
|
||||
if (topBlock.workspace) { // Check that the block hasn't been deleted.
|
||||
topBlock.setConnectionsHidden(false);
|
||||
try {
|
||||
var topBlock = Blockly.Xml.domToBlockHeadless_(xmlBlock, workspace);
|
||||
if (workspace.rendered) {
|
||||
// Hide connections to speed up assembly.
|
||||
topBlock.setConnectionsHidden(true);
|
||||
// Generate list of all blocks.
|
||||
var blocks = topBlock.getDescendants();
|
||||
// Render each block.
|
||||
for (var i = blocks.length - 1; i >= 0; i--) {
|
||||
blocks[i].initSvg();
|
||||
}
|
||||
}, 1);
|
||||
topBlock.updateDisabled();
|
||||
// Allow the scrollbars to resize and move based on the new contents.
|
||||
// TODO(@picklesrus): #387. Remove when domToBlock avoids resizing.
|
||||
Blockly.resizeSvgContents(workspace);
|
||||
for (var i = blocks.length - 1; i >= 0; i--) {
|
||||
blocks[i].render(false);
|
||||
}
|
||||
// Populating the connection database may be defered until after the
|
||||
// blocks have rendered.
|
||||
setTimeout(function() {
|
||||
if (topBlock.workspace) { // Check that the block hasn't been deleted.
|
||||
topBlock.setConnectionsHidden(false);
|
||||
}
|
||||
}, 1);
|
||||
topBlock.updateDisabled();
|
||||
// Allow the scrollbars to resize and move based on the new contents.
|
||||
// TODO(@picklesrus): #387. Remove when domToBlock avoids resizing.
|
||||
Blockly.resizeSvgContents(workspace);
|
||||
}
|
||||
} finally {
|
||||
Blockly.Events.enable();
|
||||
}
|
||||
Blockly.Events.enable();
|
||||
if (Blockly.Events.isEnabled()) {
|
||||
Blockly.Events.fire(new Blockly.Events.Create(topBlock));
|
||||
}
|
||||
|
|
|
@ -229,7 +229,7 @@ Blockly.JavaScript.scrub_ = function(block, code) {
|
|||
if (!block.outputConnection || !block.outputConnection.targetConnection) {
|
||||
// Collect comment for this block.
|
||||
var comment = block.getCommentText();
|
||||
comment = Blockly.utils.wrap(comment, this.COMMENT_WRAP - 3);
|
||||
comment = Blockly.utils.wrap(comment, Blockly.JavaScript.COMMENT_WRAP - 3);
|
||||
if (comment) {
|
||||
if (block.getProcedureDef) {
|
||||
// Use a comment block for function comments.
|
||||
|
|
|
@ -170,7 +170,7 @@ Blockly.Lua.scrub_ = function(block, code) {
|
|||
if (!block.outputConnection || !block.outputConnection.targetConnection) {
|
||||
// Collect comment for this block.
|
||||
var comment = block.getCommentText();
|
||||
comment = Blockly.utils.wrap(comment, this.COMMENT_WRAP - 3);
|
||||
comment = Blockly.utils.wrap(comment, Blockly.Lua.COMMENT_WRAP - 3);
|
||||
if (comment) {
|
||||
commentCode += Blockly.Lua.prefixLines(comment, '-- ') + '\n';
|
||||
}
|
||||
|
|
|
@ -221,7 +221,7 @@ Blockly.PHP.scrub_ = function(block, code) {
|
|||
if (!block.outputConnection || !block.outputConnection.targetConnection) {
|
||||
// Collect comment for this block.
|
||||
var comment = block.getCommentText();
|
||||
comment = Blockly.utils.wrap(comment, this.COMMENT_WRAP - 3);
|
||||
comment = Blockly.utils.wrap(comment, Blockly.PHP.COMMENT_WRAP - 3);
|
||||
if (comment) {
|
||||
commentCode += Blockly.PHP.prefixLines(comment, '// ') + '\n';
|
||||
}
|
||||
|
|
|
@ -219,7 +219,7 @@ Blockly.Python.scrub_ = function(block, code) {
|
|||
if (!block.outputConnection || !block.outputConnection.targetConnection) {
|
||||
// Collect comment for this block.
|
||||
var comment = block.getCommentText();
|
||||
comment = Blockly.utils.wrap(comment, this.COMMENT_WRAP - 3);
|
||||
comment = Blockly.utils.wrap(comment, Blockly.Python.COMMENT_WRAP - 3);
|
||||
if (comment) {
|
||||
if (block.getProcedureDef) {
|
||||
// Use a comment block for function comments.
|
||||
|
|
|
@ -101,7 +101,7 @@
|
|||
"LOGIC_OPERATION_TOOLTIP_OR": "적어도 하나의 값이 참일 경우 참을 반환합니다.",
|
||||
"LOGIC_OPERATION_OR": "또는",
|
||||
"LOGIC_NEGATE_HELPURL": "https://ko.wikipedia.org/wiki/%EB%B6%80%EC%A0%95",
|
||||
"LOGIC_NEGATE_TITLE": "%1 의 반대",
|
||||
"LOGIC_NEGATE_TITLE": "%1가 아닙니다",
|
||||
"LOGIC_NEGATE_TOOLTIP": "입력값이 거짓이라면 참을 반환합니다. 참이라면 거짓을 반환합니다.",
|
||||
"LOGIC_BOOLEAN_HELPURL": "https://ko.wikipedia.org/wiki/%EC%A7%84%EB%A6%BF%EA%B0%92",
|
||||
"LOGIC_BOOLEAN_TRUE": "참",
|
||||
|
@ -114,7 +114,7 @@
|
|||
"LOGIC_TERNARY_CONDITION": "테스트",
|
||||
"LOGIC_TERNARY_IF_TRUE": "만약 참이라면",
|
||||
"LOGIC_TERNARY_IF_FALSE": "만약 거짓이라면",
|
||||
"LOGIC_TERNARY_TOOLTIP": "'검사' 를 진행해, 결과가 참(true)이면 '참이면' 부분의 값을 돌려줍니다. ; 결과가 참이 아니면, '거짓이면' 부분의 값을 돌려줍니다.",
|
||||
"LOGIC_TERNARY_TOOLTIP": "'test'의 조건을 검사합니다. 조건이 참이면 'if true' 값을 반환합니다. 거짓이면 'if false' 값을 반환합니다.",
|
||||
"MATH_NUMBER_HELPURL": "https://en.wikipedia.org/wiki/Number",
|
||||
"MATH_NUMBER_TOOLTIP": "수",
|
||||
"MATH_ADDITION_SYMBOL": "+",
|
||||
|
@ -142,12 +142,12 @@
|
|||
"MATH_SINGLE_TOOLTIP_NEG": "음(-)/양(+), 부호를 반대로 하여 값을 돌려줍니다.",
|
||||
"MATH_SINGLE_TOOLTIP_LN": "어떤 수의, 자연로그(natural logarithm) 값을 돌려줍니다.(밑 e, 예시 log e x)",
|
||||
"MATH_SINGLE_TOOLTIP_LOG10": "어떤 수의, 기본로그(logarithm) 값을 돌려줍니다.(밑 10, 예시 log 10 x)",
|
||||
"MATH_SINGLE_TOOLTIP_EXP": "e 의, 거듭제곱(power) 값을 돌려줍니다.",
|
||||
"MATH_SINGLE_TOOLTIP_POW10": "10 의, 거듭제곱(power) 값을 돌려줍니다.",
|
||||
"MATH_SINGLE_TOOLTIP_EXP": "e의 거듭제곱 값을 반환합니다.",
|
||||
"MATH_SINGLE_TOOLTIP_POW10": "10의 거듭제곱 값을 반환합니다.",
|
||||
"MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions",
|
||||
"MATH_TRIG_TOOLTIP_SIN": "어떤 각도(degree, radian 아님)의, sin(sine) 값을 계산해 돌려줍니다.",
|
||||
"MATH_TRIG_TOOLTIP_COS": "어떤 각도(degree, radian 아님)의, cos(cosine) 값을 계산해 돌려줍니다.",
|
||||
"MATH_TRIG_TOOLTIP_TAN": "어떤 각도(degree, radian 아님)의, tan(tangent) 값을 계산해 돌려줍니다.",
|
||||
"MATH_TRIG_TOOLTIP_SIN": "각도의 사인을 반환합니다. (라디안 아님)",
|
||||
"MATH_TRIG_TOOLTIP_COS": "각도의 코사인을 반환합니다. (라디안 아님)",
|
||||
"MATH_TRIG_TOOLTIP_TAN": "각도의 탄젠트를 반환합니다. (라디안 아님)",
|
||||
"MATH_TRIG_TOOLTIP_ASIN": "어떤 수에 대한, asin(arcsine) 값을 돌려줍니다.",
|
||||
"MATH_TRIG_TOOLTIP_ACOS": "어떤 수에 대한, acos(arccosine) 값을 돌려줍니다.",
|
||||
"MATH_TRIG_TOOLTIP_ATAN": "어떤 수에 대한, atan(arctangent) 값을 돌려줍니다.",
|
||||
|
@ -183,14 +183,14 @@
|
|||
"MATH_ONLIST_OPERATOR_MODE": "가장 여러 개 있는 값",
|
||||
"MATH_ONLIST_TOOLTIP_MODE": "리스트에 들어있는 아이템들 중에서, 가장 여러 번 들어있는 아이템들을 리스트로 만들어 돌려줍니다. (최빈값, modes)",
|
||||
"MATH_ONLIST_OPERATOR_STD_DEV": "표준 편차",
|
||||
"MATH_ONLIST_TOOLTIP_STD_DEV": "리스트에 들어있는 수(값)들에 대해, 표준 편차(standard deviation) 를 구해 돌려줍니다.",
|
||||
"MATH_ONLIST_TOOLTIP_STD_DEV": "이 리스트의 표준 편차를 반환합니다.",
|
||||
"MATH_ONLIST_OPERATOR_RANDOM": "목록의 임의 항목",
|
||||
"MATH_ONLIST_TOOLTIP_RANDOM": "목록에서 임의의 아이템을 돌려줍니다.",
|
||||
"MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation",
|
||||
"MATH_MODULO_TITLE": "%1 를 %2 로 나눈 나머지",
|
||||
"MATH_MODULO_TITLE": "%1 ÷ %2의 나머지",
|
||||
"MATH_MODULO_TOOLTIP": "첫 번째 수를 두 번째 수로 나눈, 나머지 값을 돌려줍니다.",
|
||||
"MATH_CONSTRAIN_HELPURL": "https://ko.wikipedia.org/wiki/%ED%81%B4%EB%9E%A8%ED%95%91_(%EA%B7%B8%EB%9E%98%ED%94%BD)",
|
||||
"MATH_CONSTRAIN_TITLE": "%1 의 값을, 최소 %2 최대 %3 으로 조정",
|
||||
"MATH_CONSTRAIN_TITLE": "%1의 값을, 최소 %2 최대 %3으로 조정",
|
||||
"MATH_CONSTRAIN_TOOLTIP": "어떤 수를, 특정 범위의 값이 되도록 강제로 조정합니다.",
|
||||
"MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation",
|
||||
"MATH_RANDOM_INT_TITLE": "랜덤정수(%1<= n <=%2)",
|
||||
|
@ -209,7 +209,7 @@
|
|||
"TEXT_APPEND_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification",
|
||||
"TEXT_APPEND_TO": "다음",
|
||||
"TEXT_APPEND_APPENDTEXT": "내용 덧붙이기",
|
||||
"TEXT_APPEND_TOOLTIP": "'%1' 의 마지막에 문장을 덧붙입니다.",
|
||||
"TEXT_APPEND_TOOLTIP": "'%1' 변수의 끝에 일부 텍스트를 덧붙입니다.",
|
||||
"TEXT_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Text#text-modification",
|
||||
"TEXT_LENGTH_TITLE": "다음 문장의 문자 개수 %1",
|
||||
"TEXT_LENGTH_TOOLTIP": "입력된 문장의, 문자 개수를 돌려줍니다.(공백문자 포함)",
|
||||
|
@ -261,7 +261,7 @@
|
|||
"TEXT_PROMPT_TOOLTIP_TEXT": "문장 입력 받음.",
|
||||
"LISTS_CREATE_EMPTY_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-empty-list",
|
||||
"LISTS_CREATE_EMPTY_TITLE": "빈 리스트 생성",
|
||||
"LISTS_CREATE_EMPTY_TOOLTIP": "아이템이 없는, 빈 리스트를 만들어 돌려줍니다.",
|
||||
"LISTS_CREATE_EMPTY_TOOLTIP": "데이터 레코드가 없는, 길이가 0인 목록을 반환합니다.",
|
||||
"LISTS_CREATE_WITH_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with",
|
||||
"LISTS_CREATE_WITH_TOOLTIP": "원하는 수의 항목들로 목록을 생성합니다.",
|
||||
"LISTS_CREATE_WITH_INPUT_WITH": "리스트 만들기",
|
||||
|
@ -269,8 +269,8 @@
|
|||
"LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "섹션을 추가, 제거하거나 순서를 변경하여 이 리스트 블럭을 재구성합니다.",
|
||||
"LISTS_CREATE_WITH_ITEM_TOOLTIP": "아이템을 리스트에 추가합니다.",
|
||||
"LISTS_REPEAT_HELPURL": "https://github.com/google/blockly/wiki/Lists#create-list-with",
|
||||
"LISTS_REPEAT_TOOLTIP": "원하는 값을, 원하는 갯수 만큼 넣어, 새로운 리스트를 생성합니다.",
|
||||
"LISTS_REPEAT_TITLE": "%1 을 %2 번 넣어, 리스트 생성",
|
||||
"LISTS_REPEAT_TOOLTIP": "원하는 값을, 원하는 갯수 만큼 넣어, 목록을 생성합니다.",
|
||||
"LISTS_REPEAT_TITLE": "%1을 %2번 넣어, 리스트 생성",
|
||||
"LISTS_LENGTH_HELPURL": "https://github.com/google/blockly/wiki/Lists#length-of",
|
||||
"LISTS_LENGTH_TITLE": "%1의 길이",
|
||||
"LISTS_LENGTH_TOOLTIP": "목록의 길이를 반환합니다.",
|
||||
|
@ -328,7 +328,7 @@
|
|||
"LISTS_GET_SUBLIST_END_FROM_END": "끝에서부터 # 번째로",
|
||||
"LISTS_GET_SUBLIST_END_LAST": "마지막으로",
|
||||
"LISTS_GET_SUBLIST_TAIL": "",
|
||||
"LISTS_GET_SUBLIST_TOOLTIP": "특정 부분을 복사해 새로운 리스트로 생성합니다.",
|
||||
"LISTS_GET_SUBLIST_TOOLTIP": "목록의 특정 부분에 대한 복사본을 만듭니다.",
|
||||
"LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list",
|
||||
"LISTS_SORT_TITLE": "정렬 %1 %2 %3",
|
||||
"LISTS_SORT_TOOLTIP": "목록의 사본을 정렬합니다.",
|
||||
|
@ -342,13 +342,13 @@
|
|||
"LISTS_SPLIT_TEXT_FROM_LIST": "목록에서 텍스트 만들기",
|
||||
"LISTS_SPLIT_WITH_DELIMITER": "분리와",
|
||||
"LISTS_SPLIT_TOOLTIP_SPLIT": "각 속보, 텍스트의 목록들에서 텍스트를 분할합니다.",
|
||||
"LISTS_SPLIT_TOOLTIP_JOIN": "구분 기호로 분리 된 하나의 텍스트에 텍스트 의 목록을 넣으세요.",
|
||||
"LISTS_SPLIT_TOOLTIP_JOIN": "구분 기호로 구분하여 텍스트 목록을 하나의 텍스트에 병합합니다.",
|
||||
"ORDINAL_NUMBER_SUFFIX": "",
|
||||
"VARIABLES_GET_HELPURL": "https://ko.wikipedia.org/wiki/%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)",
|
||||
"VARIABLES_GET_TOOLTIP": "변수에 저장 되어있는 값을 돌려줍니다.",
|
||||
"VARIABLES_GET_CREATE_SET": "'집합 %1' 생성",
|
||||
"VARIABLES_SET_HELPURL": "https://ko.wikipedia.org/wiki/%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)",
|
||||
"VARIABLES_SET": "바꾸기 %1 를 다음 값으로 바꾸기 %2",
|
||||
"VARIABLES_SET": "%1를 %2로 설정",
|
||||
"VARIABLES_SET_TOOLTIP": "변수의 값을 입력한 값으로 변경해 줍니다.",
|
||||
"VARIABLES_SET_CREATE_GET": "'%1 값 읽기' 블럭 생성",
|
||||
"PROCEDURES_DEFNORETURN_HELPURL": "https://ko.wikipedia.org/wiki/%ED%95%A8%EC%88%98_%28%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%29",
|
||||
|
|
|
@ -10,7 +10,8 @@
|
|||
"Mateon1",
|
||||
"Expert3222",
|
||||
"Cirasean",
|
||||
"Fringoo"
|
||||
"Fringoo",
|
||||
"Chrumps"
|
||||
]
|
||||
},
|
||||
"VARIABLES_DEFAULT_NAME": "element",
|
||||
|
@ -79,12 +80,12 @@
|
|||
"CONTROLS_IF_TOOLTIP_3": "Jeśli pierwsza wartość jest prawdziwa, to wykonaj pierwszy blok instrukcji. W przeciwnym razie, jeśli druga wartość jest prawdziwa, to wykonaj drugi blok instrukcji.",
|
||||
"CONTROLS_IF_TOOLTIP_4": "Jeśli pierwsza wartość jest prawdziwa, wykonaj pierwszy blok instrukcji. W przeciwnym razie jeśli druga wartość jest prawdziwa, wykonaj drugi blok instrukcji. Jeżeli żadna z wartości nie jest prawdziwa, wykonaj ostatni blok instrukcji.",
|
||||
"CONTROLS_IF_MSG_IF": "jeśli",
|
||||
"CONTROLS_IF_MSG_ELSEIF": "w przeciwnym razie jeśli",
|
||||
"CONTROLS_IF_MSG_ELSEIF": "w przeciwnym razie, jeśli",
|
||||
"CONTROLS_IF_MSG_ELSE": "w przeciwnym razie",
|
||||
"CONTROLS_IF_IF_TOOLTIP": "Dodaj, usuń lub zmień kolejność bloków, żeby zmodyfikować ten blok „jeśli”.",
|
||||
"CONTROLS_IF_ELSEIF_TOOLTIP": "Dodaj warunek do bloku „jeśli”.",
|
||||
"CONTROLS_IF_ELSE_TOOLTIP": "Dodaj ostatni warunek do bloku „jeśli”, gdy żaden wcześniejszy nie był spełniony.",
|
||||
"LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)",
|
||||
"LOGIC_COMPARE_HELPURL": "https://pl.wikipedia.org/wiki/Nierówność",
|
||||
"LOGIC_COMPARE_TOOLTIP_EQ": "Zwróć \"prawda\", jeśli oba wejścia są sobie równe.",
|
||||
"LOGIC_COMPARE_TOOLTIP_NEQ": "Zwróć \"prawda\", jeśli oba wejścia są sobie nierówne.",
|
||||
"LOGIC_COMPARE_TOOLTIP_LT": "Zwróć \"prawda\" jeśli pierwsze wejście jest większe od drugiego.",
|
||||
|
@ -127,7 +128,7 @@
|
|||
"MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "Zwróć iloczyn dwóch liczb.",
|
||||
"MATH_ARITHMETIC_TOOLTIP_DIVIDE": "Zwróć iloraz dwóch liczb.",
|
||||
"MATH_ARITHMETIC_TOOLTIP_POWER": "Zwróć pierwszą liczbę podniesioną do potęgi o wykładniku drugiej liczby.",
|
||||
"MATH_SINGLE_HELPURL": "https://en.wikipedia.org/wiki/Square_root",
|
||||
"MATH_SINGLE_HELPURL": "https://pl.wikipedia.org/wiki/Pierwiastek_kwadratowy",
|
||||
"MATH_SINGLE_OP_ROOT": "pierwiastek kwadratowy",
|
||||
"MATH_SINGLE_TOOLTIP_ROOT": "Zwróć pierwiastek kwadratowy danej liczby.",
|
||||
"MATH_SINGLE_OP_ABSOLUTE": "wartość bezwzględna",
|
||||
|
@ -137,14 +138,14 @@
|
|||
"MATH_SINGLE_TOOLTIP_LOG10": "Zwraca logarytm dziesiętny danej liczby.",
|
||||
"MATH_SINGLE_TOOLTIP_EXP": "Zwróć e do potęgi danej liczby.",
|
||||
"MATH_SINGLE_TOOLTIP_POW10": "Zwróć 10 do potęgi danej liczby.",
|
||||
"MATH_TRIG_HELPURL": "https://en.wikipedia.org/wiki/Trigonometric_functions",
|
||||
"MATH_TRIG_HELPURL": "https://pl.wikipedia.org/wiki/Funkcje_trygonometryczne",
|
||||
"MATH_TRIG_TOOLTIP_SIN": "Zwróć wartość sinusa o stopniu (nie w radianach).",
|
||||
"MATH_TRIG_TOOLTIP_COS": "Zwróć wartość cosinusa o stopniu (nie w radianach).",
|
||||
"MATH_TRIG_TOOLTIP_TAN": "Zwróć tangens o stopniu (nie w radianach).",
|
||||
"MATH_TRIG_TOOLTIP_ASIN": "Zwróć arcus sinus danej liczby.",
|
||||
"MATH_TRIG_TOOLTIP_ACOS": "Zwróć arcus cosinus danej liczby.",
|
||||
"MATH_TRIG_TOOLTIP_ATAN": "Zwróć arcus tangens danej liczby.",
|
||||
"MATH_CONSTANT_HELPURL": "https://en.wikipedia.org/wiki/Mathematical_constant",
|
||||
"MATH_CONSTANT_HELPURL": "https://pl.wikipedia.org/wiki/Stała_(matematyka)",
|
||||
"MATH_CONSTANT_TOOLTIP": "Zwróć jedną wspólną stałą: π (3.141), e (2.718...), φ (1.618...), sqrt(2) (1.414...), sqrt(½) (0.707...) lub ∞ (nieskończoność).",
|
||||
"MATH_IS_EVEN": "jest parzysta",
|
||||
"MATH_IS_ODD": "jest nieparzysta",
|
||||
|
@ -157,7 +158,7 @@
|
|||
"MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter",
|
||||
"MATH_CHANGE_TITLE": "zmień %1 o %2",
|
||||
"MATH_CHANGE_TOOLTIP": "Dodaj liczbę do zmiennej '%1'.",
|
||||
"MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding",
|
||||
"MATH_ROUND_HELPURL": "https://pl.wikipedia.org/wiki/Zaokrąglanie",
|
||||
"MATH_ROUND_TOOLTIP": "Zaokrąglij w górę lub w dół.",
|
||||
"MATH_ROUND_OPERATOR_ROUND": "zaokrąglij",
|
||||
"MATH_ROUND_OPERATOR_ROUNDUP": "zaokrąglij w górę",
|
||||
|
@ -179,7 +180,7 @@
|
|||
"MATH_ONLIST_TOOLTIP_STD_DEV": "Zwróć odchylenie standardowe listy.",
|
||||
"MATH_ONLIST_OPERATOR_RANDOM": "losowy element z listy",
|
||||
"MATH_ONLIST_TOOLTIP_RANDOM": "Zwróć losowy element z listy.",
|
||||
"MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation",
|
||||
"MATH_MODULO_HELPURL": "https://pl.wikipedia.org/wiki/Modulo",
|
||||
"MATH_MODULO_TITLE": "reszta z dzielenia %1 przez %2",
|
||||
"MATH_MODULO_TOOLTIP": "Zwróć resztę z dzielenia dwóch liczb przez siebie.",
|
||||
"MATH_CONSTRAIN_TITLE": "ogranicz %1 z dołu %2 z góry %3",
|
||||
|
@ -190,7 +191,7 @@
|
|||
"MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation",
|
||||
"MATH_RANDOM_FLOAT_TITLE_RANDOM": "losowy ułamek",
|
||||
"MATH_RANDOM_FLOAT_TOOLTIP": "Zwróć losowy ułamek między 0.0 (włącznie), a 1.0 (wyłącznie).",
|
||||
"TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)",
|
||||
"TEXT_TEXT_HELPURL": "https://pl.wikipedia.org/wiki/Tekstowy_typ_danych",
|
||||
"TEXT_TEXT_TOOLTIP": "Litera, wyraz lub linia tekstu.",
|
||||
"TEXT_JOIN_TITLE_CREATEWITH": "utwórz tekst z",
|
||||
"TEXT_JOIN_TOOLTIP": "Tworzy fragment tekstu, łącząc ze sobą dowolną liczbę tekstów.",
|
||||
|
@ -303,6 +304,14 @@
|
|||
"LISTS_GET_SUBLIST_END_LAST": "do ostatniego",
|
||||
"LISTS_GET_SUBLIST_TAIL": "",
|
||||
"LISTS_GET_SUBLIST_TOOLTIP": "Tworzy kopię z określoną część listy.",
|
||||
"LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list",
|
||||
"LISTS_SORT_TITLE": "sortuj %1 %2 %3",
|
||||
"LISTS_SORT_TOOLTIP": "Sortuj kopię listy.",
|
||||
"LISTS_SORT_ORDER_ASCENDING": "rosnąco",
|
||||
"LISTS_SORT_ORDER_DESCENDING": "malejąco",
|
||||
"LISTS_SORT_TYPE_NUMERIC": "numerycznie",
|
||||
"LISTS_SORT_TYPE_TEXT": "alfabetycznie",
|
||||
"LISTS_SORT_TYPE_IGNORECASE": "alfabetycznie, bez uwzględniania wielkości liter",
|
||||
"LISTS_SPLIT_LIST_FROM_TEXT": "stwórz listę z tekstu",
|
||||
"LISTS_SPLIT_TEXT_FROM_LIST": "stwórz tekst z listy",
|
||||
"LISTS_SPLIT_WITH_DELIMITER": "z separatorem",
|
||||
|
@ -327,9 +336,9 @@
|
|||
"PROCEDURES_DEFRETURN_TOOLTIP": "Tworzy funkcję z wynikiem.",
|
||||
"PROCEDURES_ALLOW_STATEMENTS": "zezwól na instrukcje",
|
||||
"PROCEDURES_DEF_DUPLICATE_WARNING": "Uwaga: Ta funkcja ma powtórzone parametry.",
|
||||
"PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29",
|
||||
"PROCEDURES_CALLNORETURN_HELPURL": "https://pl.wikipedia.org/wiki/Podprogram",
|
||||
"PROCEDURES_CALLNORETURN_TOOLTIP": "Uruchom funkcję zdefiniowaną przez użytkownika '%1'.",
|
||||
"PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29",
|
||||
"PROCEDURES_CALLRETURN_HELPURL": "https://pl.wikipedia.org/wiki/Podprogram",
|
||||
"PROCEDURES_CALLRETURN_TOOLTIP": "Uruchom funkcję zdefiniowaną przez użytkownika '%1' i skorzystaj z jej wyniku.",
|
||||
"PROCEDURES_MUTATORCONTAINER_TITLE": "wejścia",
|
||||
"PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Dodaj, usuń lub zmień kolejność danych wejściowych dla tej funkcji.",
|
||||
|
|
|
@ -7,7 +7,8 @@
|
|||
"아라",
|
||||
"Nicola Nascimento",
|
||||
"Önni",
|
||||
"Diniscoelho"
|
||||
"Diniscoelho",
|
||||
"Fúlvio"
|
||||
]
|
||||
},
|
||||
"VARIABLES_DEFAULT_NAME": "item",
|
||||
|
@ -29,6 +30,7 @@
|
|||
"ENABLE_BLOCK": "Habilitar Bloco",
|
||||
"HELP": "Ajuda",
|
||||
"UNDO": "Desfazer",
|
||||
"REDO": "Refazer",
|
||||
"CHAT": "Converse com o seu colaborador, ao digitar nesta caixa!",
|
||||
"AUTH": "Por favor autorize esta aplicação para permitir que o seu trabalho seja gravado e que o possa partilhar.",
|
||||
"ME": "Eu",
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
"Espertus",
|
||||
"MS",
|
||||
"Okras",
|
||||
"RedFox"
|
||||
"RedFox",
|
||||
"Mailman"
|
||||
]
|
||||
},
|
||||
"VARIABLES_DEFAULT_NAME": "элемент",
|
||||
|
@ -76,10 +77,10 @@
|
|||
"CONTROLS_IF_IF_TOOLTIP": "Добавьте, удалите, переставьте фрагменты для переделки блока \"если\".",
|
||||
"CONTROLS_IF_ELSEIF_TOOLTIP": "Добавляет условие к блоку \"если\"",
|
||||
"CONTROLS_IF_ELSE_TOOLTIP": "Добавить заключительный подблок для случая, когда все условия ложны.",
|
||||
"LOGIC_COMPARE_HELPURL": "https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D1%80%D0%B0%D0%B2%D0%B5%D0%BD%D1%81%D1%82%D0%B2%D0%BE",
|
||||
"LOGIC_COMPARE_TOOLTIP_EQ": "Возвращает значение истина, если вставки равны.",
|
||||
"LOGIC_COMPARE_TOOLTIP_NEQ": "Возвращает значение истина, если вставки не равны.",
|
||||
"LOGIC_COMPARE_TOOLTIP_LT": "Возвращает значение истина, если первая вставка меньше второй.",
|
||||
"LOGIC_COMPARE_HELPURL": "https://ru.wikipedia.org/wiki/Неравенство",
|
||||
"LOGIC_COMPARE_TOOLTIP_EQ": "Возвращает положительное значение, если вводы равны.",
|
||||
"LOGIC_COMPARE_TOOLTIP_NEQ": "Возвращает положительное значение, если вводы не равны.",
|
||||
"LOGIC_COMPARE_TOOLTIP_LT": "Возвращает положительное значение, если первый ввод меньше второго.",
|
||||
"LOGIC_COMPARE_TOOLTIP_LTE": "Возвращает значение истина, если первая вставка меньше или равна второй.",
|
||||
"LOGIC_COMPARE_TOOLTIP_GT": "Возвращает значение истина, если первая вставка больше второй.",
|
||||
"LOGIC_COMPARE_TOOLTIP_GTE": "Возвращает значение истина, если первая вставка больше или равна второй.",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue