diff --git a/accessible/README b/accessible/README index 21c2e2025..d133fa828 100644 --- a/accessible/README +++ b/accessible/README @@ -5,10 +5,8 @@ Google's Blockly is a web-based, visual programming editor that is accessible to blind users. The code in this directory renders a version of the Blockly toolbox and -workspace that is fully keyboard-navigable, and compatible with JAWS/NVDA -screen readers on Firefox for Windows. (We chose this combination because JAWS -and NVDA are the most robust screen readers, and are compatible with many more -aria tags than other screen readers.) +workspace that is fully keyboard-navigable, and compatible with most screen +readers. In the future, Accessible Blockly may be modified to suit accessibility needs other than visual impairments. Note that deaf users are expected to continue diff --git a/accessible/app.component.js b/accessible/app.component.js index 763a13c11..f220af98b 100644 --- a/accessible/app.component.js +++ b/accessible/app.component.js @@ -29,6 +29,9 @@ blocklyApp.AppView = ng.core .Component({ selector: 'blockly-app', template: ` +
@@ -46,19 +49,28 @@ blocklyApp.AppView = ng.core + + + + - + `, directives: [blocklyApp.ToolboxComponent, blocklyApp.WorkspaceComponent], pipes: [blocklyApp.TranslatePipe], - // The clipboard, tree and utils services are declared here, so that all - // components in the application use the same instance of the service. + // All services are declared here, so that all components in the + // application use the same instance of the service. // https://www.sitepoint.com/angular-2-components-providers-classes-factories-values/ providers: [ - blocklyApp.ClipboardService, blocklyApp.TreeService, - blocklyApp.UtilsService] + blocklyApp.ClipboardService, blocklyApp.NotificationsService, + blocklyApp.TreeService, blocklyApp.UtilsService] }) .Class({ - constructor: [function() {}] + constructor: [blocklyApp.NotificationsService, function(_notificationsService) { + this.notificationsService = _notificationsService; + }], + getStatusMessage: function() { + return this.notificationsService.getStatusMessage(); + } }); diff --git a/accessible/clipboard.service.js b/accessible/clipboard.service.js index db65e2d9f..84b0b4f52 100644 --- a/accessible/clipboard.service.js +++ b/accessible/clipboard.service.js @@ -24,12 +24,17 @@ blocklyApp.ClipboardService = ng.core .Class({ - constructor: function() { + constructor: [ + blocklyApp.NotificationsService, blocklyApp.UtilsService, + function(_notificationsService, _utilsService) { this.clipboardBlockXml_ = null; - this.clipboardBlockSuperiorConnection_ = null; + this.clipboardBlockPreviousConnection_ = null; this.clipboardBlockNextConnection_ = null; + this.clipboardBlockOutputConnection_ = null; this.markedConnection_ = null; - }, + this.notificationsService = _notificationsService; + this.utilsService = _utilsService; + }], areConnectionsCompatible_: function(blockConnection, connection) { // Check that both connections exist, that it's the right kind of // connection, and that the types match. @@ -39,11 +44,20 @@ blocklyApp.ClipboardService = ng.core connection.checkType_(blockConnection)); }, isCompatibleWithClipboard: function(connection) { - var superiorConnection = this.clipboardBlockSuperiorConnection_; + var previousConnection = this.clipboardBlockPreviousConnection_; var nextConnection = this.clipboardBlockNextConnection_; + var outputConnection = this.clipboardBlockOutputConnection_; return Boolean( - this.areConnectionsCompatible_(connection, superiorConnection) || - this.areConnectionsCompatible_(connection, nextConnection)); + this.areConnectionsCompatible_(connection, previousConnection) || + this.areConnectionsCompatible_(connection, nextConnection) || + this.areConnectionsCompatible_(connection, outputConnection)); + }, + getMarkedConnectionBlock: function() { + if (!this.markedConnection_) { + return null; + } else { + return this.markedConnection_.getSourceBlock(); + } }, isMovableToMarkedConnection: function(block) { // It should not be possible to move any ancestor of the block containing @@ -52,7 +66,7 @@ blocklyApp.ClipboardService = ng.core return false; } - var markedSpotAncestorBlock = this.markedConnection_.getSourceBlock(); + var markedSpotAncestorBlock = this.getMarkedConnectionBlock(); while (markedSpotAncestorBlock) { if (markedSpotAncestorBlock.id == block.id) { return false; @@ -82,24 +96,28 @@ blocklyApp.ClipboardService = ng.core }, markConnection: function(connection) { this.markedConnection_ = connection; - alert(Blockly.Msg.MARKED_SPOT_MSG); + this.notificationsService.setStatusMessage(Blockly.Msg.MARKED_SPOT_MSG); }, cut: function(block) { - var blockSummary = block.toString(); - this.copy(block, false); + this.copy(block); block.dispose(true); - alert(Blockly.Msg.CUT_BLOCK_MSG + blockSummary); }, - copy: function(block, announce) { + copy: function(block) { this.clipboardBlockXml_ = Blockly.Xml.blockToDom(block); - this.clipboardBlockSuperiorConnection_ = block.outputConnection || - block.previousConnection; + this.clipboardBlockPreviousConnection_ = block.previousConnection; this.clipboardBlockNextConnection_ = block.nextConnection; - if (announce) { - alert(Blockly.Msg.COPIED_BLOCK_MSG + block.toString()); - } + this.clipboardBlockOutputConnection_ = block.outputConnection; }, - pasteFromClipboard: function(connection) { + pasteFromClipboard: function(inputConnection) { + var connection = inputConnection; + // If the connection is a 'previousConnection' and that connection is + // already joined to something, use the 'nextConnection' of the + // previous block instead in order to do an insertion. + if (inputConnection.type == Blockly.PREVIOUS_STATEMENT && + inputConnection.isConnected()) { + connection = inputConnection.targetConnection; + } + var reconstitutedBlock = Blockly.Xml.domToBlock(blocklyApp.workspace, this.clipboardBlockXml_); switch (connection.type) { @@ -112,11 +130,12 @@ blocklyApp.ClipboardService = ng.core default: connection.connect(reconstitutedBlock.outputConnection); } - alert( - Blockly.Msg.PASTED_BLOCK_FROM_CLIPBOARD_MSG + - reconstitutedBlock.toString()); + this.notificationsService.setStatusMessage( + this.utilsService.getBlockDescription(reconstitutedBlock) + ' ' + + Blockly.Msg.PASTED_BLOCK_FROM_CLIPBOARD_MSG); + return reconstitutedBlock.id; }, - pasteToMarkedConnection: function(block, announce) { + pasteToMarkedConnection: function(block) { var xml = Blockly.Xml.blockToDom(block); var reconstitutedBlock = Blockly.Xml.domToBlock( blocklyApp.workspace, xml); @@ -142,12 +161,8 @@ blocklyApp.ClipboardService = ng.core return; } - if (announce) { - alert( - Blockly.Msg.PASTED_BLOCK_TO_MARKED_SPOT_MSG + - reconstitutedBlock.toString()); - } - this.markedConnection_ = null; + + return reconstitutedBlock.id; } }); diff --git a/accessible/field.component.js b/accessible/field.component.js index bb6b4cf07..93a058857 100644 --- a/accessible/field.component.js +++ b/accessible/field.component.js @@ -28,38 +28,37 @@ blocklyApp.FieldComponent = ng.core .Component({ selector: 'blockly-field', template: ` -
  • - -
  • -
  • - -
      + + + + +
      + +
      1. -
      - -
    1. +
    2. + +
      // Checkboxes are not currently supported. - -
    3. - -
    4. +
      + + `, - inputs: ['field', 'level', 'index', 'parentId'], + inputs: ['field', 'index', 'parentId', 'disabled', 'mainFieldId'], pipes: [blocklyApp.TranslatePipe] }) .Class({ @@ -79,22 +78,21 @@ blocklyApp.FieldComponent = ng.core return mainLabel + ' ' + secondLabel; }, generateElementNames: function() { - var elementNames = ['listItem']; - if (this.isTextInput()) { - elementNames.push('input'); - } else if (this.isDropdown()) { - elementNames.push('label'); + var elementNames = []; + if (this.isDropdown()) { var keys = this.getOptions(); for (var i = 0; i < keys.length; i++){ elementNames.push(keys[i], keys[i] + 'Button'); } - } else if (this.isTextField() && this.hasVisibleText()) { - elementNames.push('label'); } return elementNames; }, + isNumberInput: function() { + return this.field instanceof Blockly.FieldNumber; + }, isTextInput: function() { - return this.field instanceof Blockly.FieldTextInput; + return this.field instanceof Blockly.FieldTextInput && + !(this.field instanceof Blockly.FieldNumber); }, isDropdown: function() { return this.field instanceof Blockly.FieldDropdown; diff --git a/accessible/messages.js b/accessible/messages.js index 8014beee2..d731bc1fe 100644 --- a/accessible/messages.js +++ b/accessible/messages.js @@ -50,7 +50,7 @@ Blockly.Msg.ARGUMENT_INPUT = 'argument input'; Blockly.Msg.ARGUMENT_BLOCK_ACTION_LIST = 'argument block action list'; Blockly.Msg.TEXT = 'text'; Blockly.Msg.BUTTON = 'button'; -Blockly.Msg.UNAVAILABLE = 'unavailable'; +Blockly.Msg.DISABLED = 'disabled'; Blockly.Msg.CURRENT_ARGUMENT_VALUE = 'current argument value:'; Blockly.Msg.COPY_TO_WORKSPACE = 'copy to workspace'; Blockly.Msg.COPY_TO_CLIPBOARD = 'copy to clipboard'; @@ -58,11 +58,16 @@ Blockly.Msg.COPY_TO_MARKED_SPOT = 'copy to marked spot'; Blockly.Msg.TOOLBOX = 'Toolbox'; Blockly.Msg.WORKSPACE = 'Workspace'; Blockly.Msg.ANY = 'any'; +Blockly.Msg.FOR = 'for'; Blockly.Msg.STATEMENT = 'statement'; Blockly.Msg.VALUE = 'value'; Blockly.Msg.CUT_BLOCK_MSG = 'Cut block: '; -Blockly.Msg.COPIED_BLOCK_MSG = 'Copied block to clipboard: '; -Blockly.Msg.PASTED_BLOCK_FROM_CLIPBOARD_MSG = 'Pasted block from clipboard: '; -Blockly.Msg.PASTED_BLOCK_TO_MARKED_SPOT_MSG = 'Pasted block to marked spot: '; +Blockly.Msg.COPIED_BLOCK_MSG = 'copied'; +Blockly.Msg.PASTED_BLOCK_FROM_CLIPBOARD_MSG = 'pasted'; +Blockly.Msg.PASTED_BLOCK_TO_MARKED_SPOT_MSG = 'moved to marked spot'; Blockly.Msg.MARKED_SPOT_MSG = 'Marked spot'; Blockly.Msg.BLOCK_MOVED_TO_MARKED_SPOT_MSB = 'Block moved to marked spot: '; +Blockly.Msg.TOOLBOX_BLOCK = 'toolbox block'; +Blockly.Msg.WORKSPACE_BLOCK = 'workspace block'; +Blockly.Msg.SUBMENU_INDICATOR = 'move right to view submenu'; +Blockly.Msg.OTHER_ACTIONS = 'Other actions'; diff --git a/accessible/notifications.service.js b/accessible/notifications.service.js new file mode 100644 index 000000000..5bcf497f3 --- /dev/null +++ b/accessible/notifications.service.js @@ -0,0 +1,44 @@ +/** + * AccessibleBlockly + * + * Copyright 2016 Google Inc. + * https://developers.google.com/blockly/ + * + * Licensed under the Apache License, Version 2.0 (the 'License'); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an 'AS IS' BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @fileoverview Angular2 Service that notifies the user about actions that + * they have taken, by updating an ARIA live region. + * @author sll@google.com (Sean Lip) + */ + +blocklyApp.NotificationsService = ng.core + .Class({ + constructor: [function() { + this.statusMessage_ = ''; + }], + getStatusMessage: function() { + return this.statusMessage_; + }, + setStatusMessage: function(newMessage) { + // Introduce a temporary status message, so that if, e.g., two "copy" + // operations are done in succession, both messages will be read. + this.statusMessage_ = ''; + + var that = this; + setTimeout(function() { + that.statusMessage_ = newMessage; + }); + } + }); diff --git a/accessible/toolbox-tree.component.js b/accessible/toolbox-tree.component.js index 64320458d..0bd31ac8f 100644 --- a/accessible/toolbox-tree.component.js +++ b/accessible/toolbox-tree.component.js @@ -29,70 +29,36 @@ blocklyApp.ToolboxTreeComponent = ng.core selector: 'blockly-toolbox-tree', template: `
    5. - -
        -
      1. - -
          -
        1. - -
        2. -
        3. - -
        4. -
        5. - -
        6. -
        + +
          +
        1. + +
        2. +
        3. + +
        4. +
        5. +
        6. -
          - - - - -
        7. - - -
        8. -
      2. + + aria-level="1" + [attr.aria-label]="getCategoryAriaLabel(category)">
          @@ -57,7 +57,7 @@ blocklyApp.ToolboxComponent = ng.core
          0; i--) { if (trees[i].id == treeId) { trees[i - 1].focus(); - return true; + return trees[i - 1].id; } } - return false; + return null; }, getActiveDescId: function(treeId) { return this.activeDescendantIds_[treeId] || ''; @@ -107,13 +109,11 @@ blocklyApp.TreeService = ng.core var activeDesc = document.getElementById(activeDescId); if (activeDesc) { activeDesc.classList.remove('blocklyActiveDescendant'); - activeDesc.setAttribute('aria-selected', 'false'); } }, markActiveDesc_: function(activeDescId) { var newActiveDesc = document.getElementById(activeDescId); newActiveDesc.classList.add('blocklyActiveDescendant'); - newActiveDesc.setAttribute('aria-selected', 'true'); }, // Runs the given function while preserving the focus and active descendant // for the given tree. @@ -133,20 +133,67 @@ blocklyApp.TreeService = ng.core document.getElementById(treeId).focus(); }, 0); }, + // This clears the active descendant of the given tree. It is used just + // before the tree is deleted. + clearActiveDesc: function(treeId) { + this.unmarkActiveDesc_(this.getActiveDescId(treeId)); + delete this.activeDescendantIds_[treeId]; + }, // Make a given node the active descendant of a given tree. setActiveDesc: function(newActiveDescId, treeId) { this.unmarkActiveDesc_(this.getActiveDescId(treeId)); this.markActiveDesc_(newActiveDescId); this.activeDescendantIds_[treeId] = newActiveDescId; + + // Scroll the new active desc into view, if needed. This has no effect + // for blind users, but is helpful for sighted onlookers. + var activeDescNode = document.getElementById(newActiveDescId); + var documentNode = document.body || document.documentElement; + if (activeDescNode.offsetTop < documentNode.scrollTop || + activeDescNode.offsetTop > + documentNode.scrollTop + window.innerHeight) { + window.scrollTo(0, activeDescNode.offsetTop); + } + }, + initActiveDesc: function(treeId) { + // Set the active desc to the first child in this tree. + var tree = document.getElementById(treeId); + this.setActiveDesc(this.getFirstChild(tree).id, treeId); + }, + getTreeIdForBlock: function(blockId) { + // Walk up the DOM until we get to the root node of the tree. + var domNode = document.getElementById(blockId + 'blockRoot'); + while (!domNode.classList.contains('blocklyTree')) { + domNode = domNode.parentNode; + } + return domNode.id; + }, + focusOnBlock: function(blockId) { + // Set focus to the tree containing the given block, and set the active + // desc for this tree to the given block. + var domNode = document.getElementById(blockId + 'blockRoot'); + // Walk up the DOM until we get to the root node of the tree. + while (!domNode.classList.contains('blocklyTree')) { + domNode = domNode.parentNode; + } + domNode.focus(); + + // We need to wait a while to set the active desc, because domNode takes + // a while to be given an ID if a new tree has just been created. + // TODO(sll): Make this more deterministic. + var that = this; + setTimeout(function() { + that.setActiveDesc(blockId + 'blockRoot', domNode.id); + }, 100); }, onWorkspaceToolbarKeypress: function(e, treeId) { if (e.keyCode == 9) { // Tab key. - if (e.shiftKey) { - this.focusOnPreviousTree_(treeId); - } else { - this.focusOnNextTree_(treeId); - } + var destinationTreeId = + e.shiftKey ? this.focusOnPreviousTree_(treeId) : + this.focusOnNextTree_(treeId); + this.notifyUserAboutCurrentTree_(destinationTreeId); + e.preventDefault(); e.stopPropagation(); } @@ -181,83 +228,147 @@ blocklyApp.TreeService = ng.core // in the first place. console.error('Could not handle deletion of block.' + blockRootNode); }, + notifyUserAboutCurrentTree_: function(treeId) { + if (this.getToolboxTreeNode_().id == treeId) { + this.notificationsService.setStatusMessage('Now in toolbox.'); + } else { + var workspaceTreeNodes = this.getWorkspaceTreeNodes_(); + for (var i = 0; i < workspaceTreeNodes.length; i++) { + if (workspaceTreeNodes[i].id == treeId) { + this.notificationsService.setStatusMessage( + 'Now in workspace component ' + (i + 1) + ' of ' + + workspaceTreeNodes.length); + } + } + } + }, onKeypress: function(e, tree) { var treeId = tree.id; var activeDesc = document.getElementById(this.getActiveDescId(treeId)); if (!activeDesc) { console.error('ERROR: no active descendant for current tree.'); - - // TODO(sll): Generalize this to other trees (outside the workspace). - var workspaceTreeNodes = this.getWorkspaceTreeNodes_(); - for (var i = 0; i < workspaceTreeNodes.length; i++) { - if (workspaceTreeNodes[i].id == treeId) { - // Set the active desc to the first child in this tree. - this.setActiveDesc( - this.getFirstChild(workspaceTreeNodes[i]).id, treeId); - break; - } - } + this.initActiveDesc(treeId); return; } - var isFocusingIntoField = false; + if (e.altKey || e.ctrlKey) { + // Do not intercept combinations such as Alt+Home. + return; + } else if (document.activeElement.tagName == 'INPUT') { + // For input fields, only Esc and Tab keystrokes are handled specially. + if (e.keyCode == 27 || e.keyCode == 9) { + // For Esc and Tab keys, the focus is removed from the input field. + this.focusOnCurrentTree_(treeId); - if (e.keyCode == 13) { - // Enter key. The user wants to interact with a child. - if (activeDesc.children.length == 1) { - var child = activeDesc.children[0]; - if (child.tagName == 'BUTTON') { - child.click(); - this.isFocusingIntoField = true; - } else if (child.tagName == 'INPUT') { - child.focus(); + // In addition, for Tab keys, the user tabs to the previous/next tree. + if (e.keyCode == 9) { + var destinationTreeId = + e.shiftKey ? this.focusOnPreviousTree_(treeId) : + this.focusOnNextTree_(treeId); + this.notifyUserAboutCurrentTree_(destinationTreeId); } - } - } else if (e.keyCode == 9) { - // Tab key. - if (e.shiftKey) { - this.focusOnPreviousTree_(treeId); - } else { - this.focusOnNextTree_(treeId); - } - e.preventDefault(); - e.stopPropagation(); - } else if (e.keyCode >= 37 && e.keyCode <= 40) { - // Arrow keys. - if (e.keyCode == 37) { - // Left arrow key. Go up a level, if possible. - var nextNode = activeDesc.parentNode; - if (this.isButtonOrFieldNode_(activeDesc)) { - nextNode = nextNode.parentNode; - } - while (nextNode && nextNode.tagName != 'LI') { - nextNode = nextNode.parentNode; - } - if (nextNode) { - this.setActiveDesc(nextNode.id, treeId); - } - } else if (e.keyCode == 38) { - // Up arrow key. Go to the previous sibling, if possible. - var prevSibling = this.getPreviousSibling(activeDesc); - if (prevSibling) { - this.setActiveDesc(prevSibling.id, treeId); - } - } else if (e.keyCode == 39) { - // Right arrow key. Go down a level, if possible. - var firstChild = this.getFirstChild(activeDesc); - if (firstChild) { - this.setActiveDesc(firstChild.id, treeId); - } - } else if (e.keyCode == 40) { - // Down arrow key. Go to the next sibling, if possible. - var nextSibling = this.getNextSibling(activeDesc); - if (nextSibling) { - this.setActiveDesc(nextSibling.id, treeId); - } - } - e.preventDefault(); - e.stopPropagation(); + e.preventDefault(); + e.stopPropagation(); + } + } else { + // Outside an input field, Enter, Tab and navigation keys are all + // recognized. + if (e.keyCode == 13) { + // Enter key. The user wants to interact with a button or an input + // field. + // Algorithm to find the field: do a DFS through the children until + // we find an INPUT or BUTTON element (in which case we use it). + // Truncate the search at child LI elements. + var dfsStack = Array.from(activeDesc.children); + while (dfsStack.length) { + var currentNode = dfsStack.shift(); + if (currentNode.tagName == 'BUTTON') { + this.moveActiveDescToParent(treeId); + currentNode.click(); + break; + } else if (currentNode.tagName == 'INPUT') { + currentNode.focus(); + break; + } else if (currentNode.tagName == 'LI') { + continue; + } + + if (currentNode.children) { + var reversedChildren = Array.from(currentNode.children).reverse(); + reversedChildren.forEach(function(childNode) { + dfsStack.unshift(childNode); + }); + } + } + } else if (e.keyCode == 9) { + // Tab key. + var destinationTreeId = + e.shiftKey ? this.focusOnPreviousTree_(treeId) : + this.focusOnNextTree_(treeId); + this.notifyUserAboutCurrentTree_(destinationTreeId); + + e.preventDefault(); + e.stopPropagation(); + } else if (e.keyCode >= 35 && e.keyCode <= 40) { + // End, home, and arrow keys. + if (e.keyCode == 35) { + // End key. Go to the last sibling in the subtree. + var finalSibling = this.getFinalSibling(activeDesc); + if (finalSibling) { + this.setActiveDesc(finalSibling.id, treeId); + } + } else if (e.keyCode == 36) { + // Home key. Go to the first sibling in the subtree. + var initialSibling = this.getInitialSibling(activeDesc); + if (initialSibling) { + this.setActiveDesc(initialSibling.id, treeId); + } + } else if (e.keyCode == 37) { + // Left arrow key. Go up a level, if possible. + this.moveActiveDescToParent(treeId); + } else if (e.keyCode == 38) { + // Up arrow key. Go to the previous sibling, if possible. + var prevSibling = this.getPreviousSibling(activeDesc); + if (prevSibling) { + this.setActiveDesc(prevSibling.id, treeId); + } else { + this.notificationsService.setStatusMessage( + 'Reached top of list'); + } + } else if (e.keyCode == 39) { + // Right arrow key. Go down a level, if possible. + var firstChild = this.getFirstChild(activeDesc); + if (firstChild) { + this.setActiveDesc(firstChild.id, treeId); + } + } else if (e.keyCode == 40) { + // Down arrow key. Go to the next sibling, if possible. + var nextSibling = this.getNextSibling(activeDesc); + if (nextSibling) { + this.setActiveDesc(nextSibling.id, treeId); + } else { + this.notificationsService.setStatusMessage( + 'Reached bottom of list'); + } + } + + e.preventDefault(); + e.stopPropagation(); + } + } + }, + moveActiveDescToParent: function(treeId) { + var activeDesc = document.getElementById(this.getActiveDescId(treeId)); + var nextNode = activeDesc.parentNode; + if (this.isButtonOrFieldNode_(activeDesc)) { + nextNode = nextNode.parentNode; + } + while (nextNode && nextNode.tagName != 'LI') { + nextNode = nextNode.parentNode; + } + if (nextNode) { + this.setActiveDesc(nextNode.id, treeId); } }, getFirstChild: function(element) { @@ -278,6 +389,26 @@ blocklyApp.TreeService = ng.core return null; } }, + getFinalSibling: function(element) { + while (true) { + var nextSibling = this.getNextSibling(element); + if (nextSibling && nextSibling.id != element.id) { + element = nextSibling; + } else { + return element; + } + } + }, + getInitialSibling: function(element) { + while (true) { + var previousSibling = this.getPreviousSibling(element); + if (previousSibling && previousSibling.id != element.id) { + element = previousSibling; + } else { + return element; + } + } + }, getNextSibling: function(element) { if (element.nextElementSibling) { // If there is a sibling, find the list element child of the sibling. diff --git a/accessible/utils.service.js b/accessible/utils.service.js index 5afd89698..3a7eef797 100644 --- a/accessible/utils.service.js +++ b/accessible/utils.service.js @@ -41,20 +41,17 @@ blocklyApp.UtilsService = ng.core return idMap; }, generateAriaLabelledByAttr: function(mainLabel, secondLabel, isDisabled) { - var attrValue = mainLabel + ' ' + secondLabel; + var attrValue = mainLabel + (secondLabel ? ' ' + secondLabel : ''); if (isDisabled) { attrValue += ' blockly-disabled'; } return attrValue; }, getInputTypeLabel: function(connection) { - // Returns an upper case string in the case of official input type names. - // Returns the lower case string 'any' if any official input type qualifies. - // The differentiation between upper and lower case signifies the difference - // between an input type (BOOLEAN, LIST, etc) and the colloquial english term - // 'any'. + // Returns the input type name, or 'any' if any official input type + // qualifies. if (connection.check_) { - return connection.check_.join(', ').toUpperCase(); + return connection.check_.join(', '); } else { return Blockly.Msg.ANY; } @@ -65,5 +62,13 @@ blocklyApp.UtilsService = ng.core } else { return Blockly.Msg.VALUE; } + }, + getBlockDescription: function(block) { + // We use 'BLANK' instead of the default '?' so that the string is read + // out. (By default, screen readers tend to ignore punctuation.) + return block.toString(undefined, 'BLANK'); + }, + isWorkspaceEmpty: function() { + return !blocklyApp.workspace.topBlocks_.length; } }); diff --git a/accessible/workspace-tree.component.js b/accessible/workspace-tree.component.js index 83dda119b..8d7d02e7c 100644 --- a/accessible/workspace-tree.component.js +++ b/accessible/workspace-tree.component.js @@ -29,20 +29,54 @@ blocklyApp.WorkspaceTreeComponent = ng.core selector: 'blockly-workspace-tree', template: `
        1. - + [attr.aria-labelledBy]="generateAriaLabelledByAttr(idMap['blockSummary'], 'blockly-workspace-block')" + [attr.aria-level]="level"> + + +
            + -
            1. - -
                + [attr.aria-labelledBy]="generateAriaLabelledByAttr('blockly-other-actions', 'blockly-submenu-indicator')" + [attr.aria-level]="level + 1"> + +
                1. + [attr.aria-level]="level + 2">
                - -
                - - - -
              1. - - -
                  -
                1. - -
                2. -
                3. - -
                4. -
                -
              2. -
            2. @@ -95,23 +100,29 @@ blocklyApp.WorkspaceTreeComponent = ng.core }) .Class({ constructor: [ - blocklyApp.ClipboardService, blocklyApp.TreeService, - blocklyApp.UtilsService, - function(_clipboardService, _treeService, _utilsService) { - this.infoBlocks = Object.create(null); + blocklyApp.ClipboardService, blocklyApp.NotificationsService, + blocklyApp.TreeService, blocklyApp.UtilsService, + function( + _clipboardService, _notificationsService, _treeService, + _utilsService) { this.clipboardService = _clipboardService; + this.notificationsService = _notificationsService; this.treeService = _treeService; this.utilsService = _utilsService; }], + getBlockDescription: function() { + return this.utilsService.getBlockDescription(this.block); + }, isIsolatedTopLevelBlock_: function(block) { // Returns whether the given block is at the top level, and has no // siblings. - return Boolean( - !block.nextConnection.targetConnection && - !block.previousConnection.targetConnection && - blocklyApp.workspace.topBlocks_.some(function(topBlock) { - return topBlock.id == block.id; - })); + var blockIsAtTopLevel = !block.getParent(); + var blockHasNoSiblings = ( + (!block.nextConnection || + !block.nextConnection.targetConnection) && + (!block.previousConnection || + !block.previousConnection.targetConnection)); + return blockIsAtTopLevel && blockHasNoSiblings; }, removeBlockAndSetFocus_: function(block, deleteBlockFunc) { // This method runs the given function and then does one of two things: @@ -121,8 +132,13 @@ blocklyApp.WorkspaceTreeComponent = ng.core if (this.isIsolatedTopLevelBlock_(block)) { var nextNodeToFocusOn = this.treeService.getNodeToFocusOnWhenTreeIsDeleted(this.tree.id); + + this.treeService.clearActiveDesc(this.tree.id); deleteBlockFunc(); - nextNodeToFocusOn.focus(); + // Invoke a digest cycle, so that the DOM settles. + setTimeout(function() { + nextNodeToFocusOn.focus(); + }); } else { var blockRootNode = document.getElementById(this.idMap['blockRoot']); var nextActiveDesc = @@ -133,41 +149,104 @@ blocklyApp.WorkspaceTreeComponent = ng.core } }, cutBlock_: function() { + var blockDescription = this.getBlockDescription(); + var that = this; this.removeBlockAndSetFocus_(this.block, function() { that.clipboardService.cut(that.block); }); + + setTimeout(function() { + if (that.utilsService.isWorkspaceEmpty()) { + that.notificationsService.setStatusMessage( + blockDescription + ' cut. Workspace is empty.'); + } else { + that.notificationsService.setStatusMessage( + blockDescription + ' cut. Now on workspace.'); + } + }); }, deleteBlock_: function() { + var blockDescription = this.getBlockDescription(); + var that = this; this.removeBlockAndSetFocus_(this.block, function() { that.block.dispose(true); }); + + setTimeout(function() { + if (that.utilsService.isWorkspaceEmpty()) { + that.notificationsService.setStatusMessage( + blockDescription + ' deleted. Workspace is empty.'); + } else { + that.notificationsService.setStatusMessage( + blockDescription + ' deleted. Now on workspace.'); + } + }); }, pasteToConnection_: function(connection) { + var destinationTreeId = this.treeService.getTreeIdForBlock( + connection.getSourceBlock().id); + this.treeService.clearActiveDesc(destinationTreeId); + + var newBlockId = this.clipboardService.pasteFromClipboard(connection); + + // Invoke a digest cycle, so that the DOM settles. var that = this; - this.treeService.runWhilePreservingFocus(function() { - // If the connection is a 'previousConnection' and that connection is - // already joined to something, use the 'nextConnection' of the - // previous block instead in order to do an insertion. - if (connection.type == Blockly.PREVIOUS_STATEMENT && - connection.isConnected()) { - that.clipboardService.pasteFromClipboard( - connection.targetConnection); - } else { - that.clipboardService.pasteFromClipboard(connection); - } - }, this.tree.id); + setTimeout(function() { + that.treeService.focusOnBlock(newBlockId); + }); }, - sendToMarkedSpot_: function() { - this.clipboardService.pasteToMarkedConnection(this.block, false); + moveToMarkedSpot_: function() { + var blockDescription = this.getBlockDescription(); + var oldDestinationTreeId = this.treeService.getTreeIdForBlock( + this.clipboardService.getMarkedConnectionBlock().id); + this.treeService.clearActiveDesc(oldDestinationTreeId); + + var newBlockId = this.clipboardService.pasteToMarkedConnection( + this.block); var that = this; this.removeBlockAndSetFocus_(this.block, function() { that.block.dispose(true); }); - alert('Block moved to marked spot: ' + this.block.toString()); + // Invoke a digest cycle, so that the DOM settles. + setTimeout(function() { + that.treeService.focusOnBlock(newBlockId); + + var newDestinationTreeId = that.treeService.getTreeIdForBlock( + newBlockId); + if (newDestinationTreeId != oldDestinationTreeId) { + // It is possible for the tree ID for the pasted block to change + // after the paste operation, e.g. when inserting a block between two + // existing blocks that are joined together. In this case, we need to + // also reset the active desc for the old destination tree. + that.treeService.initActiveDesc(oldDestinationTreeId); + } + + that.notificationsService.setStatusMessage( + blockDescription + ' ' + + Blockly.Msg.PASTED_BLOCK_TO_MARKED_SPOT_MSG + + '. Now on moved block in workspace.'); + }); + }, + copyBlock_: function() { + this.clipboardService.copy(this.block); + this.notificationsService.setStatusMessage( + this.getBlockDescription() + ' ' + Blockly.Msg.COPIED_BLOCK_MSG); + }, + markSpotBelow_: function() { + this.clipboardService.markConnection(this.block.nextConnection); + }, + markSpotAbove_: function() { + this.clipboardService.markConnection(this.block.previousConnection); + }, + pasteToNextConnection_: function() { + this.pasteToConnection_(this.block.nextConnection); + }, + pasteToPreviousConnection_: function() { + this.pasteToConnection_(this.block.previousConnection); }, ngOnInit: function() { var that = this; @@ -183,15 +262,14 @@ blocklyApp.WorkspaceTreeComponent = ng.core }, { baseIdKey: 'copy', translationIdForText: 'COPY_BLOCK', - action: that.clipboardService.copy.bind( - that.clipboardService, that.block, true), + action: that.copyBlock_.bind(that), isDisabled: function() { return false; } }, { baseIdKey: 'pasteBelow', translationIdForText: 'PASTE_BELOW', - action: that.pasteToConnection_.bind(that, that.block.nextConnection), + action: that.pasteToNextConnection_.bind(that), isDisabled: function() { return Boolean( !that.block.nextConnection || @@ -200,8 +278,7 @@ blocklyApp.WorkspaceTreeComponent = ng.core }, { baseIdKey: 'pasteAbove', translationIdForText: 'PASTE_ABOVE', - action: that.pasteToConnection_.bind( - that, that.block.previousConnection), + action: that.pasteToPreviousConnection_.bind(that), isDisabled: function() { return Boolean( !that.block.previousConnection || @@ -210,23 +287,21 @@ blocklyApp.WorkspaceTreeComponent = ng.core }, { baseIdKey: 'markBelow', translationIdForText: 'MARK_SPOT_BELOW', - action: that.clipboardService.markConnection.bind( - that.clipboardService, that.block.nextConnection), + action: that.markSpotBelow_.bind(that), isDisabled: function() { return !that.block.nextConnection; } }, { baseIdKey: 'markAbove', translationIdForText: 'MARK_SPOT_ABOVE', - action: that.clipboardService.markConnection.bind( - that.clipboardService, that.block.previousConnection), + action: that.markSpotAbove_.bind(that), isDisabled: function() { return !that.block.previousConnection; } }, { - baseIdKey: 'sendToMarkedSpot', + baseIdKey: 'moveToMarkedSpot', translationIdForText: 'MOVE_TO_MARKED_SPOT', - action: that.sendToMarkedSpot_.bind(that), + action: that.moveToMarkedSpot_.bind(that), isDisabled: function() { return !that.clipboardService.isMovableToMarkedConnection( that.block); @@ -240,18 +315,43 @@ blocklyApp.WorkspaceTreeComponent = ng.core } }]; + // Generate a list of action buttons. + this.fieldButtonsInfo = [{ + baseIdKey: 'markSpot', + translationIdForText: 'MARK_THIS_SPOT', + action: function(connection) { + that.clipboardService.markConnection(connection); + }, + isDisabled: function() { + return false; + } + }, { + baseIdKey: 'paste', + translationIdForText: 'PASTE', + action: function(connection) { + that.pasteToConnection_(connection); + }, + isDisabled: function(connection) { + return !that.isCompatibleWithClipboard(connection); + } + }]; + // Make a list of all the id keys. this.idKeys = ['blockRoot', 'blockSummary', 'listItem', 'label']; this.actionButtonsInfo.forEach(function(buttonInfo) { that.idKeys.push(buttonInfo.baseIdKey, buttonInfo.baseIdKey + 'Button'); }); + this.fieldButtonsInfo.forEach(function(buttonInfo) { + for (var i = 0; i < that.block.inputList.length; i++) { + that.idKeys.push( + buttonInfo.baseIdKey + i, buttonInfo.baseIdKey + 'Button' + i); + } + }); for (var i = 0; i < this.block.inputList.length; i++) { var inputBlock = this.block.inputList[i]; - if (inputBlock.connection && !inputBlock.connection.targetBlock()) { - that.idKeys.push( - 'inputList' + i, 'inputMenuLabel' + i, 'markSpot' + i, - 'markSpotButton' + i, 'paste' + i, 'pasteButton' + i); - } + that.idKeys.push( + 'inputList' + i, 'inputMenuLabel' + i, 'listItem' + i, + 'fieldLabel' + i); } }, ngDoCheck: function() { diff --git a/accessible/workspace.component.js b/accessible/workspace.component.js index 42eb84d4e..a2c940ec0 100644 --- a/accessible/workspace.component.js +++ b/accessible/workspace.component.js @@ -60,7 +60,9 @@ blocklyApp.WorkspaceComponent = ng.core pipes: [blocklyApp.TranslatePipe] }) .Class({ - constructor: [blocklyApp.TreeService, function(_treeService) { + constructor: [ + blocklyApp.TreeService, blocklyApp.UtilsService, + function(_treeService, _utilsService) { // ACCESSIBLE_GLOBALS is a global variable defined by the containing // page. It should contain a key, toolbarButtonConfig, whose // corresponding value is an Array with two keys: 'text' and 'action'. @@ -71,6 +73,7 @@ blocklyApp.WorkspaceComponent = ng.core ACCESSIBLE_GLOBALS.toolbarButtonConfig : []; this.workspace = blocklyApp.workspace; this.treeService = _treeService; + this.utilsService = _utilsService; }], clearWorkspace: function() { this.workspace.clear(); @@ -86,6 +89,6 @@ blocklyApp.WorkspaceComponent = ng.core this.treeService.onKeypress(e, tree); }, isWorkspaceEmpty: function() { - return !this.workspace.topBlocks_.length; + return this.utilsService.isWorkspaceEmpty(); } }); diff --git a/blockly_compressed.js b/blockly_compressed.js index ed2ea67e5..43f4608d5 100644 --- a/blockly_compressed.js +++ b/blockly_compressed.js @@ -11,22 +11,23 @@ goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||"",Error goog.getObjectByName=function(a,b){for(var c=a.split("."),d=b||goog.global,e;e=c.shift();)if(goog.isDefAndNotNull(d[e]))d=d[e];else return null;return d};goog.globalize=function(a,b){var c=b||goog.global,d;for(d in a)c[d]=a[d]}; goog.addDependency=function(a,b,c,d){if(goog.DEPENDENCIES_ENABLED){var e;a=a.replace(/\\/g,"/");var f=goog.dependencies_;d&&"boolean"!==typeof d||(d=d?{module:"goog"}:{});for(var g=0;e=b[g];g++)f.nameToPath[e]=a,f.loadFlags[a]=d;for(d=0;b=c[d];d++)a in f.requires||(f.requires[a]={}),f.requires[a][b]=!0}};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)}; goog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.IS_OLD_IE_&&goog.maybeProcessDeferredDep_(a);if(goog.isProvided_(a))return goog.isInModuleLoader_()?goog.module.getInternal_(a):null;if(goog.ENABLE_DEBUG_LOADER){var b=goog.getPathFromDeps_(a);if(b)return goog.writeScripts_(b),null}a="goog.require could not find: "+a;goog.logToConsole_(a);throw Error(a);}};goog.basePath="";goog.nullFunction=function(){}; -goog.abstractMethod=function(){throw Error("unimplemented abstract method");};goog.addSingletonGetter=function(a){a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.ALWAYS_TRANSPILE=!1; -goog.NEVER_TRANSPILE=!1; +goog.abstractMethod=function(){throw Error("unimplemented abstract method");};goog.addSingletonGetter=function(a){a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE="detect"; +goog.TRANSPILER="transpile.js"; goog.DEPENDENCIES_ENABLED&&(goog.dependencies_={loadFlags:{},nameToPath:{},requires:{},visited:{},written:{},deferred:{}},goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&"write"in a},goog.findBasePath_=function(){if(goog.isDef(goog.global.CLOSURE_BASE_PATH))goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_())for(var a=goog.global.document.getElementsByTagName("SCRIPT"),b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf("?"),d=-1==d?c.length:d;if("base.js"== c.substr(d-7,7)){goog.basePath=c.substr(0,d-7);break}}},goog.importScript_=function(a,b){(goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_)(a,b)&&(goog.dependencies_.written[a]=!0)},goog.IS_OLD_IE_=!(goog.global.atob||!goog.global.document||!goog.global.document.all),goog.importProcessedScript_=function(a,b,c){goog.importScript_("",'goog.retrieveAndExec_("'+a+'", '+b+", "+c+");")},goog.queuedModules_=[],goog.wrapModule_=function(a,b){return goog.LOAD_MODULE_USING_EVAL&&goog.isDef(goog.global.JSON)? "goog.loadModule("+goog.global.JSON.stringify(b+"\n//# sourceURL="+a+"\n")+");":'goog.loadModule(function(exports) {"use strict";'+b+"\n;return exports});\n//# sourceURL="+a+"\n"},goog.loadQueuedModules_=function(){var a=goog.queuedModules_.length;if(0\x3c/script>')},goog.appendScriptSrcNode_=function(a){var b=goog.global.document, -c=b.createElement("script");c.type="text/javascript";c.src=a;c.defer=!1;c.async=!1;b.head.appendChild(c)},goog.writeScriptTag_=function(a,b){if(goog.inHtmlDocument_()){var c=goog.global.document;if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&"complete"==c.readyState){if(/\bdeps.js$/.test(a))return!1;throw Error('Cannot write "'+a+'" after document load');}if(void 0===b)if(goog.IS_OLD_IE_){var d=" onreadystatechange='goog.onScriptLoad_(this, "+ ++goog.lastNonModuleScriptIndex_+")' ";c.write(' + @@ -40,6 +41,10 @@ font-weight: normal; font-size: 140%; } + + *:focus { + background: yellow; + } @@ -48,6 +53,13 @@

              This is a simple demo of a version of Blockly designed for screen readers.

              +

              + In Blockly, you can move blocks from the toolbox to the workspace and join + them to create programs. To navigate between components, use Tab or + Shift-Tab. When you're on a block, move right to access its submenus, and + move up or down to go to the next or previous block in the sequence. +

              + @@ -72,7 +84,6 @@ - @@ -83,7 +94,6 @@ - @@ -326,9 +336,6 @@ - - - diff --git a/demos/blockfactory/index.html b/demos/blockfactory/index.html index ce87f88f8..449b9a5e8 100644 --- a/demos/blockfactory/index.html +++ b/demos/blockfactory/index.html @@ -140,8 +140,8 @@
  • Language code:

    diff --git a/demos/code/code.js b/demos/code/code.js index 2dfebbbfb..65a2621ff 100644 --- a/demos/code/code.js +++ b/demos/code/code.js @@ -42,6 +42,7 @@ Code.LANGUAGE_NAME = { 'el': 'Ελληνικά', 'en': 'English', 'es': 'Español', + 'et': 'Eesti', 'fa': 'فارسی', 'fr': 'Français', 'he': 'עברית', diff --git a/demos/code/msg/et.js b/demos/code/msg/et.js new file mode 100644 index 000000000..320c39174 --- /dev/null +++ b/demos/code/msg/et.js @@ -0,0 +1,24 @@ +var MSG = { + title: "Kood", + blocks: "Plokid", + linkTooltip: "Salvesta ja tekita link plokkidele.", + runTooltip: "Käivita töölaual olevate plokkidega defineeritud programm.", + badCode: "Viga programmis:\n%1", + timeout: "Käivitatavate iteratsioonide maksimaalne arv on ületatud.", + trashTooltip: "Eemalda kõik plokid.", + catLogic: "Loogika", + catLoops: "Kordus", + catMath: "Matemaatika", + catText: "Tekst", + catLists: "Loendid", + catColour: "Värv", + catVariables: "Muutujad", + catFunctions: "Funktsioonid", + listVariable: "loend", + textVariable: "tekst", + httpRequestError: "Probleem päringuga.", + linkAlert: "Oma plokke saad jagada selle lingiga:\n\n%1", + hashError: "Vabandust, kuid '%1' ei vasta ühelegi salvestatud programmile.", + xmlError: "Su salvestatud faili ei õnnestunud laadida. Võibolla on see loodud mõne teise Blockly versiooniga?", + badXml: "Viga XML-i parsimisel:\n%1\n\nTehtud muudatustest loobumiseks vajuta 'OK', XML-i muudatuste tegemise jätkamiseks 'Katkesta'." +}; diff --git a/demos/plane/generated/et.js b/demos/plane/generated/et.js new file mode 100644 index 000000000..069c7cb28 --- /dev/null +++ b/demos/plane/generated/et.js @@ -0,0 +1,37 @@ +// This file was automatically generated from template.soy. +// Please don't edit this file by hand. + +if (typeof planepage == 'undefined') { var planepage = {}; } + + +planepage.messages = function(opt_data, opt_ignored, opt_ijData) { + return '
    Ridu: %1rows (%1)1. klassi ridu: %11. klassi ridu (%1)2. klassi ridu: %12. klassi ridu (%1)Istmeid: %1?istmete arv =
    '; +}; + + +planepage.start = function(opt_data, opt_ignored, opt_ijData) { + var output = planepage.messages(null, null, opt_ijData) + '

    Blockly‏ > Demos‏ > Lennukiistmete kalkulaator   '; + var iLimit37 = opt_ijData.maxLevel + 1; + for (var i37 = 1; i37 < iLimit37; i37++) { + output += ' ' + ((i37 == opt_ijData.level) ? '' + soy.$$escapeHtml(i37) + '' : (i37 < opt_ijData.level) ? '' : '' + soy.$$escapeHtml(i37) + ''); + } + output += '

    diff --git a/generators/dart.js b/generators/dart.js index 644144bcc..72c828ce5 100644 --- a/generators/dart.js +++ b/generators/dart.js @@ -191,6 +191,7 @@ Blockly.Dart.scrub_ = function(block, code) { if (!block.outputConnection || !block.outputConnection.targetConnection) { // Collect comment for this block. var comment = block.getCommentText(); + comment = Blockly.utils.wrap(comment, Blockly.Dart.COMMENT_WRAP - 3); if (comment) { if (block.getProcedureDef) { // Use documentation comment for function comments. diff --git a/generators/dart/procedures.js b/generators/dart/procedures.js index ad2550cc7..f6ceb945b 100644 --- a/generators/dart/procedures.js +++ b/generators/dart/procedures.js @@ -56,7 +56,6 @@ Blockly.Dart['procedures_defreturn'] = function(block) { } var code = returnType + ' ' + funcName + '(' + args.join(', ') + ') {\n' + branch + returnValue + '}'; - code = Blockly.Dart.scrub_(block, code); // Add % so as not to collide with helper functions in definitions list. Blockly.Dart.definitions_['%' + funcName] = code; return null; diff --git a/generators/javascript/procedures.js b/generators/javascript/procedures.js index 04845f9bd..4b73e7a92 100644 --- a/generators/javascript/procedures.js +++ b/generators/javascript/procedures.js @@ -55,7 +55,6 @@ Blockly.JavaScript['procedures_defreturn'] = function(block) { } var code = 'function ' + funcName + '(' + args.join(', ') + ') {\n' + branch + returnValue + '}'; - code = Blockly.JavaScript.scrub_(block, code); // Add % so as not to collide with helper functions in definitions list. Blockly.JavaScript.definitions_['%' + funcName] = code; return null; diff --git a/generators/lua/procedures.js b/generators/lua/procedures.js index b6d6cdda1..3efd4d9b2 100644 --- a/generators/lua/procedures.js +++ b/generators/lua/procedures.js @@ -57,7 +57,6 @@ Blockly.Lua['procedures_defreturn'] = function(block) { } var code = 'function ' + funcName + '(' + args.join(', ') + ')\n' + branch + returnValue + 'end\n'; - code = Blockly.Lua.scrub_(block, code); // Add % so as not to collide with helper functions in definitions list. Blockly.Lua.definitions_['%' + funcName] = code; return null; diff --git a/generators/php/procedures.js b/generators/php/procedures.js index 2131bebde..103f4c193 100644 --- a/generators/php/procedures.js +++ b/generators/php/procedures.js @@ -69,7 +69,6 @@ Blockly.PHP['procedures_defreturn'] = function(block) { } var code = 'function ' + funcName + '(' + args.join(', ') + ') {\n' + globals + branch + returnValue + '}'; - code = Blockly.PHP.scrub_(block, code); // Add % so as not to collide with helper functions in definitions list. Blockly.PHP.definitions_['%' + funcName] = code; return null; diff --git a/generators/python/procedures.js b/generators/python/procedures.js index fa938ef0f..fb3bba6c2 100644 --- a/generators/python/procedures.js +++ b/generators/python/procedures.js @@ -71,7 +71,6 @@ Blockly.Python['procedures_defreturn'] = function(block) { } var code = 'def ' + funcName + '(' + args.join(', ') + '):\n' + globals + branch + returnValue; - code = Blockly.Python.scrub_(block, code); // Add % so as not to collide with helper functions in definitions list. Blockly.Python.definitions_['%' + funcName] = code; return null; diff --git a/media/accessible.css b/media/accessible.css index 651c74328..5a68527ca 100644 --- a/media/accessible.css +++ b/media/accessible.css @@ -4,6 +4,9 @@ .blocklyTree .blocklyActiveDescendant > label, .blocklyTree .blocklyActiveDescendant > div > label, .blocklyActiveDescendant > button, -.blocklyActiveDescendant > input { +.blocklyActiveDescendant > input, +.blocklyActiveDescendant > blockly-field > label, +.blocklyActiveDescendant > blockly-field > input, +.blocklyActiveDescendant > blockly-field > div > label { outline: 2px dotted #00f; } diff --git a/msg/js/cs.js b/msg/js/cs.js index d5f787722..13f1234cb 100644 --- a/msg/js/cs.js +++ b/msg/js/cs.js @@ -91,11 +91,11 @@ Blockly.Msg.LISTS_GET_INDEX_RANDOM = "náhodné"; Blockly.Msg.LISTS_GET_INDEX_REMOVE = "odstranit"; Blockly.Msg.LISTS_GET_INDEX_TAIL = ""; // untranslated Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "Vrátí první položku v seznamu."; -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = "Vrátí položku z určené pozice v seznamu."; +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = "Získá položku z určené pozice v seznamu."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "Vrátí poslední položku v seznamu."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "Vrátí náhodnou položku ze seznamu."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "Odstraní a vrátí první položku v seznamu."; -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM = "Odstraní a vrátí položku z určené pozice v seznamu."; +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM = "Odstraní a získá položku z určené pozice v seznamu."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "Odstraní a vrátí poslední položku v seznamu."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "Odstraní a vrátí náhodnou položku v seznamu."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = "Odstraní první položku v seznamu."; @@ -332,7 +332,7 @@ Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "v textu"; Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "najít první výskyt textu"; Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "najít poslední výskyt textu"; Blockly.Msg.TEXT_INDEXOF_TAIL = ""; // untranslated -Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "Vrátí index prvního/posledního výskytu prvního textu v druhém textu. Pokud text není nalezen, vrátí hodnotu %1."; +Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "Vrátí index prvního/posledního výskytu prvního textu v druhém textu. Pokud text není nalezen, vypíše %1."; Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 je prázdný"; Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "Vrátí pravda pokud je zadaný text prázdný."; diff --git a/msg/js/diq.js b/msg/js/diq.js new file mode 100644 index 000000000..81e6ac3cc --- /dev/null +++ b/msg/js/diq.js @@ -0,0 +1,388 @@ +// This file was automatically generated. Do not modify. + +'use strict'; + +goog.provide('Blockly.Msg.diq'); + +goog.require('Blockly.Msg'); + +Blockly.Msg.ADD_COMMENT = "Tefsir cı ke"; +Blockly.Msg.CHANGE_VALUE_TITLE = "Erci bıvırne:"; +Blockly.Msg.CLEAN_UP = "Çengan pak ke"; +Blockly.Msg.COLLAPSE_ALL = "Çengi teng ke"; +Blockly.Msg.COLLAPSE_BLOCK = "Çengi teng ke"; +Blockly.Msg.COLOUR_BLEND_COLOUR1 = "reng 1"; +Blockly.Msg.COLOUR_BLEND_COLOUR2 = "reng 2"; +Blockly.Msg.COLOUR_BLEND_HELPURL = "http://meyerweb.com/eric/tools/color-blend/"; // untranslated +Blockly.Msg.COLOUR_BLEND_RATIO = "nisbet"; +Blockly.Msg.COLOUR_BLEND_TITLE = "tewde"; +Blockly.Msg.COLOUR_BLEND_TOOLTIP = "Blends two colours together with a given ratio (0.0 - 1.0)."; // untranslated +Blockly.Msg.COLOUR_PICKER_HELPURL = "https://diq.wikipedia.org/wiki/Reng"; +Blockly.Msg.COLOUR_PICKER_TOOLTIP = "Choose a colour from the palette."; // untranslated +Blockly.Msg.COLOUR_RANDOM_HELPURL = "http://randomcolour.com"; // untranslated +Blockly.Msg.COLOUR_RANDOM_TITLE = "rengo rastameye"; +Blockly.Msg.COLOUR_RANDOM_TOOLTIP = "Choose a colour at random."; // untranslated +Blockly.Msg.COLOUR_RGB_BLUE = "mawi"; +Blockly.Msg.COLOUR_RGB_GREEN = "kıho"; +Blockly.Msg.COLOUR_RGB_HELPURL = "http://www.december.com/html/spec/colorper.html"; // untranslated +Blockly.Msg.COLOUR_RGB_RED = "sur"; +Blockly.Msg.COLOUR_RGB_TITLE = "komponentên rengan"; +Blockly.Msg.COLOUR_RGB_TOOLTIP = "Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100."; // untranslated +Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated +Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK = "break out of loop"; // untranslated +Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE = "continue with next iteration of loop"; // untranslated +Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK = "Break out of the containing loop."; // untranslated +Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = "Skip the rest of this loop, and continue with the next iteration."; // untranslated +Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = "Warning: This block may only be used within a loop."; // untranslated +Blockly.Msg.CONTROLS_FOREACH_HELPURL = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated +Blockly.Msg.CONTROLS_FOREACH_TITLE = "for each item %1 in list %2"; // untranslated +Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "For each item in a list, set the variable '%1' to the item, and then do some statements."; // untranslated +Blockly.Msg.CONTROLS_FOR_HELPURL = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated +Blockly.Msg.CONTROLS_FOR_TITLE = "count with %1 from %2 to %3 by %4"; // untranslated +Blockly.Msg.CONTROLS_FOR_TOOLTIP = "Have the variable '%1' take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks."; // untranslated +Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "Add a condition to the if block."; // untranslated +Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "Add a final, catch-all condition to the if block."; // untranslated +Blockly.Msg.CONTROLS_IF_HELPURL = "https://github.com/google/blockly/wiki/IfElse"; // untranslated +Blockly.Msg.CONTROLS_IF_IF_TOOLTIP = "Add, remove, or reorder sections to reconfigure this if block."; // untranslated +Blockly.Msg.CONTROLS_IF_MSG_ELSE = "çıniyose"; +Blockly.Msg.CONTROLS_IF_MSG_ELSEIF = "niyose"; +Blockly.Msg.CONTROLS_IF_MSG_IF = "se"; +Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = "If a value is true, then do some statements."; // untranslated +Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = "If a value is true, then do the first block of statements. Otherwise, do the second block of statements."; // untranslated +Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements."; // untranslated +Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = "If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements."; // untranslated +Blockly.Msg.CONTROLS_REPEAT_HELPURL = "https://en.wikipedia.org/wiki/For_loop"; +Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = "bık"; +Blockly.Msg.CONTROLS_REPEAT_TITLE = "repeat %1 times"; // untranslated +Blockly.Msg.CONTROLS_REPEAT_TOOLTIP = "Do some statements several times."; // untranslated +Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated +Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = "hend tekrar ke"; +Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = "Tekrar kerdış de"; +Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = "Yew erc xırabo se tay beyanati bıd"; +Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = "Yew erc raşto se yu beyanat bıd."; +Blockly.Msg.DELETE_ALL_BLOCKS = "Wa %1 çengey heme besteri yè?"; +Blockly.Msg.DELETE_BLOCK = "Bloki bestere"; +Blockly.Msg.DELETE_X_BLOCKS = "%1 çengan bestern"; +Blockly.Msg.DISABLE_BLOCK = "Çengi devre ra vec"; +Blockly.Msg.DUPLICATE_BLOCK = "Zewnc"; +Blockly.Msg.ENABLE_BLOCK = "Çengi aktiv ke"; +Blockly.Msg.EXPAND_ALL = "Çengan hera ke"; +Blockly.Msg.EXPAND_BLOCK = "Çengi hera ke"; +Blockly.Msg.EXTERNAL_INPUTS = "Cıkewtışê xarıciy"; +Blockly.Msg.HELP = "Peşti"; +Blockly.Msg.INLINE_INPUTS = "Cıkerdışê xomiyani"; +Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated +Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = "lista venge vıraze"; +Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = "Returns a list, of length 0, containing no data records"; // untranslated +Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = "liste"; +Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = "Add, remove, or reorder sections to reconfigure this list block."; // untranslated +Blockly.Msg.LISTS_CREATE_WITH_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = "create list with"; // untranslated +Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = "Add an item to the list."; // untranslated +Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = "Create a list with any number of items."; // untranslated +Blockly.Msg.LISTS_GET_INDEX_FIRST = "verên"; +Blockly.Msg.LISTS_GET_INDEX_FROM_END = "# peynira"; +Blockly.Msg.LISTS_GET_INDEX_FROM_START = "#"; // untranslated +Blockly.Msg.LISTS_GET_INDEX_GET = "bıgê"; +Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = "Bıgi u wedarne"; +Blockly.Msg.LISTS_GET_INDEX_LAST = "peyên"; +Blockly.Msg.LISTS_GET_INDEX_RANDOM = "raştameye"; +Blockly.Msg.LISTS_GET_INDEX_REMOVE = "wedare"; +Blockly.Msg.LISTS_GET_INDEX_TAIL = ""; // untranslated +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "Returns the first item in a list."; // untranslated +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "Returns the last item in a list."; // untranslated +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "Returns a random item in a list."; // untranslated +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "Removes and returns the first item in a list."; // untranslated +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM = "Removes and returns the item at the specified position in a list."; // untranslated +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "Removes and returns the last item in a list."; // untranslated +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "Removes and returns a random item in a list."; // untranslated +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = "Removes the first item in a list."; // untranslated +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM = "Removes the item at the specified position in a list."; // untranslated +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = "Removes the last item in a list."; // untranslated +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = "Removes a random item in a list."; // untranslated +Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = "Peyni # ra hetana"; +Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START = "#'ya"; +Blockly.Msg.LISTS_GET_SUBLIST_END_LAST = "Hetana pey"; +Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated +Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = "get sub-list from first"; // untranslated +Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "get sub-list from # from end"; // untranslated +Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "get sub-list from #"; // untranslated +Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ""; // untranslated +Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "Creates a copy of the specified portion of a list."; // untranslated +Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = "%1 objeyo peyên o"; +Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = "%1 objeyo sıfteyên o"; +Blockly.Msg.LISTS_INDEX_OF_FIRST = "find first occurrence of item"; // untranslated +Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated +Blockly.Msg.LISTS_INDEX_OF_LAST = "find last occurrence of item"; // untranslated +Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found."; // untranslated +Blockly.Msg.LISTS_INLIST = "lista de"; +Blockly.Msg.LISTS_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated +Blockly.Msg.LISTS_ISEMPTY_TITLE = "%1 vengo"; +Blockly.Msg.LISTS_ISEMPTY_TOOLTIP = "Returns true if the list is empty."; // untranslated +Blockly.Msg.LISTS_LENGTH_HELPURL = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated +Blockly.Msg.LISTS_LENGTH_TITLE = "length of %1"; // untranslated +Blockly.Msg.LISTS_LENGTH_TOOLTIP = "Returns the length of a list."; // untranslated +Blockly.Msg.LISTS_REPEAT_HELPURL = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated +Blockly.Msg.LISTS_REPEAT_TITLE = "create list with item %1 repeated %2 times"; // untranslated +Blockly.Msg.LISTS_REPEAT_TOOLTIP = "Creates a list consisting of the given value repeated the specified number of times."; // untranslated +Blockly.Msg.LISTS_SET_INDEX_HELPURL = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated +Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = "zey"; +Blockly.Msg.LISTS_SET_INDEX_INSERT = "insert at"; // untranslated +Blockly.Msg.LISTS_SET_INDEX_SET = "ca ke"; +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = "Inserts the item at the start of a list."; // untranslated +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = "Append the item to the end of a list."; // untranslated +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = "Inserts the item randomly in a list."; // untranslated +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "Sets the first item in a list."; // untranslated +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM = "Sets the item at the specified position in a list."; // untranslated +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = "Sets the last item in a list."; // untranslated +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = "Sets a random item in a list."; // untranslated +Blockly.Msg.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; +Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = "zeydıyen"; +Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = "Kemeyen"; +Blockly.Msg.LISTS_SORT_TITLE = "Kılm %1 %2 %3"; +Blockly.Msg.LISTS_SORT_TOOLTIP = "Sort a copy of a list."; // untranslated +Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = "alphabetic, ignore case"; // untranslated +Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = "Amoriyal"; +Blockly.Msg.LISTS_SORT_TYPE_TEXT = "Alfabetik"; +Blockly.Msg.LISTS_SPLIT_HELPURL = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated +Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT = "make list from text"; // untranslated +Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST = "make text from list"; // untranslated +Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = "Join a list of texts into one text, separated by a delimiter."; // untranslated +Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER = "with delimiter"; // untranslated +Blockly.Msg.LOGIC_BOOLEAN_FALSE = "ğelet"; +Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated +Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = "Returns either true or false."; // untranslated +Blockly.Msg.LOGIC_BOOLEAN_TRUE = "raşt"; +Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "Return true if both inputs equal each other."; // untranslated +Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "Return true if the first input is greater than the second input."; // untranslated +Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "Return true if the first input is greater than or equal to the second input."; // untranslated +Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT = "Return true if the first input is smaller than the second input."; // untranslated +Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE = "Return true if the first input is smaller than or equal to the second input."; // untranslated +Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ = "Return true if both inputs are not equal to each other."; // untranslated +Blockly.Msg.LOGIC_NEGATE_HELPURL = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated +Blockly.Msg.LOGIC_NEGATE_TITLE = "%1 niyo"; +Blockly.Msg.LOGIC_NEGATE_TOOLTIP = "Returns true if the input is false. Returns false if the input is true."; // untranslated +Blockly.Msg.LOGIC_NULL = "veng"; +Blockly.Msg.LOGIC_NULL_HELPURL = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated +Blockly.Msg.LOGIC_NULL_TOOLTIP = "Veng çarneno ra."; +Blockly.Msg.LOGIC_OPERATION_AND = "û"; +Blockly.Msg.LOGIC_OPERATION_HELPURL = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated +Blockly.Msg.LOGIC_OPERATION_OR = "ya zi"; +Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = "Return true if both inputs are true."; // untranslated +Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = "Return true if at least one of the inputs is true."; // untranslated +Blockly.Msg.LOGIC_TERNARY_CONDITION = "test"; +Blockly.Msg.LOGIC_TERNARY_HELPURL = "https://en.wikipedia.org/wiki/%3F:"; // untranslated +Blockly.Msg.LOGIC_TERNARY_IF_FALSE = "eke ğeleto"; +Blockly.Msg.LOGIC_TERNARY_IF_TRUE = "eke raşto"; +Blockly.Msg.LOGIC_TERNARY_TOOLTIP = "Check the condition in 'test'. If the condition is true, returns the 'if true' value; otherwise returns the 'if false' value."; // untranslated +Blockly.Msg.MATH_ADDITION_SYMBOL = "+"; // untranslated +Blockly.Msg.MATH_ARITHMETIC_HELPURL = "https://en.wikipedia.org/wiki/Aritmetik"; +Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = "Return the sum of the two numbers."; // untranslated +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_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 = "%2, keno %1 vurneno"; +Blockly.Msg.MATH_CHANGE_TOOLTIP = "Add a number to variable '%1'."; // untranslated +Blockly.Msg.MATH_CONSTANT_HELPURL = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg.MATH_CONSTANT_TOOLTIP = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated +Blockly.Msg.MATH_CONSTRAIN_HELPURL = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29"; // untranslated +Blockly.Msg.MATH_CONSTRAIN_TITLE = "constrain %1 low %2 high %3"; // untranslated +Blockly.Msg.MATH_CONSTRAIN_TOOLTIP = "Constrain a number to be between the specified limits (inclusive)."; // untranslated +Blockly.Msg.MATH_DIVISION_SYMBOL = "÷"; // untranslated +Blockly.Msg.MATH_IS_DIVISIBLE_BY = "is divisible by"; // untranslated +Blockly.Msg.MATH_IS_EVEN = "zewnco"; +Blockly.Msg.MATH_IS_NEGATIVE = "negatifo"; +Blockly.Msg.MATH_IS_ODD = "kıto"; +Blockly.Msg.MATH_IS_POSITIVE = "pozitifo"; +Blockly.Msg.MATH_IS_PRIME = "bıngehên"; +Blockly.Msg.MATH_IS_TOOLTIP = "Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false."; // untranslated +Blockly.Msg.MATH_IS_WHOLE = "tamo"; +Blockly.Msg.MATH_MODULO_HELPURL = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg.MATH_MODULO_TITLE = "remainder of %1 ÷ %2"; // untranslated +Blockly.Msg.MATH_MODULO_TOOLTIP = "Return the remainder from dividing the two numbers."; // untranslated +Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×"; // untranslated +Blockly.Msg.MATH_NUMBER_HELPURL = "https://diq.wikipedia.org/wiki/Numre"; +Blockly.Msg.MATH_NUMBER_TOOLTIP = "Yew numre."; +Blockly.Msg.MATH_ONLIST_HELPURL = ""; // untranslated +Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = "Averacê lista"; +Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = "Tewr gırdê lista"; +Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = "Wertey lista"; +Blockly.Msg.MATH_ONLIST_OPERATOR_MIN = "Tewr qıcê lista"; +Blockly.Msg.MATH_ONLIST_OPERATOR_MODE = "listey modi"; +Blockly.Msg.MATH_ONLIST_OPERATOR_RANDOM = "random item of list"; // untranslated +Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV = "standard deviation of list"; // untranslated +Blockly.Msg.MATH_ONLIST_OPERATOR_SUM = "koma liste"; +Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE = "Return the average (arithmetic mean) of the numeric values in the list."; // untranslated +Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX = "Return the largest number in the list."; // untranslated +Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = "Return the median number in the list."; // untranslated +Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN = "Return the smallest number in the list."; // untranslated +Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE = "Return a list of the most common item(s) in the list."; // untranslated +Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "Return a random element from the list."; // untranslated +Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "Return the standard deviation of the list."; // untranslated +Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "Return the sum of all the numbers in the list."; // untranslated +Blockly.Msg.MATH_POWER_SYMBOL = "^"; // untranslated +Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "Raştamaye nimande amor"; +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 +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 = "gılor ke"; +Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = "Loğê cêri ke"; +Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = "Loğê cori ke"; +Blockly.Msg.MATH_ROUND_TOOLTIP = "Yu amorer loğê cêri yana cori ke"; +Blockly.Msg.MATH_SINGLE_HELPURL = "https://en.wikipedia.org/wiki/Square_root"; // untranslated +Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE = "mutlaq"; +Blockly.Msg.MATH_SINGLE_OP_ROOT = "karekok"; +Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS = "Return the absolute value of a number."; // untranslated +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_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_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 = "-"; // untranslated +Blockly.Msg.MATH_TRIG_ACOS = "acos"; // untranslated +Blockly.Msg.MATH_TRIG_ASIN = "asin"; // untranslated +Blockly.Msg.MATH_TRIG_ATAN = "atan"; // untranslated +Blockly.Msg.MATH_TRIG_COS = "cos"; // untranslated +Blockly.Msg.MATH_TRIG_HELPURL = "https://en.wikipedia.org/wiki/Trigonometric_functions"; // untranslated +Blockly.Msg.MATH_TRIG_SIN = "sin"; // untranslated +Blockly.Msg.MATH_TRIG_TAN = "tan"; // untranslated +Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS = "Return the arccosine of a number."; // untranslated +Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN = "Return the arcsine of a number."; // untranslated +Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN = "Return the arctangent of a number."; // untranslated +Blockly.Msg.MATH_TRIG_TOOLTIP_COS = "Return the cosine of a degree (not radian)."; // untranslated +Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = "Return the sine of a degree (not radian)."; // untranslated +Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = "Return the tangent of a degree (not radian)."; // untranslated +Blockly.Msg.NEW_VARIABLE = "Vuriyayeyo newe..."; +Blockly.Msg.NEW_VARIABLE_TITLE = "Namey vuriyayeyê newi:"; +Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ""; // untranslated +Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS = "Çıyan rê mısafe bıd"; +Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "ebe:"; +Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated +Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "Run the user-defined function '%1'."; // untranslated +Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated +Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "Run the user-defined function '%1' and use its output."; // untranslated +Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = "ebe:"; +Blockly.Msg.PROCEDURES_CREATE_DO = "'%1' vıraze"; +Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = "Nê fonksiyoni beyan ke..."; +Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ""; // untranslated +Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated +Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "Çıyê bık"; +Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = "rê"; +Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = "Yew fonksiyono çap nêdate vırazeno"; +Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated +Blockly.Msg.PROCEDURES_DEFRETURN_RETURN = "peyser biya"; +Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = "Yew fonksiyono çap daye vırazeno"; +Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING = "Warning: This function has duplicate parameters."; // untranslated +Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF = "Highlight function definition"; // untranslated +Blockly.Msg.PROCEDURES_IFRETURN_HELPURL = "http://c2.com/cgi/wiki?GuardClause"; // untranslated +Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = "If a value is true, then return a second value."; // untranslated +Blockly.Msg.PROCEDURES_IFRETURN_WARNING = "Warning: This block may be used only within a function definition."; // untranslated +Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = "nameyê cıkewtışi:"; +Blockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP = "Add an input to the function."; // untranslated +Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "cıkewtışi"; +Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP = "Add, remove, or reorder inputs to this function."; // untranslated +Blockly.Msg.REDO = "Anewe ke"; +Blockly.Msg.REMOVE_COMMENT = "Tefsiri Wedare"; +Blockly.Msg.RENAME_VARIABLE = "Vuriyayey fına name ke..."; +Blockly.Msg.RENAME_VARIABLE_TITLE = "Rename all '%1' variables to:"; // untranslated +Blockly.Msg.TEXT_APPEND_APPENDTEXT = "append text"; // untranslated +Blockly.Msg.TEXT_APPEND_HELPURL = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated +Blockly.Msg.TEXT_APPEND_TO = "rê"; +Blockly.Msg.TEXT_APPEND_TOOLTIP = "Append some text to variable '%1'."; // untranslated +Blockly.Msg.TEXT_CHANGECASE_HELPURL = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated +Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = "to lower case"; // untranslated +Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = "to Title Case"; // untranslated +Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE = "to UPPER CASE"; // untranslated +Blockly.Msg.TEXT_CHANGECASE_TOOLTIP = "Return a copy of the text in a different case."; // untranslated +Blockly.Msg.TEXT_CHARAT_FIRST = "Herfa sıfti bıgi"; +Blockly.Msg.TEXT_CHARAT_FROM_END = "# ra tepya herfan bıgi"; +Blockly.Msg.TEXT_CHARAT_FROM_START = "Herfa # bıgi"; +Blockly.Msg.TEXT_CHARAT_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated +Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = "metın de"; +Blockly.Msg.TEXT_CHARAT_LAST = "Herfa peyên bıgi"; +Blockly.Msg.TEXT_CHARAT_RANDOM = "Raştamaye yu herf bıgi"; +Blockly.Msg.TEXT_CHARAT_TAIL = ""; // untranslated +Blockly.Msg.TEXT_CHARAT_TOOLTIP = "Şınasnaye pozisyon de yu herfer çerğ keno"; +Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = "Add an item to the text."; // untranslated +Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = "gıre de"; +Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = "Add, remove, or reorder sections to reconfigure this text block."; // untranslated +Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = "to letter # from end"; // untranslated +Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = "to letter #"; // untranslated +Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST = "to last letter"; // untranslated +Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated +Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = "metın de"; +Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = "get substring from first letter"; // untranslated +Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = "get substring from letter # from end"; // untranslated +Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = "# ra substring gêno"; +Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = ""; // untranslated +Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = "Tay letey metini çerğ keno"; +Blockly.Msg.TEXT_INDEXOF_HELPURL = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated +Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "metın de"; +Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "find first occurrence of text"; // untranslated +Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "find last occurrence of text"; // untranslated +Blockly.Msg.TEXT_INDEXOF_TAIL = ""; // untranslated +Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated +Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 vengo"; +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_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 +Blockly.Msg.TEXT_LENGTH_TOOLTIP = "Returns the number of letters (including spaces) in the provided text."; // untranslated +Blockly.Msg.TEXT_PRINT_HELPURL = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated +Blockly.Msg.TEXT_PRINT_TITLE = "print %1"; // untranslated +Blockly.Msg.TEXT_PRINT_TOOLTIP = "Print the specified text, number or other value."; // untranslated +Blockly.Msg.TEXT_PROMPT_HELPURL = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated +Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = "Prompt for user for a number."; // untranslated +Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = "Prompt for user for some text."; // untranslated +Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = "prompt for number with message"; // untranslated +Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = "prompt for text with message"; // untranslated +Blockly.Msg.TEXT_TEXT_HELPURL = "https://en.wikipedia.org/wiki/String_(computer_science)"; // untranslated +Blockly.Msg.TEXT_TEXT_TOOLTIP = "A letter, word, or line of text."; // untranslated +Blockly.Msg.TEXT_TRIM_HELPURL = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated +Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = "trim spaces from both sides of"; // untranslated +Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "trim spaces from left side of"; // untranslated +Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "trim spaces from right side of"; // untranslated +Blockly.Msg.TEXT_TRIM_TOOLTIP = "Return a copy of the text with spaces removed from one or both ends."; // untranslated +Blockly.Msg.TODAY = "Ewro"; +Blockly.Msg.UNDO = "Peyser biya"; +Blockly.Msg.VARIABLES_DEFAULT_NAME = "unsur"; +Blockly.Msg.VARIABLES_GET_CREATE_SET = "Create 'set %1'"; // untranslated +Blockly.Msg.VARIABLES_GET_HELPURL = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated +Blockly.Msg.VARIABLES_GET_TOOLTIP = "Returns the value of this variable."; // untranslated +Blockly.Msg.VARIABLES_SET = "set %1 to %2"; // untranslated +Blockly.Msg.VARIABLES_SET_CREATE_GET = "'get %1' vıraz"; +Blockly.Msg.VARIABLES_SET_HELPURL = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated +Blockly.Msg.VARIABLES_SET_TOOLTIP = "Sets this variable to be equal to the input."; // untranslated +Blockly.Msg.PROCEDURES_DEFRETURN_TITLE = Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE; +Blockly.Msg.CONTROLS_IF_IF_TITLE_IF = Blockly.Msg.CONTROLS_IF_MSG_IF; +Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO; +Blockly.Msg.CONTROLS_IF_MSG_THEN = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO; +Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE; +Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE = Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE; +Blockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST; +Blockly.Msg.LISTS_GET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST; +Blockly.Msg.MATH_CHANGE_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME; +Blockly.Msg.PROCEDURES_DEFRETURN_DO = Blockly.Msg.PROCEDURES_DEFNORETURN_DO; +Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF = Blockly.Msg.CONTROLS_IF_MSG_ELSEIF; +Blockly.Msg.LISTS_GET_INDEX_HELPURL = Blockly.Msg.LISTS_INDEX_OF_HELPURL; +Blockly.Msg.CONTROLS_FOREACH_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO; +Blockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST; +Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO; +Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME; +Blockly.Msg.TEXT_APPEND_VARIABLE = Blockly.Msg.VARIABLES_DEFAULT_NAME; +Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME; +Blockly.Msg.LISTS_INDEX_OF_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST; +Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT = Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT; \ No newline at end of file diff --git a/msg/js/el.js b/msg/js/el.js index 3f540bb00..cf667b9a3 100644 --- a/msg/js/el.js +++ b/msg/js/el.js @@ -139,7 +139,7 @@ Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "Ορίζει το πρώτο σ Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM = "Ορίζει το στοιχείο στην καθορισμένη θέση σε μια λίστα."; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = "Ορίζει το τελευταίο στοιχείο σε μια λίστα."; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = "Ορίζει ένα τυχαίο στοιχείο σε μια λίστα."; -Blockly.Msg.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated +Blockly.Msg.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = "ascending"; // untranslated Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = "descending"; // untranslated Blockly.Msg.LISTS_SORT_TITLE = "sort %1 %2 %3"; // untranslated diff --git a/msg/js/es.js b/msg/js/es.js index 2635209e2..6f7bf02b4 100644 --- a/msg/js/es.js +++ b/msg/js/es.js @@ -91,15 +91,15 @@ Blockly.Msg.LISTS_GET_INDEX_RANDOM = "aleatorio"; Blockly.Msg.LISTS_GET_INDEX_REMOVE = "eliminar"; Blockly.Msg.LISTS_GET_INDEX_TAIL = ""; // untranslated Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "Devuelve el primer elemento de una lista."; -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = "Devuelve el elemento en la posición especificada en la lista."; +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = "Devuelve el elemento en la posición especificada en una lista."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "Devuelve el último elemento de una lista."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "Devuelve un elemento aleatorio en una lista."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "Elimina y devuelve el primer elemento de una lista."; -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM = "Elimina y devuelve el elemento en la posición especificada en la lista."; +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM = "Elimina y devuelve el elemento en la posición especificada en una lista."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "Elimina y devuelve el último elemento de una lista."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "Elimina y devuelve un elemento aleatorio en una lista."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = "Elimina el primer elemento de una lista."; -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM = "Elimina el elemento en la posición especificada en la lista."; +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM = "Elimina el elemento en la posición especificada en una lista."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = "Elimina el último elemento de una lista."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = "Elimina un elemento aleatorio en una lista."; Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = "hasta # del final"; @@ -132,7 +132,7 @@ Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = "como"; Blockly.Msg.LISTS_SET_INDEX_INSERT = "insertar en"; Blockly.Msg.LISTS_SET_INDEX_SET = "establecer"; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = "Inserta el elemento al inicio de una lista."; -Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = "Inserta el elemento en la posición especificada en la lista."; +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = "Inserta el elemento en la posición especificada en una lista."; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = "Añade el elemento al final de una lista."; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = "Inserta el elemento aleatoriamente en una lista."; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "Establece el primer elemento de una lista."; diff --git a/msg/js/he.js b/msg/js/he.js index bdecef571..11a05fda1 100644 --- a/msg/js/he.js +++ b/msg/js/he.js @@ -116,7 +116,7 @@ Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = "%1 הוא הפריט הראשון. Blockly.Msg.LISTS_INDEX_OF_FIRST = "מחזירה את המיקום הראשון של פריט ברשימה"; Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated Blockly.Msg.LISTS_INDEX_OF_LAST = "מחזירה את המיקום האחרון של פריט ברשימה"; -Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "מחזירה את האינדקס של המופע ראשון/אחרון של הפריט ברשימה. מחזירה %1 אם הפריט אינו נמצא."; +Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "מחזירה את האינדקס של המופע הראשון/האחרון של הפריט ברשימה. מחזירה %1 אם הפריט אינו נמצא."; Blockly.Msg.LISTS_INLIST = "ברשימה"; Blockly.Msg.LISTS_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated Blockly.Msg.LISTS_ISEMPTY_TITLE = "%1 הוא ריק"; @@ -332,7 +332,7 @@ Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "in text"; // untranslated Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "find first occurrence of text"; // untranslated Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "find last occurrence of text"; // untranslated Blockly.Msg.TEXT_INDEXOF_TAIL = ""; // untranslated -Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "מחזירה את האינדקס של המופע הראשון/האחרון בטקסט הראשון לתוך הטקסט השני. מחזירה %1 אם הטקסט אינו נמצא."; Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 is empty"; // untranslated Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "Returns true if the provided text is empty."; // untranslated diff --git a/msg/js/hu.js b/msg/js/hu.js index cd53e0dc7..7d15622db 100644 --- a/msg/js/hu.js +++ b/msg/js/hu.js @@ -116,7 +116,7 @@ Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = "%1 az első elemet jelenti."; Blockly.Msg.LISTS_INDEX_OF_FIRST = "listában első előfordulásaː"; Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated Blockly.Msg.LISTS_INDEX_OF_LAST = "listában utolsó előfordulásaː"; -Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "A megadott elem első vagy utolsó előfordulásával tér vissza. %1-val tér vissza, ha nem talál ilyen elemet."; +Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "A megadott elem első vagy utolsó előfordulásával tér vissza. Ha nem talál ilyen elemet, akkor %1 a visszatérési érték."; Blockly.Msg.LISTS_INLIST = "A(z)"; Blockly.Msg.LISTS_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated Blockly.Msg.LISTS_ISEMPTY_TITLE = "%1 üres lista?"; diff --git a/msg/js/ia.js b/msg/js/ia.js index a6fe01666..fb5e3f8a8 100644 --- a/msg/js/ia.js +++ b/msg/js/ia.js @@ -39,7 +39,7 @@ Blockly.Msg.CONTROLS_FOREACH_TITLE = "pro cata elemento %1 in lista %2"; Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = "Pro cata elemento in un lista, mitter lo in le variabile '%1' e exequer certe instructiones."; Blockly.Msg.CONTROLS_FOR_HELPURL = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated Blockly.Msg.CONTROLS_FOR_TITLE = "contar con %1 de %2 a %3 per %4"; -Blockly.Msg.CONTROLS_FOR_TOOLTIP = "Mitter in le variabile \"%1\" le valores ab le numero initial usque al numero final, con passos secundo le intervallo specificate, e exequer le blocos specificate."; +Blockly.Msg.CONTROLS_FOR_TOOLTIP = "Mitter in le variabile '%1' le valores ab le numero initial usque al numero final, con passos secundo le intervallo specificate, e exequer le blocos specificate."; Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = "Adder un condition al bloco \"si\"."; Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = "Adder un condition final de reserva al bloco \"si\"."; Blockly.Msg.CONTROLS_IF_HELPURL = "https://github.com/google/blockly/wiki/IfElse"; // untranslated @@ -116,7 +116,7 @@ Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = "№ %1 es le prime elemento."; Blockly.Msg.LISTS_INDEX_OF_FIRST = "cercar le prime occurrentia del elemento"; Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated Blockly.Msg.LISTS_INDEX_OF_LAST = "cercar le ultime occurrentia del elemento"; -Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "Retorna le indice del prime/ultime occurrentia del elemento in le lista. Retorna %1 si le texto non es trovate."; +Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "Retorna le indice del prime/ultime occurrentia del elemento in le lista. Retorna %1 si le elemento non es trovate."; Blockly.Msg.LISTS_INLIST = "in lista"; Blockly.Msg.LISTS_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated Blockly.Msg.LISTS_ISEMPTY_TITLE = "%1 es vacue"; @@ -140,18 +140,18 @@ Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM = "Defini le valor del elemento al Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = "Defini le valor del ultime elemento in un lista."; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = "Defini le valor de un elemento aleatori in un lista."; Blockly.Msg.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; // untranslated -Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = "ascending"; // untranslated -Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = "descending"; // untranslated -Blockly.Msg.LISTS_SORT_TITLE = "sort %1 %2 %3"; // untranslated -Blockly.Msg.LISTS_SORT_TOOLTIP = "Sort a copy of a list."; // untranslated -Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = "alphabetic, ignore case"; // untranslated -Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = "numeric"; // untranslated -Blockly.Msg.LISTS_SORT_TYPE_TEXT = "alphabetic"; // untranslated +Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = "ascendente"; +Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = "descendente"; +Blockly.Msg.LISTS_SORT_TITLE = "ordinamento %1 %2 %3"; +Blockly.Msg.LISTS_SORT_TOOLTIP = "Ordinar un copia de un lista."; +Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = "alphabetic, ignorar majuscula/minuscula"; +Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = "numeric"; +Blockly.Msg.LISTS_SORT_TYPE_TEXT = "alphabetic"; Blockly.Msg.LISTS_SPLIT_HELPURL = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT = "Crear un lista per un texto"; Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST = "crear un texto per un lista"; -Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = "Join a list of texts into one text, separated by a delimiter."; // untranslated -Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = "Split text into a list of texts, breaking at each delimiter."; // untranslated +Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = "Unir un lista de textos, separate per un delimitator, in un sol texto."; +Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = "Divider texto in un lista de textos, separante lo a cata delimitator."; Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER = "con delimitator"; Blockly.Msg.LOGIC_BOOLEAN_FALSE = "false"; Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated @@ -274,7 +274,7 @@ Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://en.wikipedia.org/wiki/Proce Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "Executar le function '%1' definite per le usator e usar su resultato."; Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = "con:"; Blockly.Msg.PROCEDURES_CREATE_DO = "Crear '%1'"; -Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = "Describe this function..."; // untranslated +Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = "Describe iste function..."; Blockly.Msg.PROCEDURES_DEFNORETURN_DO = ""; // untranslated Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = "facer qualcosa"; diff --git a/msg/js/ko.js b/msg/js/ko.js index 27fe9014d..761f47340 100644 --- a/msg/js/ko.js +++ b/msg/js/ko.js @@ -111,12 +111,12 @@ Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "마지막부터 # 번째 위치 Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "처음 # 번째 위치부터, 서브 리스트 추출"; Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ""; Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "목록의 특정 부분에 대한 복사본을 만듭니다."; -Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = "%1은 마지막 항목입니다."; +Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = "%1은(는) 마지막 항목입니다."; Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = "%1은 첫 번째 항목입니다."; Blockly.Msg.LISTS_INDEX_OF_FIRST = "처음으로 나타난 위치"; Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; Blockly.Msg.LISTS_INDEX_OF_LAST = "마지막으로 나타난 위치"; -Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "아이템이 나타난 처음 또는 마지막 위치를 찾아 돌려줍니다. 아이템이 없으면 %1이 반환됩니다."; +Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = "목록에서 항목이 처음 또는 마지막으로 발생한 색인 위치를 반환합니다. 항목이 없으면 %1을 반환합니다."; Blockly.Msg.LISTS_INLIST = "리스트"; Blockly.Msg.LISTS_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Lists#is-empty"; Blockly.Msg.LISTS_ISEMPTY_TITLE = "%1이 비어 있습니다"; @@ -132,7 +132,7 @@ Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = "에"; Blockly.Msg.LISTS_SET_INDEX_INSERT = "에서 원하는 위치에 삽입"; Blockly.Msg.LISTS_SET_INDEX_SET = "에서 설정"; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = "항목을 목록의 처음 위치에 삽입합니다."; -Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = "아이템을 리스트의 특정 위치에 삽입합니다."; +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = "목록의 특정 위치에 항목을 삽입합니다."; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = "리스트의 마지막에 아이템을 추가합니다."; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = "목록에서 임의 위치에 아이템을 삽입합니다."; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "첫 번째 위치의 아이템으로 설정합니다."; @@ -332,7 +332,7 @@ Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "문장"; Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "에서 다음 문장이 처음으로 나타난 위치 찾기 :"; Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "에서 다음 문장이 마지막으로 나타난 위치 찾기 :"; Blockly.Msg.TEXT_INDEXOF_TAIL = ""; -Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "어떤 문장이 가장 처음 나타난 위치 또는, 가장 마지막으로 나타난 위치를 찾아 돌려줍니다. 찾는 문장이 없는 경우는 %1 값을 돌려줌."; +Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "두 번째 텍스트에서 첫 번째 텍스트가 처음 또는 마지막으로 발생한 색인 위치를 반환합니다. 텍스트가 없으면 %1을 반환합니다."; Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1이 비어 있습니다"; Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "입력된 문장이, 빈 문장(\"\")이면 참(true) 값을 돌려줍니다."; diff --git a/msg/js/lb.js b/msg/js/lb.js index 27be09a7d..ed9a6782e 100644 --- a/msg/js/lb.js +++ b/msg/js/lb.js @@ -111,8 +111,8 @@ Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "get sub-list from # from end"; Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "get sub-list from #"; // untranslated Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ""; // untranslated Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = "%1 is the last item."; // untranslated -Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = "%1 is the first item."; // untranslated +Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = "%1 ass dat éischt Element."; +Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = "%1 ass dat éischt Element."; Blockly.Msg.LISTS_INDEX_OF_FIRST = "find first occurrence of item"; // untranslated Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated Blockly.Msg.LISTS_INDEX_OF_LAST = "find last occurrence of item"; // untranslated diff --git a/msg/js/lt.js b/msg/js/lt.js index 9682e92cd..526d85d5b 100644 --- a/msg/js/lt.js +++ b/msg/js/lt.js @@ -91,7 +91,7 @@ Blockly.Msg.LISTS_GET_INDEX_RANDOM = "atsitiktinis"; Blockly.Msg.LISTS_GET_INDEX_REMOVE = "pašalinti"; Blockly.Msg.LISTS_GET_INDEX_TAIL = ""; // untranslated Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "Grąžina pirmąjį sąrašo elementą."; -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = "Returns the item at the specified position in a list."; // untranslated +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = "Gražina objektą į nurodyta poziciją sąraše."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "Grąžina paskutinį elementą iš sąrašo."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "Grąžina atsitiktinį elementą iš sąrašo."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "Removes and returns the first item in a list."; // untranslated @@ -111,8 +111,8 @@ Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "sąrašo dalis nuo # nuo galo"; Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "sąrašo dalis nuo #"; Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ""; // untranslated Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "Creates a copy of the specified portion of a list."; // untranslated -Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = "%1 is the last item."; // untranslated -Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = "%1 is the first item."; // untranslated +Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = "%1 yra paskutinis objektas."; +Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = "%1 yra pirmasis objektas."; Blockly.Msg.LISTS_INDEX_OF_FIRST = "rask pirmą reikšmę"; Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated Blockly.Msg.LISTS_INDEX_OF_LAST = "rask paskutinę reikšmę"; @@ -132,7 +132,7 @@ Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = "kaip"; Blockly.Msg.LISTS_SET_INDEX_INSERT = "įterpk į vietą"; Blockly.Msg.LISTS_SET_INDEX_SET = "priskirk elementui"; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = "Inserts the item at the start of a list."; // untranslated -Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = "Inserts the item at the specified position in a list."; // untranslated +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = "Įterpią objektą į nurodytą poziciją sąraše."; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = "Append the item to the end of a list."; // untranslated Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = "Inserts the item randomly in a list."; // untranslated Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "Sets the first item in a list."; // untranslated @@ -157,7 +157,7 @@ Blockly.Msg.LOGIC_BOOLEAN_FALSE = "klaidinga"; Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = "Reikšmė gali būti \"teisinga\"/\"Taip\" arba \"klaidinga\"/\"Ne\"."; Blockly.Msg.LOGIC_BOOLEAN_TRUE = "tiesa"; -Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; // untranslated +Blockly.Msg.LOGIC_COMPARE_HELPURL = "https://en.wikipedia.org/wiki/Inequality_(mathematics)"; Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = "Tenkinama, jei abu reiškiniai lygūs."; Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = "Return true if the first input is greater than the second input."; // untranslated Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = "Return true if the first input is greater than or equal to the second input."; // untranslated @@ -187,10 +187,10 @@ Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = "Grąžina dviejų skaičių dalmen Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = "Grąžina dviejų skaičių skirtumą."; Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = "Grąžina dviejų skaičių sandaugą."; Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = "Grąžina pirmą skaičių pakeltą laipsniu pagal antrą skaičių."; -Blockly.Msg.MATH_CHANGE_HELPURL = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; // untranslated +Blockly.Msg.MATH_CHANGE_HELPURL = "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter"; Blockly.Msg.MATH_CHANGE_TITLE = "padidink %1 (emptypage) %2"; Blockly.Msg.MATH_CHANGE_TOOLTIP = "Prideda skaičių prie kintamojo '%1'. Kai skaičius neigiamas - gaunasi atimtis."; -Blockly.Msg.MATH_CONSTANT_HELPURL = "https://en.wikipedia.org/wiki/Mathematical_constant"; // untranslated +Blockly.Msg.MATH_CONSTANT_HELPURL = "https://lt.wikipedia.org/wiki/Matematin%C4%97_konstanta"; Blockly.Msg.MATH_CONSTANT_TOOLTIP = "Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity)."; // untranslated Blockly.Msg.MATH_CONSTRAIN_HELPURL = "https://en.wikipedia.org/wiki/Clamping_%28graphics%29"; // untranslated Blockly.Msg.MATH_CONSTRAIN_TITLE = "apribok %1 tarp %2 ir %3"; @@ -204,7 +204,7 @@ Blockly.Msg.MATH_IS_POSITIVE = "yra teigiamas"; Blockly.Msg.MATH_IS_PRIME = "yra pirminis"; Blockly.Msg.MATH_IS_TOOLTIP = "Patikrina skaičiaus savybę: (ne)lyginis/pirminis/sveikasis/teigiamas/neigiamas/dalus iš x."; Blockly.Msg.MATH_IS_WHOLE = "yra sveikasis"; -Blockly.Msg.MATH_MODULO_HELPURL = "https://en.wikipedia.org/wiki/Modulo_operation"; // untranslated +Blockly.Msg.MATH_MODULO_HELPURL = "https://en.wikipedia.org/wiki/Modulo_operation"; Blockly.Msg.MATH_MODULO_TITLE = "dalybos liekana %1 ÷ %2"; Blockly.Msg.MATH_MODULO_TOOLTIP = "Return the remainder from dividing the two numbers."; // untranslated Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = "×"; // untranslated @@ -228,17 +228,17 @@ Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = "Grąžinti atsitiktinį elementą iš Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = "Return the standard deviation of the list."; // untranslated Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = "didžiausia reikšmė"; Blockly.Msg.MATH_POWER_SYMBOL = "^"; // untranslated -Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = "atsitiktinė trupmena"; Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = "Atsitiktinė trupmena nuo 0 (imtinai) iki 1 (neimtinai)."; -Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; // untranslated +Blockly.Msg.MATH_RANDOM_INT_HELPURL = "https://en.wikipedia.org/wiki/Random_number_generation"; Blockly.Msg.MATH_RANDOM_INT_TITLE = "atsitiktinis sveikas sk. nuo %1 iki %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"; // untranslated +Blockly.Msg.MATH_ROUND_HELPURL = "https://lt.wikipedia.org/wiki/Apvalinimas"; Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = "apvalink"; Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = "apvalink žemyn"; Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = "apvalink aukštyn"; -Blockly.Msg.MATH_ROUND_TOOLTIP = "Round a number up or down."; // untranslated +Blockly.Msg.MATH_ROUND_TOOLTIP = "Suapvalinti skaičių į žemesnę ar aukštesnę reikšmę."; Blockly.Msg.MATH_SINGLE_HELPURL = "https://en.wikipedia.org/wiki/Square_root"; Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE = "modulis"; Blockly.Msg.MATH_SINGLE_OP_ROOT = "kvadratinė šaknis"; @@ -268,9 +268,9 @@ Blockly.Msg.NEW_VARIABLE_TITLE = "Naujo kintamojo pavadinimas:"; Blockly.Msg.ORDINAL_NUMBER_SUFFIX = ""; // untranslated Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS = "leisti vidinius veiksmus"; Blockly.Msg.PROCEDURES_BEFORE_PARAMS = "pagal:"; -Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated +Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = "Vykdyti sukurtą komandą \"%1\"."; -Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; // untranslated +Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29"; Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = "Įvykdyti komandą \"%1\" ir naudoti jos suskaičiuotą (atiduotą) reikšmę."; Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = "su:"; Blockly.Msg.PROCEDURES_CREATE_DO = "Sukurti \"%1\""; @@ -292,7 +292,7 @@ Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = "parametro pavadinimas:"; Blockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP = "Pridėti funkcijos parametrą (gaunamų duomenų pavadinimą)."; Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = "gaunami duomenys (parametrai)"; Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP = "Tvarkyti komandos gaunamus duomenis (parametrus)."; -Blockly.Msg.REDO = "Redo"; // untranslated +Blockly.Msg.REDO = "Atkurti"; Blockly.Msg.REMOVE_COMMENT = "Pašalinti komentarą"; Blockly.Msg.RENAME_VARIABLE = "Pervardyti kintamajį..."; Blockly.Msg.RENAME_VARIABLE_TITLE = "Pervadinti visus '%1' kintamuosius į:"; @@ -358,7 +358,7 @@ Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = "išvalyk tarpus pradžioje"; Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = "išvalyk tarpus pabaigoje"; Blockly.Msg.TEXT_TRIM_TOOLTIP = "Return a copy of the text with spaces removed from one or both ends."; // untranslated Blockly.Msg.TODAY = "Šiandien"; -Blockly.Msg.UNDO = "Undo"; // untranslated +Blockly.Msg.UNDO = "Anuliuoti"; Blockly.Msg.VARIABLES_DEFAULT_NAME = "elementas"; Blockly.Msg.VARIABLES_GET_CREATE_SET = "Sukurk \"priskirk %1\""; Blockly.Msg.VARIABLES_GET_HELPURL = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated diff --git a/msg/js/nl.js b/msg/js/nl.js index 41e289418..0aab06a32 100644 --- a/msg/js/nl.js +++ b/msg/js/nl.js @@ -144,14 +144,14 @@ Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = "oplopend"; Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = "aflopend"; Blockly.Msg.LISTS_SORT_TITLE = "sorteer %1 %2 %3"; Blockly.Msg.LISTS_SORT_TOOLTIP = "Sorteer een kopie van een lijst."; -Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = "alfabetisch, negeer zaak"; +Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = "alfabetisch, negeer hoofd-/kleine letters"; Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = "numerieke"; Blockly.Msg.LISTS_SORT_TYPE_TEXT = "in alfabetische volgorde"; Blockly.Msg.LISTS_SPLIT_HELPURL = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT = "lijst maken van tekst"; Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST = "tekst maken van lijst"; Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = "Lijst van tekstdelen samenvoegen in één stuk tekst, waarbij de tekstdelen gescheiden zijn door een scheidingsteken."; -Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = "Tekst splitsen in een tekst van tekst op basis van een scheidingsteken."; +Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = "Tekst splitsen in een lijst van teksten op basis van een scheidingsteken."; Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER = "met scheidingsteken"; Blockly.Msg.LOGIC_BOOLEAN_FALSE = "onwaar"; Blockly.Msg.LOGIC_BOOLEAN_HELPURL = "https://github.com/google/blockly/wiki/Logic#values"; diff --git a/msg/js/pt.js b/msg/js/pt.js index f5e0f1b46..b23a89a60 100644 --- a/msg/js/pt.js +++ b/msg/js/pt.js @@ -332,7 +332,7 @@ Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "no texto"; Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "primeira ocorrência do texto"; Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "última ocorrência do texto"; Blockly.Msg.TEXT_INDEXOF_TAIL = ""; // untranslated -Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "Retorna a posição da primeira/última ocorrência do primeiro texto no segundo texto. Retorna %1 se o texto não for encontrado."; +Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "Retorna a posição da primeira/última ocorrência do primeiro texto no segundo texto. Retorna %1 se o texto não for encontrado."; Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 está vazio"; Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "Retorna verdadeiro se o texto fornecido estiver vazio."; diff --git a/msg/js/ta.js b/msg/js/ta.js index 2d3980542..fdcbb7276 100644 --- a/msg/js/ta.js +++ b/msg/js/ta.js @@ -332,7 +332,7 @@ Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = "உரையில்"; Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = "உரையில் முதல் தோற்ற இடத்தை பின்கொடு"; Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = "உரையில் கடைசி தோற்ற இடத்தை பின்கொடு"; Blockly.Msg.TEXT_INDEXOF_TAIL = ""; // untranslated -Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found."; // untranslated +Blockly.Msg.TEXT_INDEXOF_TOOLTIP = "இரண்டாவது உரையில் முதல் உரையின் முதல்/கடை இருக்கை குறிஎண்ணை பின்கொடு."; Blockly.Msg.TEXT_ISEMPTY_HELPURL = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated Blockly.Msg.TEXT_ISEMPTY_TITLE = "%1 காலியானது"; Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = "காலியானது என்றால் மெய் மதிப்பை பின்கொடு"; diff --git a/msg/js/tcy.js b/msg/js/tcy.js index d912db43d..860275596 100644 --- a/msg/js/tcy.js +++ b/msg/js/tcy.js @@ -91,15 +91,15 @@ Blockly.Msg.LISTS_GET_INDEX_RANDOM = "ಗೊತ್ತು ಗುರಿದಾಂ Blockly.Msg.LISTS_GET_INDEX_REMOVE = "ದೆಪ್ಪುಲೆ"; Blockly.Msg.LISTS_GET_INDEX_TAIL = ""; // untranslated Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = "ಸುರುತ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ಪಿರಕೊರು."; -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = "ನಿರ್ದಿಷ್ಟ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ಪಿರಕೊರು"; +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = "ನಿರ್ದಸ್ಟೊ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ಪಿರಕೊರು"; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = "ಅಕೇರಿದ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ಪಿರಕೊರು."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = "ಗೊತ್ತುಗುರಿದಾಂತಿನ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ಪಿರಕೊರು."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = "ಸುರುತ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ದೆಪ್ಪು ಅತ್ತಂಡ ಪಿರಕೊರು."; -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM = "ನಿರ್ದಿಷ್ಟ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ದೆಪ್ಪು ಅತ್ತಂಡ ಪಿರಕೊರು"; +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM = "ನಿರ್ದಿಸ್ಟೊ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ದೆಪ್ಪು ಅತ್ತಂಡ ಪಿರಕೊರು"; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = "ಅಕೇರಿದ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ದೆಪ್ಪು ಅತ್ತಂಡ ಪಿರಕೊರು."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = "ಗೊತ್ತುಗುರಿದಾಂತಿನ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ದೆಪ್ಪು ಅತ್ತಂಡ ಪಿರಕೊರು."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = "ಸುರುತ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ದೆಪ್ಪು."; -Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM = "ನಿರ್ದಿಷ್ಟ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ದೆಪ್ಪುಲೆ"; +Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM = "ನಿರ್ದಿಸ್ಟೊ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ದೆಪ್ಪುಲೆ"; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = "ಅಕೇರಿದ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ದೆಪ್ಪು."; Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = "ಗೊತ್ತುಗುರಿದಾಂತಿನ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ದೆಪ್ಪು."; Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = "ಡ್ದ್ # ಅಕೇರಿಗ್"; @@ -111,8 +111,8 @@ Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = "ಉಪ-ಪಟ್ಯೊನು ದ Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = "ಉಪ-ಪಟ್ಯೊನು ದೆತೊನು#"; Blockly.Msg.LISTS_GET_SUBLIST_TAIL = ""; // untranslated Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = "ಪಟ್ಯೊದ ನಿರ್ದಿಷ್ಟ ಬಾಗೊದ ಪ್ರತಿನ್ ಸ್ರಸ್ಟಿಸವುಂಡು."; -Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = "%1 ಅಕೇರಿತ ಅಂಸ"; -Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = "%1 ಸುರುತ ಅಂಸ"; +Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = "%1 ಅಕೇರಿತ ಅಂಸೊ"; +Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = "%1 ಸುರುತ ಅಂಸೊ"; Blockly.Msg.LISTS_INDEX_OF_FIRST = "ದುಂಬು ಕರಿನ ಪಟ್ಯೊನು ನಾಡ್‍ಲೆ"; Blockly.Msg.LISTS_INDEX_OF_HELPURL = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated Blockly.Msg.LISTS_INDEX_OF_LAST = "ಅಕೆರಿಗ್ ಕರಿನ ಪಟ್ಯೊನು ನಾಡ್‍ಲೆ"; @@ -132,11 +132,11 @@ Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = "ಅಂಚ"; Blockly.Msg.LISTS_SET_INDEX_INSERT = "ಸೇರಲ"; Blockly.Msg.LISTS_SET_INDEX_SET = "ಮಾಲ್ಪು"; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = "ಸುರುತ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ಸೇರಲ."; -Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = "ನಿರ್ದಿಷ್ಟ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ಸೇರಲ"; +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = "ನಿರ್ದಿಸ್ಟೊ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ಸೇರಲ"; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = "ಪಟ್ಟಿದ ಅಕೇರಿಗ್ ಈ ಅಂಸೊಲೆನ್ ಸೇರಲ."; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = "ಪಟ್ಟಿಗ್ ಗೊತ್ತುಗುರಿದಾಂತೆ ಅಂಸೊಲೆನ್ ಸೇರಲ."; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = "ಸುರುತ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ಮಾಲ್ಪು."; -Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM = "ನಿರ್ದಿಷ್ಟ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ಮಾಲ್ಪು"; +Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM = "ನಿರ್ದಿಸ್ಟೊ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ಮಾಲ್ಪು"; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = "ಅಕೇರಿದ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ಮಾಲ್ಪು."; Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = "ಗೊತ್ತುಗುರಿದಾಂತಿನ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ಮಾಲ್ಪು."; Blockly.Msg.LISTS_SORT_HELPURL = "https://github.com/google/blockly/wiki/Lists#sorting-a-list"; diff --git a/msg/json/cs.json b/msg/json/cs.json index 3d0827e5c..e0cb6a41d 100644 --- a/msg/json/cs.json +++ b/msg/json/cs.json @@ -195,7 +195,7 @@ "TEXT_LENGTH_TOOLTIP": "Vrátí počet písmen (včetně mezer) v zadaném textu.", "TEXT_ISEMPTY_TITLE": "%1 je prázdný", "TEXT_ISEMPTY_TOOLTIP": "Vrátí pravda pokud je zadaný text prázdný.", - "TEXT_INDEXOF_TOOLTIP": "Vrátí index prvního/posledního výskytu prvního textu v druhém textu. Pokud text není nalezen, vrátí hodnotu %1.", + "TEXT_INDEXOF_TOOLTIP": "Vrátí index prvního/posledního výskytu prvního textu v druhém textu. Pokud text není nalezen, vypíše %1.", "TEXT_INDEXOF_INPUT_INTEXT": "v textu", "TEXT_INDEXOF_OPERATOR_FIRST": "najít první výskyt textu", "TEXT_INDEXOF_OPERATOR_LAST": "najít poslední výskyt textu", @@ -255,11 +255,11 @@ "LISTS_GET_INDEX_RANDOM": "náhodné", "LISTS_INDEX_FROM_START_TOOLTIP": "%1 je první položka.", "LISTS_INDEX_FROM_END_TOOLTIP": "%1 je poslední položka.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Vrátí položku z určené pozice v seznamu.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Získá položku z určené pozice v seznamu.", "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Vrátí první položku v seznamu.", "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Vrátí poslední položku v seznamu.", "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Vrátí náhodnou položku ze seznamu.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Odstraní a vrátí položku z určené pozice v seznamu.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Odstraní a získá položku z určené pozice v seznamu.", "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Odstraní a vrátí první položku v seznamu.", "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Odstraní a vrátí poslední položku v seznamu.", "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Odstraní a vrátí náhodnou položku v seznamu.", diff --git a/msg/json/diq.json b/msg/json/diq.json new file mode 100644 index 000000000..409cd9c23 --- /dev/null +++ b/msg/json/diq.json @@ -0,0 +1,137 @@ +{ + "@metadata": { + "authors": [ + "Kumkumuk", + "Marmase", + "Mirzali" + ] + }, + "VARIABLES_DEFAULT_NAME": "unsur", + "TODAY": "Ewro", + "DUPLICATE_BLOCK": "Zewnc", + "ADD_COMMENT": "Tefsir cı ke", + "REMOVE_COMMENT": "Tefsiri Wedare", + "EXTERNAL_INPUTS": "Cıkewtışê xarıciy", + "INLINE_INPUTS": "Cıkerdışê xomiyani", + "DELETE_BLOCK": "Bloki bestere", + "DELETE_X_BLOCKS": "%1 çengan bestern", + "DELETE_ALL_BLOCKS": "Wa %1 çengey heme besteri yè?", + "CLEAN_UP": "Çengan pak ke", + "COLLAPSE_BLOCK": "Çengi teng ke", + "COLLAPSE_ALL": "Çengi teng ke", + "EXPAND_BLOCK": "Çengi hera ke", + "EXPAND_ALL": "Çengan hera ke", + "DISABLE_BLOCK": "Çengi devre ra vec", + "ENABLE_BLOCK": "Çengi aktiv ke", + "HELP": "Peşti", + "UNDO": "Peyser biya", + "REDO": "Anewe ke", + "CHANGE_VALUE_TITLE": "Erci bıvırne:", + "NEW_VARIABLE": "Vuriyayeyo newe...", + "NEW_VARIABLE_TITLE": "Namey vuriyayeyê newi:", + "RENAME_VARIABLE": "Vuriyayey fına name ke...", + "COLOUR_PICKER_HELPURL": "https://diq.wikipedia.org/wiki/Reng", + "COLOUR_RANDOM_TITLE": "rengo rastameye", + "COLOUR_RGB_TITLE": "komponentên rengan", + "COLOUR_RGB_RED": "sur", + "COLOUR_RGB_GREEN": "kıho", + "COLOUR_RGB_BLUE": "mawi", + "COLOUR_BLEND_TITLE": "tewde", + "COLOUR_BLEND_COLOUR1": "reng 1", + "COLOUR_BLEND_COLOUR2": "reng 2", + "COLOUR_BLEND_RATIO": "nisbet", + "CONTROLS_REPEAT_HELPURL": "https://en.wikipedia.org/wiki/For_loop", + "CONTROLS_REPEAT_INPUT_DO": "bık", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "Tekrar kerdış de", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "hend tekrar ke", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Yew erc raşto se yu beyanat bıd.", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Yew erc xırabo se tay beyanati bıd", + "CONTROLS_IF_MSG_IF": "se", + "CONTROLS_IF_MSG_ELSEIF": "niyose", + "CONTROLS_IF_MSG_ELSE": "çıniyose", + "LOGIC_OPERATION_AND": "û", + "LOGIC_OPERATION_OR": "ya zi", + "LOGIC_NEGATE_TITLE": "%1 niyo", + "LOGIC_BOOLEAN_TRUE": "raşt", + "LOGIC_BOOLEAN_FALSE": "ğelet", + "LOGIC_NULL": "veng", + "LOGIC_NULL_TOOLTIP": "Veng çarneno ra.", + "LOGIC_TERNARY_CONDITION": "test", + "LOGIC_TERNARY_IF_TRUE": "eke raşto", + "LOGIC_TERNARY_IF_FALSE": "eke ğeleto", + "MATH_NUMBER_HELPURL": "https://diq.wikipedia.org/wiki/Numre", + "MATH_NUMBER_TOOLTIP": "Yew numre.", + "MATH_ARITHMETIC_HELPURL": "https://en.wikipedia.org/wiki/Aritmetik", + "MATH_SINGLE_OP_ROOT": "karekok", + "MATH_SINGLE_OP_ABSOLUTE": "mutlaq", + "MATH_IS_EVEN": "zewnco", + "MATH_IS_ODD": "kıto", + "MATH_IS_PRIME": "bıngehên", + "MATH_IS_WHOLE": "tamo", + "MATH_IS_POSITIVE": "pozitifo", + "MATH_IS_NEGATIVE": "negatifo", + "MATH_CHANGE_TITLE": "%2, keno %1 vurneno", + "MATH_ROUND_HELPURL": "https://en.wikipedia.org/wiki/Rounding", + "MATH_ROUND_TOOLTIP": "Yu amorer loğê cêri yana cori ke", + "MATH_ROUND_OPERATOR_ROUND": "gılor ke", + "MATH_ROUND_OPERATOR_ROUNDUP": "Loğê cori ke", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "Loğê cêri ke", + "MATH_ONLIST_OPERATOR_SUM": "koma liste", + "MATH_ONLIST_OPERATOR_MIN": "Tewr qıcê lista", + "MATH_ONLIST_OPERATOR_MAX": "Tewr gırdê lista", + "MATH_ONLIST_OPERATOR_AVERAGE": "Averacê lista", + "MATH_ONLIST_OPERATOR_MEDIAN": "Wertey lista", + "MATH_ONLIST_OPERATOR_MODE": "listey modi", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "Raştamaye nimande amor", + "TEXT_CREATE_JOIN_TITLE_JOIN": "gıre de", + "TEXT_APPEND_TO": "rê", + "TEXT_ISEMPTY_TITLE": "%1 vengo", + "TEXT_INDEXOF_INPUT_INTEXT": "metın de", + "TEXT_CHARAT_INPUT_INTEXT": "metın de", + "TEXT_CHARAT_FROM_START": "Herfa # bıgi", + "TEXT_CHARAT_FROM_END": "# ra tepya herfan bıgi", + "TEXT_CHARAT_FIRST": "Herfa sıfti bıgi", + "TEXT_CHARAT_LAST": "Herfa peyên bıgi", + "TEXT_CHARAT_RANDOM": "Raştamaye yu herf bıgi", + "TEXT_CHARAT_TOOLTIP": "Şınasnaye pozisyon de yu herfer çerğ keno", + "TEXT_GET_SUBSTRING_TOOLTIP": "Tay letey metini çerğ keno", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "metın de", + "TEXT_GET_SUBSTRING_START_FROM_START": "# ra substring gêno", + "LISTS_CREATE_EMPTY_TITLE": "lista venge vıraze", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "liste", + "LISTS_ISEMPTY_TITLE": "%1 vengo", + "LISTS_INLIST": "lista de", + "LISTS_GET_INDEX_GET": "bıgê", + "LISTS_GET_INDEX_GET_REMOVE": "Bıgi u wedarne", + "LISTS_GET_INDEX_REMOVE": "wedare", + "LISTS_GET_INDEX_FROM_END": "# peynira", + "LISTS_GET_INDEX_FIRST": "verên", + "LISTS_GET_INDEX_LAST": "peyên", + "LISTS_GET_INDEX_RANDOM": "raştameye", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 objeyo sıfteyên o", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 objeyo peyên o", + "LISTS_SET_INDEX_SET": "ca ke", + "LISTS_SET_INDEX_INPUT_TO": "zey", + "LISTS_GET_SUBLIST_END_FROM_START": "#'ya", + "LISTS_GET_SUBLIST_END_FROM_END": "Peyni # ra hetana", + "LISTS_GET_SUBLIST_END_LAST": "Hetana pey", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", + "LISTS_SORT_TITLE": "Kılm %1 %2 %3", + "LISTS_SORT_ORDER_ASCENDING": "zeydıyen", + "LISTS_SORT_ORDER_DESCENDING": "Kemeyen", + "LISTS_SORT_TYPE_NUMERIC": "Amoriyal", + "LISTS_SORT_TYPE_TEXT": "Alfabetik", + "VARIABLES_SET_CREATE_GET": "'get %1' vıraz", + "PROCEDURES_DEFNORETURN_TITLE": "rê", + "PROCEDURES_DEFNORETURN_PROCEDURE": "Çıyê bık", + "PROCEDURES_BEFORE_PARAMS": "ebe:", + "PROCEDURES_CALL_BEFORE_PARAMS": "ebe:", + "PROCEDURES_DEFNORETURN_TOOLTIP": "Yew fonksiyono çap nêdate vırazeno", + "PROCEDURES_DEFNORETURN_COMMENT": "Nê fonksiyoni beyan ke...", + "PROCEDURES_DEFRETURN_RETURN": "peyser biya", + "PROCEDURES_DEFRETURN_TOOLTIP": "Yew fonksiyono çap daye vırazeno", + "PROCEDURES_ALLOW_STATEMENTS": "Çıyan rê mısafe bıd", + "PROCEDURES_MUTATORCONTAINER_TITLE": "cıkewtışi", + "PROCEDURES_MUTATORARG_TITLE": "nameyê cıkewtışi:", + "PROCEDURES_CREATE_DO": "'%1' vıraze" +} diff --git a/msg/json/el.json b/msg/json/el.json index c6551121f..191bfc17e 100644 --- a/msg/json/el.json +++ b/msg/json/el.json @@ -8,7 +8,8 @@ "Sfyrakis", "Glavkos", "Gchr", - "아라" + "아라", + "Geraki" ] }, "VARIABLES_DEFAULT_NAME": "αντικείμενο", @@ -291,6 +292,7 @@ "LISTS_GET_SUBLIST_END_FROM_END": "έως # από το τέλος", "LISTS_GET_SUBLIST_END_LAST": "έως το τελευταίο", "LISTS_GET_SUBLIST_TOOLTIP": "Δημιουργεί ένα αντίγραφο του καθορισμένου τμήματος μιας λίστας.", + "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", "LISTS_SPLIT_LIST_FROM_TEXT": "κάνετε λίστα από το κείμενο", "LISTS_SPLIT_TEXT_FROM_LIST": "κάνετε κείμενο από τη λίστα", "LISTS_SPLIT_WITH_DELIMITER": "με διαχωριστικό", diff --git a/msg/json/es.json b/msg/json/es.json index d976c56f1..15266374f 100644 --- a/msg/json/es.json +++ b/msg/json/es.json @@ -244,15 +244,15 @@ "LISTS_GET_INDEX_RANDOM": "aleatorio", "LISTS_INDEX_FROM_START_TOOLTIP": "%1 es el primer elemento.", "LISTS_INDEX_FROM_END_TOOLTIP": "%1 es el último elemento.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Devuelve el elemento en la posición especificada en la lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Devuelve el elemento en la posición especificada en una lista.", "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Devuelve el primer elemento de una lista.", "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Devuelve el último elemento de una lista.", "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Devuelve un elemento aleatorio en una lista.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Elimina y devuelve el elemento en la posición especificada en la lista.", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "Elimina y devuelve el elemento en la posición especificada en una lista.", "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "Elimina y devuelve el primer elemento de una lista.", "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Elimina y devuelve el último elemento de una lista.", "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "Elimina y devuelve un elemento aleatorio en una lista.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Elimina el elemento en la posición especificada en la lista.", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "Elimina el elemento en la posición especificada en una lista.", "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "Elimina el primer elemento de una lista.", "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Elimina el último elemento de una lista.", "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Elimina un elemento aleatorio en una lista.", @@ -263,7 +263,7 @@ "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "Establece el primer elemento de una lista.", "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "Establece el último elemento de una lista.", "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Establece un elemento aleatorio en una lista.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Inserta el elemento en la posición especificada en la lista.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Inserta el elemento en la posición especificada en una lista.", "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Inserta el elemento al inicio de una lista.", "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Añade el elemento al final de una lista.", "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Inserta el elemento aleatoriamente en una lista.", diff --git a/msg/json/he.json b/msg/json/he.json index fe2705e07..7eb0aaeb9 100644 --- a/msg/json/he.json +++ b/msg/json/he.json @@ -168,6 +168,7 @@ "TEXT_CREATE_JOIN_TITLE_JOIN": "צירוף", "TEXT_APPEND_TO": "אל", "TEXT_APPEND_APPENDTEXT": "הוספת טקסט", + "TEXT_INDEXOF_TOOLTIP": "מחזירה את האינדקס של המופע הראשון/האחרון בטקסט הראשון לתוך הטקסט השני. מחזירה %1 אם הטקסט אינו נמצא.", "TEXT_GET_SUBSTRING_END_FROM_START": "לאות #", "TEXT_GET_SUBSTRING_END_FROM_END": "לאות # מהסוף", "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "לאותיות גדולות (עבור טקסט באנגלית)", @@ -199,7 +200,7 @@ "LISTS_INLIST": "ברשימה", "LISTS_INDEX_OF_FIRST": "מחזירה את המיקום הראשון של פריט ברשימה", "LISTS_INDEX_OF_LAST": "מחזירה את המיקום האחרון של פריט ברשימה", - "LISTS_INDEX_OF_TOOLTIP": "מחזירה את האינדקס של המופע ראשון/אחרון של הפריט ברשימה. מחזירה %1 אם הפריט אינו נמצא.", + "LISTS_INDEX_OF_TOOLTIP": "מחזירה את האינדקס של המופע הראשון/האחרון של הפריט ברשימה. מחזירה %1 אם הפריט אינו נמצא.", "LISTS_GET_INDEX_GET": "לקבל", "LISTS_GET_INDEX_GET_REMOVE": "קבל ומחק", "LISTS_GET_INDEX_REMOVE": "הסרה", diff --git a/msg/json/hu.json b/msg/json/hu.json index be22129d5..2ef04a974 100644 --- a/msg/json/hu.json +++ b/msg/json/hu.json @@ -238,7 +238,7 @@ "LISTS_INLIST": "A(z)", "LISTS_INDEX_OF_FIRST": "listában első előfordulásaː", "LISTS_INDEX_OF_LAST": "listában utolsó előfordulásaː", - "LISTS_INDEX_OF_TOOLTIP": "A megadott elem első vagy utolsó előfordulásával tér vissza. %1-val tér vissza, ha nem talál ilyen elemet.", + "LISTS_INDEX_OF_TOOLTIP": "A megadott elem első vagy utolsó előfordulásával tér vissza. Ha nem talál ilyen elemet, akkor %1 a visszatérési érték.", "LISTS_GET_INDEX_GET": "listából értéke", "LISTS_GET_INDEX_GET_REMOVE": "listából kivétele", "LISTS_GET_INDEX_REMOVE": "listából törlése", diff --git a/msg/json/ia.json b/msg/json/ia.json index 8ae5b1531..f38d01ecd 100644 --- a/msg/json/ia.json +++ b/msg/json/ia.json @@ -52,7 +52,7 @@ "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "repeter usque a", "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Durante que un valor es ver, exequer certe instructiones.", "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Durante que un valor es false, exequer certe instructiones.", - "CONTROLS_FOR_TOOLTIP": "Mitter in le variabile \"%1\" le valores ab le numero initial usque al numero final, con passos secundo le intervallo specificate, e exequer le blocos specificate.", + "CONTROLS_FOR_TOOLTIP": "Mitter in le variabile '%1' le valores ab le numero initial usque al numero final, con passos secundo le intervallo specificate, e exequer le blocos specificate.", "CONTROLS_FOR_TITLE": "contar con %1 de %2 a %3 per %4", "CONTROLS_FOREACH_TITLE": "pro cata elemento %1 in lista %2", "CONTROLS_FOREACH_TOOLTIP": "Pro cata elemento in un lista, mitter lo in le variabile '%1' e exequer certe instructiones.", @@ -218,7 +218,7 @@ "LISTS_INLIST": "in lista", "LISTS_INDEX_OF_FIRST": "cercar le prime occurrentia del elemento", "LISTS_INDEX_OF_LAST": "cercar le ultime occurrentia del elemento", - "LISTS_INDEX_OF_TOOLTIP": "Retorna le indice del prime/ultime occurrentia del elemento in le lista. Retorna %1 si le texto non es trovate.", + "LISTS_INDEX_OF_TOOLTIP": "Retorna le indice del prime/ultime occurrentia del elemento in le lista. Retorna %1 si le elemento non es trovate.", "LISTS_GET_INDEX_GET": "prender", "LISTS_GET_INDEX_GET_REMOVE": "prender e remover", "LISTS_GET_INDEX_REMOVE": "remover", @@ -258,9 +258,18 @@ "LISTS_GET_SUBLIST_END_FROM_END": "usque al № ab fin", "LISTS_GET_SUBLIST_END_LAST": "usque al ultime", "LISTS_GET_SUBLIST_TOOLTIP": "Crea un copia del parte specificate de un lista.", + "LISTS_SORT_TITLE": "ordinamento %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Ordinar un copia de un lista.", + "LISTS_SORT_ORDER_ASCENDING": "ascendente", + "LISTS_SORT_ORDER_DESCENDING": "descendente", + "LISTS_SORT_TYPE_NUMERIC": "numeric", + "LISTS_SORT_TYPE_TEXT": "alphabetic", + "LISTS_SORT_TYPE_IGNORECASE": "alphabetic, ignorar majuscula/minuscula", "LISTS_SPLIT_LIST_FROM_TEXT": "Crear un lista per un texto", "LISTS_SPLIT_TEXT_FROM_LIST": "crear un texto per un lista", "LISTS_SPLIT_WITH_DELIMITER": "con delimitator", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Divider texto in un lista de textos, separante lo a cata delimitator.", + "LISTS_SPLIT_TOOLTIP_JOIN": "Unir un lista de textos, separate per un delimitator, in un sol texto.", "VARIABLES_GET_TOOLTIP": "Retorna le valor de iste variabile.", "VARIABLES_GET_CREATE_SET": "Crea 'mitter %1'", "VARIABLES_SET": "mitter %1 a %2", @@ -271,6 +280,7 @@ "PROCEDURES_BEFORE_PARAMS": "con:", "PROCEDURES_CALL_BEFORE_PARAMS": "con:", "PROCEDURES_DEFNORETURN_TOOLTIP": "Crea un function que non retorna un valor.", + "PROCEDURES_DEFNORETURN_COMMENT": "Describe iste function...", "PROCEDURES_DEFRETURN_RETURN": "retornar", "PROCEDURES_DEFRETURN_TOOLTIP": "Crea un function que retorna un valor.", "PROCEDURES_ALLOW_STATEMENTS": "permitter declarationes", diff --git a/msg/json/ko.json b/msg/json/ko.json index c0de5c003..ea7dcefaa 100644 --- a/msg/json/ko.json +++ b/msg/json/ko.json @@ -214,7 +214,7 @@ "TEXT_ISEMPTY_TITLE": "%1이 비어 있습니다", "TEXT_ISEMPTY_TOOLTIP": "입력된 문장이, 빈 문장(\"\")이면 참(true) 값을 돌려줍니다.", "TEXT_INDEXOF_HELPURL": "https://github.com/google/blockly/wiki/Text#finding-text", - "TEXT_INDEXOF_TOOLTIP": "어떤 문장이 가장 처음 나타난 위치 또는, 가장 마지막으로 나타난 위치를 찾아 돌려줍니다. 찾는 문장이 없는 경우는 %1 값을 돌려줌.", + "TEXT_INDEXOF_TOOLTIP": "두 번째 텍스트에서 첫 번째 텍스트가 처음 또는 마지막으로 발생한 색인 위치를 반환합니다. 텍스트가 없으면 %1을 반환합니다.", "TEXT_INDEXOF_INPUT_INTEXT": "문장", "TEXT_INDEXOF_OPERATOR_FIRST": "에서 다음 문장이 처음으로 나타난 위치 찾기 :", "TEXT_INDEXOF_OPERATOR_LAST": "에서 다음 문장이 마지막으로 나타난 위치 찾기 :", @@ -278,7 +278,7 @@ "LISTS_INDEX_OF_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", "LISTS_INDEX_OF_FIRST": "처음으로 나타난 위치", "LISTS_INDEX_OF_LAST": "마지막으로 나타난 위치", - "LISTS_INDEX_OF_TOOLTIP": "아이템이 나타난 처음 또는 마지막 위치를 찾아 돌려줍니다. 아이템이 없으면 %1이 반환됩니다.", + "LISTS_INDEX_OF_TOOLTIP": "목록에서 항목이 처음 또는 마지막으로 발생한 색인 위치를 반환합니다. 항목이 없으면 %1을 반환합니다.", "LISTS_GET_INDEX_GET": "가져오기", "LISTS_GET_INDEX_GET_REMOVE": "잘라 내기", "LISTS_GET_INDEX_REMOVE": "삭제", @@ -289,7 +289,7 @@ "LISTS_GET_INDEX_RANDOM": "임의로", "LISTS_GET_INDEX_TAIL": "", "LISTS_INDEX_FROM_START_TOOLTIP": "%1은 첫 번째 항목입니다.", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1은 마지막 항목입니다.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1은(는) 마지막 항목입니다.", "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "목록에서 특정 위치의 항목을 반환합니다.", "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "첫 번째 아이템을 찾아 돌려줍니다.", "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "마지막 아이템을 찾아 돌려줍니다.", @@ -310,7 +310,7 @@ "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "첫 번째 위치의 아이템으로 설정합니다.", "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "마지막 아이템으로 설정합니다.", "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "목록에서 임의 위치의 아이템을 설정합니다.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "아이템을 리스트의 특정 위치에 삽입합니다.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "목록의 특정 위치에 항목을 삽입합니다.", "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "항목을 목록의 처음 위치에 삽입합니다.", "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "리스트의 마지막에 아이템을 추가합니다.", "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "목록에서 임의 위치에 아이템을 삽입합니다.", diff --git a/msg/json/lb.json b/msg/json/lb.json index ff82c489b..129fba60c 100644 --- a/msg/json/lb.json +++ b/msg/json/lb.json @@ -106,6 +106,8 @@ "LISTS_GET_INDEX_FIRST": "éischt", "LISTS_GET_INDEX_LAST": "lescht", "LISTS_GET_INDEX_RANDOM": "Zoufall", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ass dat éischt Element.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 ass dat éischt Element.", "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Schéckt en zoufällegt Element aus enger Lëscht zréck.", "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "Hëlt dat lescht Element aus enger Lëscht eraus.", "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "Hëlt en zoufällegt Element aus enger Lëscht eraus.", diff --git a/msg/json/lt.json b/msg/json/lt.json index 58ddf6f43..f8efcb73b 100644 --- a/msg/json/lt.json +++ b/msg/json/lt.json @@ -24,6 +24,8 @@ "DISABLE_BLOCK": "Išjungti bloką", "ENABLE_BLOCK": "Įjungti bloką", "HELP": "Pagalba", + "UNDO": "Anuliuoti", + "REDO": "Atkurti", "CHANGE_VALUE_TITLE": "Keisti reikšmę:", "NEW_VARIABLE": "Naujas kintamasis...", "NEW_VARIABLE_TITLE": "Naujo kintamojo pavadinimas:", @@ -70,6 +72,7 @@ "CONTROLS_IF_IF_TOOLTIP": "Galite pridėt/pašalinti/pertvarkyti sąlygų \"šakas\".", "CONTROLS_IF_ELSEIF_TOOLTIP": "Pridėti sąlygą „jei“ blokui.", "CONTROLS_IF_ELSE_TOOLTIP": "Pridėti veiksmų vykdymo variantą/\"šaką\", kai netenkinama nė viena sąlyga.", + "LOGIC_COMPARE_HELPURL": "https://en.wikipedia.org/wiki/Inequality_(mathematics)", "LOGIC_COMPARE_TOOLTIP_EQ": "Tenkinama, jei abu reiškiniai lygūs.", "LOGIC_OPERATION_TOOLTIP_AND": "Bus teisinga, kai abi sąlygos bus tenkinamos.", "LOGIC_OPERATION_AND": "ir", @@ -107,6 +110,7 @@ "MATH_TRIG_TOOLTIP_ASIN": "Grąžinti skaičiaus arksinusą.", "MATH_TRIG_TOOLTIP_ACOS": "Grąžinti skaičiaus arkkosinusą.", "MATH_TRIG_TOOLTIP_ATAN": "Grąžinti skaičiaus arktangentą.", + "MATH_CONSTANT_HELPURL": "https://lt.wikipedia.org/wiki/Matematin%C4%97_konstanta", "MATH_IS_EVEN": "yra lyginis", "MATH_IS_ODD": "yra nelyginis", "MATH_IS_PRIME": "yra pirminis", @@ -115,8 +119,11 @@ "MATH_IS_NEGATIVE": "yra neigiamas", "MATH_IS_DIVISIBLE_BY": "yra dalus iš", "MATH_IS_TOOLTIP": "Patikrina skaičiaus savybę: (ne)lyginis/pirminis/sveikasis/teigiamas/neigiamas/dalus iš x.", + "MATH_CHANGE_HELPURL": "https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter", "MATH_CHANGE_TITLE": "padidink %1 (emptypage) %2", "MATH_CHANGE_TOOLTIP": "Prideda skaičių prie kintamojo '%1'. Kai skaičius neigiamas - gaunasi atimtis.", + "MATH_ROUND_HELPURL": "https://lt.wikipedia.org/wiki/Apvalinimas", + "MATH_ROUND_TOOLTIP": "Suapvalinti skaičių į žemesnę ar aukštesnę reikšmę.", "MATH_ROUND_OPERATOR_ROUND": "apvalink", "MATH_ROUND_OPERATOR_ROUNDUP": "apvalink aukštyn", "MATH_ROUND_OPERATOR_ROUNDDOWN": "apvalink žemyn", @@ -132,9 +139,12 @@ "MATH_ONLIST_OPERATOR_STD_DEV": "standartinis nuokrypis sąraše", "MATH_ONLIST_OPERATOR_RANDOM": "atsitiktinis elementas iš sąrašo", "MATH_ONLIST_TOOLTIP_RANDOM": "Grąžinti atsitiktinį elementą iš sąrašo.", + "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", "MATH_MODULO_TITLE": "dalybos liekana %1 ÷ %2", "MATH_CONSTRAIN_TITLE": "apribok %1 tarp %2 ir %3", + "MATH_RANDOM_INT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", "MATH_RANDOM_INT_TITLE": "atsitiktinis sveikas sk. nuo %1 iki %2", + "MATH_RANDOM_FLOAT_HELPURL": "https://en.wikipedia.org/wiki/Random_number_generation", "MATH_RANDOM_FLOAT_TITLE_RANDOM": "atsitiktinė trupmena", "MATH_RANDOM_FLOAT_TOOLTIP": "Atsitiktinė trupmena nuo 0 (imtinai) iki 1 (neimtinai).", "TEXT_TEXT_TOOLTIP": "Tekstas (arba žodis, ar raidė)", @@ -195,12 +205,16 @@ "LISTS_GET_INDEX_FIRST": "pirmas", "LISTS_GET_INDEX_LAST": "paskutinis", "LISTS_GET_INDEX_RANDOM": "atsitiktinis", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 yra pirmasis objektas.", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 yra paskutinis objektas.", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Gražina objektą į nurodyta poziciją sąraše.", "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "Grąžina pirmąjį sąrašo elementą.", "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "Grąžina paskutinį elementą iš sąrašo.", "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "Grąžina atsitiktinį elementą iš sąrašo.", "LISTS_SET_INDEX_SET": "priskirk elementui", "LISTS_SET_INDEX_INSERT": "įterpk į vietą", "LISTS_SET_INDEX_INPUT_TO": "kaip", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Įterpią objektą į nurodytą poziciją sąraše.", "LISTS_GET_SUBLIST_START_FROM_START": "sąrašo dalis nuo #", "LISTS_GET_SUBLIST_START_FROM_END": "sąrašo dalis nuo # nuo galo", "LISTS_GET_SUBLIST_START_FIRST": "sąrašo dalis nuo pradžios", @@ -219,7 +233,9 @@ "PROCEDURES_DEFRETURN_TOOLTIP": "Sukuria funkciją - komandą, kuri ne tik atlieka veiksmus bet ir pateikia (grąžina/duoda) rezultatą.", "PROCEDURES_ALLOW_STATEMENTS": "leisti vidinius veiksmus", "PROCEDURES_DEF_DUPLICATE_WARNING": "Ši komanda turi du vienodus gaunamų duomenų pavadinimus.", + "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", "PROCEDURES_CALLNORETURN_TOOLTIP": "Vykdyti sukurtą komandą \"%1\".", + "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Procedure_%28computer_science%29", "PROCEDURES_CALLRETURN_TOOLTIP": "Įvykdyti komandą \"%1\" ir naudoti jos suskaičiuotą (atiduotą) reikšmę.", "PROCEDURES_MUTATORCONTAINER_TITLE": "gaunami duomenys (parametrai)", "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Tvarkyti komandos gaunamus duomenis (parametrus).", diff --git a/msg/json/nl.json b/msg/json/nl.json index 828a4ee0b..4f27ad859 100644 --- a/msg/json/nl.json +++ b/msg/json/nl.json @@ -320,11 +320,11 @@ "LISTS_SORT_ORDER_DESCENDING": "aflopend", "LISTS_SORT_TYPE_NUMERIC": "numerieke", "LISTS_SORT_TYPE_TEXT": "in alfabetische volgorde", - "LISTS_SORT_TYPE_IGNORECASE": "alfabetisch, negeer zaak", + "LISTS_SORT_TYPE_IGNORECASE": "alfabetisch, negeer hoofd-/kleine letters", "LISTS_SPLIT_LIST_FROM_TEXT": "lijst maken van tekst", "LISTS_SPLIT_TEXT_FROM_LIST": "tekst maken van lijst", "LISTS_SPLIT_WITH_DELIMITER": "met scheidingsteken", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Tekst splitsen in een tekst van tekst op basis van een scheidingsteken.", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Tekst splitsen in een lijst van teksten op basis van een scheidingsteken.", "LISTS_SPLIT_TOOLTIP_JOIN": "Lijst van tekstdelen samenvoegen in één stuk tekst, waarbij de tekstdelen gescheiden zijn door een scheidingsteken.", "VARIABLES_GET_HELPURL": "https://github.com/google/blockly/wiki/Variables#get", "VARIABLES_GET_TOOLTIP": "Geeft de waarde van deze variabele.", diff --git a/msg/json/pt.json b/msg/json/pt.json index 1098cf152..52c4ea31c 100644 --- a/msg/json/pt.json +++ b/msg/json/pt.json @@ -198,7 +198,7 @@ "TEXT_LENGTH_TOOLTIP": "Devolve o número de letras (incluindo espaços) do texto fornecido.", "TEXT_ISEMPTY_TITLE": "%1 está vazio", "TEXT_ISEMPTY_TOOLTIP": "Retorna verdadeiro se o texto fornecido estiver vazio.", - "TEXT_INDEXOF_TOOLTIP": "Retorna a posição da primeira/última ocorrência do primeiro texto no segundo texto. Retorna %1 se o texto não for encontrado.", + "TEXT_INDEXOF_TOOLTIP": "Retorna a posição da primeira/última ocorrência do primeiro texto no segundo texto. Retorna %1 se o texto não for encontrado.", "TEXT_INDEXOF_INPUT_INTEXT": "no texto", "TEXT_INDEXOF_OPERATOR_FIRST": "primeira ocorrência do texto", "TEXT_INDEXOF_OPERATOR_LAST": "última ocorrência do texto", diff --git a/msg/json/ta.json b/msg/json/ta.json index bddb09675..58b755a6d 100644 --- a/msg/json/ta.json +++ b/msg/json/ta.json @@ -176,6 +176,7 @@ "TEXT_LENGTH_TOOLTIP": "தொடரில் உள்ள எழுத்துக்களின் (இடைவெளிகளையும் சேர்த்து) எண்ணிகையை பின்கொடு.", "TEXT_ISEMPTY_TITLE": "%1 காலியானது", "TEXT_ISEMPTY_TOOLTIP": "காலியானது என்றால் மெய் மதிப்பை பின்கொடு", + "TEXT_INDEXOF_TOOLTIP": "இரண்டாவது உரையில் முதல் உரையின் முதல்/கடை இருக்கை குறிஎண்ணை பின்கொடு.", "TEXT_INDEXOF_INPUT_INTEXT": "உரையில்", "TEXT_INDEXOF_OPERATOR_FIRST": "உரையில் முதல் தோற்ற இடத்தை பின்கொடு", "TEXT_INDEXOF_OPERATOR_LAST": "உரையில் கடைசி தோற்ற இடத்தை பின்கொடு", diff --git a/msg/json/tcy.json b/msg/json/tcy.json index 8194895ad..38ce96697 100644 --- a/msg/json/tcy.json +++ b/msg/json/tcy.json @@ -232,28 +232,28 @@ "LISTS_GET_INDEX_FIRST": "ಸುರುತ", "LISTS_GET_INDEX_LAST": "ಕಡೆತ", "LISTS_GET_INDEX_RANDOM": "ಗೊತ್ತು ಗುರಿದಾಂತಿನ", - "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ಸುರುತ ಅಂಸ", - "LISTS_INDEX_FROM_END_TOOLTIP": "%1 ಅಕೇರಿತ ಅಂಸ", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "ನಿರ್ದಿಷ್ಟ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ಪಿರಕೊರು", + "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ಸುರುತ ಅಂಸೊ", + "LISTS_INDEX_FROM_END_TOOLTIP": "%1 ಅಕೇರಿತ ಅಂಸೊ", + "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "ನಿರ್ದಸ್ಟೊ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ಪಿರಕೊರು", "LISTS_GET_INDEX_TOOLTIP_GET_FIRST": "ಸುರುತ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ಪಿರಕೊರು.", "LISTS_GET_INDEX_TOOLTIP_GET_LAST": "ಅಕೇರಿದ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ಪಿರಕೊರು.", "LISTS_GET_INDEX_TOOLTIP_GET_RANDOM": "ಗೊತ್ತುಗುರಿದಾಂತಿನ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ಪಿರಕೊರು.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "ನಿರ್ದಿಷ್ಟ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ದೆಪ್ಪು ಅತ್ತಂಡ ಪಿರಕೊರು", + "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM": "ನಿರ್ದಿಸ್ಟೊ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ದೆಪ್ಪು ಅತ್ತಂಡ ಪಿರಕೊರು", "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST": "ಸುರುತ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ದೆಪ್ಪು ಅತ್ತಂಡ ಪಿರಕೊರು.", "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "ಅಕೇರಿದ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ದೆಪ್ಪು ಅತ್ತಂಡ ಪಿರಕೊರು.", "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM": "ಗೊತ್ತುಗುರಿದಾಂತಿನ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ದೆಪ್ಪು ಅತ್ತಂಡ ಪಿರಕೊರು.", - "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "ನಿರ್ದಿಷ್ಟ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ದೆಪ್ಪುಲೆ", + "LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM": "ನಿರ್ದಿಸ್ಟೊ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ದೆಪ್ಪುಲೆ", "LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST": "ಸುರುತ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ದೆಪ್ಪು.", "LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST": "ಅಕೇರಿದ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ದೆಪ್ಪು.", "LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM": "ಗೊತ್ತುಗುರಿದಾಂತಿನ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ದೆಪ್ಪು.", "LISTS_SET_INDEX_SET": "ಮಾಲ್ಪು", "LISTS_SET_INDEX_INSERT": "ಸೇರಲ", "LISTS_SET_INDEX_INPUT_TO": "ಅಂಚ", - "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "ನಿರ್ದಿಷ್ಟ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ಮಾಲ್ಪು", + "LISTS_SET_INDEX_TOOLTIP_SET_FROM": "ನಿರ್ದಿಸ್ಟೊ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ಮಾಲ್ಪು", "LISTS_SET_INDEX_TOOLTIP_SET_FIRST": "ಸುರುತ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ಮಾಲ್ಪು.", "LISTS_SET_INDEX_TOOLTIP_SET_LAST": "ಅಕೇರಿದ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ಮಾಲ್ಪು.", "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "ಗೊತ್ತುಗುರಿದಾಂತಿನ ಅಂಸೊಲೆನ ಪಟ್ಟಿನ್ ಮಾಲ್ಪು.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "ನಿರ್ದಿಷ್ಟ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ಸೇರಲ", + "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "ನಿರ್ದಿಸ್ಟೊ ಜಾಗೆಡುಪ್ಪುನ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ಸೇರಲ", "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "ಸುರುತ ಅಂಸೊಲೆ ಪಟ್ಟಿನ್ ಸೇರಲ.", "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "ಪಟ್ಟಿದ ಅಕೇರಿಗ್ ಈ ಅಂಸೊಲೆನ್ ಸೇರಲ.", "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "ಪಟ್ಟಿಗ್ ಗೊತ್ತುಗುರಿದಾಂತೆ ಅಂಸೊಲೆನ್ ಸೇರಲ.", diff --git a/tests/multi_playground.html b/tests/multi_playground.html index cdba845e9..9c21323e1 100644 --- a/tests/multi_playground.html +++ b/tests/multi_playground.html @@ -90,7 +90,7 @@ h1 { #octaweb td { width: 50%; } -#octaweb td div { +#octaweb td >div { height: 480px; width: 100%; }