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/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/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( diff --git a/core/bubbles/textinput_bubble.ts b/core/bubbles/textinput_bubble.ts index 2784b5cb6..d7d1f5ae7 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,19 +198,12 @@ 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) { - 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); @@ -310,11 +303,12 @@ 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; - text-overflow: hidden; + width: 100%; + height: 100%; } `); 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)); } /** diff --git a/core/comments/comment_view.ts b/core/comments/comment_view.ts index 553f7d02b..52f92b567 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; } /** @@ -401,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`; } /** @@ -773,14 +774,13 @@ css.register(` .blocklyComment .blocklyTextarea { background-color: var(--commentFillColour); border: 1px solid var(--commentBorderColour); - outline: 0; - resize: none; - overflow: hidden; box-sizing: border-box; - padding: 8px; + display: block; + outline: 0; + padding: 5px; + resize: none; width: 100%; height: 100%; - display: block; } .blocklyReadonly.blocklyComment .blocklyTextarea { @@ -810,6 +810,7 @@ css.register(` } .blocklyCommentTopbarBackground { + cursor: grab; fill: var(--commentBorderColour); height: 24px; } diff --git a/core/comments/rendered_workspace_comment.ts b/core/comments/rendered_workspace_comment.ts index a2b4d689f..b5818895f 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(); + }, + ); } /** @@ -120,11 +129,31 @@ 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(); - return new Rect(loc.y, loc.y + size.height, loc.x, loc.x + size.width); + const size = this.view?.getSize() ?? this.getSize(); + 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. */ @@ -138,7 +167,6 @@ export class RenderedWorkspaceComment override moveTo(location: Coordinate, reason?: string[] | undefined): void { super.moveTo(location, reason); this.view.moveTo(location); - this.snapToGrid(); } /** @@ -209,7 +237,6 @@ export class RenderedWorkspaceComment /** Ends the drag on the comment. */ endDrag(): void { - this.snapToGrid(); this.dragStrategy.endDrag(); } 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/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/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() { diff --git a/core/dragging/dragger.ts b/core/dragging/dragger.ts index 25266799e..71cfae471 100644 --- a/core/dragging/dragger.ts +++ b/core/dragging/dragger.ts @@ -13,6 +13,9 @@ 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'; +import * as blockAnimations from '../block_animations.js'; +import {BlockSvg} from '../block_svg.js'; export class Dragger implements IDragger { protected startLoc: Coordinate; @@ -94,6 +97,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); @@ -103,13 +107,24 @@ 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(); + eventUtils.setGroup(origGroup); this.draggable.dispose(); + eventUtils.setGroup(newGroup); } } 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 { diff --git a/core/insertion_marker_previewer.ts b/core/insertion_marker_previewer.ts index 6ed278c40..3cc9f1a04 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 @@ -132,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. @@ -154,6 +133,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. @@ -210,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; 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. * 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/core/serialization/blocks.ts b/core/serialization/blocks.ts index be5960965..dbb58cffb 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'; @@ -30,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 */ @@ -418,6 +419,7 @@ export function appendInternal( } eventUtils.disable(); + const variablesBeforeCreation = workspace.getAllVariables(); let block; try { block = appendPrivate(state, workspace, {parentConnection, isShadow}); @@ -425,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); @@ -486,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. @@ -523,12 +557,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, 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 - - - - + + + + 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 @@ - + 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/子程式", 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, 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:   - +

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(); 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'