Commit 8772a6ee authored by carlosperate's avatar carlosperate

Merge branch 'master' of https://github.com/google/blockly

parents 3c528981 855301cd
This diff is collapsed.
......@@ -1208,7 +1208,7 @@ Blockly.Block.prototype.removeInput = function(name, opt_quiet) {
/**
* Fetches the named input object.
* @param {string} name The name of the input.
* @return {?Blockly.Input} The input object, or null of the input does not exist.
* @return {Blockly.Input} The input object, or null of the input does not exist.
*/
Blockly.Block.prototype.getInput = function(name) {
for (var i = 0, input; input = this.inputList[i]; i++) {
......
......@@ -1209,8 +1209,10 @@ Blockly.BlockSvg.prototype.setCommentText = function(text) {
/**
* Set this block's warning text.
* @param {?string} text The text, or null to delete.
* @param {string=} opt_id An optional ID for the warning text to be able to
* maintain multiple warnings.
*/
Blockly.BlockSvg.prototype.setWarningText = function(text) {
Blockly.BlockSvg.prototype.setWarningText = function(text, opt_id) {
if (this.setWarningText.pid_) {
// Only queue up the latest change. Kill any earlier pending process.
clearTimeout(this.setWarningText.pid_);
......@@ -1222,7 +1224,7 @@ Blockly.BlockSvg.prototype.setWarningText = function(text) {
var thisBlock = this;
this.setWarningText.pid_ = setTimeout(function() {
thisBlock.setWarningText.pid_ = 0;
thisBlock.setWarningText(text);
thisBlock.setWarningText(text, opt_id);
}, 100);
return;
}
......@@ -1235,11 +1237,15 @@ Blockly.BlockSvg.prototype.setWarningText = function(text) {
this.warning = new Blockly.Warning(this);
changedState = true;
}
this.warning.setText(/** @type {string} */ (text));
this.warning.setText(/** @type {string} */ (text), opt_id);
} else {
if (this.warning) {
// Dispose all warnings if no id is given
if (this.warning && opt_id === undefined) {
this.warning.dispose();
changedState = true;
} else if (this.warning) {
this.warning.removeText(opt_id);
changedState = true;
}
}
if (changedState && this.rendered) {
......
......@@ -391,19 +391,15 @@ Blockly.longPid_ = 0;
* which after about a second opens the context menu. The tasks is killed
* if the touch event terminates early.
* @param {!Event} e Touch start event.
* @param {Blockly.Block} block The block under the touchstart event, or null
* if the event was on the workspace.
* @param {!Blockly.Block|!Blockly.WorkspaceSvg} uiObject The block or workspace
* under the touchstart event.
* @private
*/
Blockly.longStart_ = function(e, block) {
Blockly.longStart_ = function(e, uiObject) {
Blockly.longStop_();
Blockly.longPid_ = setTimeout(function() {
e.button = 2; // Simulate a right button click.
if (block) {
block.onMouseDown_(e);
} else {
Blockly.onMouseDown_(e);
}
uiObject.onMouseDown_(e);
}, Blockly.LONGPRESS);
};
......
......@@ -38,7 +38,7 @@ goog.require('goog.dom');
*/
Blockly.Connection = function(source, type) {
this.sourceBlock_ = source;
/** @type {?Blockly.Connection} */
/** @type {Blockly.Connection} */
this.targetConnection = null;
/** @type {number} */
this.type = type;
......
......@@ -316,14 +316,8 @@ Blockly.Css.CONTENT = [
' fill-opacity: .8;',
'}',
'.blocklyColourBackground {',
' fill: #666;',
'}',
'.blocklyScrollbarBackground {',
' fill: #fff;',
' stroke: #e4e4e4;',
' stroke-width: 1;',
' opacity: 0;',
'}',
'.blocklyScrollbarKnob {',
......@@ -335,6 +329,17 @@ Blockly.Css.CONTENT = [
' fill: #bbb;',
'}',
/* Darken flyout scrollbars due to being on a grey background. */
/* By contrast, workspace scrollbars are on a white background. */
'.blocklyFlyout .blocklyScrollbarKnob {',
' fill: #bbb;',
'}',
'.blocklyFlyout .blocklyScrollbarBackground:hover+.blocklyScrollbarKnob,',
'.blocklyFlyout .blocklyScrollbarKnob:hover {',
' fill: #aaa;',
'}',
'.blocklyInvalidInput {',
' background: #faa;',
'}',
......
......@@ -180,7 +180,7 @@ Blockly.Field.prototype.setVisible = function(visible) {
/**
* Sets a new change handler for editable fields.
* @param {?Function} handler New change handler, or null.
* @param {Function} handler New change handler, or null.
*/
Blockly.Field.prototype.setChangeHandler = function(handler) {
this.changeHandler_ = handler;
......
......@@ -115,10 +115,11 @@ Blockly.Flyout.prototype.createDom = function() {
/*
<g>
<path class="blocklyFlyoutBackground"/>
<g></g>
<g class="blocklyFlyout"></g>
</g>
*/
this.svgGroup_ = Blockly.createSvgElement('g', {}, null);
this.svgGroup_ = Blockly.createSvgElement('g',
{'class': 'blocklyFlyout'}, null);
this.svgBackground_ = Blockly.createSvgElement('path',
{'class': 'blocklyFlyoutBackground'}, this.svgGroup_);
this.svgGroup_.appendChild(this.workspace_.createDom());
......
......@@ -412,8 +412,6 @@ Blockly.init_ = function(mainWorkspace) {
// Also, 'keydown' has to be on the whole document since the browser doesn't
// understand a concept of focus on the SVG image.
Blockly.bindEvent_(svg, 'touchstart', null,
function(e) {Blockly.longStart_(e, null);});
Blockly.bindEvent_(window, 'resize', null,
function() {Blockly.svgResize(mainWorkspace);});
......
......@@ -47,14 +47,15 @@ Blockly.Input = function(type, name, block, connection) {
this.type = type;
/** @type {string} */
this.name = name;
/** @type {!Blockly.Block} */
this.sourceBlock_ = block;
/** @type {Blockly.Connection} */
this.connection = connection;
/** @type {Blockly.Field[]} */
/** @type {!Array.<!Blockly.Field>} */
this.fieldRow = [];
/** @type {number} */
this.align = Blockly.ALIGN_LEFT;
/** @type {boolean} */
this.visible_ = true;
};
......
......@@ -305,12 +305,14 @@ Blockly.Scrollbar.prototype.resize = function(opt_metrics) {
*/
Blockly.Scrollbar.prototype.createDom_ = function() {
/* Create the following DOM:
<g>
<g class="blocklyScrollbarHorizontal">
<rect class="blocklyScrollbarBackground" />
<rect class="blocklyScrollbarKnob" rx="8" ry="8" />
</g>
*/
this.svgGroup_ = Blockly.createSvgElement('g', {}, null);
var className = 'blocklyScrollbar' +
(this.horizontal_ ? 'Horizontal' : 'Vertical');
this.svgGroup_ = Blockly.createSvgElement('g', {'class': className}, null);
this.svgBackground_ = Blockly.createSvgElement('rect',
{'class': 'blocklyScrollbarBackground'}, this.svgGroup_);
var radius = Math.floor((Blockly.Scrollbar.scrollbarThickness - 5) / 2);
......
......@@ -115,7 +115,8 @@ Blockly.Toolbox.prototype.init = function() {
});
var workspaceOptions = {
parentWorkspace: workspace,
RTL: workspace.RTL
RTL: workspace.RTL,
svg: workspace.options.svg
};
/**
* @type {!Blockly.Flyout}
......
......@@ -151,23 +151,24 @@ Blockly.Trashcan.prototype.top_ = 0;
*/
Blockly.Trashcan.prototype.createDom = function() {
/* Here's the markup that will be generated:
<g>
<clippath id="blocklyTrashBodyClipPath">
<g class="blocklyTrash">
<clippath id="blocklyTrashBodyClipPath837493">
<rect width="47" height="45" y="15"></rect>
</clippath>
<image width="64" height="92" y="-32" xlink:href="media/sprites.png"
clip-path="url(#blocklyTrashBodyClipPath)"></image>
<clippath id="blocklyTrashLidClipPath">
clip-path="url(#blocklyTrashBodyClipPath837493)"></image>
<clippath id="blocklyTrashLidClipPath837493">
<rect width="47" height="15"></rect>
</clippath>
<image width="84" height="92" y="-32" xlink:href="media/sprites.png"
clip-path="url(#blocklyTrashLidClipPath)"></image>
clip-path="url(#blocklyTrashLidClipPath837493)"></image>
</g>
*/
this.svgGroup_ = Blockly.createSvgElement('g', {}, null);
this.svgGroup_ = Blockly.createSvgElement('g',
{'class': 'blocklyTrash'}, null);
var rnd = String(Math.random()).substring(2);
var clip = Blockly.createSvgElement('clipPath',
{'id': 'blocklyTrashBodyClipPath'},
{'id': 'blocklyTrashBodyClipPath' + rnd},
this.svgGroup_);
Blockly.createSvgElement('rect',
{'width': this.WIDTH_, 'height': this.BODY_HEIGHT_,
......@@ -175,19 +176,19 @@ Blockly.Trashcan.prototype.createDom = function() {
clip);
var body = Blockly.createSvgElement('image',
{'width': Blockly.SPRITE.width, 'height': Blockly.SPRITE.height, 'y': -32,
'clip-path': 'url(#blocklyTrashBodyClipPath)'},
'clip-path': 'url(#blocklyTrashBodyClipPath' + rnd + ')'},
this.svgGroup_);
body.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href',
this.workspace_.options.pathToMedia + Blockly.SPRITE.url);
var clip = Blockly.createSvgElement('clipPath',
{'id': 'blocklyTrashLidClipPath'},
{'id': 'blocklyTrashLidClipPath' + rnd},
this.svgGroup_);
Blockly.createSvgElement('rect',
{'width': this.WIDTH_, 'height': this.LID_HEIGHT_}, clip);
this.svgLid_ = Blockly.createSvgElement('image',
{'width': Blockly.SPRITE.width, 'height': Blockly.SPRITE.height, 'y': -32,
'clip-path': 'url(#blocklyTrashLidClipPath)'},
'clip-path': 'url(#blocklyTrashLidClipPath' + rnd + ')'},
this.svgGroup_);
this.svgLid_.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href',
this.workspace_.options.pathToMedia + Blockly.SPRITE.url);
......
......@@ -39,6 +39,8 @@ goog.require('Blockly.Icon');
Blockly.Warning = function(block) {
Blockly.Warning.superClass_.constructor.call(this, block);
this.createIcon();
// The text_ object can contain multiple warnings
this.text_ = { default_: '' };
};
goog.inherits(Blockly.Warning, Blockly.Icon);
......@@ -70,12 +72,6 @@ Blockly.Warning.textToDom_ = function(text) {
return paragraph;
};
/**
* Warning text (if bubble is not visible).
* @private
*/
Blockly.Warning.prototype.text_ = '';
/**
* Show or hide the warning bubble.
* @param {boolean} visible True if the bubble should be visible.
......@@ -86,8 +82,12 @@ Blockly.Warning.prototype.setVisible = function(visible) {
return;
}
if (visible) {
// Create the bubble.
var paragraph = Blockly.Warning.textToDom_(this.text_);
// Create the bubble to display all warnings.
var allWarnings = [];
for (var id_ in this.text_) {
allWarnings.push(this.text_[id_]);
}
var paragraph = Blockly.Warning.textToDom_(allWarnings.join('\n'));
this.bubble_ = new Blockly.Bubble(
/** @type {!Blockly.Workspace} */ (this.block_.workspace),
paragraph, this.block_.svgPath_,
......@@ -125,18 +125,47 @@ Blockly.Warning.prototype.bodyFocus_ = function(e) {
/**
* Set this warning's text.
* @param {string} text Warning text.
* @param {string=} opt_id An optional ID for this text entry to be able to
* maintain multiple warnings.
*/
Blockly.Warning.prototype.setText = function(text) {
if (this.text_ == text) {
return;
Blockly.Warning.prototype.setText = function(text, opt_id) {
if (opt_id !== undefined) {
if (this.text_[opt_id] == text) {
return;
}
this.text_[opt_id] = text;
} else {
if (this.text_.default_ == text) {
return;
}
this.text_.default_ = text;
}
this.text_ = text;
if (this.isVisible()) {
this.setVisible(false);
this.setVisible(true);
}
};
/**
* Removes the specified warning text.
* @param {string} textId ID of the warning to be removed.
*/
Blockly.Warning.prototype.removeText = function(textId) {
if (this.text_[textId] === undefined) {
return; // ID not found, no change.
}
delete this.text_[textId];
if (Object.keys(this.text_).length === 0 ||
(Object.keys(this.text_).length === 1 && !this.text_.default_)) {
this.dispose();
} else {
if (this.isVisible()) {
this.setVisible(false);
this.setVisible(true);
}
}
};
/**
* Dispose of this warning.
*/
......
......@@ -110,15 +110,16 @@ Blockly.WorkspaceSvg.prototype.scrollbar = null;
*/
Blockly.WorkspaceSvg.prototype.createDom = function(opt_backgroundClass) {
/*
<g>
<g class="blocklyWorkspace">
<rect class="blocklyMainBackground" height="100%" width="100%"></rect>
[Trashcan and/or flyout may go here]
<g></g> // Block canvas
<g></g> // Bubble canvas
<g class="blocklyBlockCanvas"></g>
<g class="blocklyBubbleCanvas"></g>
[Scrollbars may go here]
</g>
*/
this.svgGroup_ = Blockly.createSvgElement('g', {}, null);
this.svgGroup_ = Blockly.createSvgElement('g',
{'class': 'blocklyWorkspace'}, null);
if (opt_backgroundClass) {
this.svgBackground_ = Blockly.createSvgElement('rect',
{'height': '100%', 'width': '100%',
......@@ -128,13 +129,18 @@ Blockly.WorkspaceSvg.prototype.createDom = function(opt_backgroundClass) {
'url(#' + this.options.gridPattern.id + ')';
}
}
this.svgBlockCanvas_ = Blockly.createSvgElement('g', {}, this.svgGroup_);
this.svgBubbleCanvas_ = Blockly.createSvgElement('g', {}, this.svgGroup_);
this.svgBlockCanvas_ = Blockly.createSvgElement('g',
{'class': 'blocklyBlockCanvas'}, this.svgGroup_);
this.svgBubbleCanvas_ = Blockly.createSvgElement('g',
{'class': 'blocklyBubbleCanvas'}, this.svgGroup_);
if (this.options.hasTrashcan) {
this.addTrashcan_();
}
Blockly.bindEvent_(this.svgGroup_, 'mousedown', this, this.onMouseDown_);
var thisWorkspace = this;
Blockly.bindEvent_(this.svgGroup_, 'touchstart', null,
function(e) {Blockly.longStart_(e, thisWorkspace);});
// Determine if there needs to be a category tree, or a simple list of
// blocks. This cannot be changed later, since the UI is very different.
......
......@@ -48,6 +48,7 @@ function formatChange() {
var languagePre = document.getElementById('languagePre');
var languageTA = document.getElementById('languageTA');
if (document.getElementById('format').value == 'Manual') {
Blockly.hideChaff();
mask.style.display = 'block';
languagePre.style.display = 'none';
languageTA.style.display = 'block';
......
......@@ -178,8 +178,8 @@ Blockly.Msg.MATH_ADDITION_SYMBOL = "+";
Blockly.Msg.MATH_ARITHMETIC_HELPURL = "https://he.wikipedia.org/wiki/ארבע_פעולות_החשבון";
Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = "תחזיר את סכום שני המספרים.";
Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = "Return the quotient of the two numbers."; // untranslated
Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "Return the difference of the two numbers."; // untranslated
Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "Return the product of the two numbers."; // untranslated
Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "החזרת ההפרש בין שני מספרים.";
Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "החזרת תוצאת הכפל בין שני מספרים.";
Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "Return the first number raised to the power of the second number."; // untranslated
Blockly.Msg.MATH_CHANGE_HELPURL = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated
Blockly.Msg.MATH_CHANGE_TITLE = "change %1 by %2"; // untranslated
......@@ -223,7 +223,7 @@ Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "Return the standard deviation of the
Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "Return the sum of all the numbers in the list."; // untranslated
Blockly.Msg.MATH_POWER_SYMBOL = "^";
Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated
Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "random fraction"; // untranslated
Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "שבר אקראי";
Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated
Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated
Blockly.Msg.MATH_RANDOM_INT_TITLE = "random integer from %1 to %2"; // untranslated
......@@ -232,15 +232,15 @@ Blockly.Msg.MATH_ROUND_HELPURL = "https://en.wikipedia.org/wiki/Rounding"; // u
Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = "עיגול";
Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = "עיגול למטה";
Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = "עיגול למעלה";
Blockly.Msg.MATH_ROUND_TOOLTIP = "Round a number up or down."; // untranslated
Blockly.Msg.MATH_ROUND_TOOLTIP = "עיגול מספר למעלה או למטה.";
Blockly.Msg.MATH_SINGLE_HELPURL = "https://en.wikipedia.org/wiki/Square_root"; // untranslated
Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE = "ערך מוחלט";
Blockly.Msg.MATH_SINGLE_OP_ROOT = "square root"; // untranslated
Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS = "Return the absolute value of a number."; // untranslated
Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS = "החזרת הערך המוחלט של מספר.";
Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP = "Return e to the power of a number."; // untranslated
Blockly.Msg.MATH_SINGLE_TOOLTIP_LN = "Return the natural logarithm of a number."; // untranslated
Blockly.Msg.MATH_SINGLE_TOOLTIP_LN = "החזרת הלוגריתם הטבעי של מספר.";
Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10 = "Return the base 10 logarithm of a number."; // untranslated
Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG = "Return the negation of a number."; // untranslated
Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG = "החזרת הערך הנגדי של מספר.";
Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10 = "Return 10 to the power of a number."; // untranslated
Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT = "Return the square root of a number."; // untranslated
Blockly.Msg.MATH_SUBTRACTION_SYMBOL = "-";
......@@ -289,7 +289,7 @@ Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP = "הוסף, הסר או סדר
Blockly.Msg.REMOVE_COMMENT = "הסר הערה";
Blockly.Msg.RENAME_VARIABLE = "שנה את שם המשתנה...";
Blockly.Msg.RENAME_VARIABLE_TITLE = "שנה את שם כל '%1' המשתנים ל:";
Blockly.Msg.TEXT_APPEND_APPENDTEXT = "append text"; // untranslated
Blockly.Msg.TEXT_APPEND_APPENDTEXT = "הוספת טקסט";
Blockly.Msg.TEXT_APPEND_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated
Blockly.Msg.TEXT_APPEND_TO = "to"; // untranslated
Blockly.Msg.TEXT_APPEND_TOOLTIP = "Append some text to variable '%1'."; // untranslated
......@@ -330,7 +330,7 @@ Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#
Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 is empty"; // untranslated
Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "Returns true if the provided text is empty."; // untranslated
Blockly.Msg.TEXT_JOIN_HELPURL = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated
Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "create text with"; // untranslated
Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = "יצירת טקסט עם";
Blockly.Msg.TEXT_JOIN_TOOLTIP = "Create a piece of text by joining together any number of items."; // untranslated
Blockly.Msg.TEXT_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated
Blockly.Msg.TEXT_LENGTH_TITLE = "length of %1"; // untranslated
......
......@@ -226,7 +226,7 @@ Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://en.wikipedia.org/wiki/Random_nu
Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "रैन्डम अंश";
Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive)."; // untranslated
Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation";
Blockly.Msg.MATH_RANDOM_INT_TITLE = "%1 से % 2 तक रैन्डम पूर्णांक";
Blockly.Msg.MATH_RANDOM_INT_TITLE = "%1 से %2 तक रैन्डम पूर्णांक";
Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = "Return a random integer between the two specified limits, inclusive."; // untranslated
Blockly.Msg.MATH_ROUND_HELPURL = "https://en.wikipedia.org/wiki/Rounding";
Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = "पूर्णांक बनाएँ";
......
......@@ -7,9 +7,9 @@ goog.provide('Blockly.Msg.id');
goog.require('Blockly.Msg');
Blockly.Msg.ADD_COMMENT = "Tambahkan sebuah comment";
Blockly.Msg.AUTH = "Please authorize this app to enable your work to be saved and to allow it to be shared by you."; // untranslated
Blockly.Msg.AUTH = "Silakan mengotorisasi aplikasi ini untuk memungkinkan pekerjaan Anda dapat disimpan dan digunakan bersama.";
Blockly.Msg.CHANGE_VALUE_TITLE = "Ubah nilai:";
Blockly.Msg.CHAT = "Chat with your collaborator by typing in this box!"; // untranslated
Blockly.Msg.CHAT = "Chatting dengan kolaborator Anda dengan mengetikkan di kotak ini!";
Blockly.Msg.COLLAPSE_ALL = "Tutup blok";
Blockly.Msg.COLLAPSE_BLOCK = "Tutup blok";
Blockly.Msg.COLOUR_BLEND_COLOUR1 = "Warna 1";
......@@ -257,7 +257,7 @@ Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN = "Kembalikan atan dari angka.";
Blockly.Msg.MATH_TRIG_TOOLTIP_COS = "Kembalikan cos dari derajat (bukan radian).";
Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = "Kembalikan sinus dari derajat (bukan radian).";
Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = "Kembalikan tangen dari derajat (tidak radian).";
Blockly.Msg.ME = "Me"; // untranslated
Blockly.Msg.ME = "Saya";
Blockly.Msg.NEW_VARIABLE = "Pembolehubah baru...";
Blockly.Msg.NEW_VARIABLE_TITLE = "Nama pembolehubah baru:";
Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ""; // untranslated
......@@ -350,7 +350,7 @@ Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "pangkas ruang dari kedua belah sisi";
Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "pangkas ruang dari sisi kiri";
Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "pangkas ruang dari sisi kanan";
Blockly.Msg.TEXT_TRIM_TOOLTIP = "Kembali salinan teks dengan spasi dihapus dari satu atau kedua ujungnya.";
Blockly.Msg.TODAY = "Today"; // untranslated
Blockly.Msg.TODAY = "Hari ini";
Blockly.Msg.VARIABLES_DEFAULT_NAME = "item";
Blockly.Msg.VARIABLES_GET_CREATE_SET = "Membuat 'tetapkan %1'";
Blockly.Msg.VARIABLES_GET_HELPURL = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated
......
......@@ -62,7 +62,7 @@ Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = "تا تکرار کو";
Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "While a value is false, then do some statements."; // untranslated
Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "While a value is true, then do some statements."; // untranslated
Blockly.Msg.DELETE_BLOCK = "پاکسا کردن برشت";
Blockly.Msg.DELETE_X_BLOCKS = "پاکسا کردن1% د برشتیا";
Blockly.Msg.DELETE_X_BLOCKS = "پاکسا کردن%1 د برشتیا";
Blockly.Msg.DISABLE_BLOCK = "ناکشتگر کردن برشت";
Blockly.Msg.DUPLICATE_BLOCK = "کپی کردن";
Blockly.Msg.ENABLE_BLOCK = "کنشتگر کردن برشت";
......
......@@ -68,9 +68,9 @@ Blockly.Msg.DUPLICATE_BLOCK = "Duplicar";
Blockly.Msg.ENABLE_BLOCK = "Habilitar Bloco";
Blockly.Msg.EXPAND_ALL = "Expandir Blocos";
Blockly.Msg.EXPAND_BLOCK = "Expandir Bloco";
Blockly.Msg.EXTERNAL_INPUTS = "Entrada externa";
Blockly.Msg.EXTERNAL_INPUTS = "Entradas externas";
Blockly.Msg.HELP = "Ajuda";
Blockly.Msg.INLINE_INPUTS = "Entradas Incorporadas";
Blockly.Msg.INLINE_INPUTS = "Entradas incorporadas";
Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated
Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = "criar lista vazia";
Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = "Retorna uma lista, de tamanho 0, contendo nenhum registro";
......
......@@ -109,7 +109,12 @@
"MATH_TRIG_ATAN": "atan",
"MATH_ARITHMETIC_HELPURL": "https://he.wikipedia.org/wiki/ארבע_פעולות_החשבון",
"MATH_ARITHMETIC_TOOLTIP_ADD": "תחזיר את סכום שני המספרים.",
"MATH_ARITHMETIC_TOOLTIP_MINUS": "החזרת ההפרש בין שני מספרים.",
"MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "החזרת תוצאת הכפל בין שני מספרים.",
"MATH_SINGLE_OP_ABSOLUTE": "ערך מוחלט",
"MATH_SINGLE_TOOLTIP_ABS": "החזרת הערך המוחלט של מספר.",
"MATH_SINGLE_TOOLTIP_NEG": "החזרת הערך הנגדי של מספר.",
"MATH_SINGLE_TOOLTIP_LN": "החזרת הלוגריתם הטבעי של מספר.",
"MATH_IS_EVEN": "זוגי",
"MATH_IS_ODD": "אי-זוגי",
"MATH_IS_PRIME": "ראשוני",
......@@ -118,6 +123,7 @@
"MATH_IS_NEGATIVE": "שלילי",
"MATH_IS_DIVISIBLE_BY": "מתחלק ב",
"MATH_CHANGE_TOOLTIP": "הוסף מספר למשתנה '%1'.",
"MATH_ROUND_TOOLTIP": "עיגול מספר למעלה או למטה.",
"MATH_ROUND_OPERATOR_ROUND": "עיגול",
"MATH_ROUND_OPERATOR_ROUNDUP": "עיגול למעלה",
"MATH_ROUND_OPERATOR_ROUNDDOWN": "עיגול למטה",
......@@ -132,6 +138,9 @@
"MATH_ONLIST_TOOLTIP_RANDOM": "תחזיר רכיב אקראי מרשימה.",
"MATH_MODULO_TITLE": "שארית החילוק %1 ÷ %2",
"MATH_MODULO_TOOLTIP": "החזרת השארית מחלוקת שני המספרים.",
"MATH_RANDOM_FLOAT_TITLE_RANDOM": "שבר אקראי",
"TEXT_JOIN_TITLE_CREATEWITH": "יצירת טקסט עם",
"TEXT_APPEND_APPENDTEXT": "הוספת טקסט",
"TEXT_CHANGECASE_OPERATOR_UPPERCASE": "לאותיות גדולות (עבור טקסט באנגלית)",
"TEXT_CHANGECASE_OPERATOR_LOWERCASE": "לאותיות קטנות (עבור טקסט באנגלית)",
"TEXT_CHANGECASE_OPERATOR_TITLECASE": "לאותיות גדולות בתחילת כל מילה (עבור טקסט באנגלית)",
......
......@@ -143,7 +143,7 @@
"MATH_MODULO_TITLE": "%1 ÷ %2 का शेषफल",
"MATH_MODULO_TOOLTIP": "दो संख्याओं के भाग का शेषफल रिटर्न करें।",
"MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation",
"MATH_RANDOM_INT_TITLE": "%1 से % 2 तक रैन्डम पूर्णांक",
"MATH_RANDOM_INT_TITLE": "%1 से %2 तक रैन्डम पूर्णांक",
"MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation",
"MATH_RANDOM_FLOAT_TITLE_RANDOM": "रैन्डम अंश",
"TEXT_TEXT_HELPURL": "https://en.wikipedia.org/wiki/String_(computer_science)",
......
......@@ -2,10 +2,12 @@
"@metadata": {
"authors": [
"Kenrick95",
"아라"
"아라",
"Mirws"
]
},
"VARIABLES_DEFAULT_NAME": "item",
"TODAY": "Hari ini",
"DUPLICATE_BLOCK": "Duplikat",
"ADD_COMMENT": "Tambahkan sebuah comment",
"REMOVE_COMMENT": "Hapus komentar",
......@@ -20,6 +22,9 @@
"DISABLE_BLOCK": "Nonaktifkan blok",
"ENABLE_BLOCK": "Aktifkan blok",
"HELP": "Bantuan",
"CHAT": "Chatting dengan kolaborator Anda dengan mengetikkan di kotak ini!",
"AUTH": "Silakan mengotorisasi aplikasi ini untuk memungkinkan pekerjaan Anda dapat disimpan dan digunakan bersama.",
"ME": "Saya",
"CHANGE_VALUE_TITLE": "Ubah nilai:",
"NEW_VARIABLE": "Pembolehubah baru...",
"NEW_VARIABLE_TITLE": "Nama pembolehubah baru:",
......
......@@ -12,7 +12,7 @@
"EXTERNAL_INPUTS": "داده یا وه دری",
"INLINE_INPUTS": "داده یا مئنجا",
"DELETE_BLOCK": "پاکسا کردن برشت",
"DELETE_X_BLOCKS": "پاکسا کردن1% د برشتیا",
"DELETE_X_BLOCKS": "پاکسا کردن%1 د برشتیا",
"COLLAPSE_BLOCK": "کوچک کردن برشت",
"COLLAPSE_ALL": "کوچک کردن برشتیا",
"EXPAND_BLOCK": "گپ کردن برشت",
......
......@@ -18,8 +18,8 @@
"DUPLICATE_BLOCK": "Duplicar",
"ADD_COMMENT": "Adicionar Comentário",
"REMOVE_COMMENT": "Remover Comentário",
"EXTERNAL_INPUTS": "Entrada externa",
"INLINE_INPUTS": "Entradas Incorporadas",
"EXTERNAL_INPUTS": "Entradas externas",
"INLINE_INPUTS": "Entradas incorporadas",
"DELETE_BLOCK": "Remover Bloco",
"DELETE_X_BLOCKS": "Remover %1 Blocos",
"COLLAPSE_BLOCK": "Recolher Bloco",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment