@blockdia/scratch-blocks 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/.nvmrc +1 -0
  2. package/LICENSE +674 -0
  3. package/README.md +57 -0
  4. package/TRADEMARK +1 -0
  5. package/blockly_compressed_horizontal.js +2268 -0
  6. package/blockly_compressed_vertical.js +2296 -0
  7. package/blockly_uncompressed_horizontal.js +1212 -0
  8. package/blockly_uncompressed_vertical.js +1212 -0
  9. package/blocks_common/colour.js +61 -0
  10. package/blocks_common/math.js +159 -0
  11. package/blocks_common/matrix.js +54 -0
  12. package/blocks_common/note.js +58 -0
  13. package/blocks_common/text.js +57 -0
  14. package/blocks_compressed.js +37 -0
  15. package/blocks_compressed_horizontal.js +68 -0
  16. package/blocks_compressed_vertical.js +216 -0
  17. package/blocks_horizontal/control.js +212 -0
  18. package/blocks_horizontal/default_toolbox.js +139 -0
  19. package/blocks_horizontal/event.js +190 -0
  20. package/blocks_horizontal/wedo.js +325 -0
  21. package/blocks_vertical/control.js +532 -0
  22. package/blocks_vertical/data.js +666 -0
  23. package/blocks_vertical/default_toolbox.js +571 -0
  24. package/blocks_vertical/event.js +329 -0
  25. package/blocks_vertical/extensions.js +294 -0
  26. package/blocks_vertical/looks.js +591 -0
  27. package/blocks_vertical/motion.js +587 -0
  28. package/blocks_vertical/operators.js +470 -0
  29. package/blocks_vertical/procedures.js +1051 -0
  30. package/blocks_vertical/sensing.js +555 -0
  31. package/blocks_vertical/sound.js +246 -0
  32. package/blocks_vertical/vertical_extensions.js +289 -0
  33. package/build/gen_blocks.js +1 -0
  34. package/build/test_expect.js +1 -0
  35. package/build/test_input.js +1 -0
  36. package/build.py +647 -0
  37. package/cleanup.sh +101 -0
  38. package/core/block.js +1837 -0
  39. package/core/block_animations.js +107 -0
  40. package/core/block_drag_surface.js +299 -0
  41. package/core/block_dragger.js +424 -0
  42. package/core/block_events.js +531 -0
  43. package/core/block_render_svg_horizontal.js +892 -0
  44. package/core/block_render_svg_vertical.js +1734 -0
  45. package/core/block_svg.js +1355 -0
  46. package/core/blockly.js +620 -0
  47. package/core/blocks.js +37 -0
  48. package/core/bubble.js +664 -0
  49. package/core/bubble_dragger.js +285 -0
  50. package/core/colours.js +177 -0
  51. package/core/comment.js +293 -0
  52. package/core/comment_events.js +539 -0
  53. package/core/connection.js +776 -0
  54. package/core/connection_db.js +300 -0
  55. package/core/constants.js +408 -0
  56. package/core/contextmenu.js +534 -0
  57. package/core/css.js +1354 -0
  58. package/core/data_category.js +490 -0
  59. package/core/dragged_connection_manager.js +260 -0
  60. package/core/dropdowndiv.js +408 -0
  61. package/core/events.js +429 -0
  62. package/core/events_abstract.js +113 -0
  63. package/core/extensions.js +450 -0
  64. package/core/field.js +810 -0
  65. package/core/field_angle.js +410 -0
  66. package/core/field_checkbox.js +133 -0
  67. package/core/field_colour.js +253 -0
  68. package/core/field_colour_slider.js +387 -0
  69. package/core/field_date.js +353 -0
  70. package/core/field_dropdown.js +447 -0
  71. package/core/field_iconmenu.js +309 -0
  72. package/core/field_image.js +200 -0
  73. package/core/field_label.js +136 -0
  74. package/core/field_label_serializable.js +125 -0
  75. package/core/field_matrix.js +566 -0
  76. package/core/field_note.js +850 -0
  77. package/core/field_number.js +366 -0
  78. package/core/field_numberdropdown.js +77 -0
  79. package/core/field_textdropdown.js +164 -0
  80. package/core/field_textinput.js +675 -0
  81. package/core/field_textinput_removable.js +105 -0
  82. package/core/field_variable.js +385 -0
  83. package/core/field_variable_getter.js +185 -0
  84. package/core/field_vertical_separator.js +161 -0
  85. package/core/flyout_base.js +935 -0
  86. package/core/flyout_button.js +324 -0
  87. package/core/flyout_dragger.js +83 -0
  88. package/core/flyout_extension_category_header.js +159 -0
  89. package/core/flyout_horizontal.js +475 -0
  90. package/core/flyout_vertical.js +770 -0
  91. package/core/generator.js +426 -0
  92. package/core/gesture.js +1010 -0
  93. package/core/grid.js +227 -0
  94. package/core/icon.js +205 -0
  95. package/core/inject.js +496 -0
  96. package/core/input.js +285 -0
  97. package/core/insertion_marker_manager.js +678 -0
  98. package/core/intersection_observer.js +102 -0
  99. package/core/msg.js +62 -0
  100. package/core/mutator.js +426 -0
  101. package/core/names.js +198 -0
  102. package/core/options.js +244 -0
  103. package/core/procedures.js +739 -0
  104. package/core/rendered_connection.js +417 -0
  105. package/core/scratch_block_comment.js +646 -0
  106. package/core/scratch_blocks_utils.js +246 -0
  107. package/core/scratch_bubble.js +699 -0
  108. package/core/scratch_events.js +131 -0
  109. package/core/scratch_msgs.js +85 -0
  110. package/core/scrollbar.js +875 -0
  111. package/core/toolbox.js +803 -0
  112. package/core/tooltip.js +337 -0
  113. package/core/touch.js +226 -0
  114. package/core/trashcan.js +343 -0
  115. package/core/ui_events.js +91 -0
  116. package/core/ui_menu_utils.js +68 -0
  117. package/core/utils.js +825 -0
  118. package/core/variable_events.js +259 -0
  119. package/core/variable_map.js +415 -0
  120. package/core/variable_model.js +116 -0
  121. package/core/variables.js +674 -0
  122. package/core/warning.js +199 -0
  123. package/core/widgetdiv.js +344 -0
  124. package/core/workspace.js +673 -0
  125. package/core/workspace_audio.js +170 -0
  126. package/core/workspace_comment.js +426 -0
  127. package/core/workspace_comment_render_svg.js +706 -0
  128. package/core/workspace_comment_svg.js +609 -0
  129. package/core/workspace_drag_surface_svg.js +195 -0
  130. package/core/workspace_dragger.js +132 -0
  131. package/core/workspace_svg.js +2382 -0
  132. package/core/xml.js +930 -0
  133. package/core/zoom_controls.js +301 -0
  134. package/dist/horizontal.js +222 -0
  135. package/dist/vertical.js +222 -0
  136. package/dist/web/horizontal.js +232 -0
  137. package/dist/web/vertical.js +232 -0
  138. package/i18n/common.py +234 -0
  139. package/i18n/create_messages.py +162 -0
  140. package/i18n/create_scratch_msgs.js +69 -0
  141. package/i18n/dedup_json.py +73 -0
  142. package/i18n/js_to_json.js +46 -0
  143. package/i18n/js_to_json.py +136 -0
  144. package/i18n/json_to_js.js +52 -0
  145. package/i18n/json_to_js.py +185 -0
  146. package/i18n/sync_tx_translations.js +111 -0
  147. package/i18n/test_scratch_msgs.js +87 -0
  148. package/i18n/tests.py +47 -0
  149. package/i18n/xliff_to_json.py +232 -0
  150. package/local_build.sh +70 -0
  151. package/media/click.mp3 +0 -0
  152. package/media/click.ogg +0 -0
  153. package/media/click.wav +0 -0
  154. package/media/comment-arrow-down.svg +10 -0
  155. package/media/comment-arrow-up.svg +10 -0
  156. package/media/delete-x.svg +10 -0
  157. package/media/delete.mp3 +0 -0
  158. package/media/delete.ogg +0 -0
  159. package/media/delete.wav +0 -0
  160. package/media/dropdown-arrow-dark.svg +1 -0
  161. package/media/dropdown-arrow.svg +1 -0
  162. package/media/extensions/microbit-block-icon.svg +130 -0
  163. package/media/extensions/music-block-icon.svg +17 -0
  164. package/media/extensions/pen-block-icon.svg +19 -0
  165. package/media/extensions/wedo2-block-icon.svg +36 -0
  166. package/media/eyedropper.svg +22 -0
  167. package/media/green-flag.svg +17 -0
  168. package/media/handclosed.cur +0 -0
  169. package/media/handdelete.cur +0 -0
  170. package/media/handopen.cur +0 -0
  171. package/media/icons/arrow.svg +12 -0
  172. package/media/icons/arrow_button.svg +1 -0
  173. package/media/icons/control_forever.svg +1 -0
  174. package/media/icons/control_repeat.svg +1 -0
  175. package/media/icons/control_stop.svg +1 -0
  176. package/media/icons/control_wait.svg +1 -0
  177. package/media/icons/event_broadcast_blue.svg +1 -0
  178. package/media/icons/event_broadcast_coral.svg +1 -0
  179. package/media/icons/event_broadcast_green.svg +1 -0
  180. package/media/icons/event_broadcast_magenta.svg +1 -0
  181. package/media/icons/event_broadcast_orange.svg +1 -0
  182. package/media/icons/event_broadcast_purple.svg +1 -0
  183. package/media/icons/event_when-broadcast-received_blue.svg +1 -0
  184. package/media/icons/event_when-broadcast-received_coral.svg +1 -0
  185. package/media/icons/event_when-broadcast-received_green.svg +1 -0
  186. package/media/icons/event_when-broadcast-received_magenta.svg +1 -0
  187. package/media/icons/event_when-broadcast-received_orange.svg +1 -0
  188. package/media/icons/event_when-broadcast-received_purple.svg +1 -0
  189. package/media/icons/event_whenflagclicked.svg +1 -0
  190. package/media/icons/remove.svg +19 -0
  191. package/media/icons/set-led_blue.svg +1 -0
  192. package/media/icons/set-led_coral.svg +1 -0
  193. package/media/icons/set-led_green.svg +1 -0
  194. package/media/icons/set-led_magenta.svg +1 -0
  195. package/media/icons/set-led_mystery.svg +1 -0
  196. package/media/icons/set-led_orange.svg +1 -0
  197. package/media/icons/set-led_purple.svg +1 -0
  198. package/media/icons/set-led_white.svg +1 -0
  199. package/media/icons/set-led_yellow.svg +1 -0
  200. package/media/icons/wedo_motor-clockwise.svg +1 -0
  201. package/media/icons/wedo_motor-counterclockwise.svg +1 -0
  202. package/media/icons/wedo_motor-speed_fast.svg +1 -0
  203. package/media/icons/wedo_motor-speed_med.svg +1 -0
  204. package/media/icons/wedo_motor-speed_slow.svg +1 -0
  205. package/media/icons/wedo_when-distance_close.svg +1 -0
  206. package/media/icons/wedo_when-tilt-backward.svg +1 -0
  207. package/media/icons/wedo_when-tilt-forward.svg +1 -0
  208. package/media/icons/wedo_when-tilt-left.svg +1 -0
  209. package/media/icons/wedo_when-tilt-right.svg +1 -0
  210. package/media/icons/wedo_when-tilt.svg +1 -0
  211. package/media/repeat.svg +18 -0
  212. package/media/rotate-left.svg +1 -0
  213. package/media/rotate-right.svg +1 -0
  214. package/media/sprites.png +0 -0
  215. package/media/status-not-ready.svg +13 -0
  216. package/media/status-ready.svg +13 -0
  217. package/media/zoom-in.svg +1 -0
  218. package/media/zoom-out.svg +1 -0
  219. package/media/zoom-reset.svg +1 -0
  220. package/msg/js/en.js +290 -0
  221. package/msg/json/en.json +285 -0
  222. package/msg/messages.js +359 -0
  223. package/msg/scratch_msgs.js +22969 -0
  224. package/package.json +60 -0
  225. package/pull_from_blockly.sh +151 -0
  226. package/renovate.json5 +15 -0
  227. package/shim/blockly_compressed_horizontal-blocks_compressed.js +1 -0
  228. package/shim/blockly_compressed_horizontal.Blockly.js +1 -0
  229. package/shim/blockly_compressed_horizontal.goog.js +1 -0
  230. package/shim/blockly_compressed_horizontal.js +1 -0
  231. package/shim/blockly_compressed_vertical-blocks_compressed.js +1 -0
  232. package/shim/blockly_compressed_vertical.Blockly.js +1 -0
  233. package/shim/blockly_compressed_vertical.goog.js +1 -0
  234. package/shim/blockly_compressed_vertical.js +1 -0
  235. package/shim/blocks_compressed_horizontal-blockly_compressed_horizontal-messages.js +1 -0
  236. package/shim/blocks_compressed_horizontal.js +1 -0
  237. package/shim/blocks_compressed_vertical-blockly_compressed_vertical-messages.js +1 -0
  238. package/shim/blocks_compressed_vertical.js +1 -0
  239. package/shim/gh-pages.js +1 -0
  240. package/shim/horizontal.js +1 -0
  241. package/shim/index.js +17 -0
  242. package/shim/vertical.js +1 -0
  243. package/universal-python.js +82 -0
@@ -0,0 +1,359 @@
1
+ /**
2
+ * @license
3
+ * Visual Blocks Language
4
+ *
5
+ * Copyright 2012 Google Inc.
6
+ * https://developers.google.com/blockly/
7
+ *
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ */
20
+
21
+ /**
22
+ * @fileoverview English strings.
23
+ * @author ascii@media.mit.edu (Andrew Sliwinski)
24
+ *
25
+ * After modifying this file, run `npm run translate` from the root directory
26
+ * to regenerate `./msg/json/en.json`.
27
+ * IMPORTANT:
28
+ * All message strings must use single quotes for the scripts to work properly
29
+ */
30
+ 'use strict';
31
+
32
+ goog.provide('Blockly.Msg.en');
33
+
34
+ goog.require('Blockly.Msg');
35
+
36
+ // Control blocks
37
+ Blockly.Msg.CONTROL_FOREVER = 'forever';
38
+ Blockly.Msg.CONTROL_REPEAT = 'repeat %1';
39
+ Blockly.Msg.CONTROL_IF = 'if %1 then';
40
+ Blockly.Msg.CONTROL_ELSE = 'else';
41
+ Blockly.Msg.CONTROL_STOP = 'stop';
42
+ Blockly.Msg.CONTROL_STOP_ALL = 'all';
43
+ Blockly.Msg.CONTROL_STOP_THIS = 'this script';
44
+ Blockly.Msg.CONTROL_STOP_OTHER = 'other scripts in sprite';
45
+ Blockly.Msg.CONTROL_WAIT = 'wait %1 seconds';
46
+ Blockly.Msg.CONTROL_WAITUNTIL = 'wait until %1';
47
+ Blockly.Msg.CONTROL_REPEATUNTIL = 'repeat until %1';
48
+ Blockly.Msg.CONTROL_WHILE = 'while %1';
49
+ Blockly.Msg.CONTROL_FOREACH = 'for each %1 in %2';
50
+ Blockly.Msg.CONTROL_STARTASCLONE = 'when I start as a clone';
51
+ Blockly.Msg.CONTROL_CREATECLONEOF = 'create clone of %1';
52
+ Blockly.Msg.CONTROL_CREATECLONEOF_MYSELF = 'myself';
53
+ Blockly.Msg.CONTROL_DELETETHISCLONE = 'delete this clone';
54
+ Blockly.Msg.CONTROL_COUNTER = 'counter';
55
+ Blockly.Msg.CONTROL_INCRCOUNTER = 'increment counter';
56
+ Blockly.Msg.CONTROL_CLEARCOUNTER = 'clear counter';
57
+ Blockly.Msg.CONTROL_ALLATONCE = 'all at once';
58
+
59
+ // Data blocks
60
+ Blockly.Msg.DATA_SETVARIABLETO = 'set %1 to %2';
61
+ Blockly.Msg.DATA_CHANGEVARIABLEBY = 'change %1 by %2';
62
+ Blockly.Msg.DATA_SHOWVARIABLE = 'show variable %1';
63
+ Blockly.Msg.DATA_HIDEVARIABLE = 'hide variable %1';
64
+ Blockly.Msg.DATA_ADDTOLIST = 'add %1 to %2';
65
+ Blockly.Msg.DATA_DELETEOFLIST = 'delete %1 of %2';
66
+ Blockly.Msg.DATA_DELETEALLOFLIST = 'delete all of %1';
67
+ Blockly.Msg.DATA_INSERTATLIST = 'insert %1 at %2 of %3';
68
+ Blockly.Msg.DATA_REPLACEITEMOFLIST = 'replace item %1 of %2 with %3';
69
+ Blockly.Msg.DATA_ITEMOFLIST = 'item %1 of %2';
70
+ Blockly.Msg.DATA_ITEMNUMOFLIST = 'item # of %1 in %2';
71
+ Blockly.Msg.DATA_LENGTHOFLIST = 'length of %1';
72
+ Blockly.Msg.DATA_LISTCONTAINSITEM = '%1 contains %2?';
73
+ Blockly.Msg.DATA_SHOWLIST = 'show list %1';
74
+ Blockly.Msg.DATA_HIDELIST = 'hide list %1';
75
+ Blockly.Msg.DATA_INDEX_ALL = 'all';
76
+ Blockly.Msg.DATA_INDEX_LAST = 'last';
77
+ Blockly.Msg.DATA_INDEX_RANDOM = 'random';
78
+
79
+ // Event blocks
80
+ Blockly.Msg.EVENT_WHENFLAGCLICKED = 'when %1 clicked';
81
+ Blockly.Msg.EVENT_WHENTHISSPRITECLICKED = 'when this sprite clicked';
82
+ Blockly.Msg.EVENT_WHENSTAGECLICKED = 'when stage clicked';
83
+ Blockly.Msg.EVENT_WHENTOUCHINGOBJECT = 'when this sprite touches %1';
84
+ Blockly.Msg.EVENT_WHENBROADCASTRECEIVED = 'when I receive %1';
85
+ Blockly.Msg.EVENT_WHENBACKDROPSWITCHESTO = 'when backdrop switches to %1';
86
+ Blockly.Msg.EVENT_WHENGREATERTHAN = 'when %1 > %2';
87
+ Blockly.Msg.EVENT_WHENGREATERTHAN_TIMER = 'timer';
88
+ Blockly.Msg.EVENT_WHENGREATERTHAN_LOUDNESS = 'loudness';
89
+ Blockly.Msg.EVENT_BROADCAST = 'broadcast %1';
90
+ Blockly.Msg.EVENT_BROADCASTANDWAIT = 'broadcast %1 and wait';
91
+ Blockly.Msg.EVENT_WHENKEYPRESSED = 'when %1 key pressed';
92
+ Blockly.Msg.EVENT_WHENKEYPRESSED_SPACE = 'space';
93
+ Blockly.Msg.EVENT_WHENKEYPRESSED_LEFT = 'left arrow';
94
+ Blockly.Msg.EVENT_WHENKEYPRESSED_RIGHT = 'right arrow';
95
+ Blockly.Msg.EVENT_WHENKEYPRESSED_DOWN = 'down arrow';
96
+ Blockly.Msg.EVENT_WHENKEYPRESSED_UP = 'up arrow';
97
+ Blockly.Msg.EVENT_WHENKEYPRESSED_ANY = 'any';
98
+
99
+ // Looks blocks
100
+ Blockly.Msg.LOOKS_SAYFORSECS = 'say %1 for %2 seconds';
101
+ Blockly.Msg.LOOKS_SAY = 'say %1';
102
+ Blockly.Msg.LOOKS_HELLO = 'Hello!';
103
+ Blockly.Msg.LOOKS_THINKFORSECS = 'think %1 for %2 seconds';
104
+ Blockly.Msg.LOOKS_THINK = 'think %1';
105
+ Blockly.Msg.LOOKS_HMM = 'Hmm...';
106
+ Blockly.Msg.LOOKS_SHOW = 'show';
107
+ Blockly.Msg.LOOKS_HIDE = 'hide';
108
+ Blockly.Msg.LOOKS_HIDEALLSPRITES = 'hide all sprites';
109
+ Blockly.Msg.LOOKS_EFFECT_COLOR = 'color';
110
+ Blockly.Msg.LOOKS_EFFECT_FISHEYE = 'fisheye';
111
+ Blockly.Msg.LOOKS_EFFECT_WHIRL = 'whirl';
112
+ Blockly.Msg.LOOKS_EFFECT_PIXELATE = 'pixelate';
113
+ Blockly.Msg.LOOKS_EFFECT_MOSAIC = 'mosaic';
114
+ Blockly.Msg.LOOKS_EFFECT_BRIGHTNESS = 'brightness';
115
+ Blockly.Msg.LOOKS_EFFECT_GHOST = 'ghost';
116
+ Blockly.Msg.LOOKS_CHANGEEFFECTBY = 'change %1 effect by %2';
117
+ Blockly.Msg.LOOKS_SETEFFECTTO = 'set %1 effect to %2';
118
+ Blockly.Msg.LOOKS_CLEARGRAPHICEFFECTS = 'clear graphic effects';
119
+ Blockly.Msg.LOOKS_CHANGESIZEBY = 'change size by %1';
120
+ Blockly.Msg.LOOKS_SETSIZETO = 'set size to %1 %';
121
+ Blockly.Msg.LOOKS_SIZE = 'size';
122
+ Blockly.Msg.LOOKS_CHANGESTRETCHBY = 'change stretch by %1';
123
+ Blockly.Msg.LOOKS_SETSTRETCHTO = 'set stretch to %1 %';
124
+ Blockly.Msg.LOOKS_SWITCHCOSTUMETO = 'switch costume to %1';
125
+ Blockly.Msg.LOOKS_NEXTCOSTUME = 'next costume';
126
+ Blockly.Msg.LOOKS_SWITCHBACKDROPTO = 'switch backdrop to %1';
127
+ Blockly.Msg.LOOKS_GOTOFRONTBACK = 'go to %1 layer';
128
+ Blockly.Msg.LOOKS_GOTOFRONTBACK_FRONT = 'front';
129
+ Blockly.Msg.LOOKS_GOTOFRONTBACK_BACK = 'back';
130
+ Blockly.Msg.LOOKS_GOFORWARDBACKWARDLAYERS = 'go %1 %2 layers';
131
+ Blockly.Msg.LOOKS_GOFORWARDBACKWARDLAYERS_FORWARD = 'forward';
132
+ Blockly.Msg.LOOKS_GOFORWARDBACKWARDLAYERS_BACKWARD = 'backward';
133
+ Blockly.Msg.LOOKS_BACKDROPNUMBERNAME = 'backdrop %1';
134
+ Blockly.Msg.LOOKS_COSTUMENUMBERNAME = 'costume %1';
135
+ Blockly.Msg.LOOKS_NUMBERNAME_NUMBER = 'number';
136
+ Blockly.Msg.LOOKS_NUMBERNAME_NAME = 'name';
137
+ Blockly.Msg.LOOKS_SWITCHBACKDROPTOANDWAIT = 'switch backdrop to %1 and wait';
138
+ Blockly.Msg.LOOKS_NEXTBACKDROP_BLOCK = 'next backdrop';
139
+ Blockly.Msg.LOOKS_NEXTBACKDROP = 'next backdrop';
140
+ Blockly.Msg.LOOKS_PREVIOUSBACKDROP = 'previous backdrop';
141
+ Blockly.Msg.LOOKS_RANDOMBACKDROP = 'random backdrop';
142
+
143
+ // Motion blocks
144
+ Blockly.Msg.MOTION_MOVESTEPS = 'move %1 steps';
145
+ Blockly.Msg.MOTION_TURNLEFT = 'turn %1 %2 degrees';
146
+ Blockly.Msg.MOTION_TURNRIGHT = 'turn %1 %2 degrees';
147
+ Blockly.Msg.MOTION_POINTINDIRECTION = 'point in direction %1';
148
+ Blockly.Msg.MOTION_POINTTOWARDS = 'point towards %1';
149
+ Blockly.Msg.MOTION_POINTTOWARDS_POINTER = 'mouse-pointer';
150
+ Blockly.Msg.MOTION_POINTTOWARDS_RANDOM = 'random direction';
151
+ Blockly.Msg.MOTION_GOTO = 'go to %1';
152
+ Blockly.Msg.MOTION_GOTO_POINTER = 'mouse-pointer';
153
+ Blockly.Msg.MOTION_GOTO_RANDOM = 'random position';
154
+ Blockly.Msg.MOTION_GOTOXY = 'go to x: %1 y: %2';
155
+ Blockly.Msg.MOTION_GLIDESECSTOXY = 'glide %1 secs to x: %2 y: %3';
156
+ Blockly.Msg.MOTION_GLIDETO = 'glide %1 secs to %2';
157
+ Blockly.Msg.MOTION_GLIDETO_POINTER = 'mouse-pointer';
158
+ Blockly.Msg.MOTION_GLIDETO_RANDOM = 'random position';
159
+ Blockly.Msg.MOTION_CHANGEXBY = 'change x by %1';
160
+ Blockly.Msg.MOTION_SETX = 'set x to %1';
161
+ Blockly.Msg.MOTION_CHANGEYBY = 'change y by %1';
162
+ Blockly.Msg.MOTION_SETY = 'set y to %1';
163
+ Blockly.Msg.MOTION_IFONEDGEBOUNCE = 'if on edge, bounce';
164
+ Blockly.Msg.MOTION_SETROTATIONSTYLE = 'set rotation style %1';
165
+ Blockly.Msg.MOTION_SETROTATIONSTYLE_LEFTRIGHT = 'left-right';
166
+ Blockly.Msg.MOTION_SETROTATIONSTYLE_DONTROTATE = 'don\'t rotate';
167
+ Blockly.Msg.MOTION_SETROTATIONSTYLE_ALLAROUND = 'all around';
168
+ Blockly.Msg.MOTION_XPOSITION = 'x position';
169
+ Blockly.Msg.MOTION_YPOSITION = 'y position';
170
+ Blockly.Msg.MOTION_DIRECTION = 'direction';
171
+ Blockly.Msg.MOTION_SCROLLRIGHT = 'scroll right %1';
172
+ Blockly.Msg.MOTION_SCROLLUP = 'scroll up %1';
173
+ Blockly.Msg.MOTION_ALIGNSCENE = 'align scene %1';
174
+ Blockly.Msg.MOTION_ALIGNSCENE_BOTTOMLEFT = 'bottom-left';
175
+ Blockly.Msg.MOTION_ALIGNSCENE_BOTTOMRIGHT = 'bottom-right';
176
+ Blockly.Msg.MOTION_ALIGNSCENE_MIDDLE = 'middle';
177
+ Blockly.Msg.MOTION_ALIGNSCENE_TOPLEFT = 'top-left';
178
+ Blockly.Msg.MOTION_ALIGNSCENE_TOPRIGHT = 'top-right';
179
+ Blockly.Msg.MOTION_XSCROLL = 'x scroll';
180
+ Blockly.Msg.MOTION_YSCROLL = 'y scroll';
181
+ Blockly.Msg.MOTION_STAGE_SELECTED = 'Stage selected: no motion blocks';
182
+
183
+ // Operators blocks
184
+ Blockly.Msg.OPERATORS_ADD = '%1 + %2';
185
+ Blockly.Msg.OPERATORS_SUBTRACT = '%1 - %2';
186
+ Blockly.Msg.OPERATORS_MULTIPLY = '%1 * %2';
187
+ Blockly.Msg.OPERATORS_DIVIDE = '%1 / %2';
188
+ Blockly.Msg.OPERATORS_RANDOM = 'pick random %1 to %2';
189
+ Blockly.Msg.OPERATORS_GT = '%1 > %2';
190
+ Blockly.Msg.OPERATORS_LT = '%1 < %2';
191
+ Blockly.Msg.OPERATORS_EQUALS = '%1 = %2';
192
+ Blockly.Msg.OPERATORS_AND = '%1 and %2';
193
+ Blockly.Msg.OPERATORS_OR = '%1 or %2';
194
+ Blockly.Msg.OPERATORS_NOT = 'not %1';
195
+ Blockly.Msg.OPERATORS_JOIN = 'join %1 %2';
196
+ Blockly.Msg.OPERATORS_JOIN_APPLE = 'apple';
197
+ Blockly.Msg.OPERATORS_JOIN_BANANA = 'banana';
198
+ Blockly.Msg.OPERATORS_LETTEROF = 'letter %1 of %2';
199
+ Blockly.Msg.OPERATORS_LETTEROF_APPLE = 'a';
200
+ Blockly.Msg.OPERATORS_LENGTH = 'length of %1';
201
+ Blockly.Msg.OPERATORS_CONTAINS = '%1 contains %2?';
202
+ Blockly.Msg.OPERATORS_MOD = '%1 mod %2';
203
+ Blockly.Msg.OPERATORS_ROUND = 'round %1';
204
+ Blockly.Msg.OPERATORS_MATHOP = '%1 of %2';
205
+ Blockly.Msg.OPERATORS_MATHOP_ABS = 'abs';
206
+ Blockly.Msg.OPERATORS_MATHOP_FLOOR = 'floor';
207
+ Blockly.Msg.OPERATORS_MATHOP_CEILING = 'ceiling';
208
+ Blockly.Msg.OPERATORS_MATHOP_SQRT = 'sqrt';
209
+ Blockly.Msg.OPERATORS_MATHOP_SIN = 'sin';
210
+ Blockly.Msg.OPERATORS_MATHOP_COS = 'cos';
211
+ Blockly.Msg.OPERATORS_MATHOP_TAN = 'tan';
212
+ Blockly.Msg.OPERATORS_MATHOP_ASIN = 'asin';
213
+ Blockly.Msg.OPERATORS_MATHOP_ACOS = 'acos';
214
+ Blockly.Msg.OPERATORS_MATHOP_ATAN = 'atan';
215
+ Blockly.Msg.OPERATORS_MATHOP_LN = 'ln';
216
+ Blockly.Msg.OPERATORS_MATHOP_LOG = 'log';
217
+ Blockly.Msg.OPERATORS_MATHOP_EEXP = 'e ^';
218
+ Blockly.Msg.OPERATORS_MATHOP_10EXP = '10 ^';
219
+
220
+ // Procedures blocks
221
+ Blockly.Msg.PROCEDURES_DEFINITION = 'define %1';
222
+
223
+ // TW Procedures blocks
224
+ Blockly.Msg.PROCEDURES_RETURN = 'return %1';
225
+ Blockly.Msg.PROCEDURES_TO_REPORTER = 'Change To Reporter';
226
+ Blockly.Msg.PROCEDURES_TO_STATEMENT = 'Change To Stacked Block';
227
+ Blockly.Msg.PROCEDURES_DOCS = 'How to use return';
228
+
229
+ // Sensing blocks
230
+ Blockly.Msg.SENSING_TOUCHINGOBJECT = 'touching %1?';
231
+ Blockly.Msg.SENSING_TOUCHINGOBJECT_POINTER = 'mouse-pointer';
232
+ Blockly.Msg.SENSING_TOUCHINGOBJECT_EDGE = 'edge';
233
+ Blockly.Msg.SENSING_TOUCHINGCOLOR = 'touching color %1?';
234
+ Blockly.Msg.SENSING_COLORISTOUCHINGCOLOR = 'color %1 is touching %2?';
235
+ Blockly.Msg.SENSING_DISTANCETO = 'distance to %1';
236
+ Blockly.Msg.SENSING_DISTANCETO_POINTER = 'mouse-pointer';
237
+ Blockly.Msg.SENSING_ASKANDWAIT = 'ask %1 and wait';
238
+ Blockly.Msg.SENSING_ASK_TEXT = 'What\'s your name?';
239
+ Blockly.Msg.SENSING_ANSWER = 'answer';
240
+ Blockly.Msg.SENSING_KEYPRESSED = 'key %1 pressed?';
241
+ Blockly.Msg.SENSING_MOUSEDOWN = 'mouse down?';
242
+ Blockly.Msg.SENSING_MOUSEX = 'mouse x';
243
+ Blockly.Msg.SENSING_MOUSEY = 'mouse y';
244
+ Blockly.Msg.SENSING_SETDRAGMODE = 'set drag mode %1';
245
+ Blockly.Msg.SENSING_SETDRAGMODE_DRAGGABLE = 'draggable';
246
+ Blockly.Msg.SENSING_SETDRAGMODE_NOTDRAGGABLE = 'not draggable';
247
+ Blockly.Msg.SENSING_LOUDNESS = 'loudness';
248
+ Blockly.Msg.SENSING_LOUD = 'loud?';
249
+ Blockly.Msg.SENSING_TIMER = 'timer';
250
+ Blockly.Msg.SENSING_RESETTIMER = 'reset timer';
251
+ Blockly.Msg.SENSING_OF = '%1 of %2';
252
+ Blockly.Msg.SENSING_OF_XPOSITION = 'x position';
253
+ Blockly.Msg.SENSING_OF_YPOSITION = 'y position';
254
+ Blockly.Msg.SENSING_OF_DIRECTION = 'direction';
255
+ Blockly.Msg.SENSING_OF_COSTUMENUMBER = 'costume #';
256
+ Blockly.Msg.SENSING_OF_COSTUMENAME = 'costume name';
257
+ Blockly.Msg.SENSING_OF_SIZE = 'size';
258
+ Blockly.Msg.SENSING_OF_VOLUME = 'volume';
259
+ Blockly.Msg.SENSING_OF_BACKDROPNUMBER = 'backdrop #';
260
+ Blockly.Msg.SENSING_OF_BACKDROPNAME = 'backdrop name';
261
+ Blockly.Msg.SENSING_OF_STAGE = 'Stage';
262
+ Blockly.Msg.SENSING_CURRENT = 'current %1';
263
+ Blockly.Msg.SENSING_CURRENT_YEAR = 'year';
264
+ Blockly.Msg.SENSING_CURRENT_MONTH = 'month';
265
+ Blockly.Msg.SENSING_CURRENT_DATE = 'date';
266
+ Blockly.Msg.SENSING_CURRENT_DAYOFWEEK = 'day of week';
267
+ Blockly.Msg.SENSING_CURRENT_HOUR = 'hour';
268
+ Blockly.Msg.SENSING_CURRENT_MINUTE = 'minute';
269
+ Blockly.Msg.SENSING_CURRENT_SECOND = 'second';
270
+ Blockly.Msg.SENSING_DAYSSINCE2000 = 'days since 2000';
271
+ Blockly.Msg.SENSING_USERNAME = 'username';
272
+ Blockly.Msg.SENSING_USERID = 'user id';
273
+
274
+ // Sound blocks
275
+ Blockly.Msg.SOUND_PLAY = 'start sound %1';
276
+ Blockly.Msg.SOUND_PLAYUNTILDONE = 'play sound %1 until done';
277
+ Blockly.Msg.SOUND_STOPALLSOUNDS = 'stop all sounds';
278
+ Blockly.Msg.SOUND_SETEFFECTO = 'set %1 effect to %2';
279
+ Blockly.Msg.SOUND_CHANGEEFFECTBY = 'change %1 effect by %2';
280
+ Blockly.Msg.SOUND_CLEAREFFECTS = 'clear sound effects';
281
+ Blockly.Msg.SOUND_EFFECTS_PITCH = 'pitch';
282
+ Blockly.Msg.SOUND_EFFECTS_PAN = 'pan left/right';
283
+ Blockly.Msg.SOUND_CHANGEVOLUMEBY = 'change volume by %1';
284
+ Blockly.Msg.SOUND_SETVOLUMETO = 'set volume to %1%';
285
+ Blockly.Msg.SOUND_VOLUME = 'volume';
286
+ Blockly.Msg.SOUND_RECORD = 'record...';
287
+
288
+ // Category labels
289
+ Blockly.Msg.CATEGORY_MOTION = 'Motion';
290
+ Blockly.Msg.CATEGORY_LOOKS = 'Looks';
291
+ Blockly.Msg.CATEGORY_SOUND = 'Sound';
292
+ Blockly.Msg.CATEGORY_EVENTS = 'Events';
293
+ Blockly.Msg.CATEGORY_CONTROL = 'Control';
294
+ Blockly.Msg.CATEGORY_SENSING = 'Sensing';
295
+ Blockly.Msg.CATEGORY_OPERATORS = 'Operators';
296
+ Blockly.Msg.CATEGORY_VARIABLES = 'Variables';
297
+ Blockly.Msg.CATEGORY_MYBLOCKS = 'My Blocks';
298
+
299
+ // Context menus
300
+ Blockly.Msg.DUPLICATE = 'Duplicate';
301
+ Blockly.Msg.DELETE = 'Delete';
302
+ Blockly.Msg.ADD_COMMENT = 'Add Comment';
303
+ Blockly.Msg.REMOVE_COMMENT = 'Remove Comment';
304
+ Blockly.Msg.DELETE_BLOCK = 'Delete Block';
305
+ Blockly.Msg.DELETE_X_BLOCKS = 'Delete %1 Blocks';
306
+ Blockly.Msg.DELETE_ALL_BLOCKS = 'Delete all %1 blocks?';
307
+ Blockly.Msg.CLEAN_UP = 'Clean up Blocks';
308
+ Blockly.Msg.HELP = 'Help';
309
+ Blockly.Msg.UNDO = 'Undo';
310
+ Blockly.Msg.REDO = 'Redo';
311
+ Blockly.Msg.EDIT_PROCEDURE = 'Edit';
312
+ Blockly.Msg.SHOW_PROCEDURE_DEFINITION = 'Go to definition';
313
+ Blockly.Msg.WORKSPACE_COMMENT_DEFAULT_TEXT = 'Say something...';
314
+
315
+ // Color
316
+ Blockly.Msg.COLOUR_HUE_LABEL = 'Color';
317
+ Blockly.Msg.COLOUR_SATURATION_LABEL = 'Saturation';
318
+ Blockly.Msg.COLOUR_BRIGHTNESS_LABEL = 'Brightness';
319
+
320
+ // Variables
321
+ // @todo Remove these once fully managed by Scratch VM / Scratch GUI
322
+ Blockly.Msg.CHANGE_VALUE_TITLE = 'Change value:';
323
+ Blockly.Msg.RENAME_VARIABLE = 'Rename variable';
324
+ Blockly.Msg.RENAME_VARIABLE_TITLE = 'Rename all "%1" variables to:';
325
+ Blockly.Msg.RENAME_VARIABLE_MODAL_TITLE = 'Rename Variable';
326
+ Blockly.Msg.NEW_VARIABLE = 'Make a Variable';
327
+ Blockly.Msg.NEW_VARIABLE_TITLE = 'New variable name:';
328
+ Blockly.Msg.VARIABLE_MODAL_TITLE = 'New Variable';
329
+ Blockly.Msg.VARIABLE_ALREADY_EXISTS = 'A variable named "%1" already exists.';
330
+ Blockly.Msg.VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE = 'A variable named "%1" already exists for another variable of type "%2".';
331
+ Blockly.Msg.DELETE_VARIABLE_CONFIRMATION = 'Delete %1 uses of the "%2" variable?';
332
+ Blockly.Msg.CANNOT_DELETE_VARIABLE_PROCEDURE = 'Can\'t delete the variable "%1" because it\'s part of the definition of the function "%2"';
333
+ Blockly.Msg.DELETE_VARIABLE = 'Delete the "%1" variable';
334
+
335
+ // Custom Procedures
336
+ // @todo Remove these once fully managed by Scratch VM / Scratch GUI
337
+ Blockly.Msg.NEW_PROCEDURE = 'Make a Block';
338
+ Blockly.Msg.PROCEDURE_ALREADY_EXISTS = 'A procedure named "%1" already exists.';
339
+ Blockly.Msg.PROCEDURE_DEFAULT_NAME = 'block name';
340
+ Blockly.Msg.PROCEDURE_USED = 'To delete a block definition, first remove all uses of the block';
341
+
342
+ // Lists
343
+ // @todo Remove these once fully managed by Scratch VM / Scratch GUI
344
+ Blockly.Msg.NEW_LIST = 'Make a List';
345
+ Blockly.Msg.NEW_LIST_TITLE = 'New list name:';
346
+ Blockly.Msg.LIST_MODAL_TITLE = 'New List';
347
+ Blockly.Msg.LIST_ALREADY_EXISTS = 'A list named "%1" already exists.';
348
+ Blockly.Msg.RENAME_LIST_TITLE = 'Rename all "%1" lists to:';
349
+ Blockly.Msg.RENAME_LIST_MODAL_TITLE = 'Rename List';
350
+ Blockly.Msg.DEFAULT_LIST_ITEM = 'thing';
351
+ Blockly.Msg.DELETE_LIST = 'Delete the "%1" list';
352
+ Blockly.Msg.RENAME_LIST = 'Rename list';
353
+
354
+ // Broadcast Messages
355
+ // @todo Remove these once fully managed by Scratch VM / Scratch GUI
356
+ Blockly.Msg.NEW_BROADCAST_MESSAGE = 'New message';
357
+ Blockly.Msg.NEW_BROADCAST_MESSAGE_TITLE = 'New message name:';
358
+ Blockly.Msg.BROADCAST_MODAL_TITLE = 'New Message';
359
+ Blockly.Msg.DEFAULT_BROADCAST_MESSAGE_NAME = 'message1';