diff --git a/src/lib/blocks.js b/src/lib/blocks.js index fb858313c8451459ed8fde5968cd502c5d44bd0c..c1bde0ff2e69c310977c84308cd73c802655d28f 100644 --- a/src/lib/blocks.js +++ b/src/lib/blocks.js @@ -62,11 +62,14 @@ export default function (vm) { }; const backdropsMenu = function () { + const next = ScratchBlocks.ScratchMsgs.translate('LOOKS_NEXTBACKDROP', 'next backdrop'); + const previous = ScratchBlocks.ScratchMsgs.translate('LOOKS_PREVIOUSBACKDROP', 'previous backdrop'); + const random = ScratchBlocks.ScratchMsgs.translate('LOOKS_RANDOMBACKDROP', 'random backdrop'); if (vm.runtime.targets[0] && vm.runtime.targets[0].getCostumes().length > 0) { return vm.runtime.targets[0].getCostumes().map(costume => [costume.name, costume.name]) - .concat([['next backdrop', 'next backdrop'], - ['previous backdrop', 'previous backdrop'], - ['random backdrop', 'random backdrop']]); + .concat([[next, 'next backdrop'], + [previous, 'previous backdrop'], + [random, 'random backdrop']]); } return [['', '']]; }; @@ -103,7 +106,8 @@ export default function (vm) { } return menu; } - return [['myself', '_myself_']].concat(spriteMenu()); + const myself = ScratchBlocks.ScratchMsgs.translate('CONTROL_CREATECLONEOF_MYSELF', 'myself'); + return [[myself, '_myself_']].concat(spriteMenu()); }; const soundColors = ScratchBlocks.Colours.sounds; @@ -141,46 +145,55 @@ export default function (vm) { }; ScratchBlocks.Blocks.motion_pointtowards_menu.init = function () { + const mouse = ScratchBlocks.ScratchMsgs.translate('MOTION_POINTTOWARDS_POINTER', 'mouse-pointer'); const json = jsonForMenuBlock('TOWARDS', spriteMenu, motionColors, [ - ['mouse-pointer', '_mouse_'] + [mouse, '_mouse_'] ]); this.jsonInit(json); }; ScratchBlocks.Blocks.motion_goto_menu.init = function () { + const random = ScratchBlocks.ScratchMsgs.translate('MOTION_GOTO_RANDOM', 'random position'); + const mouse = ScratchBlocks.ScratchMsgs.translate('MOTION_GOTO_POINTER', 'mouse-pointer'); const json = jsonForMenuBlock('TO', spriteMenu, motionColors, [ - ['random position', '_random_'], - ['mouse-pointer', '_mouse_'] + [random, '_random_'], + [mouse, '_mouse_'] ]); this.jsonInit(json); }; ScratchBlocks.Blocks.motion_glideto_menu.init = function () { + const random = ScratchBlocks.ScratchMsgs.translate('MOTION_GLIDETO_RANDOM', 'random position'); + const mouse = ScratchBlocks.ScratchMsgs.translate('MOTION_GLIDETO_POINTER', 'mouse-pointer'); const json = jsonForMenuBlock('TO', spriteMenu, motionColors, [ - ['random position', '_random_'], - ['mouse-pointer', '_mouse_'] + [random, '_random_'], + [mouse, '_mouse_'] ]); this.jsonInit(json); }; ScratchBlocks.Blocks.sensing_of_object_menu.init = function () { + const stage = ScratchBlocks.ScratchMsgs.translate('SENSING_OF_STAGE', 'Stage'); const json = jsonForMenuBlock('OBJECT', spriteMenu, sensingColors, [ - ['Stage', '_stage_'] + [stage, '_stage_'] ]); this.jsonInit(json); }; ScratchBlocks.Blocks.sensing_distancetomenu.init = function () { + const mouse = ScratchBlocks.ScratchMsgs.translate('SENSING_DISTANCETO_POINTER', 'mouse-pointer'); const json = jsonForMenuBlock('DISTANCETOMENU', spriteMenu, sensingColors, [ - ['mouse-pointer', '_mouse_'] + [mouse, '_mouse_'] ]); this.jsonInit(json); }; ScratchBlocks.Blocks.sensing_touchingobjectmenu.init = function () { + const mouse = ScratchBlocks.ScratchMsgs.translate('SENSING_TOUCHINGOBJECT_POINTER', 'mouse-pointer'); + const edge = ScratchBlocks.ScratchMsgs.translate('SENSING_TOUCHINGOBJECT_EDGE', 'edge'); const json = jsonForMenuBlock('TOUCHINGOBJECTMENU', spriteMenu, sensingColors, [ - ['mouse-pointer', '_mouse_'], - ['edge', '_edge_'] + [mouse, '_mouse_'], + [edge, '_edge_'] ]); this.jsonInit(json); }; diff --git a/src/lib/make-toolbox-xml.js b/src/lib/make-toolbox-xml.js index 6dcaff2456e2d57d761c3292ecf35202a888f2c2..2fea2f0cb33964845f12a628c9d9b59fa4a06beb 100644 --- a/src/lib/make-toolbox-xml.js +++ b/src/lib/make-toolbox-xml.js @@ -1,12 +1,18 @@ +import ScratchBlocks from 'scratch-blocks'; + const categorySeparator = '<sep gap="36"/>'; const blockSeparator = '<sep gap="36"/>'; // At default scale, about 28px const motion = function (isStage, targetId) { + const stageSelected = ScratchBlocks.ScratchMsgs.translate( + 'MOTION_STAGE_SELECTED', + 'Stage selected: no motion blocks' + ); return ` <category name="%{BKY_CATEGORY_MOTION}" id="motion" colour="#4C97FF" secondaryColour="#3373CC"> ${isStage ? ` - <label text="Stage selected: no motion blocks"></label> + <label text="${stageSelected}"></label> ` : ` <block type="motion_movesteps"> <value name="STEPS"> @@ -133,13 +139,15 @@ const motion = function (isStage, targetId) { }; const looks = function (isStage, targetId) { + const hello = ScratchBlocks.ScratchMsgs.translate('LOOKS_HELLO', 'Hello!'); + const hmm = ScratchBlocks.ScratchMsgs.translate('LOOKS_HMM', 'Hmm...'); return ` <category name="%{BKY_CATEGORY_LOOKS}" id="looks" colour="#9966FF" secondaryColour="#774DCB"> ${isStage ? '' : ` <block type="looks_sayforsecs"> <value name="MESSAGE"> <shadow type="text"> - <field name="TEXT">Hello!</field> + <field name="TEXT">${hello}</field> </shadow> </value> <value name="SECS"> @@ -151,14 +159,14 @@ const looks = function (isStage, targetId) { <block type="looks_say"> <value name="MESSAGE"> <shadow type="text"> - <field name="TEXT">Hello!</field> + <field name="TEXT">${hello}</field> </shadow> </value> </block> <block type="looks_thinkforsecs"> <value name="MESSAGE"> <shadow type="text"> - <field name="TEXT">Hmm...</field> + <field name="TEXT">${hmm}</field> </shadow> </value> <value name="SECS"> @@ -170,7 +178,7 @@ const looks = function (isStage, targetId) { <block type="looks_think"> <value name="MESSAGE"> <shadow type="text"> - <field name="TEXT">Hmm...</field> + <field name="TEXT">${hmm}</field> </shadow> </value> </block> @@ -397,6 +405,7 @@ const control = function (isStage) { }; const sensing = function (isStage) { + const name = ScratchBlocks.ScratchMsgs.translate('SENSING_ASK_TEXT', 'What\'s your name?'); return ` <category name="%{BKY_CATEGORY_SENSING}" id="sensing" colour="#4CBFE6" secondaryColour="#2E8EB8"> ${isStage ? '' : ` @@ -428,7 +437,7 @@ const sensing = function (isStage) { <block id="askandwait" type="sensing_askandwait"> <value name="QUESTION"> <shadow type="text"> - <field name="TEXT">What's your name?</field> + <field name="TEXT">${name}</field> </shadow> </value> </block> @@ -469,6 +478,9 @@ const sensing = function (isStage) { }; const operators = function () { + const apple = ScratchBlocks.ScratchMsgs.translate('OPERATORS_JOIN_APPLE', 'apple'); + const banana = ScratchBlocks.ScratchMsgs.translate('OPERATORS_JOIN_BANANA', 'banana'); + const letter = ScratchBlocks.ScratchMsgs.translate('OPERATORS_LETTEROF_APPLE', 'a'); return ` <category name="%{BKY_CATEGORY_OPERATORS}" id="operators" colour="#40BF4A" secondaryColour="#389438"> <block type="operator_add"> @@ -577,12 +589,12 @@ const operators = function () { <block type="operator_join"> <value name="STRING1"> <shadow type="text"> - <field name="TEXT">apple</field> + <field name="TEXT">${apple}</field> </shadow> </value> <value name="STRING2"> <shadow type="text"> - <field name="TEXT">banana</field> + <field name="TEXT">${banana}</field> </shadow> </value> </block> @@ -594,26 +606,26 @@ const operators = function () { </value> <value name="STRING"> <shadow type="text"> - <field name="TEXT">apple</field> + <field name="TEXT">${apple}</field> </shadow> </value> </block> <block type="operator_length"> <value name="STRING"> <shadow type="text"> - <field name="TEXT">apple</field> + <field name="TEXT">${apple}</field> </shadow> </value> </block> <block type="operator_contains" id="operator_contains"> <value name="STRING1"> <shadow type="text"> - <field name="TEXT">apple</field> + <field name="TEXT">${apple}</field> </shadow> </value> <value name="STRING2"> <shadow type="text"> - <field name="TEXT">a</field> + <field name="TEXT">${letter}</field> </shadow> </value> </block>