From fca94ce799f7b1d9f60ddeb62f8c7753e69e0a4e Mon Sep 17 00:00:00 2001 From: Neil Fraser Date: Tue, 14 May 2024 17:55:43 +0200 Subject: [PATCH 01/25] fix: Remove deprecation warnings for 'disabled'. (#8104) We must continue to support existing XML and JSON serialization formats since they are in external databases. The decision was taken not to make the save formats compatible with older versions of Blockly. We could not think of a convincing use-case for a newer Blockly's output to be read by an older Blockly. If such a case appears, then our decision should change. Resolves #8095. --- core/serialization/blocks.ts | 9 ++------- core/xml.ts | 9 ++------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/core/serialization/blocks.ts b/core/serialization/blocks.ts index be5960965..5d409afe6 100644 --- a/core/serialization/blocks.ts +++ b/core/serialization/blocks.ts @@ -10,7 +10,6 @@ import type {Block} from '../block.js'; import type {BlockSvg} from '../block_svg.js'; import type {Connection} from '../connection.js'; import {MANUALLY_DISABLED} from '../constants.js'; -import * as deprecation from '../utils/deprecation.js'; import * as eventUtils from '../events/utils.js'; import {inputTypes} from '../inputs/input_types.js'; import {isSerializable} from '../interfaces/i_serializable.js'; @@ -523,12 +522,8 @@ function loadAttributes(block: Block, state: State) { block.setEditable(false); } if (state['enabled'] === false) { - deprecation.warn( - 'enabled', - 'v11', - 'v12', - 'disabledReasons with the value ["' + MANUALLY_DISABLED + '"]', - ); + // Before May 2024 we just used 'enabled', with no reasons. + // Contiune to support this syntax. block.setDisabledReason(true, MANUALLY_DISABLED); } if (Array.isArray(state['disabledReasons'])) { diff --git a/core/xml.ts b/core/xml.ts index 686c71082..bad381c5d 100644 --- a/core/xml.ts +++ b/core/xml.ts @@ -10,7 +10,6 @@ import type {Block} from './block.js'; import type {BlockSvg} from './block_svg.js'; import type {Connection} from './connection.js'; import {MANUALLY_DISABLED} from './constants.js'; -import * as deprecation from './utils/deprecation.js'; import * as eventUtils from './events/utils.js'; import type {Field} from './field.js'; import {IconType} from './icons/icon_types.js'; @@ -1023,12 +1022,8 @@ function domToBlockHeadless( } const disabled = xmlBlock.getAttribute('disabled'); if (disabled) { - deprecation.warn( - 'disabled', - 'v11', - 'v12', - 'disabled-reasons with the value "' + MANUALLY_DISABLED + '"', - ); + // Before May 2024 we just used 'disabled', with no reasons. + // Contiune to support this syntax. block.setDisabledReason( disabled === 'true' || disabled === 'disabled', MANUALLY_DISABLED, From 392a38bb2e392c49b70660b29de5d83221742f7c Mon Sep 17 00:00:00 2001 From: Beka Westberg Date: Tue, 14 May 2024 20:24:20 +0000 Subject: [PATCH 02/25] fix: drag cursor being incorrect for flyout blocks (#8107) --- core/block_svg.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/block_svg.ts b/core/block_svg.ts index e328f67ee..ca2ad181a 100644 --- a/core/block_svg.ts +++ b/core/block_svg.ts @@ -208,7 +208,7 @@ export class BlockSvg icon.updateEditable(); } this.applyColour(); - this.pathObject.updateMovable(this.isMovable()); + this.pathObject.updateMovable(this.isMovable() || this.isInFlyout); const svg = this.getSvgRoot(); if (!this.workspace.options.readOnly && svg) { browserEvents.conditionalBind( From e2eba2879d25619e6c476d8e6afd4c68e100ff06 Mon Sep 17 00:00:00 2001 From: Beka Westberg Date: Wed, 15 May 2024 15:27:43 +0000 Subject: [PATCH 03/25] fix: connection db error for insertion markers (#8109) --- core/insertion_marker_previewer.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/core/insertion_marker_previewer.ts b/core/insertion_marker_previewer.ts index 6ed278c40..8998985a2 100644 --- a/core/insertion_marker_previewer.ts +++ b/core/insertion_marker_previewer.ts @@ -154,6 +154,7 @@ export class InsertionMarkerPreviewer implements IConnectionPreviewer { }; const originalOffsetInBlock = markerConn.getOffsetInBlock().clone(); renderManagement.finishQueuedRenders().then(() => { + if (marker.isDeadOrDying()) return; eventUtils.disable(); try { // Position so that the existing block doesn't move. From dd9619dc9494c4e83fa7cad21ec6db61577e5ddb Mon Sep 17 00:00:00 2001 From: Beka Westberg Date: Wed, 15 May 2024 17:44:13 +0000 Subject: [PATCH 04/25] fix: extra insertion markers being created (#8120) * fix: extra insertion markers being created * chore: remove unused value --- core/insertion_marker_previewer.ts | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/core/insertion_marker_previewer.ts b/core/insertion_marker_previewer.ts index 8998985a2..c4038c0c6 100644 --- a/core/insertion_marker_previewer.ts +++ b/core/insertion_marker_previewer.ts @@ -15,15 +15,6 @@ import * as registry from './registry.js'; import {Renderer as ZelosRenderer} from './renderers/zelos/renderer.js'; import {ConnectionType} from './connection_type.js'; -/** - * An error message to throw if the block created by createMarkerBlock_ is - * missing any components. - */ -const DUPLICATE_BLOCK_ERROR = - 'The insertion marker previewer tried to create a marker but the result ' + - 'is missing a connection. If you are using a mutator, make sure your ' + - 'domToMutation method is properly defined.'; - export class InsertionMarkerPreviewer implements IConnectionPreviewer { private readonly workspace: WorkspaceSvg; @@ -88,16 +79,6 @@ export class InsertionMarkerPreviewer implements IConnectionPreviewer { eventUtils.disable(); try { this.hidePreview(); - const dragged = draggedConn.getSourceBlock(); - const marker = this.createInsertionMarker(dragged); - const markerConn = this.getMatchingConnection( - dragged, - marker, - draggedConn, - ); - if (!markerConn) { - throw Error(DUPLICATE_BLOCK_ERROR); - } // TODO(7898): Instead of special casing, we should change the dragger to // track the change in distance between the dragged connection and the From dfcf5317c10c501c31300642b140f6cd176bcd1a Mon Sep 17 00:00:00 2001 From: Beka Westberg Date: Wed, 15 May 2024 19:51:55 +0000 Subject: [PATCH 05/25] fix: throwing errors for chameleon blocks (#8121) --- core/insertion_marker_previewer.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/core/insertion_marker_previewer.ts b/core/insertion_marker_previewer.ts index c4038c0c6..3cc9f1a04 100644 --- a/core/insertion_marker_previewer.ts +++ b/core/insertion_marker_previewer.ts @@ -113,13 +113,11 @@ export class InsertionMarkerPreviewer implements IConnectionPreviewer { private previewMarker( draggedConn: RenderedConnection, staticConn: RenderedConnection, - ): RenderedConnection { + ): RenderedConnection | null { const dragged = draggedConn.getSourceBlock(); const marker = this.createInsertionMarker(dragged); const markerConn = this.getMatchingConnection(dragged, marker, draggedConn); - if (!markerConn) { - throw Error('Could not create insertion marker to preview connection'); - } + if (!markerConn) return null; // Render disconnected from everything else so that we have a valid // connection location. @@ -192,7 +190,7 @@ export class InsertionMarkerPreviewer implements IConnectionPreviewer { orig: BlockSvg, marker: BlockSvg, origConn: RenderedConnection, - ) { + ): RenderedConnection | null { const origConns = orig.getConnections_(true); const markerConns = marker.getConnections_(true); if (origConns.length !== markerConns.length) return null; From 049993405e23cf4bf05943eb0d5070116715db2c Mon Sep 17 00:00:00 2001 From: Sampada Bhujel Date: Thu, 16 May 2024 04:31:23 +0545 Subject: [PATCH 06/25] fix: JSON deserialization not firing variable create events for blocks (#8122) * fix: JSON deserialization not firing variable create events for blocks * fix: extract logic for checking added variables and firing event to checkNewVariables function --- core/serialization/blocks.ts | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/core/serialization/blocks.ts b/core/serialization/blocks.ts index 5d409afe6..dbb58cffb 100644 --- a/core/serialization/blocks.ts +++ b/core/serialization/blocks.ts @@ -29,6 +29,8 @@ import { } from './exceptions.js'; import * as priorities from './priorities.js'; import * as serializationRegistry from './registry.js'; +import * as Variables from '../variables.js'; +import {VariableModel} from '../variable_model.js'; // TODO(#5160): Remove this once lint is fixed. /* eslint-disable no-use-before-define */ @@ -417,6 +419,7 @@ export function appendInternal( } eventUtils.disable(); + const variablesBeforeCreation = workspace.getAllVariables(); let block; try { block = appendPrivate(state, workspace, {parentConnection, isShadow}); @@ -424,7 +427,12 @@ export function appendInternal( eventUtils.enable(); } + // Fire a VarCreate event for each (if any) new variable created. + checkNewVariables(workspace, variablesBeforeCreation); + if (eventUtils.isEnabled()) { + // Block events come after var events, in case they refer to newly created + // variables. eventUtils.fire(new (eventUtils.get(eventUtils.BLOCK_CREATE))(block)); } eventUtils.setGroup(existingGroup); @@ -485,6 +493,33 @@ function appendPrivate( return block; } +/** + * Checks the workspace for any new variables that were created during the + * deserialization of a block and fires a VarCreate event for each. + * + * @param workspace The workspace where new variables are being created + * @param originalVariables The array of variables that existed in the workspace + * before adding the new block. + */ +function checkNewVariables( + workspace: Workspace, + originalVariables: VariableModel[], +) { + if (eventUtils.isEnabled()) { + const newVariables = Variables.getAddedVariables( + workspace, + originalVariables, + ); + // Fire a VarCreate event for each (if any) new variable created. + for (let i = 0; i < newVariables.length; i++) { + const thisVariable = newVariables[i]; + eventUtils.fire( + new (eventUtils.get(eventUtils.VAR_CREATE))(thisVariable), + ); + } + } +} + /** * Applies any coordinate information available on the state object to the * block. From 23af202796547f94966402fba4cee64da90abe94 Mon Sep 17 00:00:00 2001 From: Sam El-Husseini Date: Thu, 16 May 2024 10:36:36 -0700 Subject: [PATCH 07/25] fix: workspace comment bounding box affecting RTL zoom (#8125) --- core/comments/rendered_workspace_comment.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/core/comments/rendered_workspace_comment.ts b/core/comments/rendered_workspace_comment.ts index a2b4d689f..b37c125e1 100644 --- a/core/comments/rendered_workspace_comment.ts +++ b/core/comments/rendered_workspace_comment.ts @@ -124,7 +124,16 @@ export class RenderedWorkspaceComment getBoundingRectangle(): Rect { const loc = this.getRelativeToSurfaceXY(); const size = this.getSize(); - return new Rect(loc.y, loc.y + size.height, loc.x, loc.x + size.width); + let left; + let right; + if (this.workspace.RTL) { + left = loc.x - size.width; + right = loc.x; + } else { + left = loc.x; + right = loc.x + size.width; + } + return new Rect(loc.y, loc.y + size.height, left, right); } /** Move the comment by the given amounts in workspace coordinates. */ From 280568e66eb9ab18882cc1a92245b1c9b17eb99a Mon Sep 17 00:00:00 2001 From: Beka Westberg Date: Thu, 16 May 2024 18:20:43 +0000 Subject: [PATCH 08/25] chore: rename airstrike -> scatter (#8130) --- tests/playground.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/playground.html b/tests/playground.html index 288c16958..4ae723ce0 100644 --- a/tests/playground.html +++ b/tests/playground.html @@ -275,7 +275,7 @@ console.log(e); } - function airstrike(n) { + function scatter(n) { var prototypes = []; var toolbox = getToolboxElement(); var blocks = toolbox.getElementsByTagName('block'); @@ -440,8 +440,8 @@ .addEventListener('click', () => toCode('Dart')); document - .getElementById('airstrike') - .addEventListener('click', () => airstrike(100)); + .getElementById('scatter') + .addEventListener('click', () => scatter(100)); document .getElementById('spaghetti-xml') .addEventListener('click', () => spaghetti(8)); @@ -566,7 +566,7 @@

Stress test:   - +

From e4b734c0db537032a36ae907ba7af20bb5bb41f7 Mon Sep 17 00:00:00 2001 From: Maribeth Moffatt Date: Thu, 16 May 2024 17:54:28 -0700 Subject: [PATCH 09/25] fix: change cursor to grab on ws comment bar --- core/comments/comment_view.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/core/comments/comment_view.ts b/core/comments/comment_view.ts index 553f7d02b..c135e86f4 100644 --- a/core/comments/comment_view.ts +++ b/core/comments/comment_view.ts @@ -810,6 +810,7 @@ css.register(` } .blocklyCommentTopbarBackground { + cursor: grab; fill: var(--commentBorderColour); height: 24px; } From 44db3edce3688c09ea48a053fe7676a14ffebf9a Mon Sep 17 00:00:00 2001 From: Beka Westberg Date: Fri, 17 May 2024 15:26:23 +0000 Subject: [PATCH 10/25] fix: comment move events and snapping (#8127) --- core/comments/rendered_workspace_comment.ts | 2 -- core/dragging/comment_drag_strategy.ts | 8 +++++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/comments/rendered_workspace_comment.ts b/core/comments/rendered_workspace_comment.ts index b37c125e1..a70d5621e 100644 --- a/core/comments/rendered_workspace_comment.ts +++ b/core/comments/rendered_workspace_comment.ts @@ -147,7 +147,6 @@ export class RenderedWorkspaceComment override moveTo(location: Coordinate, reason?: string[] | undefined): void { super.moveTo(location, reason); this.view.moveTo(location); - this.snapToGrid(); } /** @@ -218,7 +217,6 @@ export class RenderedWorkspaceComment /** Ends the drag on the comment. */ endDrag(): void { - this.snapToGrid(); this.dragStrategy.endDrag(); } diff --git a/core/dragging/comment_drag_strategy.ts b/core/dragging/comment_drag_strategy.ts index 5fe5e356c..804ad2e9c 100644 --- a/core/dragging/comment_drag_strategy.ts +++ b/core/dragging/comment_drag_strategy.ts @@ -42,13 +42,15 @@ export class CommentDragStrategy implements IDragStrategy { endDrag(): void { this.fireMoveEvent(); - this.workspace.setResizesEnabled(true); - eventUtils.setGroup(false); - this.workspace .getLayerManager() ?.moveOffDragLayer(this.comment, layers.BLOCK); this.comment.setDragging(false); + + this.comment.snapToGrid(); + + this.workspace.setResizesEnabled(true); + eventUtils.setGroup(false); } private fireMoveEvent() { From 53cc12da77f19f33aeec95c2ce1b76f82b2f8eb9 Mon Sep 17 00:00:00 2001 From: Maribeth Bottorff Date: Fri, 17 May 2024 09:48:41 -0700 Subject: [PATCH 11/25] chore: fix playground context menu (#8139) --- tests/playgrounds/advanced_playground.html | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/tests/playgrounds/advanced_playground.html b/tests/playgrounds/advanced_playground.html index 515ff557f..1fcbbd812 100644 --- a/tests/playgrounds/advanced_playground.html +++ b/tests/playgrounds/advanced_playground.html @@ -26,7 +26,6 @@ function createWorkspace(blocklyDiv, options) { var workspace = Blockly.inject(blocklyDiv, options); - workspace.configureContextMenu = configureContextMenu.bind(workspace); return workspace; } @@ -101,6 +100,8 @@ }, }; + Blockly.ContextMenuItems.registerCommentOptions(); + createPlayground( document.getElementById('root'), createWorkspace, @@ -125,23 +126,6 @@ document.body.style.backgroundColor = '#d6d6ff'; // Familliar lilac. } } - - function configureContextMenu(menuOptions, e) { - var workspace = this; - var screenshotOption = { - text: 'Download Screenshot', - enabled: workspace.getTopBlocks().length, - callback: function () { - downloadScreenshot(workspace); - }, - }; - menuOptions.push(screenshotOption); - - // Adds a default-sized workspace comment to the workspace. - menuOptions.push( - Blockly.ContextMenu.workspaceCommentOption(workspace, e), - ); - } start(); From 75d81620ab617f43a005d741eb0c8157191cfb83 Mon Sep 17 00:00:00 2001 From: Beka Westberg Date: Fri, 17 May 2024 19:26:10 +0000 Subject: [PATCH 12/25] fix: undoing block delete over trashcan creates block in wrong place (#8126) --- core/dragging/dragger.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/dragging/dragger.ts b/core/dragging/dragger.ts index 25266799e..c86d8b1ea 100644 --- a/core/dragging/dragger.ts +++ b/core/dragging/dragger.ts @@ -13,6 +13,7 @@ import {WorkspaceSvg} from '../workspace_svg.js'; import {ComponentManager} from '../component_manager.js'; import {IDeleteArea} from '../interfaces/i_delete_area.js'; import * as registry from '../registry.js'; +import * as eventUtils from '../events/utils.js'; export class Dragger implements IDragger { protected startLoc: Coordinate; @@ -94,6 +95,7 @@ export class Dragger implements IDragger { /** Handles any drag cleanup. */ onDragEnd(e: PointerEvent) { + const origGroup = eventUtils.getGroup(); const dragTarget = this.workspace.getDragTarget(e); if (dragTarget) { this.dragTarget?.onDrop(this.draggable); @@ -109,7 +111,12 @@ export class Dragger implements IDragger { isDeletable(this.draggable) && this.wouldDeleteDraggable(e, this.draggable) ) { + // We want to make sure the delete gets grouped with any possible + // move event. + const newGroup = eventUtils.getGroup(); + eventUtils.setGroup(origGroup); this.draggable.dispose(); + eventUtils.setGroup(newGroup); } } From 12ff96674b39a319dd4398fada8b40db7b02b8f1 Mon Sep 17 00:00:00 2001 From: Beka Westberg Date: Fri, 17 May 2024 19:27:14 +0000 Subject: [PATCH 13/25] fix: comment handle position in RTL (#8151) --- core/bubbles/textinput_bubble.ts | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/core/bubbles/textinput_bubble.ts b/core/bubbles/textinput_bubble.ts index 2784b5cb6..346bc8413 100644 --- a/core/bubbles/textinput_bubble.ts +++ b/core/bubbles/textinput_bubble.ts @@ -201,16 +201,11 @@ export class TextInputBubble extends Bubble { this.textArea.style.width = `${widthMinusBorder - 4}px`; this.textArea.style.height = `${heightMinusBorder - 4}px`; + this.resizeGroup.setAttribute('y', `${heightMinusBorder}`); if (this.workspace.RTL) { - this.resizeGroup.setAttribute( - 'transform', - `translate(${Bubble.DOUBLE_BORDER}, ${heightMinusBorder}) scale(-1 1)`, - ); + this.resizeGroup.setAttribute('x', `${-Bubble.DOUBLE_BORDER}`); } else { - this.resizeGroup.setAttribute( - 'transform', - `translate(${widthMinusBorder}, ${heightMinusBorder})`, - ); + this.resizeGroup.setAttribute('x', `${widthMinusBorder}`); } super.setSize(size, relayout); From 5a8969f85515e6846210d7ff4676285dcb70e331 Mon Sep 17 00:00:00 2001 From: Neil Fraser Date: Fri, 17 May 2024 21:33:52 +0200 Subject: [PATCH 14/25] fix: Zelos comments shouldn't be bold (#8141) Resolves #8061 --- core/renderers/zelos/constants.ts | 4 ++++ media/resize-handle.svg | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/core/renderers/zelos/constants.ts b/core/renderers/zelos/constants.ts index f16ca8098..c50e66510 100644 --- a/core/renderers/zelos/constants.ts +++ b/core/renderers/zelos/constants.ts @@ -794,6 +794,10 @@ export class ConstantProvider extends BaseConstantProvider { `pt ${this.FIELD_TEXT_FONTFAMILY};`, `}`, + `${selector} .blocklyTextInputBubble textarea {`, + `font-weight: normal;`, + `}`, + // Fields. `${selector} .blocklyText {`, `fill: #fff;`, diff --git a/media/resize-handle.svg b/media/resize-handle.svg index 4002304e2..b46f177ab 100644 --- a/media/resize-handle.svg +++ b/media/resize-handle.svg @@ -1,3 +1,3 @@ - + From 3fd749205f201b96baabfbd18db54db5fc8fbe1d Mon Sep 17 00:00:00 2001 From: Beka Westberg Date: Fri, 17 May 2024 20:22:53 +0000 Subject: [PATCH 15/25] fix: dragging blocks by shadows to delete (#8138) * Revert "fix: dragging shadow blocks (#7992)" This reverts commit c0e6e6745f7bb07d40be5012b23f0fa6f1ec3cec. * fix: dragging by shadow not being deletable * fix: unselecting shadows * fix: revert changes to select and unselect --- core/block.ts | 11 +++++++ core/dragging/block_drag_strategy.ts | 49 ++-------------------------- core/gesture.ts | 2 +- 3 files changed, 14 insertions(+), 48 deletions(-) diff --git a/core/block.ts b/core/block.ts index 52191d63c..fa00c3ab4 100644 --- a/core/block.ts +++ b/core/block.ts @@ -675,6 +675,17 @@ export class Block implements IASTNodeLocation { return block; } + /** + * Returns this block if it is a shadow block, or the first non-shadow parent. + * + * @internal + */ + getFirstNonShadowBlock(): this { + if (!this.isShadow()) return this; + // We can assert the parent is non-null because shadows must have parents. + return this.getParent()!.getFirstNonShadowBlock(); + } + /** * Find all the blocks that are directly nested inside this one. * Includes value and statement inputs, as well as any following statement. diff --git a/core/dragging/block_drag_strategy.ts b/core/dragging/block_drag_strategy.ts index fadba28fb..fb913f882 100644 --- a/core/dragging/block_drag_strategy.ts +++ b/core/dragging/block_drag_strategy.ts @@ -55,24 +55,15 @@ export class BlockDragStrategy implements IDragStrategy { private dragging = false; - /** - * If this is a shadow block, the offset between this block and the parent - * block, to add to the drag location. In workspace units. - */ - private dragOffset = new Coordinate(0, 0); - constructor(private block: BlockSvg) { this.workspace = block.workspace; } /** Returns true if the block is currently movable. False otherwise. */ isMovable(): boolean { - if (this.block.isShadow()) { - return this.block.getParent()?.isMovable() ?? false; - } - return ( this.block.isOwnMovable() && + !this.block.isShadow() && !this.block.isDeadOrDying() && !this.workspace.options.readOnly && // We never drag blocks in the flyout, only create new blocks that are @@ -86,11 +77,6 @@ export class BlockDragStrategy implements IDragStrategy { * from any parent blocks. */ startDrag(e?: PointerEvent): void { - if (this.block.isShadow()) { - this.startDraggingShadow(e); - return; - } - this.dragging = true; if (!eventUtils.getGroup()) { eventUtils.setGroup(true); @@ -120,22 +106,6 @@ export class BlockDragStrategy implements IDragStrategy { this.workspace.getLayerManager()?.moveToDragLayer(this.block); } - /** Starts a drag on a shadow, recording the drag offset. */ - private startDraggingShadow(e?: PointerEvent) { - const parent = this.block.getParent(); - if (!parent) { - throw new Error( - 'Tried to drag a shadow block with no parent. ' + - 'Shadow blocks should always have parents.', - ); - } - this.dragOffset = Coordinate.difference( - parent.getRelativeToSurfaceXY(), - this.block.getRelativeToSurfaceXY(), - ); - parent.startDrag(e); - } - /** * Whether or not we should disconnect the block when a drag is started. * @@ -204,11 +174,6 @@ export class BlockDragStrategy implements IDragStrategy { /** Moves the block and updates any connection previews. */ drag(newLoc: Coordinate): void { - if (this.block.isShadow()) { - this.block.getParent()?.drag(Coordinate.sum(newLoc, this.dragOffset)); - return; - } - this.block.moveDuringDrag(newLoc); this.updateConnectionPreview( this.block, @@ -352,12 +317,7 @@ export class BlockDragStrategy implements IDragStrategy { * Cleans up any state at the end of the drag. Applies any pending * connections. */ - endDrag(e?: PointerEvent): void { - if (this.block.isShadow()) { - this.block.getParent()?.endDrag(e); - return; - } - + endDrag(): void { this.fireDragEndEvent(); this.fireMoveEvent(); @@ -413,11 +373,6 @@ export class BlockDragStrategy implements IDragStrategy { * including reconnecting connections. */ revertDrag(): void { - if (this.block.isShadow()) { - this.block.getParent()?.revertDrag(); - return; - } - this.startChildConn?.connect(this.block.nextConnection); if (this.startParentConn) { switch (this.startParentConn.type) { diff --git a/core/gesture.ts b/core/gesture.ts index 7970ed006..46938d24f 100644 --- a/core/gesture.ts +++ b/core/gesture.ts @@ -1015,7 +1015,7 @@ export class Gesture { // If the gesture already went through a bubble, don't set the start block. if (!this.startBlock && !this.startBubble) { this.startBlock = block; - common.setSelected(this.startBlock); + common.setSelected(this.startBlock.getFirstNonShadowBlock()); if (block.isInFlyout && block !== block.getRootBlock()) { this.setTargetBlock(block.getRootBlock()); } else { From 69db8a63d65088bc71ab225be0f841347758f61e Mon Sep 17 00:00:00 2001 From: Beka Westberg Date: Fri, 17 May 2024 20:23:13 +0000 Subject: [PATCH 16/25] fix: comment size not respecting collapsed-ness (#8136) * fix: comment size not respecting collapsed-ness * chore: fix tests the only way I know how, by adding explicit clock ticks --- core/comments/comment_view.ts | 7 +++++-- core/comments/rendered_workspace_comment.ts | 15 +++++++++++++-- tests/mocha/workspace_comment_test.js | 14 +++++++++++++- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/core/comments/comment_view.ts b/core/comments/comment_view.ts index c135e86f4..fbb9b3218 100644 --- a/core/comments/comment_view.ts +++ b/core/comments/comment_view.ts @@ -286,9 +286,12 @@ export class CommentView implements IRenderedElement { return this.svgRoot; } - /** Returns the current size of the comment in workspace units. */ + /** + * Returns the current size of the comment in workspace units. + * Respects collapsing. + */ getSize(): Size { - return this.size; + return this.collapsed ? this.topBarBackground.getBBox() : this.size; } /** diff --git a/core/comments/rendered_workspace_comment.ts b/core/comments/rendered_workspace_comment.ts index a70d5621e..8da0e8a72 100644 --- a/core/comments/rendered_workspace_comment.ts +++ b/core/comments/rendered_workspace_comment.ts @@ -120,10 +120,21 @@ export class RenderedWorkspaceComment return this.view.getSvgRoot(); } - /** Returns the bounding rectangle of this comment in workspace coordinates. */ + /** + * Returns the comment's size in workspace units. + * Does not respect collapsing. + */ + getSize(): Size { + return super.getSize(); + } + + /** + * Returns the bounding rectangle of this comment in workspace coordinates. + * Respects collapsing. + */ getBoundingRectangle(): Rect { const loc = this.getRelativeToSurfaceXY(); - const size = this.getSize(); + const size = this.view.getSize(); let left; let right; if (this.workspace.RTL) { diff --git a/tests/mocha/workspace_comment_test.js b/tests/mocha/workspace_comment_test.js index 977d82aa2..aa42cfbe2 100644 --- a/tests/mocha/workspace_comment_test.js +++ b/tests/mocha/workspace_comment_test.js @@ -15,7 +15,7 @@ import { suite('Workspace comment', function () { setup(function () { - sharedTestSetup.call(this); + this.clock = sharedTestSetup.call(this, {fireEventsNow: false}).clock; this.workspace = new Blockly.inject('blocklyDiv', {}); }); @@ -31,6 +31,8 @@ suite('Workspace comment', function () { this.workspace, ); + this.clock.runAll(); + assertEventFired( spy, Blockly.Events.CommentCreate, @@ -47,6 +49,8 @@ suite('Workspace comment', function () { this.renderedComment.dispose(); + this.clock.runAll(); + assertEventFired( spy, Blockly.Events.CommentDelete, @@ -63,6 +67,8 @@ suite('Workspace comment', function () { this.renderedComment.moveTo(new Blockly.utils.Coordinate(42, 42)); + this.clock.runAll(); + assertEventFired( spy, Blockly.Events.CommentMove, @@ -83,6 +89,8 @@ suite('Workspace comment', function () { this.renderedComment.setText('test text'); + this.clock.runAll(); + assertEventFired( spy, Blockly.Events.CommentChange, @@ -103,6 +111,8 @@ suite('Workspace comment', function () { this.renderedComment.setCollapsed(true); + this.clock.runAll(); + assertEventFired( spy, Blockly.Events.CommentCollapse, @@ -123,6 +133,8 @@ suite('Workspace comment', function () { this.renderedComment.setCollapsed(false); + this.clock.runAll(); + assertEventFired( spy, Blockly.Events.CommentCollapse, From c1a2284d9420894c1657ecc5d3f9b84d5b9fe789 Mon Sep 17 00:00:00 2001 From: Maribeth Bottorff Date: Fri, 17 May 2024 16:05:15 -0700 Subject: [PATCH 17/25] chore: load block factory from unpkg (#8154) --- demos/blockfactory/index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/demos/blockfactory/index.html b/demos/blockfactory/index.html index c72efb7fa..77687bce1 100644 --- a/demos/blockfactory/index.html +++ b/demos/blockfactory/index.html @@ -4,10 +4,10 @@ Blockly Demo: Blockly Developer Tools - - - - + + + + From 36b75696a21fbef5b49e9f9af7095bdc6c28934e Mon Sep 17 00:00:00 2001 From: Beka Westberg Date: Mon, 20 May 2024 16:03:59 +0000 Subject: [PATCH 18/25] fix: comment text area bottom border hidden (#8152) --- core/comments/comment_view.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/comments/comment_view.ts b/core/comments/comment_view.ts index fbb9b3218..d28e360ea 100644 --- a/core/comments/comment_view.ts +++ b/core/comments/comment_view.ts @@ -404,8 +404,6 @@ export class CommentView implements IRenderedElement { if (this.workspace.RTL) { this.foreignObject.setAttribute('x', `${-size.width}`); } - this.textArea.style.width = `${size.width}px`; - this.textArea.style.height = `${size.height}px`; } /** From 70ca676c242f71921fb0c4689b29e719463cba40 Mon Sep 17 00:00:00 2001 From: Neil Fraser Date: Mon, 20 May 2024 18:30:38 +0200 Subject: [PATCH 19/25] fix: Properly size comments. (#8158) * Properly size comments. Fixes multiple rendering and sizing issues across different browsers. Tip: `text-overflow: hidden;` is not legal CSS and did nothing. Resolves #8142 --- core/bubbles/textinput_bubble.ts | 7 +++---- core/comments/comment_view.ts | 1 - core/comments/rendered_workspace_comment.ts | 9 +++++++++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/core/bubbles/textinput_bubble.ts b/core/bubbles/textinput_bubble.ts index 346bc8413..fcbb2cf5d 100644 --- a/core/bubbles/textinput_bubble.ts +++ b/core/bubbles/textinput_bubble.ts @@ -143,7 +143,7 @@ export class TextInputBubble extends Bubble { /** Binds events to the text area element. */ private bindTextAreaEvents(textArea: HTMLTextAreaElement) { - // Don't zoom with mousewheel. + // Don't zoom with mousewheel; let it scroll instead. browserEvents.conditionalBind(textArea, 'wheel', this, (e: Event) => { e.stopPropagation(); }); @@ -198,8 +198,6 @@ export class TextInputBubble extends Bubble { const heightMinusBorder = size.height - Bubble.DOUBLE_BORDER; this.inputRoot.setAttribute('width', `${widthMinusBorder}`); this.inputRoot.setAttribute('height', `${heightMinusBorder}`); - this.textArea.style.width = `${widthMinusBorder - 4}px`; - this.textArea.style.height = `${heightMinusBorder - 4}px`; this.resizeGroup.setAttribute('y', `${heightMinusBorder}`); if (this.workspace.RTL) { @@ -310,6 +308,7 @@ Css.register(` outline: 0; padding: 3px; resize: none; - text-overflow: hidden; + width: 100%; + height: 100%; } `); diff --git a/core/comments/comment_view.ts b/core/comments/comment_view.ts index d28e360ea..9195833a0 100644 --- a/core/comments/comment_view.ts +++ b/core/comments/comment_view.ts @@ -776,7 +776,6 @@ css.register(` border: 1px solid var(--commentBorderColour); outline: 0; resize: none; - overflow: hidden; box-sizing: border-box; padding: 8px; width: 100%; diff --git a/core/comments/rendered_workspace_comment.ts b/core/comments/rendered_workspace_comment.ts index 8da0e8a72..9ff1ce112 100644 --- a/core/comments/rendered_workspace_comment.ts +++ b/core/comments/rendered_workspace_comment.ts @@ -66,6 +66,15 @@ export class RenderedWorkspaceComment this, this.startGesture, ); + // Don't zoom with mousewheel; let it scroll instead. + browserEvents.conditionalBind( + this.view.getSvgRoot(), + 'wheel', + this, + (e: Event) => { + e.stopPropagation(); + }, + ); } /** From 139b4b993fdff26f34a8796cbfbcaaa167d31445 Mon Sep 17 00:00:00 2001 From: Beka Westberg Date: Mon, 20 May 2024 16:54:30 +0000 Subject: [PATCH 20/25] fix: creating comments in RTL (#8153) --- core/comments/rendered_workspace_comment.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/comments/rendered_workspace_comment.ts b/core/comments/rendered_workspace_comment.ts index 9ff1ce112..b5818895f 100644 --- a/core/comments/rendered_workspace_comment.ts +++ b/core/comments/rendered_workspace_comment.ts @@ -143,7 +143,7 @@ export class RenderedWorkspaceComment */ getBoundingRectangle(): Rect { const loc = this.getRelativeToSurfaceXY(); - const size = this.view.getSize(); + const size = this.view?.getSize() ?? this.getSize(); let left; let right; if (this.workspace.RTL) { From 7c4b0bd7039b73f968f6aa9c987f19c0b4b83901 Mon Sep 17 00:00:00 2001 From: Beka Westberg Date: Mon, 20 May 2024 16:58:48 +0000 Subject: [PATCH 21/25] fix: delete area animation (#8149) * fix: delete area animation * chore: format * Update core/dragging/dragger.ts Co-authored-by: Christopher Allen --------- Co-authored-by: Christopher Allen --- core/block_animations.ts | 14 +++++--------- core/css.ts | 2 +- core/dragging/dragger.ts | 16 ++++++++++++---- core/layer_manager.ts | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 50 insertions(+), 14 deletions(-) diff --git a/core/block_animations.ts b/core/block_animations.ts index d3bd13118..f3fc3d454 100644 --- a/core/block_animations.ts +++ b/core/block_animations.ts @@ -42,15 +42,11 @@ export function disposeUiEffect(block: BlockSvg) { // Deeply clone the current block. const clone: SVGGElement = svgGroup.cloneNode(true) as SVGGElement; clone.setAttribute('transform', 'translate(' + xy.x + ',' + xy.y + ')'); - if (workspace.isDragging()) { - workspace.getLayerManager()?.moveToDragLayer({ - getSvgRoot: () => { - return clone; - }, - }); - } else { - workspace.getLayerManager()?.getBlockLayer().appendChild(clone); - } + workspace.getLayerManager()?.appendToAnimationLayer({ + getSvgRoot: () => { + return clone; + }, + }); const cloneRect = { 'x': xy.x, 'y': xy.y, diff --git a/core/css.ts b/core/css.ts index 9940c9fad..5a44cc0b6 100644 --- a/core/css.ts +++ b/core/css.ts @@ -500,7 +500,7 @@ input[type=number] { margin-right: -24px; } -.blocklyBlockDragSurface { +.blocklyBlockDragSurface, .blocklyAnimationLayer { position: absolute; top: 0; left: 0; diff --git a/core/dragging/dragger.ts b/core/dragging/dragger.ts index c86d8b1ea..71cfae471 100644 --- a/core/dragging/dragger.ts +++ b/core/dragging/dragger.ts @@ -14,6 +14,8 @@ import {ComponentManager} from '../component_manager.js'; import {IDeleteArea} from '../interfaces/i_delete_area.js'; import * as registry from '../registry.js'; import * as eventUtils from '../events/utils.js'; +import * as blockAnimations from '../block_animations.js'; +import {BlockSvg} from '../block_svg.js'; export class Dragger implements IDragger { protected startLoc: Coordinate; @@ -105,12 +107,18 @@ export class Dragger implements IDragger { this.draggable.revertDrag(); } + const wouldDelete = + isDeletable(this.draggable) && + this.wouldDeleteDraggable(e, this.draggable); + + // TODO(#8148): use a generalized API instead of an instanceof check. + if (wouldDelete && this.draggable instanceof BlockSvg) { + blockAnimations.disposeUiEffect(this.draggable); + } + this.draggable.endDrag(e); - if ( - isDeletable(this.draggable) && - this.wouldDeleteDraggable(e, this.draggable) - ) { + if (wouldDelete && isDeletable(this.draggable)) { // We want to make sure the delete gets grouped with any possible // move event. const newGroup = eventUtils.getGroup(); diff --git a/core/layer_manager.ts b/core/layer_manager.ts index c27339d9b..e181e6801 100644 --- a/core/layer_manager.ts +++ b/core/layer_manager.ts @@ -15,6 +15,8 @@ import {Coordinate} from './utils/coordinate.js'; export class LayerManager { /** The layer elements being dragged are appended to. */ private dragLayer: SVGGElement | undefined; + /** The layer elements being animated are appended to. */ + private animationLayer: SVGGElement | undefined; /** The layers elements not being dragged are appended to. */ private layers = new Map(); @@ -26,6 +28,7 @@ export class LayerManager { // been appended yet. if (injectionDiv) { this.dragLayer = this.createDragLayer(injectionDiv); + this.animationLayer = this.createAnimationLayer(injectionDiv); } // We construct these manually so we can add the css class for backwards @@ -48,6 +51,35 @@ export class LayerManager { return dom.createSvgElement(Svg.G, {}, svg); } + private createAnimationLayer(injectionDiv: Element) { + const svg = dom.createSvgElement(Svg.SVG, { + 'class': 'blocklyAnimationLayer', + 'xmlns': dom.SVG_NS, + 'xmlns:html': dom.HTML_NS, + 'xmlns:xlink': dom.XLINK_NS, + 'version': '1.1', + }); + injectionDiv.append(svg); + return dom.createSvgElement(Svg.G, {}, svg); + } + + /** + * Appends the element to the animation layer. The animation layer doesn't + * move when the workspace moves, so e.g. delete animations don't move + * when a block delete triggers a workspace resize. + * + * @internal + */ + appendToAnimationLayer(elem: IRenderedElement) { + const currentTransform = this.dragLayer?.getAttribute('transform'); + // Only update the current transform when appending, so animations don't + // move if the workspace moves. + if (currentTransform) { + this.animationLayer?.setAttribute('transform', currentTransform); + } + this.animationLayer?.appendChild(elem.getSvgRoot()); + } + /** * Translates layers when the workspace is dragged or zoomed. * From fcdb8fc33d9e21699a6eed55f1eabaf63bb76798 Mon Sep 17 00:00:00 2001 From: Neil Fraser Date: Mon, 20 May 2024 18:59:24 +0200 Subject: [PATCH 22/25] fix: Normalize CSS between comment types (#8161) Merge the CSS so that both comment types (block and workspace) are the same -- other than a border. --- core/bubbles/textinput_bubble.ts | 4 ++-- core/comments/comment_view.ts | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/bubbles/textinput_bubble.ts b/core/bubbles/textinput_bubble.ts index fcbb2cf5d..d7d1f5ae7 100644 --- a/core/bubbles/textinput_bubble.ts +++ b/core/bubbles/textinput_bubble.ts @@ -303,10 +303,10 @@ Css.register(` .blocklyTextInputBubble .blocklyTextarea { background-color: var(--commentFillColour); border: 0; + box-sizing: border-box; display: block; - margin: 0; outline: 0; - padding: 3px; + padding: 5px; resize: none; width: 100%; height: 100%; diff --git a/core/comments/comment_view.ts b/core/comments/comment_view.ts index 9195833a0..52f92b567 100644 --- a/core/comments/comment_view.ts +++ b/core/comments/comment_view.ts @@ -774,13 +774,13 @@ css.register(` .blocklyComment .blocklyTextarea { background-color: var(--commentFillColour); border: 1px solid var(--commentBorderColour); - outline: 0; - resize: none; box-sizing: border-box; - padding: 8px; + display: block; + outline: 0; + padding: 5px; + resize: none; width: 100%; height: 100%; - display: block; } .blocklyReadonly.blocklyComment .blocklyTextarea { From 28de9ef494e2d8e9f897f4502eefbca418c26269 Mon Sep 17 00:00:00 2001 From: Maribeth Bottorff Date: Mon, 20 May 2024 10:09:47 -0700 Subject: [PATCH 23/25] fix: paste in a better spot (#8123) * fix: paste in a better spot * fix: include bump offset * chore: rename param --------- Co-authored-by: Beka Westberg --- core/clipboard/block_paster.ts | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/core/clipboard/block_paster.ts b/core/clipboard/block_paster.ts index fefc9947d..f82adf2b3 100644 --- a/core/clipboard/block_paster.ts +++ b/core/clipboard/block_paster.ts @@ -30,11 +30,21 @@ export class BlockPaster implements IPaster { copyData.blockState['y'] = coordinate.y; } + // After appending the block to the workspace, it will be bumped from its neighbors + // However, the algorithm for deciding where to paste a block depends on + // the starting position of the copied block, so we'll pass those coordinates along + const initialCoordinates = + coordinate || + new Coordinate( + copyData.blockState['x'] || 0, + copyData.blockState['y'] || 0, + ); + eventUtils.disable(); let block; try { block = append(copyData.blockState, workspace) as BlockSvg; - moveBlockToNotConflict(block); + moveBlockToNotConflict(block, initialCoordinates); } finally { eventUtils.enable(); } @@ -56,12 +66,20 @@ export class BlockPaster implements IPaster { * Exported for testing. * * @param block The block to move to an unambiguous location. + * @param originalPosition The initial coordinate to start searching from, + * likely the position of the copied block. * @internal */ -export function moveBlockToNotConflict(block: BlockSvg) { +export function moveBlockToNotConflict( + block: BlockSvg, + originalPosition: Coordinate, +) { const workspace = block.workspace; const snapRadius = config.snapRadius; - const coord = block.getRelativeToSurfaceXY(); + const bumpOffset = Coordinate.difference( + originalPosition, + block.getRelativeToSurfaceXY(), + ); const offset = new Coordinate(0, 0); // getRelativeToSurfaceXY is really expensive, so we want to cache this. const otherCoords = workspace @@ -70,8 +88,11 @@ export function moveBlockToNotConflict(block: BlockSvg) { .map((b) => b.getRelativeToSurfaceXY()); while ( - blockOverlapsOtherExactly(Coordinate.sum(coord, offset), otherCoords) || - blockIsInSnapRadius(block, offset, snapRadius) + blockOverlapsOtherExactly( + Coordinate.sum(originalPosition, offset), + otherCoords, + ) || + blockIsInSnapRadius(block, Coordinate.sum(bumpOffset, offset), snapRadius) ) { if (workspace.RTL) { offset.translate(-snapRadius, snapRadius * 2); @@ -80,7 +101,7 @@ export function moveBlockToNotConflict(block: BlockSvg) { } } - block!.moveTo(Coordinate.sum(coord, offset)); + block!.moveTo(Coordinate.sum(originalPosition, offset)); } /** From b4414c314247c126f240593a2dc9f9b6dc8d0a5a Mon Sep 17 00:00:00 2001 From: Maribeth Bottorff Date: Mon, 20 May 2024 11:32:33 -0700 Subject: [PATCH 24/25] chore: rollup of updates from TranslateWiki (#8162) * chore: rollup of updates from TranslateWiki * chore: Roll up additional translatewiki changes Not sure how these were omitted from PR originally. --------- Co-authored-by: Christopher Allen --- msg/json/de.json | 38 +++---- msg/json/el.json | 231 ++++++++++++++++++++-------------------- msg/json/es.json | 2 + msg/json/fa.json | 4 +- msg/json/fr.json | 7 +- msg/json/gl.json | 2 + msg/json/ia.json | 2 + msg/json/ko.json | 4 + msg/json/ms.json | 5 +- msg/json/ne.json | 237 ++++++++++++++++++++++++++++++++++++++---- msg/json/nl.json | 14 +-- msg/json/pt-br.json | 5 +- msg/json/ru.json | 4 +- msg/json/ta.json | 9 +- msg/json/tdd.json | 7 +- msg/json/tr.json | 5 +- msg/json/vi.json | 6 +- msg/json/zh-hans.json | 5 +- msg/json/zh-hant.json | 23 ++-- 19 files changed, 422 insertions(+), 188 deletions(-) diff --git a/msg/json/de.json b/msg/json/de.json index eca87b606..33ed71910 100644 --- a/msg/json/de.json +++ b/msg/json/de.json @@ -14,6 +14,7 @@ "Sushi", "THINK", "Tiin", + "TomatoCake", "Zgtm", "아라" ] @@ -42,7 +43,7 @@ "REDO": "Wiederholen", "CHANGE_VALUE_TITLE": "Wert ändern:", "RENAME_VARIABLE": "Variable umbenennen …", - "RENAME_VARIABLE_TITLE": "Alle \"%1\"-Variablen umbenennen in:", + "RENAME_VARIABLE_TITLE": "Alle „%1“-Variablen umbenennen in:", "NEW_VARIABLE": "Variable erstellen …", "NEW_STRING_VARIABLE": "Zeichenfolgenvariable erstellen …", "NEW_NUMBER_VARIABLE": "Zahlenvariable erstellen …", @@ -51,6 +52,7 @@ "NEW_VARIABLE_TITLE": "Name der neuen Variable:", "VARIABLE_ALREADY_EXISTS": "Eine Variable namens „%1“ ist bereits vorhanden.", "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Eine Variable namens „%1“ ist bereits für einen anderen Typ vorhanden: „%2“.", + "VARIABLE_ALREADY_EXISTS_FOR_A_PARAMETER": "Eine Variable mit dem Namen „%1“ ist bereits als Parameter in der Funktion „%2“ vorhanden.", "DELETE_VARIABLE_CONFIRMATION": "%1 Verwendungen der Variable „%2“ löschen?", "CANNOT_DELETE_VARIABLE_PROCEDURE": "Die Variable „%1“ kann nicht gelöscht werden, da sie Teil der Definition der Funktion „%2“ ist.", "DELETE_VARIABLE": "Die Variable „%1“ löschen", @@ -72,7 +74,7 @@ "CONTROLS_REPEAT_TITLE": "wiederhole %1-mal:", "CONTROLS_REPEAT_INPUT_DO": "mache", "CONTROLS_REPEAT_TOOLTIP": "Eine Anweisung mehrfach ausführen.", - "CONTROLS_WHILEUNTIL_HELPURL": "https://de.wikipedia.org/wiki/Schleife_%28Programmierung%29", + "CONTROLS_WHILEUNTIL_HELPURL": "https://de.wikipedia.org/wiki/Schleife_(Programmierung)#Kopfgesteuerte_Schleife", "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "wiederhole solange", "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "wiederhole bis", "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Führt Anweisungen aus, solange die Bedingung wahr ist.", @@ -99,7 +101,7 @@ "CONTROLS_IF_IF_TOOLTIP": "Hinzufügen, entfernen oder sortieren von Sektionen", "CONTROLS_IF_ELSEIF_TOOLTIP": "Eine weitere Bedingung hinzufügen.", "CONTROLS_IF_ELSE_TOOLTIP": "Eine sonst-Bedingung hinzufügen. Führt eine Anweisung aus, falls keine Bedingung zutrifft.", - "LOGIC_COMPARE_HELPURL": "https://de.wikipedia.org/wiki/Vergleich_%28Zahlen%29", + "LOGIC_COMPARE_HELPURL": "https://de.wikipedia.org/wiki/Vergleich_(Zahlen)", "LOGIC_COMPARE_TOOLTIP_EQ": "Ist wahr, falls beide Werte gleich sind.", "LOGIC_COMPARE_TOOLTIP_NEQ": "Ist wahr, falls beide Werte unterschiedlich sind.", "LOGIC_COMPARE_TOOLTIP_LT": "Ist wahr, falls der erste Wert kleiner als der zweite Wert ist.", @@ -108,7 +110,7 @@ "LOGIC_COMPARE_TOOLTIP_GTE": "Ist wahr, falls der erste Wert größer als oder gleich groß wie der zweite Wert ist.", "LOGIC_OPERATION_TOOLTIP_AND": "Ist wahr, falls beide Werte wahr sind.", "LOGIC_OPERATION_AND": "und", - "LOGIC_OPERATION_TOOLTIP_OR": "Ist wahr, falls einer der beiden Werte wahr ist.", + "LOGIC_OPERATION_TOOLTIP_OR": "Ist wahr, falls mindestens einer der beiden Werte wahr ist.", "LOGIC_OPERATION_OR": "oder", "LOGIC_NEGATE_TITLE": "nicht %1", "LOGIC_NEGATE_TOOLTIP": "Ist wahr, falls der Eingabewert unwahr ist. Ist unwahr, falls der Eingabewert wahr ist.", @@ -140,8 +142,8 @@ "MATH_SINGLE_HELPURL": "https://de.wikipedia.org/wiki/Quadratwurzel", "MATH_SINGLE_OP_ROOT": "Quadratwurzel", "MATH_SINGLE_TOOLTIP_ROOT": "Ist die Quadratwurzel einer Zahl.", - "MATH_SINGLE_OP_ABSOLUTE": "Betrag", - "MATH_SINGLE_TOOLTIP_ABS": "Ist der Betrag einer Zahl.", + "MATH_SINGLE_OP_ABSOLUTE": "Absolutbetrag", + "MATH_SINGLE_TOOLTIP_ABS": "Ist der Absolutbetrag einer Zahl.", "MATH_SINGLE_TOOLTIP_NEG": "Negiert eine Zahl.", "MATH_SINGLE_TOOLTIP_LN": "Ist der natürliche Logarithmus einer Zahl.", "MATH_SINGLE_TOOLTIP_LOG10": "Ist der dekadische Logarithmus einer Zahl.", @@ -149,7 +151,7 @@ "MATH_SINGLE_TOOLTIP_POW10": "Rechnet 10 hoch eine Zahl.", "MATH_TRIG_HELPURL": "https://de.wikipedia.org/wiki/Trigonometrie", "MATH_TRIG_TOOLTIP_SIN": "Ist der Sinus des Winkels (nicht Radiant).", - "MATH_TRIG_TOOLTIP_COS": "Ist der Kosinus des Winkels.", + "MATH_TRIG_TOOLTIP_COS": "Ist der Kosinus des Winkels (nicht Radiant).", "MATH_TRIG_TOOLTIP_TAN": "Ist der Tangens des Winkels (nicht Radiant).", "MATH_TRIG_TOOLTIP_ASIN": "Ist der Arkussinus des Eingabewertes.", "MATH_TRIG_TOOLTIP_ACOS": "Ist der Arkuskosinus des Eingabewertes.", @@ -166,7 +168,7 @@ "MATH_IS_TOOLTIP": "Überprüft, ob eine Zahl gerade, ungerade, eine Primzahl, ganzzahlig, positiv, negativ oder durch eine zweite Zahl teilbar ist. Gibt wahr oder falsch zurück.", "MATH_CHANGE_HELPURL": "https://de.wikipedia.org/wiki/Inkrement_und_Dekrement", "MATH_CHANGE_TITLE": "erhöhe %1 um %2", - "MATH_CHANGE_TOOLTIP": "Addiert eine Zahl zu \"%1\".", + "MATH_CHANGE_TOOLTIP": "Addiert eine Zahl zur Variable „%1“.", "MATH_ROUND_HELPURL": "https://de.wikipedia.org/wiki/Runden", "MATH_ROUND_TOOLTIP": "Eine Zahl auf- oder abrunden.", "MATH_ROUND_OPERATOR_ROUND": "runde", @@ -216,7 +218,7 @@ "TEXT_LENGTH_TOOLTIP": "Die Anzahl von Zeichen in einem Text (inkl. Leerzeichen).", "TEXT_ISEMPTY_TITLE": "%1 ist leer", "TEXT_ISEMPTY_TOOLTIP": "Ist wahr, falls der Text keine Zeichen enthält.", - "TEXT_INDEXOF_TOOLTIP": "Findet das erste / letzte Auftreten eines Suchbegriffs in einem Text. Gibt die Position des Begriffs zurück oder %1 falls der Suchbegriff nicht gefunden wurde.", + "TEXT_INDEXOF_TOOLTIP": "Findet das erste / letzte Auftreten eines Suchbegriffs in einem Text. Gibt die Position des Begriffs zurück oder %1, falls der Suchbegriff nicht gefunden wurde.", "TEXT_INDEXOF_TITLE": "im Text %1 %2 %3", "TEXT_INDEXOF_OPERATOR_FIRST": "suche erstes Auftreten des Begriffs", "TEXT_INDEXOF_OPERATOR_LAST": "suche letztes Auftreten des Begriffs", @@ -264,7 +266,7 @@ "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "Liste", "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Hinzufügen, entfernen und sortieren von Elementen.", "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Ein Element zur Liste hinzufügen.", - "LISTS_REPEAT_TOOLTIP": "Erzeugt eine Liste mit einer variablen Anzahl von Elementen.", + "LISTS_REPEAT_TOOLTIP": "Erzeugt eine Liste mit der angegebenen Anzahl an Elementen des angegebenen Wertes.", "LISTS_REPEAT_TITLE": "erzeuge Liste mit %2-mal dem Element %1", "LISTS_LENGTH_TITLE": "Länge von %1", "LISTS_LENGTH_TOOLTIP": "Die Anzahl von Elementen in der Liste.", @@ -279,9 +281,9 @@ "LISTS_GET_INDEX_REMOVE": "entferne", "LISTS_GET_INDEX_FROM_START": "das", "LISTS_GET_INDEX_FROM_END": "von hinten das", - "LISTS_GET_INDEX_FIRST": "Erste", - "LISTS_GET_INDEX_LAST": "Letzte", - "LISTS_GET_INDEX_RANDOM": "Zufällig", + "LISTS_GET_INDEX_FIRST": "das erste", + "LISTS_GET_INDEX_LAST": "das letzte", + "LISTS_GET_INDEX_RANDOM": "ein zufälliges", "LISTS_GET_INDEX_TAIL": "Element", "LISTS_INDEX_FROM_START_TOOLTIP": "%1 ist das erste Element.", "LISTS_INDEX_FROM_END_TOOLTIP": "%1 ist das letzte Element.", @@ -306,7 +308,7 @@ "LISTS_SET_INDEX_TOOLTIP_SET_RANDOM": "Setzt ein zufälliges Element in der Liste.", "LISTS_SET_INDEX_TOOLTIP_INSERT_FROM": "Fügt das Element an der angegebenen Position in die Liste ein.", "LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST": "Fügt das Element an den Anfang der Liste an.", - "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Fügt das Element ans Ende der Liste an.", + "LISTS_SET_INDEX_TOOLTIP_INSERT_LAST": "Fügt das Element an das Ende der Liste an.", "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Fügt das Element zufällig in die Liste ein.", "LISTS_GET_SUBLIST_START_FROM_START": "nimm Teilliste ab", "LISTS_GET_SUBLIST_START_FROM_END": "nimm Teilliste ab von hinten", @@ -348,9 +350,9 @@ "PROCEDURES_ALLOW_STATEMENTS": "Anweisungen erlauben", "PROCEDURES_DEF_DUPLICATE_WARNING": "Warnung: Dieser Funktionsblock hat zwei gleich benannte Parameter.", "PROCEDURES_CALLNORETURN_HELPURL": "https://de.wikipedia.org/wiki/Unterprogramm", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Rufe einen Funktionsblock ohne Rückgabewert auf.", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Ruft die benutzerdefinierte Funktion „%1“ auf.", "PROCEDURES_CALLRETURN_HELPURL": "https://de.wikipedia.org/wiki/Unterprogramm", - "PROCEDURES_CALLRETURN_TOOLTIP": "Rufe einen Funktionsblock mit Rückgabewert auf.", + "PROCEDURES_CALLRETURN_TOOLTIP": "Ruft die benutzerdefinierte Funktion „%1“ auf und verwendet ihre Ausgabe.", "PROCEDURES_MUTATORCONTAINER_TITLE": "Parameter", "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Die Eingaben zu dieser Funktion hinzufügen, entfernen oder neu anordnen.", "PROCEDURES_MUTATORARG_TITLE": "Variable:", @@ -360,8 +362,8 @@ "PROCEDURES_IFRETURN_TOOLTIP": "Gibt den zweiten Wert zurück und verlässt die Funktion, falls der erste Wert wahr ist.", "PROCEDURES_IFRETURN_WARNING": "Warnung: Dieser Block darf nur innerhalb eines Funktionsblocks genutzt werden.", "WORKSPACE_COMMENT_DEFAULT_TEXT": "Teile etwas mit…", - "WORKSPACE_ARIA_LABEL": "Blockly Arbeitsbereich", + "WORKSPACE_ARIA_LABEL": "Blockly-Arbeitsbereich", "COLLAPSED_WARNINGS_WARNING": "Eingeklappte Blöcke enthalten Warnungen.", - "DIALOG_OK": "OK", + "DIALOG_OK": "Okay", "DIALOG_CANCEL": "Abbrechen" } diff --git a/msg/json/el.json b/msg/json/el.json index 6d6638abf..fe2389196 100644 --- a/msg/json/el.json +++ b/msg/json/el.json @@ -3,6 +3,7 @@ "authors": [ "Azountas", "Ch.zarafidis", + "Dimitris131", "Espertus", "Evropi", "GR", @@ -32,75 +33,75 @@ "ADD_COMMENT": "Προσθήκη σχολίου", "REMOVE_COMMENT": "Αφαίρεση σχολίου", "DUPLICATE_COMMENT": "Αντιγραφή σχόλιου", - "EXTERNAL_INPUTS": "Εξωτερικές προσθήκες", - "INLINE_INPUTS": "Εσωτερικές προσθήκες", + "EXTERNAL_INPUTS": "Εξωτερικές είσοδοι", + "INLINE_INPUTS": "Ενσωματωμένες είσοδοι", "DELETE_BLOCK": "Διαγραφή μπλοκ", "DELETE_X_BLOCKS": "Διαγραφή %1 μπλοκ", "DELETE_ALL_BLOCKS": "Να διαγραφούν όλα τα %1 μπλοκ;", - "CLEAN_UP": "Ταξινομείστε τα Μπλοκ", - "COLLAPSE_BLOCK": "Σύμπτυξε Το Μπλοκ", - "COLLAPSE_ALL": "Σύμπτυξε Όλα Τα Μπλοκ", - "EXPAND_BLOCK": "Επέκτεινε Το Μπλοκ", - "EXPAND_ALL": "Επέκτεινε Όλα Τα Μπλοκ", - "DISABLE_BLOCK": "Απενεργοποίησε Το Μπλοκ", - "ENABLE_BLOCK": "Ενεργοποίησε Το Μπλοκ", + "CLEAN_UP": "Εκκαθάριση μπλοκ", + "COLLAPSE_BLOCK": "Σύμπτυξη μπλοκ", + "COLLAPSE_ALL": "Σύμπτυξη μπλοκ", + "EXPAND_BLOCK": "Ανάπτυξη μπλοκ", + "EXPAND_ALL": "Ανάπτυξη μπλοκ", + "DISABLE_BLOCK": "Απενεργοποίηση μπλοκ", + "ENABLE_BLOCK": "Ενεργοποίηση μπλοκ", "HELP": "Βοήθεια", "UNDO": "Αναίρεση", "REDO": "Ακύρωση αναίρεσης", "CHANGE_VALUE_TITLE": "Άλλαξε την τιμή:", "RENAME_VARIABLE": "Μετονόμασε τη μεταβλητή...", - "RENAME_VARIABLE_TITLE": "Μετονόμασε όλες τις μεταβλητές «%1» σε:", + "RENAME_VARIABLE_TITLE": "Μετονόμασε όλες τις μεταβλητές '%1' σε:", "NEW_VARIABLE": "Δημιουργήστε μεταβλητή...", - "NEW_STRING_VARIABLE": "Δημιουργία μεταβλητή συμβολοσειράς...", - "NEW_NUMBER_VARIABLE": "Δημιουργία μεταβλητής αριθμού...", - "NEW_COLOUR_VARIABLE": "Δημιουργία μεταβλητής χρώματος...", + "NEW_STRING_VARIABLE": "Δημιούργησε μεταβλητή συμβολοσειράς...", + "NEW_NUMBER_VARIABLE": "Δημιούργησε μεταβλητή αριθμού...", + "NEW_COLOUR_VARIABLE": "Δημιούργησε μεταβλητή χρώματος...", "NEW_VARIABLE_TYPE_TITLE": "Νέος τύπος μεταβλητής:", "NEW_VARIABLE_TITLE": "Νέο όνομα μεταβλητής:", "VARIABLE_ALREADY_EXISTS": "Η μεταβλητή με το όνομα '%1' υπάρχει ήδη.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Μια μεταβλητή με όνομα '%1' υπάρχει πάντα για έναν άλλο τύπο: '%2'.", - "VARIABLE_ALREADY_EXISTS_FOR_A_PARAMETER": "Μια μεταβλητή με το όνομα «%1» υπάρχει ήδη ως παράμετρος στη διαδικασία «%2».", - "DELETE_VARIABLE_CONFIRMATION": "Θέλετε να διαγράψετε το %1 που χρησιμοποιείτε από την μεταβλητή '%2'?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Δεν μπορώ να διαγράψω την μεταβλητή '%1' διότι είναι μέρος του ορισμού της λειτουργίας '%2'", - "DELETE_VARIABLE": "Διαγράψτε την μεταβλητή '%1'", - "COLOUR_PICKER_TOOLTIP": "Επιτρέπει επιλογή χρώματος από την παλέτα.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Μια μεταβλητή με όνομα '%1' υπάρχει ήδη για έναν άλλο τύπο: '%2'.", + "VARIABLE_ALREADY_EXISTS_FOR_A_PARAMETER": "Μια μεταβλητή με το όνομα '%1' υπάρχει ήδη ως παράμετρος στη διαδικασία '%2'.", + "DELETE_VARIABLE_CONFIRMATION": "Θέλετε να διαγράψετε %1 χρήσεις της μεταβλητής '%2'?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Δεν μπορείς να διαγράψεις την μεταβλητή '%1' διότι είναι μέρος του ορισμού της συνάρτησης '%2'", + "DELETE_VARIABLE": "Διάγραψε την μεταβλητή '%1'", + "COLOUR_PICKER_TOOLTIP": "Επέλεξε ένα χρώμα από την παλέτα.", "COLOUR_RANDOM_TITLE": "τυχαίο χρώμα", - "COLOUR_RANDOM_TOOLTIP": "Επιλέγει χρώμα τυχαία.", + "COLOUR_RANDOM_TOOLTIP": "Επέλεξε ένα χρώμα τυχαία.", "COLOUR_RGB_TITLE": "χρώμα με", "COLOUR_RGB_RED": "κόκκινο", "COLOUR_RGB_GREEN": "πράσινο", "COLOUR_RGB_BLUE": "μπλε", - "COLOUR_RGB_TOOLTIP": "Δημιουργήστε ένα χρώμα με την καθορισμένη ποσότητα κόκκινου, πράσινου και μπλε. Όλες οι τιμές πρέπει να είναι μεταξύ 0 και 100.", + "COLOUR_RGB_TOOLTIP": "Δημιούργησε ένα χρώμα με την καθορισμένη ποσότητα κόκκινου, πράσινου και μπλε. Όλες οι τιμές πρέπει να είναι μεταξύ 0 και 100.", "COLOUR_BLEND_TITLE": "μείγμα", "COLOUR_BLEND_COLOUR1": "χρώμα 1", "COLOUR_BLEND_COLOUR2": "χρώμα 2", "COLOUR_BLEND_RATIO": "αναλογία", - "COLOUR_BLEND_TOOLTIP": "Συνδυάζει δύο χρώματα μαζί με μια δεδομένη αναλογία (0.0 - 1,0).", + "COLOUR_BLEND_TOOLTIP": "Συνδυάζει μαζί δύο χρώματα στην δοσμένη αναλογία (0.0 - 1.0).", "CONTROLS_REPEAT_TITLE": "επανάλαβε %1 φορές", "CONTROLS_REPEAT_INPUT_DO": "κάνε", - "CONTROLS_REPEAT_TOOLTIP": "Εκτελεί κάποιες εντολές αρκετές φορές.", + "CONTROLS_REPEAT_TOOLTIP": "Εκτέλεσε κάποιες εντολές αρκετές φορές.", "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "επανάλαβε ενώ", "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "επανάλαβε μέχρι", "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Εφόσον μια τιμή είναι αληθής, τότε εκτελεί κάποιες εντολές.", "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Εφόσον μια τιμή είναι ψευδής, τότε εκτελεί κάποιες εντολές.", - "CONTROLS_FOR_TOOLTIP": "Η μεταβλητή «%1» παίρνει τιμές ξεκινώντας από τον αριθμό έναρξης μέχρι τον αριθμό τέλους αυξάνοντας κάθε φορά με το καθορισμένο βήμα και εκτελώντας το καθορισμένο μπλοκ.", + "CONTROLS_FOR_TOOLTIP": "Βάλε τη μεταβλητή '%1' να πάρει τιμές από τον αριθμό έναρξης μέχρι τον αριθμό λήξης αυξάνοντας κάθε φορά με το καθορισμένο βήμα και εκτελώντας τα καθορισμένα μπλοκ.", "CONTROLS_FOR_TITLE": "μέτρησε με %1 από το %2 έως το %3 ανά %4", "CONTROLS_FOREACH_TITLE": "για κάθε στοιχείο %1 στη λίστα %2", - "CONTROLS_FOREACH_TOOLTIP": "Για κάθε στοιχείο σε μια λίστα, ορίζει τη μεταβλητή «%1» στο στοιχείο και, στη συνέχεια, εκτελεί κάποιες εντολές.", - "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "φεύγει από το μπλοκ επαναλήψεως", + "CONTROLS_FOREACH_TOOLTIP": "Για κάθε στοιχείο σε μια λίστα, όρισε τη μεταβλητή '%1' στο στοιχείο και, στη συνέχεια, εκτέλεσε κάποιες εντολές.", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "φύγε από το μπλοκ επαναλήψεως", "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "συνέχισε με την επόμενη επανάληψη του μπλοκ επαναλήψεως", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Ξεφεύγει (βγαίνει έξω) από την επανάληψη.", - "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Παραλείπει το υπόλοιπο τμήμα αυτού του μπλοκ επαναλήψεως, και συνεχίζει με την επόμενη επανάληψη.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Φύγε από την περιεχόμενη επανάληψη.", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Παρέλειψε το υπόλοιπο αυτού του μπλοκ επαναλήψεως, και συνέχισε με την επόμενη επανάληψη.", "CONTROLS_FLOW_STATEMENTS_WARNING": "Προειδοποίηση: Αυτό το μπλοκ μπορεί να χρησιμοποιηθεί μόνο μέσα σε μια επανάληψη.", - "CONTROLS_IF_TOOLTIP_1": "Αν μια τιμή είναι αληθής, τότε εκτελεί κάποιες εντολές.", - "CONTROLS_IF_TOOLTIP_2": "Αν μια τιμή είναι αληθής, τότε εκτελεί το πρώτο τμήμα εντολών. Διαφορετικά, εκτελεί το δεύτερο τμήμα εντολών.", - "CONTROLS_IF_TOOLTIP_3": "Αν η πρώτη τιμή είναι αληθής, τότε εκτελεί το πρώτο τμήμα εντολών. Διαφορετικά, αν η δεύτερη τιμή είναι αληθής, εκτελεί το δεύτερο μπλοκ εντολών.", - "CONTROLS_IF_TOOLTIP_4": "Αν η πρώτη τιμή είναι αληθής, τότε εκτελεί το πρώτο τμήμα εντολών. Διαφορετικά, αν η δεύτερη τιμή είναι αληθής, εκτελεί το δεύτερο τμήμα εντολών. Αν καμία από τις τιμές δεν είναι αληθής, εκτελεί το τελευταίο τμήμα εντολών.", + "CONTROLS_IF_TOOLTIP_1": "Αν μια τιμή είναι αληθής, τότε εκτέλεσε κάποιες εντολές.", + "CONTROLS_IF_TOOLTIP_2": "Αν μια τιμή είναι αληθής, τότε εκτέλεσε το πρώτο μπλοκ εντολών. Διαφορετικά, εκτέλεσε το δεύτερο μπλοκ εντολών.", + "CONTROLS_IF_TOOLTIP_3": "Αν η πρώτη τιμή είναι αληθής, τότε εκτέλεσε το πρώτο τμήμα εντολών. Διαφορετικά, αν η δεύτερη τιμή είναι αληθής, εκτέλεσε το δεύτερο μπλοκ εντολών.", + "CONTROLS_IF_TOOLTIP_4": "Αν η πρώτη τιμή είναι αληθής, τότε εκτέλεσε το πρώτο μπλοκ εντολών. Διαφορετικά, αν η δεύτερη τιμή είναι αληθής, εκτέλεσε το δεύτερο μπλοκ εντολών. Αν καμία από τις τιμές δεν είναι αληθής, εκτέλεσε το τελευταίο τμήμα εντολών.", "CONTROLS_IF_MSG_IF": "εάν", "CONTROLS_IF_MSG_ELSEIF": "εναλλακτικά εάν", - "CONTROLS_IF_MSG_ELSE": "αλλιώς", + "CONTROLS_IF_MSG_ELSE": "εναλλακτικά", "CONTROLS_IF_IF_TOOLTIP": "Προσθέτει, αφαιρεί ή αναδιατάσσει τα τμήματα για να αναδιαμορφώσει αυτό το μπλοκ «εάν».", - "CONTROLS_IF_ELSEIF_TOOLTIP": "Πρόσθετει μια κατάσταση/συνθήκη στο μπλοκ «εάν».", - "CONTROLS_IF_ELSE_TOOLTIP": "Προσθέτει μια τελική κατάσταση/συνθήκη, που πιάνει όλες τις άλλες περιπτώσεις, στο μπλοκ «εάν».", + "CONTROLS_IF_ELSEIF_TOOLTIP": "Πρόσθεσε μια συνθήκη στο μπλοκ «εάν».", + "CONTROLS_IF_ELSE_TOOLTIP": "Πρόσθεσε μια τελική συνθήκη, που πιάνει όλες τις άλλες περιπτώσεις, στο μπλοκ «εάν».", "LOGIC_COMPARE_TOOLTIP_EQ": "Επιστρέφει αληθής αν και οι δύο είσοδοι είναι ίσες μεταξύ τους.", "LOGIC_COMPARE_TOOLTIP_NEQ": "Επιστρέφει αληθής αν και οι δύο είσοδοι δεν είναι ίσες μεταξύ τους.", "LOGIC_COMPARE_TOOLTIP_LT": "Επιστρέφει αληθής αν η πρώτη είσοδος είναι μικρότερη από τη δεύτερη είσοδο.", @@ -121,7 +122,7 @@ "LOGIC_TERNARY_CONDITION": "έλεγχος", "LOGIC_TERNARY_IF_TRUE": "εάν είναι αληθής", "LOGIC_TERNARY_IF_FALSE": "εάν είναι ψευδής", - "LOGIC_TERNARY_TOOLTIP": "Ελέγχει την κατάσταση/συνθήκη στον «έλεγχο». Αν η κατάσταση/συνθήκη είναι αληθής, επιστρέφει την τιμή «εάν αληθής», διαφορετικά επιστρέφει την τιμή «εάν ψευδής».", + "LOGIC_TERNARY_TOOLTIP": "Ελέγχει την συνθήκη στον «έλεγχο». Αν η συνθήκη είναι αληθής, επιστρέφει την τιμή 'εάν αληθής', διαφορετικά επιστρέφει την τιμή 'εάν ψευδής'.", "MATH_NUMBER_HELPURL": "https://el.wikipedia.org/wiki/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8C%CF%82", "MATH_NUMBER_TOOLTIP": "Ένας αριθμός.", "MATH_POWER_SYMBOL": "^ ύψωση σε δύναμη", @@ -142,15 +143,15 @@ "MATH_SINGLE_TOOLTIP_ROOT": "Επιστρέφει την τετραγωνική ρίζα ενός αριθμού.", "MATH_SINGLE_OP_ABSOLUTE": "απόλυτη", "MATH_SINGLE_TOOLTIP_ABS": "Επιστρέφει την απόλυτη τιμή ενός αριθμού.", - "MATH_SINGLE_TOOLTIP_NEG": "Επιστρέφει την αρνητική ενός αριθμού.", - "MATH_SINGLE_TOOLTIP_LN": "Επιστρέφει τον νεπέρειο λογάριθμο ενός αριθμού.", + "MATH_SINGLE_TOOLTIP_NEG": "Επιστρέφει την αρνητική τιμή ενός αριθμού.", + "MATH_SINGLE_TOOLTIP_LN": "Επιστρέφει τον φυσικό λογάριθμο ενός αριθμού.", "MATH_SINGLE_TOOLTIP_LOG10": "Επιστρέφει τον λογάριθμο με βάση το 10 ενός αριθμού.", "MATH_SINGLE_TOOLTIP_EXP": "Επιστρέφει το e υψωμένο στη δύναμη ενός αριθμού.", "MATH_SINGLE_TOOLTIP_POW10": "Επιστρέφει το 10 υψωμένο στη δύναμη ενός αριθμού.", "MATH_TRIG_HELPURL": "https://el.wikipedia.org/wiki/%CE%A4%CF%81%CE%B9%CE%B3%CF%89%CE%BD%CE%BF%CE%BC%CE%B5%CF%84%CF%81%CE%B9%CE%BA%CE%AE_%CF%83%CF%85%CE%BD%CE%AC%CF%81%CF%84%CE%B7%CF%83%CE%B7", - "MATH_TRIG_TOOLTIP_SIN": "Επιστρέφει το ημίτονο ενός βαθμού (όχι ακτινίου).", - "MATH_TRIG_TOOLTIP_COS": "Επιστρέφει το συνημίτονο ενός βαθμού (όχι ακτινίου).", - "MATH_TRIG_TOOLTIP_TAN": "Επιστρέφει την εφαπτομένη ενός βαθμού (όχι ακτινίου).", + "MATH_TRIG_TOOLTIP_SIN": "Επιστρέφει το ημίτονο μία γωνίας σε μοίρες (όχι ακτίνια).", + "MATH_TRIG_TOOLTIP_COS": "Επιστρέφει το συνημίτονο μίας γωνίας σε μοίρες (όχι ακτίνια).", + "MATH_TRIG_TOOLTIP_TAN": "Επιστρέφει την εφαπτομένη μία γωνίας σε μοίρες (όχι ακτίνια).", "MATH_TRIG_TOOLTIP_ASIN": "Επιστρέφει το τόξο ημίτονου ενός αριθμού.", "MATH_TRIG_TOOLTIP_ACOS": "Επιστρέφει το τόξο συνημίτονου ενός αριθμού.", "MATH_TRIG_TOOLTIP_ATAN": "Επιστρέφει το τόξο εφαπτομένης ενός αριθμού.", @@ -165,8 +166,8 @@ "MATH_IS_TOOLTIP": "Ελέγχει αν ένας αριθμός είναι άρτιος, περιττός, πρώτος, ακέραιος, θετικός, αρνητικός, ή αν είναι διαιρετός από έναν ορισμένο αριθμό. Επιστρέφει αληθής ή ψευδής.", "MATH_CHANGE_HELPURL": "https://el.wikipedia.org/wiki/%CE%A0%CF%81%CF%8C%CF%83%CE%B8%CE%B5%CF%83%CE%B7", "MATH_CHANGE_TITLE": "άλλαξε %1 αυξάνοντας κατά %2", - "MATH_CHANGE_TOOLTIP": "Προσθέτει έναν αριθμό στη μεταβλητή «%1».", - "MATH_ROUND_TOOLTIP": "Στρογγυλοποιεί έναν αριθμό προς τα πάνω ή προς τα κάτω.", + "MATH_CHANGE_TOOLTIP": "Πρόσθεσε έναν αριθμό στη μεταβλητή '%1'.", + "MATH_ROUND_TOOLTIP": "Στρογγυλοποίησε έναν αριθμό προς τα πάνω ή προς τα κάτω.", "MATH_ROUND_OPERATOR_ROUND": "στρογγυλοποίησε", "MATH_ROUND_OPERATOR_ROUNDUP": "στρογγυλοποίησε προς τα πάνω", "MATH_ROUND_OPERATOR_ROUNDDOWN": "στρογγυλοποίησε προς τα κάτω", @@ -179,9 +180,9 @@ "MATH_ONLIST_OPERATOR_AVERAGE": "μέσος όρος λίστας", "MATH_ONLIST_TOOLTIP_AVERAGE": "Επιστρέφει τον αριθμητικό μέσο όρο από τις αριθμητικές τιμές στη λίστα.", "MATH_ONLIST_OPERATOR_MEDIAN": "διάμεσος λίστας", - "MATH_ONLIST_TOOLTIP_MEDIAN": "Επιστρέφει τον διάμεσο της λίστας.", - "MATH_ONLIST_OPERATOR_MODE": "μορφές λίστας", - "MATH_ONLIST_TOOLTIP_MODE": "Επιστρέφει μια λίστα με τα πιο κοινά στοιχεία στη λίστα.", + "MATH_ONLIST_TOOLTIP_MEDIAN": "Επιστρέφει τον διάμεσο αριθμό της λίστας.", + "MATH_ONLIST_OPERATOR_MODE": "επικρατούσες τιμές λίστας", + "MATH_ONLIST_TOOLTIP_MODE": "Επιστρέφει μια λίστα με τα πιο συνηθισμένα στοιχεία της λίστας, δηλαδή τις επικρατούσες τιμές.", "MATH_ONLIST_OPERATOR_STD_DEV": "τυπική απόκλιση λίστας", "MATH_ONLIST_TOOLTIP_STD_DEV": "Επιστρέφει την τυπική απόκλιση της λίστας.", "MATH_ONLIST_OPERATOR_RANDOM": "τυχαίο στοιχείο λίστας", @@ -189,28 +190,28 @@ "MATH_MODULO_TITLE": "υπόλοιπο της %1 ÷ %2", "MATH_MODULO_TOOLTIP": "Επιστρέφει το υπόλοιπο της διαίρεσης των δύο αριθμών.", "MATH_CONSTRAIN_TITLE": "περιόρισε %1 χαμηλή %2 υψηλή %3", - "MATH_CONSTRAIN_TOOLTIP": "Περιορίζει έναν αριθμό μεταξύ των προβλεπόμενων ορίων (χωρίς αποκλεισμούς).", + "MATH_CONSTRAIN_TOOLTIP": "Περιορίζει έναν αριθμό μεταξύ των προβλεπόμενων ορίων (συμπεριλαμβανομένων και των ακραίων τιμών).", "MATH_RANDOM_INT_TITLE": "τυχαίος ακέραιος από το %1 έως το %2", - "MATH_RANDOM_INT_TOOLTIP": "Επιστρέφει έναν τυχαίο ακέραιο αριθμό μεταξύ δύο συγκεκριμένων ορίων (εντός - συμπεριλαμβανομένων και των ακραίων τιμών).", + "MATH_RANDOM_INT_TOOLTIP": "Επέστρεψε έναν τυχαίο ακέραιο αριθμό μεταξύ δύο συγκεκριμένων ορίων (συμπεριλαμβανομένων και των ακραίων τιμών).", "MATH_RANDOM_FLOAT_HELPURL": "https://el.wikipedia.org/wiki/%CE%93%CE%B5%CE%BD%CE%BD%CE%AE%CF%84%CF%81%CE%B9%CE%B1_%CE%A4%CF%85%CF%87%CE%B1%CE%AF%CF%89%CE%BD_%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8E%CE%BD", "MATH_RANDOM_FLOAT_TITLE_RANDOM": "τυχαίο κλάσμα", - "MATH_RANDOM_FLOAT_TOOLTIP": "Επιστρέψει ένα τυχαία κλάσμα μεταξύ 0,0 (κλειστό) και 1,0 (ανοικτό).", - "MATH_ATAN2_TITLE": "atan2 από X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Επιστρέφει την διαφορά τόξου των σημείων (X, Y) σε μοίρες από -180 σε 180.", + "MATH_RANDOM_FLOAT_TOOLTIP": "Επιστρέψει ένα τυχαία κλάσμα μεταξύ 0.0 (συμπεριλαμβανομένου) και 1.0 (χωρίς).", + "MATH_ATAN2_TITLE": "atan2 του X:%1 Y:%2", + "MATH_ATAN2_TOOLTIP": "Επιστρέφει το τόξο εφαπτομένης του σημείου (X, Y) σε μοίρες από -180 σε 180.", "TEXT_TEXT_HELPURL": "https://el.wikipedia.org/wiki/%CE%A3%CF%85%CE%BC%CE%B2%CE%BF%CE%BB%CE%BF%CF%83%CE%B5%CE%B9%CF%81%CE%AC", "TEXT_TEXT_TOOLTIP": "Ένα γράμμα, μια λέξη ή μια γραμμή κειμένου.", "TEXT_JOIN_TITLE_CREATEWITH": "δημιούργησε κείμενο με", - "TEXT_JOIN_TOOLTIP": "Δημιουργεί ένα κομμάτι κειμένου ενώνοντας έναν απεριόριστο αριθμό αντικειμένων.", + "TEXT_JOIN_TOOLTIP": "Δημιούργησε ένα κομμάτι κειμένου ενώνοντας έναν απεριόριστο αριθμό αντικειμένων.", "TEXT_CREATE_JOIN_TITLE_JOIN": "ένωσε", - "TEXT_CREATE_JOIN_TOOLTIP": "Προσθέτει, αφαιρεί ή αναδιατάσσει τους τομείς για να αναδιαμορφώσει αυτό το μπλοκ κειμένου.", - "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Προσθέτει ένα στοιχείο στο κείμενο.", - "TEXT_APPEND_TITLE": "έως %1 ανάθεσε κείμενο %2", - "TEXT_APPEND_TOOLTIP": "Αναθέτει κείμενο στη μεταβλητή «%1».", - "TEXT_LENGTH_TITLE": "το μήκος του %1", - "TEXT_LENGTH_TOOLTIP": "Επιστρέφει το πλήθος των γραμμάτων (συμπεριλαμβανομένων και των κενών διαστημάτων) στο παρεχόμενο κείμενο.", + "TEXT_CREATE_JOIN_TOOLTIP": "Πρόσθεσε, αφαίρεσε ή αναδιάταξε τα τμήματα για να αναδιαμορφώσεις αυτό το μπλοκ κειμένου.", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Πρόσθεσε ένα στοιχείο στο κείμενο.", + "TEXT_APPEND_TITLE": "στο %1 πρόσθεσε το κείμενο %2", + "TEXT_APPEND_TOOLTIP": "Πρόσθεσε κάποιο κείμενο στη μεταβλητή '%1'.", + "TEXT_LENGTH_TITLE": "μήκος του %1", + "TEXT_LENGTH_TOOLTIP": "Επιστρέφει το πλήθος των γραμμάτων (συμπεριλαμβανομένων και των κενών διαστημάτων) στο δοσμένο κείμενο.", "TEXT_ISEMPTY_TITLE": "το %1 είναι κενό", - "TEXT_ISEMPTY_TOOLTIP": "Επιστρέφει αληθής αν το παρεχόμενο κείμενο είναι κενό.", - "TEXT_INDEXOF_TOOLTIP": "Επιστρέφει τον δείκτη της πρώτης/τελευταίας εμφάνισης του πρώτου κειμένου στο δεύτερο κείμενο. Επιστρέφει τιμή %1, αν δε βρει το κείμενο.", + "TEXT_ISEMPTY_TOOLTIP": "Επιστρέφει αληθής αν το δοσμένο κείμενο είναι κενό.", + "TEXT_INDEXOF_TOOLTIP": "Επιστρέφει τον δείκτη της πρώτης/τελευταίας εμφάνισης του πρώτου κειμένου στο δεύτερο κείμενο. Επιστρέφει %1, αν δε βρει το κείμενο.", "TEXT_INDEXOF_TITLE": "στο κείμενο %1 %2 %3", "TEXT_INDEXOF_OPERATOR_FIRST": "βρες την πρώτη εμφάνιση του κειμένου", "TEXT_INDEXOF_OPERATOR_LAST": "βρες την τελευταία εμφάνιση του κειμένου", @@ -223,49 +224,49 @@ "TEXT_CHARAT_TOOLTIP": "Επιστρέφει το γράμμα στην καθορισμένη θέση.", "TEXT_GET_SUBSTRING_TOOLTIP": "Επιστρέφει ένα συγκεκριμένο τμήμα του κειμένου.", "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "στο κείμενο", - "TEXT_GET_SUBSTRING_START_FROM_START": "πάρε τη δευτερεύουσα συμβολοσειρά από το # γράμμα", - "TEXT_GET_SUBSTRING_START_FROM_END": "πάρε τη δευτερεύουσα συμβολοσειρά από το # γράμμα από το τέλος", - "TEXT_GET_SUBSTRING_START_FIRST": "πάρε τη δευτερεύουσα συμβολοσειρά από το πρώτο γράμμα", + "TEXT_GET_SUBSTRING_START_FROM_START": "πάρε τη υποσυμβολοσειρά από το γράμμα #", + "TEXT_GET_SUBSTRING_START_FROM_END": "πάρε την υποσυμβολοσειρά από το # γράμμα από το τέλος", + "TEXT_GET_SUBSTRING_START_FIRST": "πάρε την υποσυμβολοσειρά από το πρώτο γράμμα", "TEXT_GET_SUBSTRING_END_FROM_START": "μέχρι το # γράμμα", "TEXT_GET_SUBSTRING_END_FROM_END": "μέχρι το # γράμμα από το τέλος", "TEXT_GET_SUBSTRING_END_LAST": "μέχρι το τελευταίο γράμμα", - "TEXT_CHANGECASE_TOOLTIP": "Επιστρέφει ένα αντίγραφο του κειμένου σε διαφορετική μορφή γραμμάτων.", + "TEXT_CHANGECASE_TOOLTIP": "Επιστρέφει ένα αντίγραφο του κειμένου σε διαφορετική μορφή γραμμάτων (πεζά/κεφαλαία).", "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "σε ΚΕΦΑΛΑΙΑ", "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "σε πεζά", "TEXT_CHANGECASE_OPERATOR_TITLECASE": "σε Λέξεις Με Πρώτα Κεφαλαία", "TEXT_TRIM_TOOLTIP": "Επιστρέφει ένα αντίγραφο του κειμένου με αφαιρεμένα τα κενά από το ένα ή και τα δύο άκρα.", - "TEXT_TRIM_OPERATOR_BOTH": "περίκοψε τα κενά και από τις δυο πλευρές του", - "TEXT_TRIM_OPERATOR_LEFT": "περίκοψε τα κενά από την αριστερή πλευρά του", - "TEXT_TRIM_OPERATOR_RIGHT": "περίκοψε τα κενά από την δεξιά πλευρά του", + "TEXT_TRIM_OPERATOR_BOTH": "Αφαίρεσε τα κενά και από τις δυο πλευρές του", + "TEXT_TRIM_OPERATOR_LEFT": "Αφαίρεσε τα κενά από την αριστερή πλευρά του", + "TEXT_TRIM_OPERATOR_RIGHT": "Αφαίρεσε τα κενά από την δεξιά πλευρά του", "TEXT_PRINT_TITLE": "εκτύπωσε %1", "TEXT_PRINT_TOOLTIP": "Εκτυπώνει το καθορισμένο κείμενο, αριθμό ή άλλη τιμή.", - "TEXT_PROMPT_TYPE_TEXT": "πρότρεψε με μήνυμα για να δοθεί κείμενο", - "TEXT_PROMPT_TYPE_NUMBER": "πρότρεψε με μήνυμα για να δοθεί αριθμός", - "TEXT_PROMPT_TOOLTIP_NUMBER": "Δημιουργεί προτροπή για τον χρήστη για να δώσει ένα αριθμό.", + "TEXT_PROMPT_TYPE_TEXT": "προτροπή για κείμενο με μήνυμα", + "TEXT_PROMPT_TYPE_NUMBER": "προτροπή για αριθμό με μήνυμα", + "TEXT_PROMPT_TOOLTIP_NUMBER": "Δημιουργεί προτροπή για τον χρήστη για να δώσει έναν αριθμό.", "TEXT_PROMPT_TOOLTIP_TEXT": "Δημιουργεί προτροπή για το χρήστη για να δώσει κάποιο κείμενο.", - "TEXT_COUNT_MESSAGE0": "αριθμός %1 σε %2", - "TEXT_COUNT_TOOLTIP": "Μετρά πόσες φορές κάποιο κείμενο εμφανίζεται μέσα σε ένα άλλο κείμενο.", - "TEXT_REPLACE_MESSAGE0": "αντικαταστήσετε το %1 με %2 σε %3", - "TEXT_REPLACE_TOOLTIP": "Αντικαταστήστε όλα τα ήδη υπάρχοντα στοιχεία μέρους του κειμένου με κάποιο άλλο κείμενο", - "TEXT_REVERSE_MESSAGE0": "ανάκληση %1", - "TEXT_REVERSE_TOOLTIP": "Αναγραμματισμός των χαρακτήρων του κειμένου", + "TEXT_COUNT_MESSAGE0": "πλήθος %1 στο %2", + "TEXT_COUNT_TOOLTIP": "Μέτρα πόσες φορές κάποιο κείμενο εμφανίζεται μέσα σε ένα άλλο κείμενο.", + "TEXT_REPLACE_MESSAGE0": "αντικατάσταση του %1 με %2 στο %3", + "TEXT_REPLACE_TOOLTIP": "Αντικατάσταση όλων των εμφανίσεων ενός κειμένου μέσα σε κάποιο άλλο κείμενο", + "TEXT_REVERSE_MESSAGE0": "αντιστροφή %1", + "TEXT_REVERSE_TOOLTIP": "Αντιστρέφει τη σειρά των χαρακτήρων του κειμένου.", "LISTS_CREATE_EMPTY_TITLE": "δημιούργησε κενή λίστα", - "LISTS_CREATE_EMPTY_TOOLTIP": "Επιστρέφει μια λίστα, με μήκος 0, η οποία δεν περιέχει εγγραφές δεδομένων", + "LISTS_CREATE_EMPTY_TOOLTIP": "Επιστρέφει μια λίστα, με μήκος 0, η οποία δεν έχει στοιχεία", "LISTS_CREATE_WITH_TOOLTIP": "Δημιουργεί λίστα με οποιονδήποτε αριθμό αντικειμένων.", "LISTS_CREATE_WITH_INPUT_WITH": "δημιούργησε λίστα με", "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "λίστα", - "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Προσθέτει, αφαιρεί ή αναδιατάσσει τα τμήματα για να αναδιαμορφώσει αυτό το μπλοκ λίστας.", - "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Προσθέτει αντικείμενο στη λίστα.", - "LISTS_REPEAT_TOOLTIP": "Δημιουργεί μια λίστα που αποτελείται από την δεδομένη τιμή που επαναλαμβάνεται για συγκεκριμένο αριθμό επαναλήψεων.", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "Πρόσθεσε, αφαίρεσε ή αναδιάταξε τμήματα για να αναδιαμορφώσει αυτό το μπλοκ λίστας.", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "Πρόσθεσε ένα αντικείμενο στη λίστα.", + "LISTS_REPEAT_TOOLTIP": "Δημιουργεί μια λίστα που αποτελείται από την δοσμένη τιμή που επαναλαμβάνεται για έναν δοσμένο αριθμό φορών.", "LISTS_REPEAT_TITLE": "δημιούργησε λίστα με το στοιχείο %1 να επαναλαμβάνεται %2 φορές", "LISTS_LENGTH_TITLE": "το μήκος του %1", - "LISTS_LENGTH_TOOLTIP": "Επιστρέφει το μήκος μιας λίστας.", + "LISTS_LENGTH_TOOLTIP": "Επιστρέφει το μήκος μίας λίστας.", "LISTS_ISEMPTY_TITLE": "το %1 είναι κενό", "LISTS_ISEMPTY_TOOLTIP": "Επιστρέφει αληθής αν η λίστα είναι κενή.", "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": "αφαίρεσε", @@ -276,28 +277,28 @@ "LISTS_GET_INDEX_RANDOM": "τυχαίο", "LISTS_INDEX_FROM_START_TOOLTIP": "Το %1 είναι το πρώτο στοιχείο.", "LISTS_INDEX_FROM_END_TOOLTIP": "Το %1 είναι το τελευταίο στοιχείο.", - "LISTS_GET_INDEX_TOOLTIP_GET_FROM": "Επιστρέφει το στοιχείο στην καθορισμένη θέση σε μια λίστα.", + "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_FIRST": "Καταργεί και επιστρέφει το πρώτο στοιχείο σε μια λίστα.", - "LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST": "Καταργεί και επιστρέφει το τελευταίο στοιχείο σε μια λίστα.", + "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_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_INPUT_TO": "ως", + "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_LAST": "Πρόσθεσε το στοιχείο στο τέλος μιας λίστας.", "LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM": "Εισάγει το στοιχείο τυχαία σε μια λίστα.", "LISTS_GET_SUBLIST_START_FROM_START": "πάρε υπολίστα από #", "LISTS_GET_SUBLIST_START_FROM_END": "πάρε υπολίστα από # από το τέλος", @@ -306,50 +307,50 @@ "LISTS_GET_SUBLIST_END_FROM_END": "έως # από το τέλος", "LISTS_GET_SUBLIST_END_LAST": "έως το τελευταίο", "LISTS_GET_SUBLIST_TOOLTIP": "Δημιουργεί ένα αντίγραφο του καθορισμένου τμήματος μιας λίστας.", - "LISTS_SORT_TITLE": "επιλογή %1 %2 %3", - "LISTS_SORT_TOOLTIP": "Επιλέξετε ένα αντίγραφο της λίστας.", - "LISTS_SORT_ORDER_ASCENDING": "Αύξουσα", - "LISTS_SORT_ORDER_DESCENDING": "Φθίνουσα", - "LISTS_SORT_TYPE_NUMERIC": "αριθμητικό", + "LISTS_SORT_TITLE": "ταξινόμησε %1 %2 %3", + "LISTS_SORT_TOOLTIP": "Ταξινομήστε ένα αντίγραφο μιας λίστας.", + "LISTS_SORT_ORDER_ASCENDING": "αύξουσα", + "LISTS_SORT_ORDER_DESCENDING": "φθίνουσα", + "LISTS_SORT_TYPE_NUMERIC": "αριθμητικά", "LISTS_SORT_TYPE_TEXT": "Αλφαβητικά", - "LISTS_SORT_TYPE_IGNORECASE": "αλφαβητικά, αγνοήστε το στοιχείο", + "LISTS_SORT_TYPE_IGNORECASE": "αλφαβητικά, αγνοώντας πεζά/κεφαλαία γράμματα", "LISTS_SPLIT_LIST_FROM_TEXT": "κάνετε λίστα από το κείμενο", - "LISTS_SPLIT_TEXT_FROM_LIST": "κάνετε κείμενο από τη λίστα", + "LISTS_SPLIT_TEXT_FROM_LIST": "δημιούργησε κείμενο από τη λίστα", "LISTS_SPLIT_WITH_DELIMITER": "με διαχωριστικό", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Διαίρεση του κειμένου σε μια λίστα κειμένων, με σπάσιμο σε κάθε διαχωριστικό.", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Διαχώρισε το κείμενο σε μια λίστα κειμένων, σπάζοντας το σε κάθε διαχωριστικό.", "LISTS_SPLIT_TOOLTIP_JOIN": "Ενώστε μια λίστα κειμένων σε ένα κείμενο, που χωρίζονται από ένα διαχωριστικό.", - "LISTS_REVERSE_MESSAGE0": "ανάκληση %1", - "LISTS_REVERSE_TOOLTIP": "Α", + "LISTS_REVERSE_MESSAGE0": "αντιστροφή %1", + "LISTS_REVERSE_TOOLTIP": "Αντιστρέφει ένα αντίγραφο της λίστας.", "VARIABLES_GET_TOOLTIP": "Επιστρέφει την τιμή αυτής της μεταβλητής.", - "VARIABLES_GET_CREATE_SET": "Δημιούργησε «όρισε %1»", - "VARIABLES_SET": "ανάθεσε στην %1 το %2", + "VARIABLES_GET_CREATE_SET": "Δημιούργησε 'όρισε %1'", + "VARIABLES_SET": "όρισε το %1 σε %2", "VARIABLES_SET_TOOLTIP": "Ορίζει αυτή τη μεταβλητή να είναι ίση με την είσοδο.", - "VARIABLES_SET_CREATE_GET": "Δημιούργησε «πάρε %1»", - "PROCEDURES_DEFNORETURN_TITLE": "στο", + "VARIABLES_SET_CREATE_GET": "Δημιούργησε 'πάρε %1'", + "PROCEDURES_DEFNORETURN_TITLE": "σε", "PROCEDURES_DEFNORETURN_PROCEDURE": "κάνε κάτι", "PROCEDURES_BEFORE_PARAMS": "με:", "PROCEDURES_CALL_BEFORE_PARAMS": "με:", "PROCEDURES_DEFNORETURN_TOOLTIP": "Δημιουργεί μια συνάρτηση χωρίς έξοδο.", - "PROCEDURES_DEFNORETURN_COMMENT": "Περιγράψετε αυτήν την ιδιότητα..", + "PROCEDURES_DEFNORETURN_COMMENT": "Περίγραψε αυτή την συνάρτηση..", "PROCEDURES_DEFRETURN_RETURN": "επέστρεψε", "PROCEDURES_DEFRETURN_TOOLTIP": "Δημιουργεί μια συνάρτηση με μια έξοδο.", - "PROCEDURES_ALLOW_STATEMENTS": "να επιτρέπονται οι δηλώσεις", + "PROCEDURES_ALLOW_STATEMENTS": "επέτρεψε δηλώσεις", "PROCEDURES_DEF_DUPLICATE_WARNING": "Προειδοποίηση: Αυτή η συνάρτηση έχει διπλότυπες παραμέτρους.", "PROCEDURES_CALLNORETURN_HELPURL": "https://el.wikipedia.org/wiki/%CE%94%CE%B9%CE%B1%CE%B4%CE%B9%CE%BA%CE%B1%CF%83%CE%AF%CE%B1_%28%CF%85%CF%80%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CF%83%CF%84%CE%AD%CF%82%29", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Εκτελεί την ορισμένη από τον χρήστη συνάρτηση «%1».", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Εκτέλεσε την ορισμένη από τον χρήστη συνάρτηση '%1'.", "PROCEDURES_CALLRETURN_HELPURL": "https://el.wikipedia.org/wiki/%CE%94%CE%B9%CE%B1%CE%B4%CE%B9%CE%BA%CE%B1%CF%83%CE%AF%CE%B1_%28%CF%85%CF%80%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CF%83%CF%84%CE%AD%CF%82%29", - "PROCEDURES_CALLRETURN_TOOLTIP": "Εκτελεί την ορισμένη από τον χρήστη συνάρτηση «%1» και χρησιμοποίησε την έξοδό της.", + "PROCEDURES_CALLRETURN_TOOLTIP": "Εκτέλεσε την ορισμένη από τον χρήστη συνάρτηση '%1' και χρησιμοποίησε την έξοδό της.", "PROCEDURES_MUTATORCONTAINER_TITLE": "είσοδοι", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Προσθέτει, αφαιρεί ή αναδιατάσσει εισόδους σε αυτήν τη λειτουργία", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Πρόσθεσε, αφαίρεσε ή αναδιάταξε τις εισόδους σε αυτήν τη συνάρτηση.", "PROCEDURES_MUTATORARG_TITLE": "όνομα εισόδου:", - "PROCEDURES_MUTATORARG_TOOLTIP": "Πρόσθεσε μια είσοδος στη συνάρτηση", + "PROCEDURES_MUTATORARG_TOOLTIP": "Πρόσθεσε μια είσοδο στη συνάρτηση", "PROCEDURES_HIGHLIGHT_DEF": "Επισημάνετε τον ορισμό συνάρτησης", - "PROCEDURES_CREATE_DO": "Δημιούργησε «%1»", + "PROCEDURES_CREATE_DO": "Δημιούργησε '%1'", "PROCEDURES_IFRETURN_TOOLTIP": "Αν μια τιμή είναι αληθής, τότε επιστρέφει τη δεύτερη τιμή.", "PROCEDURES_IFRETURN_WARNING": "Προειδοποίηση: Αυτό το μπλοκ μπορεί να χρησιμοποιηθεί μόνο στον ορισμό μιας συνάρτησης.", - "WORKSPACE_COMMENT_DEFAULT_TEXT": "Πείτε κάτι...", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Πες κάτι...", "WORKSPACE_ARIA_LABEL": "Χώρος εργασίας Blockly", - "COLLAPSED_WARNINGS_WARNING": "Υπάρχουν προειδοποιήσεις για συμπτυγμένα μπλοκ.", + "COLLAPSED_WARNINGS_WARNING": "Υπάρχουν προειδοποιήσεις στα συμπτυγμένα μπλοκ.", "DIALOG_OK": "Εντάξει", "DIALOG_CANCEL": "Ακύρωση" } diff --git a/msg/json/es.json b/msg/json/es.json index 12e39c14a..66118d46d 100644 --- a/msg/json/es.json +++ b/msg/json/es.json @@ -4,6 +4,7 @@ "Ajeje Brazorf", "Atzerritik", "Codynguyen1116", + "Eulalio", "Fitoschido", "Harvest", "Indiralena", @@ -267,6 +268,7 @@ "LISTS_INDEX_OF_FIRST": "encontrar la primera aparición del elemento", "LISTS_INDEX_OF_LAST": "encontrar la última aparición del elemento", "LISTS_INDEX_OF_TOOLTIP": "Devuelve el índice de la primera/última aparición del elemento en la lista. Devuelve %1 si el elemento no se encuentra.", + "LISTS_GET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", "LISTS_GET_INDEX_GET": "obtener", "LISTS_GET_INDEX_GET_REMOVE": "obtener y eliminar", "LISTS_GET_INDEX_REMOVE": "eliminar", diff --git a/msg/json/fa.json b/msg/json/fa.json index 6e8fac8cb..a27d412ab 100644 --- a/msg/json/fa.json +++ b/msg/json/fa.json @@ -299,8 +299,8 @@ "LISTS_SORT_ORDER_ASCENDING": "صعودی", "LISTS_SORT_ORDER_DESCENDING": "نزولی", "LISTS_SORT_TYPE_NUMERIC": "عددی", - "LISTS_SORT_TYPE_TEXT": "حروفی ، الفبایی", - "LISTS_SORT_TYPE_IGNORECASE": "حروفی ، رد کردن مورد", + "LISTS_SORT_TYPE_TEXT": "حروفی، الفبایی", + "LISTS_SORT_TYPE_IGNORECASE": "حروفی، در نظر نگرفتن حروف بزرگ و کوچک", "LISTS_SPLIT_LIST_FROM_TEXT": "ایجاد فهرست از متن", "LISTS_SPLIT_TEXT_FROM_LIST": "ایجاد متن از فهرست", "LISTS_SPLIT_WITH_DELIMITER": "همراه جداساز", diff --git a/msg/json/fr.json b/msg/json/fr.json index 1f41860d3..4d6b9894c 100644 --- a/msg/json/fr.json +++ b/msg/json/fr.json @@ -3,6 +3,7 @@ "authors": [ "Alacabe", "Appr", + "Ashleyzeldin", "Chrisbansart", "Espertus", "Fredlefred", @@ -24,7 +25,7 @@ }, "VARIABLES_DEFAULT_NAME": "élément", "UNNAMED_KEY": "non nommé", - "TODAY": "Aujourd'hui", + "TODAY": "Aujourd’hui", "DUPLICATE_BLOCK": "Dupliquer", "ADD_COMMENT": "Ajouter un commentaire", "REMOVE_COMMENT": "Supprimer un commentaire", @@ -55,7 +56,7 @@ "NEW_VARIABLE_TITLE": "Nom de la nouvelle variable :", "VARIABLE_ALREADY_EXISTS": "Une variable nommée « %1 » existe déjà.", "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Une variable nommée « %1 » existe déjà pour un autre type : « %2 ».", - "VARIABLE_ALREADY_EXISTS_FOR_A_PARAMETER": "Une variable nommée '%1' existe déjà comme paramètre dans la procédure '%2'.", + "VARIABLE_ALREADY_EXISTS_FOR_A_PARAMETER": "Une variable nommée « %1 » existe déjà comme paramètre dans la procédure « %2 ».", "DELETE_VARIABLE_CONFIRMATION": "Supprimer %1 utilisations de la variable « %2 » ?", "CANNOT_DELETE_VARIABLE_PROCEDURE": "Impossible de supprimer la variable « %1 » parce qu’elle fait partie de la définition de la fonction « %2 »", "DELETE_VARIABLE": "Supprimer la variable « %1 »", @@ -111,7 +112,7 @@ "LOGIC_COMPARE_TOOLTIP_LT": "Renvoyer vrai si la première entrée est plus petite que la seconde.", "LOGIC_COMPARE_TOOLTIP_LTE": "Renvoyer vrai si la première entrée est plus petite ou égale à la seconde.", "LOGIC_COMPARE_TOOLTIP_GT": "Renvoyer vrai si la première entrée est plus grande que la seconde.", - "LOGIC_COMPARE_TOOLTIP_GTE": "Renvoyer true si la première entrée est supérieure ou égale à la seconde.", + "LOGIC_COMPARE_TOOLTIP_GTE": "Renvoyer vrai si la première entrée est supérieure ou égale à la seconde.", "LOGIC_OPERATION_HELPURL": "https://fr.wikipedia.org/wiki/Connecteur_logique", "LOGIC_OPERATION_TOOLTIP_AND": "Renvoyer vrai si les deux entrées sont vraies.", "LOGIC_OPERATION_AND": "et", diff --git a/msg/json/gl.json b/msg/json/gl.json index e2d5805de..62f4192c3 100644 --- a/msg/json/gl.json +++ b/msg/json/gl.json @@ -249,6 +249,7 @@ "LISTS_INDEX_OF_FIRST": "atopar a primeira aparición do elemento", "LISTS_INDEX_OF_LAST": "atopar a derradeira aparición do elemento", "LISTS_INDEX_OF_TOOLTIP": "Devolve o índice da primeira/derradeira aparición do primeiro elemento na lista. Devolve %1 se non se atopa o elemento.", + "LISTS_GET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", "LISTS_GET_INDEX_GET": "obter", "LISTS_GET_INDEX_GET_REMOVE": "obter e eliminar", "LISTS_GET_INDEX_REMOVE": "eliminar", @@ -312,6 +313,7 @@ "PROCEDURES_DEFNORETURN_PROCEDURE": "facer algo", "PROCEDURES_BEFORE_PARAMS": "con:", "PROCEDURES_CALL_BEFORE_PARAMS": "con:", + "PROCEDURES_CALL_DISABLED_DEF_WARNING": "Non se pode executar a función \"%1\" definida polo usuario porque o bloque de definición está desactivado.", "PROCEDURES_DEFNORETURN_TOOLTIP": "Crea unha función sen devolución.", "PROCEDURES_DEFNORETURN_COMMENT": "Describe esta función...", "PROCEDURES_DEFRETURN_RETURN": "devolver", diff --git a/msg/json/ia.json b/msg/json/ia.json index 42cd70c9b..f76006602 100644 --- a/msg/json/ia.json +++ b/msg/json/ia.json @@ -248,6 +248,7 @@ "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 elemento non es trovate.", + "LISTS_GET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", "LISTS_GET_INDEX_GET": "prender", "LISTS_GET_INDEX_GET_REMOVE": "prender e remover", "LISTS_GET_INDEX_REMOVE": "remover", @@ -311,6 +312,7 @@ "PROCEDURES_DEFNORETURN_PROCEDURE": "facer qualcosa", "PROCEDURES_BEFORE_PARAMS": "con:", "PROCEDURES_CALL_BEFORE_PARAMS": "con:", + "PROCEDURES_CALL_DISABLED_DEF_WARNING": "Non es possibile executar le function definite per le usator ‘%1’ perque le bloco de definition es disactivate.", "PROCEDURES_DEFNORETURN_TOOLTIP": "Crea un function que non retorna un valor.", "PROCEDURES_DEFNORETURN_COMMENT": "Describe iste function...", "PROCEDURES_DEFRETURN_RETURN": "retornar", diff --git a/msg/json/ko.json b/msg/json/ko.json index 85be433f5..bbfa5eb94 100644 --- a/msg/json/ko.json +++ b/msg/json/ko.json @@ -5,6 +5,7 @@ "Amire80", "Codenstory", "Delanoor", + "Dr1t jg", "Gongsoonyee", "Hym411", "JeonHK", @@ -19,6 +20,7 @@ "Revi", "SeoJeongHo", "Snddl3", + "Suleiman the Magnificent Television", "Ykhwong", "아라" ] @@ -56,6 +58,7 @@ "NEW_VARIABLE_TITLE": "새 변수 이름:", "VARIABLE_ALREADY_EXISTS": "'%1' 변수는 이미 존재합니다.", "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%1' 변수는 다른 유형에 대해 이미 존재합니다: '%2'.", + "VARIABLE_ALREADY_EXISTS_FOR_A_PARAMETER": "'%1' 변수가 이미 '%2' 프로시저의 변수로 존재합니다.", "DELETE_VARIABLE_CONFIRMATION": "'%2' 변수에서 %1을(를) 삭제하시겠습니까?", "CANNOT_DELETE_VARIABLE_PROCEDURE": "'%2' 함수 정의의 일부이기 때문에 '%1' 변수를 삭제할 수 없습니다", "DELETE_VARIABLE": "'%1' 변수를 삭제합니다", @@ -341,6 +344,7 @@ "PROCEDURES_DEFNORETURN_PROCEDURE": "함수 이름", "PROCEDURES_BEFORE_PARAMS": "사용:", "PROCEDURES_CALL_BEFORE_PARAMS": "사용:", + "PROCEDURES_CALL_DISABLED_DEF_WARNING": "정의 블록이 비활성화되었기 때문에 사용자 정의 함수 '%1'를 실행할 수 없습니다.", "PROCEDURES_DEFNORETURN_TOOLTIP": "실행 후, 결과 값을 돌려주지 않는 함수를 만듭니다.", "PROCEDURES_DEFNORETURN_COMMENT": "이 함수를 설명하세요...", "PROCEDURES_DEFRETURN_HELPURL": "https://ko.wikipedia.org/wiki/함수_(컴퓨터_과학)", diff --git a/msg/json/ms.json b/msg/json/ms.json index 50bf66c8d..1ed6c50d6 100644 --- a/msg/json/ms.json +++ b/msg/json/ms.json @@ -2,7 +2,8 @@ "@metadata": { "authors": [ "Anakmalaysia", - "Espertus" + "Espertus", + "Hakimi97" ] }, "VARIABLES_DEFAULT_NAME": "Perkara", @@ -282,7 +283,7 @@ "PROCEDURES_DEFNORETURN_COMMENT": "Terangkan fungsi ini...", "PROCEDURES_DEFRETURN_RETURN": "kembali", "PROCEDURES_DEFRETURN_TOOLTIP": "Mencipta satu fungsi dengan pengeluaran.", - "PROCEDURES_ALLOW_STATEMENTS": "bolehkan kenyataan", + "PROCEDURES_ALLOW_STATEMENTS": "membenarkan kenyataan", "PROCEDURES_DEF_DUPLICATE_WARNING": "Amaran: Fungsi ini mempunyai parameter yang berganda.", "PROCEDURES_CALLNORETURN_TOOLTIP": "Run the user-defined function '%1'.", "PROCEDURES_CALLRETURN_TOOLTIP": "Run the user-defined function '%1' and use its output.", diff --git a/msg/json/ne.json b/msg/json/ne.json index f4af6bab7..3a4c1c0de 100644 --- a/msg/json/ne.json +++ b/msg/json/ne.json @@ -2,47 +2,246 @@ "@metadata": { "authors": [ "Bada Kaji", + "Yadav Bhattarai", "बडा काजी", "सरोज कुमार ढकाल" ] }, "VARIABLES_DEFAULT_NAME": "वस्तु", + "UNNAMED_KEY": "अज्ञात", "TODAY": "आज", - "DUPLICATE_BLOCK": "प्रतिलिपी गर्ने", + "DUPLICATE_BLOCK": "प्रतिलिपी", "ADD_COMMENT": "टिप्पणी थप्ने", "REMOVE_COMMENT": "टिप्पणी हटाउने", + "DUPLICATE_COMMENT": "समिक्षाको प्रतिलिपीकरण", "EXTERNAL_INPUTS": "बाह्य इन्पुटहरू", - "INLINE_INPUTS": "इनलाइन इन्पुटहरू", + "INLINE_INPUTS": "यहीका इन्पुटहरू", "DELETE_BLOCK": "ब्लक हटाउने", "DELETE_X_BLOCKS": "%1 ब्लकहरू हटाउने", - "CLEAN_UP": "ब्लकहरू हटाउनुहोस्", + "DELETE_ALL_BLOCKS": "सबै %1 ब्लकहरू मेट्ने हो?", + "CLEAN_UP": "ब्लकहरू सफा गर्नुहोस्", "COLLAPSE_BLOCK": "ब्लक भत्काउनुहोस्", - "COLLAPSE_ALL": "ब्लक भत्काउनुहोस्", + "COLLAPSE_ALL": "ब्लकहरू भत्काउनुहोस्", "EXPAND_BLOCK": "ब्लकहरू फिजाउने", "EXPAND_ALL": "ब्लकहरू फिजाउने", - "DISABLE_BLOCK": "ब्लकलाई सक्रिय पार्ने", - "ENABLE_BLOCK": "ब्लकलाई निश्कृयपार्ने", + "DISABLE_BLOCK": "ब्लकलाई निस्कृय पार्ने", + "ENABLE_BLOCK": "ब्लकलाई सकृय पार्ने", "HELP": "सहायता", "UNDO": "रद्द गर्ने", - "REDO": "पुन: कायम गर्ने", - "CHANGE_VALUE_TITLE": "मान बदल्नुहोस :", - "RENAME_VARIABLE": "भेरिएबल पुन: नामाकरण गर्ने ...", - "NEW_VARIABLE": "नयाँ भेरिएबल ...", - "NEW_VARIABLE_TITLE": "नयाँ भेरिएबल नाम:", - "COLOUR_RANDOM_TITLE": "जुनसुकै रङ्ग", - "COLOUR_RGB_TITLE": "यस रङ्गको", + "REDO": "फेरी गर्ने", + "CHANGE_VALUE_TITLE": "मान बदल्नुहोस:", + "RENAME_VARIABLE": "चरको पुन: नामाकरण गर्ने ...", + "RENAME_VARIABLE_TITLE": "सबै '%1' चरहरूको नाम परिवर्तन गर्नुहोस्:", + "NEW_VARIABLE": "चर बनाउ...", + "NEW_STRING_VARIABLE": "स्ट्रिङ चर बनाउनुहोस्...", + "NEW_NUMBER_VARIABLE": "अंक चर बनाउनुहोस्...", + "NEW_COLOUR_VARIABLE": "रङ्ग चर बनाउनुहोस्...", + "NEW_VARIABLE_TYPE_TITLE": "नयाँ चरको प्रकार:", + "NEW_VARIABLE_TITLE": "नयाँ चरको नाम:", + "VARIABLE_ALREADY_EXISTS": "'%1' नाम भएको चर पहिल्यै छ।", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "'%1' नाम भएको चर अर्को प्रकार:'%2' कोलागी पहिल्यै छ।", + "VARIABLE_ALREADY_EXISTS_FOR_A_PARAMETER": "'%1' नामको चल पहिले नै '%2' प्रक्रियामा प्यारामिटर हो।", + "DELETE_VARIABLE_CONFIRMATION": "'%2' चलको %1 प्रयोगहरू हटाउने हो?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "चर '%1' मेटाउन सकिँदैन किनभने यो प्रकार्य '%2' को परिभाषाको अंश हो।", + "DELETE_VARIABLE": "'%1' चर हटाउनुहोस्", + "COLOUR_PICKER_TOOLTIP": "रङ् थालीबाट छान्नुहोस्।", + "COLOUR_RANDOM_TITLE": "कुनै रङ्ग", + "COLOUR_RANDOM_TOOLTIP": "अनियमित रूपमा रङ छान्नुहोस्।", + "COLOUR_RGB_TITLE": "रङ्गाउ", "COLOUR_RGB_RED": "रातो", "COLOUR_RGB_GREEN": "हरियो", "COLOUR_RGB_BLUE": "निलो", + "COLOUR_RGB_TOOLTIP": "रातो, हरियो र नीलो को निर्दिष्ट मात्रा लिएर एउटा रङ बनाउनुहोस्। सबै मात्राहरू ० देखी १०० को बीचको हुनुपर्छ।", + "COLOUR_BLEND_TITLE": "मिश्रण", "COLOUR_BLEND_COLOUR1": "रङ्ग १", "COLOUR_BLEND_COLOUR2": "रङ्ग २", "COLOUR_BLEND_RATIO": "अनुपात", - "MATH_IS_EVEN": "जोर संख्या हो", - "MATH_IS_ODD": "बिजोर संख्या हो", - "MATH_IS_PRIME": "रुढ संख्या हो", - "MATH_IS_POSITIVE": "धनात्मक संख्या हो", - "MATH_IS_NEGATIVE": "ऋणात्मक संख्या हो", + "COLOUR_BLEND_TOOLTIP": "दिइएको अनुपात(0.0 - 1.0)मा दुई रङहरू मिलाउँछ।", + "CONTROLS_REPEAT_TITLE": "%1 पटक दोहोऱ्याउनुहोस्", + "CONTROLS_REPEAT_INPUT_DO": "गर्नुहोस्", + "CONTROLS_REPEAT_TOOLTIP": "केही कथनहरू केही पटक दोहोऱ्याउनुहोस्।", + "CONTROLS_WHILEUNTIL_OPERATOR_WHILE": "भएसम्म दोहोऱ्याउनुहोस्", + "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "यस सम्म दोहोर्‌याउने", + "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "मान साँचो भईन्जेल केहि कथनहरू दोहोऱ्याउनुहोस्।", + "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "मान असत्य भईन्जेल केहि कथनहरू दोहोऱ्याउनुहोस्।", + "CONTROLS_FOR_TOOLTIP": "चर '%1' लाई सुरु देखि अन्त्य सङ्ख्यासम्मका मानहरू लिन दिनुहोस्, निर्दिष्ट अन्तरालमा गन्दै निर्दिष्ट ब्लकहरू दोहोऱ्याउनुहोस्।", + "CONTROLS_FOR_TITLE": "%1लाई %2 देखी %3 सम्म %4 जोड्दै गन्नुहोस्।", + "CONTROLS_FOREACH_TITLE": "सूची %2 का प्रत्येक वस्तु %1 लाई", + "CONTROLS_FOREACH_TOOLTIP": "सूचीका बस्तुहरूमा एक पटकमा एक वस्तु चल '%1' मा राखेर केही कथनहरू गर्नुहोस्।", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "नदोहोऱ्याउनुहोस्", + "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "अर्को चरणमा जानुहोस्", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "आन्तरिक दोहोरान सकियो।", + "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "बाँकी छाडेर अर्को चरणमा सुरू गर्नुहोस्।", + "CONTROLS_FLOW_STATEMENTS_WARNING": "सावधान: यो ब्लक बृत्त भित्रमात्र प्रयोग गरिन्छ।", + "CONTROLS_IF_TOOLTIP_1": "यदि मान साँचो भए केही कथनहरू गर्नुहोस्।", + "CONTROLS_IF_TOOLTIP_2": "यदि मान सत्य भए बयानको पहिलो ब्लक गर्नुहोस् नत्र दोस्रो।", + "CONTROLS_IF_TOOLTIP_3": "यदि पहिलो मान सत्य भए बयानको पहिलो ब्लक नत्र यदि दोस्रो मान सत्य भए दोस्रो ब्लक गर्नुहोस्।", + "CONTROLS_IF_TOOLTIP_4": "यदि पहिलो मान सत्य भए कथनको पहिलो ब्लक नत्र यदि दोस्रो मान सत्य भए दोस्रो ब्लक नत्र ती दुबै सत्य नभए अन्तिम ब्लक गर्नुहोस्।", + "CONTROLS_IF_MSG_IF": "if", + "CONTROLS_IF_MSG_ELSEIF": "else if", + "CONTROLS_IF_MSG_ELSE": "else", + "CONTROLS_IF_IF_TOOLTIP": "यो if भनाईलाई मिलाउन खण्डहरू थप्ने, हटाउने वा मिलाउने गर्नुहोस्।", + "CONTROLS_IF_ELSEIF_TOOLTIP": "यो if भनाईमा एउटा प्रश्न थप्नुहोस्।", + "CONTROLS_IF_ELSE_TOOLTIP": "यो if भनाईमा एउटा final, catch-all सर्त थप्नुहोस्।", + "LOGIC_COMPARE_TOOLTIP_EQ": "यदि दुबै दिइएका कुराहरू बराबर भए true फर्काउनुहोस।", + "LOGIC_COMPARE_TOOLTIP_NEQ": "यदि दुबै दिइएका कुराहरू आफुमा बराबर नभए true फर्काउनुहोस।", + "LOGIC_COMPARE_TOOLTIP_LT": "यदि दिइएका पहिलो, दोश्रो भन्दा सानो भए true फर्काउनुहोस।", + "LOGIC_COMPARE_TOOLTIP_LTE": "यदि दिइएका पहिलो, दोश्रो भन्दा सानो वा बराबर भए true फर्काउनुहोस।", + "LOGIC_COMPARE_TOOLTIP_GT": "यदि दिइएका पहिलो, दोश्रो भन्दा ठुलो भए true फर्काउनुहोस।", + "LOGIC_COMPARE_TOOLTIP_GTE": "यदि दिइएका पहिलो, दोश्रो भन्दा ठुलो वा बराबर भए true फर्काउनुहोस।", + "LOGIC_OPERATION_TOOLTIP_AND": "यदि दिइएका दुबै सत्य भए true फर्काउनुहोस्।", + "LOGIC_OPERATION_AND": "and", + "LOGIC_OPERATION_TOOLTIP_OR": "यदि कम्तिमा एउटा दिइएको कुरा साँचो छ भने true फर्काउनुहोस्।", + "LOGIC_OPERATION_OR": "or", + "LOGIC_NEGATE_TITLE": "not %1", + "LOGIC_NEGATE_TOOLTIP": "यदि दिइएको गलत भए true फर्काउँछ। यदि दिइएको सही छ भने false फर्काउँछ।", + "LOGIC_BOOLEAN_TRUE": "true", + "LOGIC_BOOLEAN_FALSE": "false", + "LOGIC_BOOLEAN_TOOLTIP": "true वा false फर्काउँछ।", + "LOGIC_NULL": "null", + "LOGIC_NULL_TOOLTIP": "null फर्काउछ।", + "LOGIC_TERNARY_CONDITION": "परीक्षण", + "LOGIC_TERNARY_IF_TRUE": "सत्य भए", + "LOGIC_TERNARY_IF_FALSE": "गलत भए", + "LOGIC_TERNARY_TOOLTIP": "'परीक्षण' मा अवस्था जाँच गर्नुहोस्। यदि सर्त सत्य भए, 'if true' मान फर्काउँछ; अन्यथा 'if false'।", + "MATH_NUMBER_TOOLTIP": "एउटा सङ्ख्या।", + "MATH_TRIG_SIN": "sin", + "MATH_TRIG_COS": "cos", + "MATH_TRIG_TAN": "tan", + "MATH_TRIG_ASIN": "asin", + "MATH_TRIG_ACOS": "acos", + "MATH_TRIG_ATAN": "atan", + "MATH_ARITHMETIC_TOOLTIP_ADD": "दुई सङ्ख्याको योग फर्काउनुहोस्।", + "MATH_ARITHMETIC_TOOLTIP_MINUS": "दुई संख्याको भिन्नता फर्काउनुहोस्।", + "MATH_ARITHMETIC_TOOLTIP_MULTIPLY": "दुई सङ्ख्याको गुणन फर्काउनुहोस्।", + "MATH_ARITHMETIC_TOOLTIP_DIVIDE": "दुई संख्याको भागफल फर्काउनुहोस्।", + "MATH_ARITHMETIC_TOOLTIP_POWER": "पहिलो सङ्ख्यालाई दोस्रो सङ्ख्या पटक गुणा गरेर आएको सङ्ख्या फर्काउनुहोस्।", + "MATH_SINGLE_OP_ROOT": "वर्गमूल", + "MATH_SINGLE_TOOLTIP_ROOT": "संख्याको वर्गमूल फर्काउनुहोस्।", + "MATH_SINGLE_OP_ABSOLUTE": "निरपेक्ष", + "MATH_SINGLE_TOOLTIP_ABS": "एउटा संख्याको निरपेक्ष मान फर्काउनुहोस्।", + "MATH_SINGLE_TOOLTIP_NEG": "संख्याको नकारात्मक मान फर्काउनुहोस्।", + "MATH_SINGLE_TOOLTIP_LN": "एउटा सङ्ख्याको प्राकृतिक लघुगणक फर्काउनुहोस्।", + "MATH_SINGLE_TOOLTIP_LOG10": "एउटा सङ्ख्याको आधार १० को लघुगणक फर्काउनुहोस्।", + "MATH_SINGLE_TOOLTIP_EXP": "संख्याको e को पावर फर्काउनुहोस्।", + "MATH_SINGLE_TOOLTIP_POW10": "सङ्ख्याको 10 को पावर फर्काउनुहोस्।", + "MATH_TRIG_TOOLTIP_SIN": "एउटा कोणको sine फर्काउनुहोस् (रेडियन होईन)।", + "MATH_TRIG_TOOLTIP_COS": "एउटा कोणको cosine फर्काउनुहोस् (रेडियन होईन)।", + "MATH_TRIG_TOOLTIP_TAN": "एउटा कोणको tangent फर्काउनुहोस् (रेडियन होईन)।", + "MATH_TRIG_TOOLTIP_ASIN": "एउटा कोणको arcsine फर्काउनुहोस्।", + "MATH_TRIG_TOOLTIP_ACOS": "एउटा कोणको arccosine फर्काउनुहोस्।", + "MATH_TRIG_TOOLTIP_ATAN": "एउटा कोणको arctangent फर्काउनुहोस्।", + "MATH_CONSTANT_TOOLTIP": "सामान्य स्थिरांक मध्ये एउटा फर्काउनुहोस्: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), वा ∞ (अनन्तता)।", + "MATH_IS_EVEN": "जोर", + "MATH_IS_ODD": "बिजोर", + "MATH_IS_PRIME": "अविभाज्य", + "MATH_IS_WHOLE": "पूर्ण छ", + "MATH_IS_POSITIVE": "धनात्मक", + "MATH_IS_NEGATIVE": "ऋणात्मक", + "MATH_IS_DIVISIBLE_BY": "द्वारा विभाजित छ", + "MATH_IS_TOOLTIP": "जाँच गर्नुहोस् कि संख्या एक सम, बिजोड, अभाज्य, पूर्ण, धनात्मक, ऋणात्मक, वा यदि यो निश्चित संख्या द्वारा विभाजित छ। सही वा गलत फर्काउँछ।", + "MATH_CHANGE_TITLE": "%1 लाई %2 ले परिवर्तन गर्नुहोस्", + "MATH_CHANGE_TOOLTIP": "चल '%1' मा संख्या थप्नुहोस्।", + "MATH_ROUND_TOOLTIP": "सङ्ख्यालाई ठुलो वा सानो पूर्ण सङ्ख्या बनाउनुहोस्।", + "MATH_ROUND_OPERATOR_ROUND": "पूर्ण सङ्ख्या", + "MATH_ROUND_OPERATOR_ROUNDUP": "ठुलो पूर्ण सङ्ख्या", + "MATH_ROUND_OPERATOR_ROUNDDOWN": "सानो पूर्ण सङ्ख्या", + "MATH_ONLIST_OPERATOR_SUM": "सूचीको योगफल", + "MATH_ONLIST_TOOLTIP_SUM": "सूचीमा भएका सबै सङ्ख्याहरूको योगफल फर्काउनुहोस्।", + "MATH_ONLIST_OPERATOR_MIN": "सूचीको न्यूनतम", + "MATH_ONLIST_TOOLTIP_MIN": "सूचीमा सबैभन्दा सानो सङ्ख्या फर्काउनुहोस्।", + "MATH_ONLIST_OPERATOR_MAX": "सूचीको अधिकतम", + "MATH_ONLIST_TOOLTIP_MAX": "सूचीमा सबैभन्दा ठूलो सङ्ख्या फर्काउनुहोस्।", + "MATH_ONLIST_OPERATOR_AVERAGE": "सूचीको औसत", + "MATH_ONLIST_TOOLTIP_AVERAGE": "सूचीमा संख्यात्मक मानहरूको औसत (अंकगणितीय माध्य) फिर्ता गर्नुहोस्।", + "MATH_ONLIST_OPERATOR_MEDIAN": "सूचीको मध्यमा", + "MATH_ONLIST_TOOLTIP_MEDIAN": "सूचीमा मध्य संख्या फर्काउनुहोस्।", + "MATH_ONLIST_TOOLTIP_MODE": "सूचीबाट सबैभन्दा सामान्य वस्तु(हरू) को सूची फर्काउनुहोस्।", + "MATH_ONLIST_OPERATOR_STD_DEV": "सूचीको मानक विचलन", + "MATH_ONLIST_TOOLTIP_STD_DEV": "सूचीको मानक विचलन फर्काउनुहोस्।", + "MATH_ONLIST_OPERATOR_RANDOM": "सूचीको कुनै वस्तु", + "MATH_ONLIST_TOOLTIP_RANDOM": "सूचीबाट कुनै एक फर्काउनुहोस्।", + "MATH_MODULO_TITLE": "%1 ÷ %2 को बाँकी", + "MATH_MODULO_TOOLTIP": "दुई संख्याहरूको भाग गरेर बाँकी फर्काउनुहोस्।", + "MATH_CONSTRAIN_TITLE": "सीमित %1 सानो %2 ठुलो %3", + "MATH_CONSTRAIN_TOOLTIP": "एउटा सङ्ख्यालाई निर्दिष्ट सीमाहरूमा (समावेशी) सीमित गर्नुहोस्।", + "MATH_RANDOM_INT_TITLE": "%1 देखि %2 बिचको कुनै पूर्ण सङ्खया", + "MATH_RANDOM_INT_TOOLTIP": "दुई निर्दिष्ट समावेशी सीमाहरू बीचको कुनै पूर्णांक फर्काउनुहोस्।", + "MATH_RANDOM_FLOAT_TITLE_RANDOM": "कुनै अंश", + "MATH_RANDOM_FLOAT_TOOLTIP": "०.० (समावेशी) र १.० (विशेष) बीचको कुनै अंश फर्काउनुहोस्।", + "MATH_ATAN2_TITLE": "X:%1 Y:%2 को atan2", + "MATH_ATAN2_TOOLTIP": "-180 देखि 180 डिग्रीमा पर्ने (X, Y) बिन्दु को आर्कट्यान्जेन्ट फर्काउनुहोस्।", + "TEXT_TEXT_TOOLTIP": "अक्षर, शब्द वा वाक्य रेखा।", + "TEXT_JOIN_TITLE_CREATEWITH": "यसबाट पाठ बनाउनुहोस्", + "TEXT_JOIN_TOOLTIP": "केही कुराहरू जोडेर पाठ्यांस बनाउनुहोस्।", + "TEXT_CREATE_JOIN_TITLE_JOIN": "मिलाउ", + "TEXT_CREATE_JOIN_TOOLTIP": "यो पाठ्यांस पुन: मिलाउनलाई खण्डहरू थप्नुहोस्, हटाउनुहोस् वा पुन: क्रमबद्ध गर्नुहोस्।", + "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "पाठमा एक चिज थप्नुहोस्।", + "TEXT_APPEND_TITLE": "%1 मा पाठ %2 थप्नुहोस्", + "TEXT_APPEND_TOOLTIP": "चर '%1' मा केही पाठ थप्नुहोस्।", + "TEXT_LENGTH_TITLE": "%1 को लम्बाइ", + "TEXT_LENGTH_TOOLTIP": "दिइएको पाठमा अक्षरहरूको संख्या (स्पेस सहित) फर्काउँछ।", + "TEXT_ISEMPTY_TITLE": "%1 खाली छ", + "TEXT_ISEMPTY_TOOLTIP": "यदि दिइएको पाठ खाली छ भने true फर्काउँछ।", + "TEXT_INDEXOF_TOOLTIP": "दोस्रो पाठमा पहिलो पाठ भेटिएको पहिलो/अन्तिम अनुक्रमणिका फर्काउँछ। पाठ फेला परेन भने %1 फर्काउँछ।", + "TEXT_INDEXOF_TITLE": "पाठमा %1 %2 %3", + "TEXT_INDEXOF_OPERATOR_FIRST": "पाठको पहिलो ठाँउ फेला पार्नुहोस्", + "TEXT_INDEXOF_OPERATOR_LAST": "पाठको अन्तिम ठाँउ फेला पार्नुहोस्", + "TEXT_CHARAT_TITLE": "पाठमा %1 %2", + "TEXT_CHARAT_FROM_START": "अक्षर # निकाल", + "TEXT_CHARAT_FROM_END": "अन्तबाट अक्षर # निकाल", + "TEXT_CHARAT_FIRST": "पहिलो अक्षर निकाल", + "TEXT_CHARAT_LAST": "अन्तिम अक्षर निकाल", + "TEXT_CHARAT_RANDOM": "कुनै अक्षर निकाल", + "TEXT_CHARAT_TOOLTIP": "निर्दिष्ट स्थानको अक्षर फर्काउँछ।", + "TEXT_GET_SUBSTRING_TOOLTIP": "पाठको निर्दिष्ट भाग फर्काउँछ।", + "TEXT_GET_SUBSTRING_INPUT_IN_TEXT": "पाठमा", + "TEXT_GET_SUBSTRING_START_FROM_START": "अक्षर # देखि बाँकी निकाल", + "TEXT_GET_SUBSTRING_START_FROM_END": "अन्तिमको अक्षर # बाट बाँकी निकाल", + "TEXT_GET_SUBSTRING_START_FIRST": "पहिलो अक्षरबाट बाँकी निकाल", + "TEXT_GET_SUBSTRING_END_FROM_START": "अक्षर # सम्म", + "TEXT_GET_SUBSTRING_END_FROM_END": "अन्त्यबाट # अक्षर सम्म", + "TEXT_GET_SUBSTRING_END_LAST": "अन्तिम अक्षरसम्म", + "TEXT_CHANGECASE_TOOLTIP": "फरक अवस्थामा पाठको प्रतिलिपि फर्काउनुहोस्।", + "TEXT_CHANGECASE_OPERATOR_UPPERCASE": "to UPPER CASE", + "TEXT_CHANGECASE_OPERATOR_LOWERCASE": "to lower case", + "TEXT_CHANGECASE_OPERATOR_TITLECASE": "to Title Case", + "TEXT_TRIM_TOOLTIP": "एक वा दुबै छेउबाट खाली ठाउँहरू हटाएर पाठको प्रतिलिपि फर्काउनुहोस्।", + "TEXT_TRIM_OPERATOR_BOTH": "दुबै छेउबाट खाली ठाउँहरू हटाउनुहोस्", + "TEXT_TRIM_OPERATOR_LEFT": "बायाँबाट खाली ठाउँहरू हटाउनुहोस्", + "TEXT_TRIM_OPERATOR_RIGHT": "दायाँ छेउबाट खाली ठाउँहरू हटाउनुहोस्", + "TEXT_PRINT_TITLE": "%1 छाप्नुहोस्", + "TEXT_PRINT_TOOLTIP": "निर्दिष्ट पाठ, नम्बर वा अन्य मान छाप्नुहोस्।", + "TEXT_PROMPT_TYPE_TEXT": "सन्देशको साथ पाठको लागि भन्नुहोस्", + "TEXT_PROMPT_TYPE_NUMBER": "सन्देशको साथ नम्बरको लागि भन्नुहोस्", + "TEXT_PROMPT_TOOLTIP_NUMBER": "नम्बरको लागि प्रयोगकर्तालाई भन्नुहोस्", + "TEXT_PROMPT_TOOLTIP_TEXT": "केहि पाठ को लागी प्रयोगकर्तालाई भन्नुहोस्।", + "TEXT_COUNT_MESSAGE0": "%2 मा %1 गणना गर्नुहोस्", + "TEXT_COUNT_TOOLTIP": "कति पटक केहि पाठ केहि अन्य पाठ भित्र छन्, गणना गर्नुहोस्।", + "TEXT_REPLACE_MESSAGE0": "%3 मा %2 ले %1 लाई प्रतिस्थापन गर्नुहोस्", + "TEXT_REPLACE_TOOLTIP": "केही पाठका सबै घटनाहरू केही अन्य पाठभित्र प्रतिस्थापन गर्नुहोस्।", + "TEXT_REVERSE_MESSAGE0": "%1 लाई उल्टो", + "TEXT_REVERSE_TOOLTIP": "पाठमा अक्षरहरूको क्रमलाई उल्टाउँछ।", + "LISTS_CREATE_EMPTY_TITLE": "खाली सूची बनाउनुहोस्", + "LISTS_CREATE_EMPTY_TOOLTIP": "कुनै तथ्याङ्क नराखी, ० लम्बाइको सूची फिर्ता गर्दछ", + "LISTS_CREATE_WITH_TOOLTIP": "कुनै संख्याको वस्तुहरूको सूची सिर्जना गर्नुहोस्।", + "LISTS_CREATE_WITH_INPUT_WITH": "यसबाट सूची बनाउनुहोस्", + "LISTS_CREATE_WITH_CONTAINER_TITLE_ADD": "सूची", + "LISTS_CREATE_WITH_CONTAINER_TOOLTIP": "यो ब्लकको सूची पुन: मिलाउनलाई खण्डहरू थप्नुहोस्, हटाउनुहोस् वा पुन: क्रमबद्ध गर्नुहोस्।", + "LISTS_CREATE_WITH_ITEM_TOOLTIP": "सूचीमा एउटा थप्नुहोस्।", + "LISTS_REPEAT_TOOLTIP": "दिइएको मान निर्दिष्ट सङ्ख्यामा दोहोऱ्याएर सूची सिर्जना गर्दछ।", + "LISTS_REPEAT_TITLE": "%1 लाई %2 पटक राखेर सूची बनाउनुहोस्", + "LISTS_LENGTH_TITLE": "%1 को लम्बाइ", + "LISTS_LENGTH_TOOLTIP": "सूचीको लम्बाइ फर्काउँछ।", + "LISTS_ISEMPTY_TITLE": "%1 खाली छ", + "LISTS_ISEMPTY_TOOLTIP": "यदि सूची खाली छ भने true फर्काउँछ।", + "LISTS_INLIST": "सूचीमा", + "LISTS_INDEX_OF_FIRST": "पहिलो घटना फेला पार्नुहोस्", + "LISTS_INDEX_OF_LAST": "अन्तिम घटना फेला पार्नुहोस्", + "LISTS_INDEX_OF_TOOLTIP": "सूचीबाट वस्तुको पहिलो/अन्तिम घटनाको अनुक्रमणिका फर्काउँछ। वस्तु फेला परेन भने %1 फर्काउँछ।", + "LISTS_GET_INDEX_GET": "निकाल", + "LISTS_GET_INDEX_GET_REMOVE": "निकाल र हटाउ", "PROCEDURES_MUTATORCONTAINER_TITLE": "इन्पुटहरू", "DIALOG_OK": "हुन्छ", - "DIALOG_CANCEL": "रद्द गर्नुहोस्" + "DIALOG_CANCEL": "हुदैन" } diff --git a/msg/json/nl.json b/msg/json/nl.json index 8961dc112..914a8ef8d 100644 --- a/msg/json/nl.json +++ b/msg/json/nl.json @@ -46,13 +46,13 @@ "RENAME_VARIABLE": "Variabele hernoemen...", "RENAME_VARIABLE_TITLE": "Alle variabelen \"%1\" hernoemen naar:", "NEW_VARIABLE": "Variabele maken...", - "NEW_STRING_VARIABLE": "Creëer tekstvariabele", - "NEW_NUMBER_VARIABLE": "Creëer numeriek variabele", - "NEW_COLOUR_VARIABLE": "Creëer kleurvariabele", - "NEW_VARIABLE_TYPE_TITLE": "Nieuw soort variabele", + "NEW_STRING_VARIABLE": "Tekstvariabele maken...", + "NEW_NUMBER_VARIABLE": "Numeriek variabele maken...", + "NEW_COLOUR_VARIABLE": "Kleurvariabele maken...", + "NEW_VARIABLE_TYPE_TITLE": "Nieuw variabeletype:", "NEW_VARIABLE_TITLE": "Nieuwe variabelenaam:", "VARIABLE_ALREADY_EXISTS": "Er bestaat al een variabele met de naam \"%1\".", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Een variabele met de naam '%1' bestaat al voor een ander soort variabele: '%2'.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Een variabele met de naam '%1' bestaat al voor een ander variabeletype: '%2'.", "VARIABLE_ALREADY_EXISTS_FOR_A_PARAMETER": "Een variabele met de naam '%1' bestaat al als parameter in de procedure '%2'.", "DELETE_VARIABLE_CONFIRMATION": "%1 gebruiken van de variabele \"%2\" verwijderen?", "CANNOT_DELETE_VARIABLE_PROCEDURE": "De variabele \"%1\" kan niet verwijderd worden omdat die onderdeel uitmaakt van de definitie van de functie \"%2\"", @@ -196,7 +196,7 @@ "MATH_RANDOM_FLOAT_TITLE_RANDOM": "willekeurige fractie", "MATH_RANDOM_FLOAT_TOOLTIP": "Geeft een willekeurige fractie tussen 0.0 (inclusief) en 1.0 (exclusief).", "MATH_ATAN2_TITLE": "atan2 van X:%1 Y:%2", - "MATH_ATAN2_TOOLTIP": "Geef de boogtangens van punt (X, Y) terug in graden tussen -180 naar 180.", + "MATH_ATAN2_TOOLTIP": "Geef de boogtangens van punt (X, Y) terug in graden tussen -180 en 180.", "TEXT_TEXT_HELPURL": "https://nl.wikipedia.org/wiki/Tekenreeks", "TEXT_TEXT_TOOLTIP": "Een letter, woord of een regel tekst.", "TEXT_JOIN_TITLE_CREATEWITH": "maak tekst met", @@ -204,7 +204,7 @@ "TEXT_CREATE_JOIN_TITLE_JOIN": "samenvoegen", "TEXT_CREATE_JOIN_TOOLTIP": "Toevoegen, verwijderen of volgorde wijzigen van secties om dit tekstblok opnieuw in te stellen.", "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Voegt een item aan de tekst toe.", - "TEXT_APPEND_TITLE": "voor%1 voeg tekst toe van %2", + "TEXT_APPEND_TITLE": "voor %1 voeg tekst toe: %2", "TEXT_APPEND_TOOLTIP": "Voeg tekst toe aan de variabele \"%1\".", "TEXT_LENGTH_TITLE": "lengte van %1", "TEXT_LENGTH_TOOLTIP": "Geeft het aantal tekens terug (inclusief spaties) in de opgegeven tekst.", diff --git a/msg/json/pt-br.json b/msg/json/pt-br.json index 895f3ec41..2754c6039 100644 --- a/msg/json/pt-br.json +++ b/msg/json/pt-br.json @@ -14,6 +14,7 @@ "Fasouzafreitas", "Felipe L. Ewald", "Glaucia Japui Gonçalves", + "Lc97", "Lowvy", "Luk3", "Mauricio", @@ -62,13 +63,13 @@ "NEW_VARIABLE_TYPE_TITLE": "Tipo da nova variável:", "NEW_VARIABLE_TITLE": "Nome da nova variável:", "VARIABLE_ALREADY_EXISTS": "A variável chamada '%1' já existe.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Já existe uma variável chamada '%1' para outra do tipo: '%2'.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Já existe uma variável chamada '%1' para outro tipo: '%2'.", "VARIABLE_ALREADY_EXISTS_FOR_A_PARAMETER": "Já existe uma variável chamada '%1' como parâmetro no procedimento '%2", "DELETE_VARIABLE_CONFIRMATION": "Deletar %1 usos da variável '%2'?", "CANNOT_DELETE_VARIABLE_PROCEDURE": "Não se pode deletar a variável '%1' porque é parte da definição da função '%2'", "DELETE_VARIABLE": "Deletar a variável '%1'", "COLOUR_PICKER_HELPURL": "https://pt.wikipedia.org/wiki/Cor", - "COLOUR_PICKER_TOOLTIP": "Escolher uma cor da palheta de cores.", + "COLOUR_PICKER_TOOLTIP": "Escolher uma cor da palheta.", "COLOUR_RANDOM_TITLE": "cor aleatória", "COLOUR_RANDOM_TOOLTIP": "Escolher cor de forma aleatória.", "COLOUR_RGB_TITLE": "colorir com", diff --git a/msg/json/ru.json b/msg/json/ru.json index bf9f36ff1..b242563b8 100644 --- a/msg/json/ru.json +++ b/msg/json/ru.json @@ -118,7 +118,7 @@ "LOGIC_BOOLEAN_TOOLTIP": "Возвращает значение истина или ложь.", "LOGIC_NULL": "ничто", "LOGIC_NULL_TOOLTIP": "Возвращает ничто.", - "LOGIC_TERNARY_HELPURL": "https://ru.wikipedia.org/wiki/Тернарная_условная_операция", + "LOGIC_TERNARY_HELPURL": "https://ru.wikipedia.org/wiki/%3F#В_компьютерах", "LOGIC_TERNARY_CONDITION": "выбрать по", "LOGIC_TERNARY_IF_TRUE": "если истина", "LOGIC_TERNARY_IF_FALSE": "если ложь", @@ -270,6 +270,7 @@ "LISTS_INDEX_OF_FIRST": "найти первое вхождение элемента", "LISTS_INDEX_OF_LAST": "найти последнее вхождение элемента", "LISTS_INDEX_OF_TOOLTIP": "Возвращает номер позиции первого/последнего вхождения элемента в списке. Возвращает %1, если элемент не найден.", + "LISTS_GET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", "LISTS_GET_INDEX_GET": "взять", "LISTS_GET_INDEX_GET_REMOVE": "взять и удалить", "LISTS_GET_INDEX_REMOVE": "удалить", @@ -334,6 +335,7 @@ "PROCEDURES_DEFNORETURN_PROCEDURE": "выполнить что-то", "PROCEDURES_BEFORE_PARAMS": "с:", "PROCEDURES_CALL_BEFORE_PARAMS": "с:", + "PROCEDURES_CALL_DISABLED_DEF_WARNING": "Невозможно запустить пользовательскую функцию '%1', поскольку блок определения отключен.", "PROCEDURES_DEFNORETURN_TOOLTIP": "Создаёт процедуру, не возвращающую значение.", "PROCEDURES_DEFNORETURN_COMMENT": "Опишите эту функцию…", "PROCEDURES_DEFRETURN_HELPURL": "https://ru.wikipedia.org/wiki/Функция_(программирование)", diff --git a/msg/json/ta.json b/msg/json/ta.json index 9eb44de12..5138bc26c 100644 --- a/msg/json/ta.json +++ b/msg/json/ta.json @@ -7,7 +7,8 @@ "Fahimrazick", "Karuthan", "Mahir78", - "Thangamani-arun" + "Thangamani-arun", + "தமிழ்நேரம்" ] }, "VARIABLES_DEFAULT_NAME": "உருப்படி", @@ -16,11 +17,13 @@ "DUPLICATE_BLOCK": "மறுநகல்", "ADD_COMMENT": "கருத்தை சேர்", "REMOVE_COMMENT": "கருத்தை நீக்கு", + "DUPLICATE_COMMENT": "கருத்தை நகலெடு", "EXTERNAL_INPUTS": "வெளி கருவிகளுடன் உள்ளீடு", "INLINE_INPUTS": "சூழமைவில் உள்ளீடு", "DELETE_BLOCK": "உறுப்பை நீக்கு", "DELETE_X_BLOCKS": "%1 உறுப்பை நீக்கு", "DELETE_ALL_BLOCKS": "அனைத்து %1 நிரல் துண்டுகளையும் அழிக்கவா??", + "CLEAN_UP": "தொகுதிகளைச் சுத்தம் செய்", "COLLAPSE_BLOCK": "உறுப்பை மரை", "COLLAPSE_ALL": "உறுப்புகளை மரை", "EXPAND_BLOCK": "உறுப்பை காட்டு", @@ -34,8 +37,12 @@ "RENAME_VARIABLE": "மாறிலியை மறுபெயரிடுக...", "RENAME_VARIABLE_TITLE": "அனைத்து '%1' மாறிலிகளையும் பின்வருமாறு மறுபெயரிடுக:", "NEW_VARIABLE": "மாறிலியை உருவாக்குக...", + "NEW_STRING_VARIABLE": "சரம் மாறியை உருவாக்கு...", + "NEW_NUMBER_VARIABLE": "எண் மாறியை உருவாக்கு...", + "NEW_COLOUR_VARIABLE": "வண்ண மாறியை உருவாக்கு...", "NEW_VARIABLE_TYPE_TITLE": "புதிய மாறிலியின் பெயர்:", "NEW_VARIABLE_TITLE": "புதிய மாறிலியின் பெயர்:", + "VARIABLE_ALREADY_EXISTS": "'%1' என்ற பெயர் கொண்ட ஒரு மாறி ஏற்கனவே உள்ளது.", "COLOUR_PICKER_TOOLTIP": "வண்ண தட்டிலிருந்து ஒரு நிறத்தைத் தேர்ந்தெடுக்கவும்.", "COLOUR_RANDOM_TITLE": "தற்போக்கு நிறம்", "COLOUR_RANDOM_TOOLTIP": "தற்போக்கில் ஒரு நிறத்தை தேர்ந்தெடுக்கவும்.", diff --git a/msg/json/tdd.json b/msg/json/tdd.json index 2be90564c..2bb756d23 100644 --- a/msg/json/tdd.json +++ b/msg/json/tdd.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "AeyTaiNuea", "咽頭べさ" ] }, @@ -71,7 +72,7 @@ "LOGIC_COMPARE_TOOLTIP_GT": "ᥔᥒᥴᥝᥣᥲ ᥟᥢᥴᥚᥫᥛᥳᥔᥬᥱ ᥟᥩᥢᥴᥖᥣᥒᥰ ᥕᥬᥱᥘᥫᥴ ᥟᥢᥴᥚᥫᥛᥳᥔᥬᥱ ᥛᥣᥭᥴᥔᥩᥒᥴᥓᥪᥒᥴ ᥛᥦᥰᥑᥪᥢᥰ ᥞᥬᥲᥛᥣᥢᥱᥛᥦᥢᥲ.", "LOGIC_COMPARE_TOOLTIP_GTE": "ᥔᥒᥴᥝᥣᥲ ᥟᥢᥴᥚᥫᥛᥳᥔᥬᥱ ᥟᥩᥢᥴᥖᥣᥒᥰ ᥕᥬᥱᥘᥫᥴ ᥟᥛᥱᥢᥢᥴ ᥚᥥᥒᥱᥙᥥᥒᥰ ᥟᥢᥴᥚᥫᥛᥳᥔᥬᥱ ᥛᥣᥭᥴᥔᥩᥒᥴᥓᥪᥒᥴ ᥛᥦᥰᥑᥪᥢᥰ ᥞᥬᥲᥛᥣᥢᥱᥛᥦᥢᥲ.", "LOGIC_OPERATION_TOOLTIP_AND": "ᥔᥒᥴᥝᥣᥲ ᥟᥢᥴᥚᥫᥛᥳᥔᥬᥱ ᥖᥒᥰᥔᥩᥒᥴᥟᥢᥴ ᥛᥣᥢᥱᥛᥦᥢᥲᥓᥪᥒᥴᥓᥪᥒᥴ ᥛᥦᥰᥑᥪᥢᥰ ᥞᥬᥲᥛᥣᥢᥱᥛᥦᥢᥲ.", - "LOGIC_OPERATION_AND": "ᥘᥦᥲ", + "LOGIC_OPERATION_AND": "ᥘᥦᥰ", "LOGIC_OPERATION_TOOLTIP_OR": "ᥔᥒᥴᥝᥣᥲ ᥟᥢᥴᥚᥫᥛᥳᥔᥬᥱ ᥐᥛᥰᥘᥪᥢᥰᥔᥧᥖᥰ ᥛᥣᥢᥱᥛᥦᥢᥲᥓᥪᥒᥴ ᥛᥦᥰᥑᥪᥢᥰ ᥞᥬᥲᥛᥣᥢᥱᥛᥦᥢᥲ.", "LOGIC_OPERATION_OR": "ᥟᥛᥱᥢᥢᥴ", "LOGIC_NEGATE_TITLE": "ᥟᥛᥱᥓᥬᥲ %1", @@ -101,8 +102,8 @@ "MATH_SINGLE_TOOLTIP_NEG": "ᥘᥥᥝᥴᥑᥪᥢᥰ ᥟᥢᥴᥔᥣᥢᥴᥑᥖᥰ ᥢᥬᥰ ᥛᥣᥭᥴᥢᥙᥳ.", "MATH_SINGLE_TOOLTIP_LN": "ᥘᥥᥝᥴᥑᥪᥢᥰ ᥘᥩᥐᥰᥘᥣᥭᥰᥢᥙᥳ ᥢᥬᥰᥛᥣᥭᥴᥢᥙᥳ.", "MATH_SINGLE_TOOLTIP_LOG10": "ᥘᥥᥝᥴᥑᥪᥢᥰ ᥙᥪᥢᥳᥗᥣᥢᥴ 10 ᥘᥩᥐᥰᥘᥣᥭᥰᥢᥙᥳ ᥢᥬᥰᥛᥣᥭᥴᥢᥙᥳ.", - "MATH_SINGLE_TOOLTIP_EXP": "ᥘᥥᥝᥴᥑᥪᥢᥰ e ᥐᥣᥱᥖᥤᥲ ᥙᥣᥱᥝᥣᥱ ᥢᥬᥰᥛᥣᥭᥴᥢᥙᥳ.", - "MATH_SINGLE_TOOLTIP_POW10": "ᥘᥥᥝᥴᥑᥪᥢᥰ 10 ᥐᥣᥱᥖᥤᥲ ᥙᥣᥱᥝᥣᥱ ᥢᥬᥰᥛᥣᥭᥴᥢᥙᥳ.", + "MATH_SINGLE_TOOLTIP_EXP": "ᥘᥥᥝᥴ ᥑᥪᥢᥰ e ᥐᥣᥱ ᥖᥤ ᥙᥣᥱ ᥝᥣᥱ ᥘᥬᥰ ᥛᥣᥭᥴ ᥘᥙᥳ.", + "MATH_SINGLE_TOOLTIP_POW10": "ᥘᥥᥝᥴ ᥑᥪᥢᥰ 10 ᥐᥣᥱ ᥖᥤ ᥙᥣᥱ ᥝᥣᥱ ᥘᥬᥰ ᥛᥣᥭᥴ ᥘᥙᥳ.", "MATH_IS_EVEN": "ᥙᥥᥢᥴᥐᥨᥙᥳ", "MATH_IS_ODD": "ᥙᥥᥢᥴᥐᥤᥐᥲ" } diff --git a/msg/json/tr.json b/msg/json/tr.json index a31acf143..b65a5ce31 100644 --- a/msg/json/tr.json +++ b/msg/json/tr.json @@ -17,6 +17,7 @@ "McAang", "Meelo", "MuratTheTurkish", + "RuzDD", "Stonecy", "Uncitoyen", "Uğurkent", @@ -28,7 +29,7 @@ "VARIABLES_DEFAULT_NAME": "öge", "UNNAMED_KEY": "isimsiz", "TODAY": "Bugün", - "DUPLICATE_BLOCK": "Yinelenen", + "DUPLICATE_BLOCK": "Yinele", "ADD_COMMENT": "Yorum Ekle", "REMOVE_COMMENT": "Yorumu Sil", "DUPLICATE_COMMENT": "Yinelenen Yorum", @@ -51,7 +52,7 @@ "RENAME_VARIABLE": "Değişkeni yeniden adlandır...", "RENAME_VARIABLE_TITLE": "Tüm '%1' değişkenini yeniden adlandır:", "NEW_VARIABLE": "Değişken oluştur...", - "NEW_STRING_VARIABLE": "Dizi değişkeni oluştur...", + "NEW_STRING_VARIABLE": "Karakter dizisi değişkeni oluştur...", "NEW_NUMBER_VARIABLE": "Sayı değişkeni oluştur...", "NEW_COLOUR_VARIABLE": "Renk değişkeni oluştur...", "NEW_VARIABLE_TYPE_TITLE": "Yeni değişken tipi:", diff --git a/msg/json/vi.json b/msg/json/vi.json index 8585dded9..5ebfc9230 100644 --- a/msg/json/vi.json +++ b/msg/json/vi.json @@ -9,6 +9,7 @@ "Nguyenvanduocit", "Nguyễn Mạnh An", "Qneutron", + "Quangkhanhhuynh", "SierraNguyen", "TARGET6tidiem", "Withoutaname" @@ -47,6 +48,7 @@ "NEW_VARIABLE_TITLE": "Tên của biến mới:", "VARIABLE_ALREADY_EXISTS": "Một biến có tên '%1' đã tồn tại.", "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Giá trị '%1' đã tồn tại dưới dạng: '%2'.", + "VARIABLE_ALREADY_EXISTS_FOR_A_PARAMETER": "Một biến có tên '%1' đã tồn tại dưới dạng tham số trong quy trình '%2'.", "DELETE_VARIABLE_CONFIRMATION": "Xóa %1 lần dùng của giá trị '%2'?", "CANNOT_DELETE_VARIABLE_PROCEDURE": "Không thể xóa giá trị '%1' vì nó được bao gồm trong định nghĩa của chức năng '%2'", "DELETE_VARIABLE": "Xóa giá trị '%1'", @@ -324,9 +326,9 @@ "PROCEDURES_ALLOW_STATEMENTS": "cho phép báo cáo", "PROCEDURES_DEF_DUPLICATE_WARNING": "Chú ý: Thủ tục này có lặp lại tên các tham số.", "PROCEDURES_CALLNORETURN_HELPURL": "https://vi.wikipedia.org/wiki/Ch%C6%B0%C6%A1ng_tr%C3%ACnh_con", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Chạy một thủ tục không có giá trị hoàn trả.", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Thực hiện hàm được xác định bởi người dùng '%1'.", "PROCEDURES_CALLRETURN_HELPURL": "https://vi.wikipedia.org/wiki/Ch%C6%B0%C6%A1ng_tr%C3%ACnh_con", - "PROCEDURES_CALLRETURN_TOOLTIP": "Chạy một thủ tục có giá trị hoàn trả.", + "PROCEDURES_CALLRETURN_TOOLTIP": "Thực hiện hàm được xác định bởi người dùng '%1' và sử dụng đầu ra của nó.", "PROCEDURES_MUTATORCONTAINER_TITLE": "các tham số", "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Thêm, xóa hoặc sắp xếp lại các đầu vào cho hàm này.", "PROCEDURES_MUTATORARG_TITLE": "biến:", diff --git a/msg/json/zh-hans.json b/msg/json/zh-hans.json index 70e48beb1..7bb6b4d50 100644 --- a/msg/json/zh-hans.json +++ b/msg/json/zh-hans.json @@ -4,6 +4,7 @@ ")8", "A Chinese Wikipedian", "Ambeta", + "Anterdc99", "DGCK81LNN", "Deathkon", "Duzc2", @@ -24,6 +25,7 @@ "WindWood", "Xiaomingyan", "Yfdyh000", + "人间百态", "佛壁灯", "沈澄心", "아라" @@ -125,7 +127,7 @@ "LOGIC_BOOLEAN_TOOLTIP": "返回 true 或 false。", "LOGIC_NULL": "空", "LOGIC_NULL_TOOLTIP": "返回空值。", - "LOGIC_TERNARY_HELPURL": "https://zh.wikipedia.org/wiki/条件运算符", + "LOGIC_TERNARY_HELPURL": "https://zh.wikipedia.org/wiki/条件运算符%3F:", "LOGIC_TERNARY_CONDITION": "断言", "LOGIC_TERNARY_IF_TRUE": "如果为 true", "LOGIC_TERNARY_IF_FALSE": "如果为 false", @@ -278,6 +280,7 @@ "LISTS_INDEX_OF_FIRST": "寻找第一次出现的项", "LISTS_INDEX_OF_LAST": "寻找最后一次出现的项", "LISTS_INDEX_OF_TOOLTIP": "返回在列表中的第一/最后一个匹配项的索引值。如果找不到项目则返回%1。", + "LISTS_GET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", "LISTS_GET_INDEX_GET": "取得", "LISTS_GET_INDEX_GET_REMOVE": "取得并移除", "LISTS_GET_INDEX_REMOVE": "移除", diff --git a/msg/json/zh-hant.json b/msg/json/zh-hant.json index 167422e71..16084e23b 100644 --- a/msg/json/zh-hant.json +++ b/msg/json/zh-hant.json @@ -11,6 +11,7 @@ "Kly", "LNDDYL", "Liuxinyu970226", + "Sdovan1", "Sean0115", "Wehwei", "列维劳德", @@ -22,8 +23,8 @@ "VARIABLES_DEFAULT_NAME": "項目", "UNNAMED_KEY": "未命名", "TODAY": "今天", - "DUPLICATE_BLOCK": "重複", - "ADD_COMMENT": "加入註解", + "DUPLICATE_BLOCK": "再製", + "ADD_COMMENT": "添加評論", "REMOVE_COMMENT": "移除註解", "DUPLICATE_COMMENT": "複製註解", "EXTERNAL_INPUTS": "外部輸入", @@ -88,28 +89,28 @@ "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "跳過這個循環的其餘步驟,並繼續下一次的循環。", "CONTROLS_FLOW_STATEMENTS_WARNING": "警告:此區塊僅可用於循環內。", "CONTROLS_IF_TOOLTIP_1": "當值為 true 時,執行一些陳述式。", - "CONTROLS_IF_TOOLTIP_2": "值為是(true)就執行第一塊陳述式,否則執行第二塊。", + "CONTROLS_IF_TOOLTIP_2": "如果值為 true 就執行第一塊陳述式,否則執行第二塊。", "CONTROLS_IF_TOOLTIP_3": "如果第一個值為 true,則執行第一塊陳述式。否則,當第二個值為 true 時,則執行第二塊陳述式。", - "CONTROLS_IF_TOOLTIP_4": "如果第一個值為 true,則執行第一塊陳述式。否則當第二個值為 true 時,則執行第二塊陳述式。如果前幾個敘述都不為 ture,則執行最後一塊陳述式。", + "CONTROLS_IF_TOOLTIP_4": "如果第一個值為 true,則執行第一塊陳述式。否則當第二個值為 true 時,則執行第二塊陳述式。如果前幾個敘述都不為 true,則執行最後一塊陳述式。", "CONTROLS_IF_MSG_IF": "如果", "CONTROLS_IF_MSG_ELSEIF": "否則,如果", "CONTROLS_IF_MSG_ELSE": "否則", "CONTROLS_IF_IF_TOOLTIP": "添加、刪除或重新排列各部份以重新配置這個「如果」區塊。", "CONTROLS_IF_ELSEIF_TOOLTIP": "添加條件到「如果」區塊。", - "CONTROLS_IF_ELSE_TOOLTIP": "加入一個最終、所有條件都執行的部份到「如果」區塊中。", + "CONTROLS_IF_ELSE_TOOLTIP": "添加一個最終、所有條件都執行的部份到「如果」區塊中。", "LOGIC_COMPARE_HELPURL": "https://zh.wikipedia.org/wiki/不等", - "LOGIC_COMPARE_TOOLTIP_EQ": "如果這兩個輸入的結果相等,返回 true。", - "LOGIC_COMPARE_TOOLTIP_NEQ": "如果這兩個輸入的結果不相等,返回 true。", + "LOGIC_COMPARE_TOOLTIP_EQ": "如果兩個輸入的結果相等,返回 true。", + "LOGIC_COMPARE_TOOLTIP_NEQ": "如果兩個輸入的結果不相等,返回 true。", "LOGIC_COMPARE_TOOLTIP_LT": "如果第一個輸入結果比第二個小,返回 true。", "LOGIC_COMPARE_TOOLTIP_LTE": "如果第一個輸入結果小於或等於第二個,返回 true。", "LOGIC_COMPARE_TOOLTIP_GT": "如果第一個輸入結果大於第二個,返回 true。", "LOGIC_COMPARE_TOOLTIP_GTE": "如果第一個輸入結果大於或等於第二個,返回 true。", "LOGIC_OPERATION_TOOLTIP_AND": "如果兩個輸入結果都為 true,則返回 true。", - "LOGIC_OPERATION_AND": "和", + "LOGIC_OPERATION_AND": "且", "LOGIC_OPERATION_TOOLTIP_OR": "如果至少一個輸入結果為 true,返回 true。", "LOGIC_OPERATION_OR": "或", "LOGIC_NEGATE_TITLE": "%1 不成立", - "LOGIC_NEGATE_TOOLTIP": "如果輸入結果是 false,則返回 true。如果輸入結果是 true,則返回 false。", + "LOGIC_NEGATE_TOOLTIP": "如果輸入結果是 false,則返回 true;如果輸入結果是 true,則返回 false。", "LOGIC_BOOLEAN_TRUE": "真", "LOGIC_BOOLEAN_FALSE": "假", "LOGIC_BOOLEAN_TOOLTIP": "返回真或假。", @@ -203,7 +204,7 @@ "TEXT_TEXT_TOOLTIP": "一個字母、一個字詞或一行字", "TEXT_JOIN_TITLE_CREATEWITH": "字串組合", "TEXT_JOIN_TOOLTIP": "通過連接任意數量的項目來建立一串文字。", - "TEXT_CREATE_JOIN_TITLE_JOIN": "加入", + "TEXT_CREATE_JOIN_TITLE_JOIN": "串連", "TEXT_CREATE_JOIN_TOOLTIP": "添加、刪除或重新排列各部份以重新配置這個文字區塊。", "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "添加一個項目到字串中。", "TEXT_APPEND_TITLE": "至 %1 套用文字 %2", @@ -268,6 +269,7 @@ "LISTS_INDEX_OF_FIRST": "從 最前面 索引項目", "LISTS_INDEX_OF_LAST": "從 最後面 索引項目", "LISTS_INDEX_OF_TOOLTIP": "在清單中檢索是否有包含項目,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。", + "LISTS_GET_INDEX_HELPURL": "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list", "LISTS_GET_INDEX_GET": "取得", "LISTS_GET_INDEX_GET_REMOVE": "取得並移除", "LISTS_GET_INDEX_REMOVE": "移除", @@ -332,6 +334,7 @@ "PROCEDURES_DEFNORETURN_PROCEDURE": "做些什麼", "PROCEDURES_BEFORE_PARAMS": "與:", "PROCEDURES_CALL_BEFORE_PARAMS": "與:", + "PROCEDURES_CALL_DISABLED_DEF_WARNING": "無法執行使用者定義的函式「%1」,因為定義區塊已停用。", "PROCEDURES_DEFNORETURN_TOOLTIP": "創建一個無回傳值的函式。", "PROCEDURES_DEFNORETURN_COMMENT": "描述此函式...", "PROCEDURES_DEFRETURN_HELPURL": "https://zh.wikipedia.org/wiki/子程式", From 3ac2fb9f82526af8a12c3aefef8f1c0f6a766189 Mon Sep 17 00:00:00 2001 From: Maribeth Bottorff Date: Mon, 20 May 2024 11:33:52 -0700 Subject: [PATCH 25/25] chore: update metadata for v11 release (#8163) --- tests/scripts/check_metadata.sh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tests/scripts/check_metadata.sh b/tests/scripts/check_metadata.sh index f8d7b7457..5c4eb5dcc 100755 --- a/tests/scripts/check_metadata.sh +++ b/tests/scripts/check_metadata.sh @@ -38,7 +38,8 @@ readonly RELEASE_DIR='dist' # Q3 2023 10.1.3 898859 # Q4 2023 10.2.2 903535 # Q1 2024 10.3.1 914366 -readonly BLOCKLY_SIZE_EXPECTED=914366 +# Q2 2024 11.0.0 905365 +readonly BLOCKLY_SIZE_EXPECTED=905365 # Size of blocks_compressed.js # Q2 2019 2.20190722.0 75618 @@ -62,7 +63,8 @@ readonly BLOCKLY_SIZE_EXPECTED=914366 # Q3 2023 10.1.3 90150 # Q4 2023 10.2.2 90269 # Q1 2024 10.3.1 90269 -readonly BLOCKS_SIZE_EXPECTED=90269 +# Q2 2024 11.0.0 88376 +readonly BLOCKS_SIZE_EXPECTED=88376 # Size of blockly_compressed.js.gz # Q2 2019 2.20190722.0 180925 @@ -87,7 +89,8 @@ readonly BLOCKS_SIZE_EXPECTED=90269 # Q3 2023 10.1.3 180553 # Q4 2023 10.2.2 181474 # Q1 2024 10.3.1 184237 -readonly BLOCKLY_GZ_SIZE_EXPECTED=184237 +# Q2 2024 11.0.0 182249 +readonly BLOCKLY_GZ_SIZE_EXPECTED=182249 # Size of blocks_compressed.js.gz # Q2 2019 2.20190722.0 14552 @@ -111,7 +114,8 @@ readonly BLOCKLY_GZ_SIZE_EXPECTED=184237 # Q3 2023 10.1.3 16508 # Q4 2023 10.2.2 16442 # Q1 2024 10.3.1 16533 -readonly BLOCKS_GZ_SIZE_EXPECTED=16533 +# Q2 2024 11.0.0 15815 +readonly BLOCKS_GZ_SIZE_EXPECTED=15815 # ANSI colors readonly BOLD_GREEN='\033[1;32m'