blockly 12.5.1 → 13.0.0-beta.1

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 (363) hide show
  1. package/blockly.min.js +1541 -700
  2. package/blockly.mjs +13 -5
  3. package/blockly_compressed.js +1449 -674
  4. package/blockly_compressed.js.map +1 -1
  5. package/blocks_compressed.js +16 -16
  6. package/blocks_compressed.js.map +1 -1
  7. package/core/block.d.ts +1 -1
  8. package/core/block_aria_composer.d.ts +119 -0
  9. package/core/block_svg.d.ts +59 -16
  10. package/core/blockly.d.ts +21 -16
  11. package/core/bubbles/bubble.d.ts +17 -2
  12. package/core/bubbles/mini_workspace_bubble.d.ts +9 -1
  13. package/core/bubbles/text_bubble.d.ts +4 -1
  14. package/core/bubbles/textinput_bubble.d.ts +5 -0
  15. package/core/comments/comment_editor.d.ts +2 -2
  16. package/core/comments/rendered_workspace_comment.d.ts +6 -1
  17. package/core/common.d.ts +1 -1
  18. package/core/css.d.ts +2 -1
  19. package/core/dragging/block_drag_strategy.d.ts +126 -14
  20. package/core/dragging/bubble_drag_strategy.d.ts +5 -4
  21. package/core/dragging/comment_drag_strategy.d.ts +4 -4
  22. package/core/dragging/dragger.d.ts +13 -14
  23. package/core/events/events_block_create.d.ts +0 -3
  24. package/core/events/events_block_delete.d.ts +0 -3
  25. package/core/events/events_comment_create.d.ts +0 -3
  26. package/core/events/events_comment_delete.d.ts +0 -3
  27. package/core/field.d.ts +69 -2
  28. package/core/field_input.d.ts +23 -0
  29. package/core/flyout_base.d.ts +1 -125
  30. package/core/flyout_button.d.ts +9 -0
  31. package/core/flyout_horizontal.d.ts +0 -11
  32. package/core/flyout_vertical.d.ts +0 -11
  33. package/core/focus_manager.d.ts +47 -2
  34. package/core/gesture.d.ts +0 -12
  35. package/core/hints.d.ts +44 -0
  36. package/core/icons/icon.d.ts +6 -0
  37. package/core/inputs/input.d.ts +22 -1
  38. package/core/interfaces/i_bounded_element.d.ts +7 -0
  39. package/core/interfaces/i_bubble.d.ts +3 -2
  40. package/core/interfaces/i_collapsible_toolbox_item.d.ts +5 -1
  41. package/core/interfaces/i_draggable.d.ts +22 -17
  42. package/core/interfaces/i_dragger.d.ts +19 -10
  43. package/core/interfaces/i_flyout.d.ts +1 -31
  44. package/core/interfaces/i_focusable_node.d.ts +8 -0
  45. package/core/interfaces/i_focusable_tree.d.ts +8 -0
  46. package/core/interfaces/i_json_block_definition.d.ts +102 -0
  47. package/core/interfaces/i_navigation_policy.d.ts +12 -0
  48. package/core/interfaces/i_selectable.d.ts +2 -2
  49. package/core/interfaces/i_selectable_toolbox_item.d.ts +3 -3
  50. package/core/interfaces/i_toolbox.d.ts +4 -0
  51. package/core/interfaces/i_toolbox_item.d.ts +6 -0
  52. package/core/keyboard_nav/keyboard_mover.d.ts +149 -0
  53. package/core/keyboard_nav/move_indicator.d.ts +35 -0
  54. package/core/keyboard_nav/{block_navigation_policy.d.ts → navigation_policies/block_navigation_policy.d.ts} +17 -25
  55. package/core/keyboard_nav/navigation_policies/bubble_navigation_policy.d.ts +63 -0
  56. package/core/keyboard_nav/{comment_bar_button_navigation_policy.d.ts → navigation_policies/comment_bar_button_navigation_policy.d.ts} +10 -3
  57. package/core/keyboard_nav/{comment_editor_navigation_policy.d.ts → navigation_policies/comment_editor_navigation_policy.d.ts} +10 -3
  58. package/core/keyboard_nav/{connection_navigation_policy.d.ts → navigation_policies/connection_navigation_policy.d.ts} +11 -16
  59. package/core/keyboard_nav/{field_navigation_policy.d.ts → navigation_policies/field_navigation_policy.d.ts} +10 -3
  60. package/core/keyboard_nav/{flyout_button_navigation_policy.d.ts → navigation_policies/flyout_button_navigation_policy.d.ts} +10 -3
  61. package/core/keyboard_nav/{flyout_separator_navigation_policy.d.ts → navigation_policies/flyout_separator_navigation_policy.d.ts} +9 -3
  62. package/core/keyboard_nav/{icon_navigation_policy.d.ts → navigation_policies/icon_navigation_policy.d.ts} +12 -5
  63. package/core/keyboard_nav/navigation_policies/toolbox_item_navigation_policy.d.ts +64 -0
  64. package/core/keyboard_nav/{workspace_comment_navigation_policy.d.ts → navigation_policies/workspace_comment_navigation_policy.d.ts} +14 -9
  65. package/core/keyboard_nav/{workspace_navigation_policy.d.ts → navigation_policies/workspace_navigation_policy.d.ts} +10 -3
  66. package/core/keyboard_nav/navigators/flyout_navigator.d.ts +63 -0
  67. package/core/keyboard_nav/navigators/navigator.d.ts +225 -0
  68. package/core/keyboard_nav/navigators/toolbox_navigator.d.ts +70 -0
  69. package/core/registry.d.ts +0 -2
  70. package/core/renderers/common/constants.d.ts +4 -7
  71. package/core/renderers/common/i_path_object.d.ts +8 -0
  72. package/core/renderers/common/path_object.d.ts +5 -14
  73. package/core/renderers/common/renderer.d.ts +3 -3
  74. package/core/renderers/zelos/constants.d.ts +1 -14
  75. package/core/renderers/zelos/measurables/bottom_row.d.ts +1 -1
  76. package/core/renderers/zelos/measurables/top_row.d.ts +1 -1
  77. package/core/renderers/zelos/path_object.d.ts +0 -3
  78. package/core/renderers/zelos/renderer.d.ts +8 -0
  79. package/core/shortcut_items.d.ts +73 -1
  80. package/core/shortcut_registry.d.ts +6 -0
  81. package/core/theme.d.ts +0 -2
  82. package/core/toast.d.ts +2 -11
  83. package/core/toolbox/category.d.ts +5 -0
  84. package/core/toolbox/separator.d.ts +4 -0
  85. package/core/toolbox/toolbox.d.ts +17 -33
  86. package/core/toolbox/toolbox_item.d.ts +4 -0
  87. package/core/utils/aria.d.ts +245 -28
  88. package/core/utils/dom.d.ts +1 -1
  89. package/core/utils/shortcut_formatting.d.ts +22 -0
  90. package/core/utils/useragent.d.ts +1 -0
  91. package/core/variables.d.ts +1 -1
  92. package/core/workspace_audio.d.ts +23 -0
  93. package/core/workspace_svg.d.ts +8 -50
  94. package/dart_compressed.js +9 -9
  95. package/dart_compressed.js.map +1 -1
  96. package/index.mjs +13 -5
  97. package/javascript_compressed.js +11 -10
  98. package/javascript_compressed.js.map +1 -1
  99. package/lua_compressed.js +7 -7
  100. package/lua_compressed.js.map +1 -1
  101. package/msg/ab.js +65 -0
  102. package/msg/ab.mjs +65 -0
  103. package/msg/ace.js +65 -0
  104. package/msg/ace.mjs +65 -0
  105. package/msg/af.js +65 -0
  106. package/msg/af.mjs +65 -0
  107. package/msg/am.js +65 -0
  108. package/msg/am.mjs +65 -0
  109. package/msg/ar.js +65 -0
  110. package/msg/ar.mjs +65 -0
  111. package/msg/ast.js +65 -0
  112. package/msg/ast.mjs +65 -0
  113. package/msg/az.js +65 -0
  114. package/msg/az.mjs +65 -0
  115. package/msg/ba.js +65 -0
  116. package/msg/ba.mjs +65 -0
  117. package/msg/bcc.js +65 -0
  118. package/msg/bcc.mjs +65 -0
  119. package/msg/be-tarask.js +65 -0
  120. package/msg/be-tarask.mjs +65 -0
  121. package/msg/be.js +65 -0
  122. package/msg/be.mjs +65 -0
  123. package/msg/bg.js +65 -0
  124. package/msg/bg.mjs +65 -0
  125. package/msg/bn.js +65 -0
  126. package/msg/bn.mjs +65 -0
  127. package/msg/br.js +65 -0
  128. package/msg/br.mjs +65 -0
  129. package/msg/bs.js +65 -0
  130. package/msg/bs.mjs +65 -0
  131. package/msg/ca.js +65 -0
  132. package/msg/ca.mjs +65 -0
  133. package/msg/cdo.js +65 -0
  134. package/msg/cdo.mjs +65 -0
  135. package/msg/ce.js +65 -0
  136. package/msg/ce.mjs +65 -0
  137. package/msg/cs.js +65 -0
  138. package/msg/cs.mjs +65 -0
  139. package/msg/da.js +65 -0
  140. package/msg/da.mjs +65 -0
  141. package/msg/de.js +65 -0
  142. package/msg/de.mjs +65 -0
  143. package/msg/diq.js +65 -0
  144. package/msg/diq.mjs +65 -0
  145. package/msg/dtp.js +65 -0
  146. package/msg/dtp.mjs +65 -0
  147. package/msg/dty.js +65 -0
  148. package/msg/dty.mjs +65 -0
  149. package/msg/ee.js +65 -0
  150. package/msg/ee.mjs +65 -0
  151. package/msg/el.js +65 -0
  152. package/msg/el.mjs +65 -0
  153. package/msg/en-gb.js +65 -0
  154. package/msg/en-gb.mjs +65 -0
  155. package/msg/en.js +65 -0
  156. package/msg/en.mjs +65 -0
  157. package/msg/eo.js +65 -0
  158. package/msg/eo.mjs +65 -0
  159. package/msg/es.js +65 -0
  160. package/msg/es.mjs +65 -0
  161. package/msg/et.js +65 -0
  162. package/msg/et.mjs +65 -0
  163. package/msg/eu.js +65 -0
  164. package/msg/eu.mjs +65 -0
  165. package/msg/fa.js +65 -0
  166. package/msg/fa.mjs +65 -0
  167. package/msg/fi.js +65 -0
  168. package/msg/fi.mjs +65 -0
  169. package/msg/fo.js +65 -0
  170. package/msg/fo.mjs +65 -0
  171. package/msg/fr.js +65 -0
  172. package/msg/fr.mjs +65 -0
  173. package/msg/frr.js +65 -0
  174. package/msg/frr.mjs +65 -0
  175. package/msg/gl.js +65 -0
  176. package/msg/gl.mjs +65 -0
  177. package/msg/gn.js +65 -0
  178. package/msg/gn.mjs +65 -0
  179. package/msg/gor.js +65 -0
  180. package/msg/gor.mjs +65 -0
  181. package/msg/ha.js +65 -0
  182. package/msg/ha.mjs +65 -0
  183. package/msg/hak.js +65 -0
  184. package/msg/hak.mjs +65 -0
  185. package/msg/he.js +65 -0
  186. package/msg/he.mjs +65 -0
  187. package/msg/hi.js +65 -0
  188. package/msg/hi.mjs +65 -0
  189. package/msg/hr.js +65 -0
  190. package/msg/hr.mjs +65 -0
  191. package/msg/hrx.js +65 -0
  192. package/msg/hrx.mjs +65 -0
  193. package/msg/hsb.js +65 -0
  194. package/msg/hsb.mjs +65 -0
  195. package/msg/hu.js +65 -0
  196. package/msg/hu.mjs +65 -0
  197. package/msg/hy.js +65 -0
  198. package/msg/hy.mjs +65 -0
  199. package/msg/ia.js +65 -0
  200. package/msg/ia.mjs +65 -0
  201. package/msg/id.js +65 -0
  202. package/msg/id.mjs +65 -0
  203. package/msg/ig.js +65 -0
  204. package/msg/ig.mjs +65 -0
  205. package/msg/inh.js +65 -0
  206. package/msg/inh.mjs +65 -0
  207. package/msg/is.js +65 -0
  208. package/msg/is.mjs +65 -0
  209. package/msg/it.js +65 -0
  210. package/msg/it.mjs +65 -0
  211. package/msg/ja.js +65 -0
  212. package/msg/ja.mjs +65 -0
  213. package/msg/ka.js +65 -0
  214. package/msg/ka.mjs +65 -0
  215. package/msg/kab.js +65 -0
  216. package/msg/kab.mjs +65 -0
  217. package/msg/kbd-cyrl.js +65 -0
  218. package/msg/kbd-cyrl.mjs +65 -0
  219. package/msg/km.js +65 -0
  220. package/msg/km.mjs +65 -0
  221. package/msg/kn.js +65 -0
  222. package/msg/kn.mjs +65 -0
  223. package/msg/ko.js +65 -0
  224. package/msg/ko.mjs +65 -0
  225. package/msg/ksh.js +65 -0
  226. package/msg/ksh.mjs +65 -0
  227. package/msg/ku-latn.js +65 -0
  228. package/msg/ku-latn.mjs +65 -0
  229. package/msg/ky.js +65 -0
  230. package/msg/ky.mjs +65 -0
  231. package/msg/la.js +65 -0
  232. package/msg/la.mjs +65 -0
  233. package/msg/lb.js +65 -0
  234. package/msg/lb.mjs +65 -0
  235. package/msg/lki.js +65 -0
  236. package/msg/lki.mjs +65 -0
  237. package/msg/lo.js +65 -0
  238. package/msg/lo.mjs +65 -0
  239. package/msg/lrc.js +65 -0
  240. package/msg/lrc.mjs +65 -0
  241. package/msg/lt.js +65 -0
  242. package/msg/lt.mjs +65 -0
  243. package/msg/lv.js +65 -0
  244. package/msg/lv.mjs +65 -0
  245. package/msg/mg.js +65 -0
  246. package/msg/mg.mjs +65 -0
  247. package/msg/mk.js +65 -0
  248. package/msg/mk.mjs +65 -0
  249. package/msg/ml.js +65 -0
  250. package/msg/ml.mjs +65 -0
  251. package/msg/mnw.js +65 -0
  252. package/msg/mnw.mjs +65 -0
  253. package/msg/ms.js +65 -0
  254. package/msg/ms.mjs +65 -0
  255. package/msg/my.js +65 -0
  256. package/msg/my.mjs +65 -0
  257. package/msg/mzn.js +65 -0
  258. package/msg/mzn.mjs +65 -0
  259. package/msg/nb.js +65 -0
  260. package/msg/nb.mjs +65 -0
  261. package/msg/ne.js +65 -0
  262. package/msg/ne.mjs +65 -0
  263. package/msg/nl.js +65 -0
  264. package/msg/nl.mjs +65 -0
  265. package/msg/oc.js +65 -0
  266. package/msg/oc.mjs +65 -0
  267. package/msg/olo.js +65 -0
  268. package/msg/olo.mjs +65 -0
  269. package/msg/pa.js +65 -0
  270. package/msg/pa.mjs +65 -0
  271. package/msg/pl.js +65 -0
  272. package/msg/pl.mjs +65 -0
  273. package/msg/pms.js +65 -0
  274. package/msg/pms.mjs +65 -0
  275. package/msg/ps.js +65 -0
  276. package/msg/ps.mjs +65 -0
  277. package/msg/pt-br.js +65 -0
  278. package/msg/pt-br.mjs +65 -0
  279. package/msg/pt.js +65 -0
  280. package/msg/pt.mjs +65 -0
  281. package/msg/ro.js +65 -0
  282. package/msg/ro.mjs +65 -0
  283. package/msg/ru.js +65 -0
  284. package/msg/ru.mjs +65 -0
  285. package/msg/sc.js +65 -0
  286. package/msg/sc.mjs +65 -0
  287. package/msg/sco.js +65 -0
  288. package/msg/sco.mjs +65 -0
  289. package/msg/sd.js +65 -0
  290. package/msg/sd.mjs +65 -0
  291. package/msg/shn.js +65 -0
  292. package/msg/shn.mjs +65 -0
  293. package/msg/si.js +65 -0
  294. package/msg/si.mjs +65 -0
  295. package/msg/sk.js +65 -0
  296. package/msg/sk.mjs +65 -0
  297. package/msg/skr-arab.js +65 -0
  298. package/msg/skr-arab.mjs +65 -0
  299. package/msg/sl.js +65 -0
  300. package/msg/sl.mjs +65 -0
  301. package/msg/smn.js +65 -0
  302. package/msg/smn.mjs +65 -0
  303. package/msg/sq.js +65 -0
  304. package/msg/sq.mjs +65 -0
  305. package/msg/sr-latn.js +65 -0
  306. package/msg/sr-latn.mjs +65 -0
  307. package/msg/sr.js +65 -0
  308. package/msg/sr.mjs +65 -0
  309. package/msg/sv.js +65 -0
  310. package/msg/sv.mjs +65 -0
  311. package/msg/sw.js +65 -0
  312. package/msg/sw.mjs +65 -0
  313. package/msg/ta.js +65 -0
  314. package/msg/ta.mjs +65 -0
  315. package/msg/tcy.js +65 -0
  316. package/msg/tcy.mjs +65 -0
  317. package/msg/tdd.js +65 -0
  318. package/msg/tdd.mjs +65 -0
  319. package/msg/te.js +65 -0
  320. package/msg/te.mjs +65 -0
  321. package/msg/th.js +65 -0
  322. package/msg/th.mjs +65 -0
  323. package/msg/ti.js +65 -0
  324. package/msg/ti.mjs +65 -0
  325. package/msg/tl.js +65 -0
  326. package/msg/tl.mjs +65 -0
  327. package/msg/tlh.js +65 -0
  328. package/msg/tlh.mjs +65 -0
  329. package/msg/tr.js +65 -0
  330. package/msg/tr.mjs +65 -0
  331. package/msg/ug-arab.js +65 -0
  332. package/msg/ug-arab.mjs +65 -0
  333. package/msg/uk.js +65 -0
  334. package/msg/uk.mjs +65 -0
  335. package/msg/ur.js +65 -0
  336. package/msg/ur.mjs +65 -0
  337. package/msg/uz.js +65 -0
  338. package/msg/uz.mjs +65 -0
  339. package/msg/vi.js +65 -0
  340. package/msg/vi.mjs +65 -0
  341. package/msg/xmf.js +65 -0
  342. package/msg/xmf.mjs +65 -0
  343. package/msg/yo.js +65 -0
  344. package/msg/yo.mjs +65 -0
  345. package/msg/zgh.js +65 -0
  346. package/msg/zgh.mjs +65 -0
  347. package/msg/zh-hans.js +65 -0
  348. package/msg/zh-hans.mjs +65 -0
  349. package/msg/zh-hant.js +65 -0
  350. package/msg/zh-hant.mjs +65 -0
  351. package/package.json +11 -11
  352. package/php_compressed.js +2 -2
  353. package/php_compressed.js.map +1 -1
  354. package/python_compressed.js +2 -2
  355. package/python_compressed.js.map +1 -1
  356. package/core/flyout_navigator.d.ts +0 -11
  357. package/core/keyboard_nav/block_comment_navigation_policy.d.ts +0 -56
  358. package/core/keyboard_nav/flyout_navigation_policy.d.ts +0 -65
  359. package/core/keyboard_nav/line_cursor.d.ts +0 -187
  360. package/core/keyboard_nav/marker.d.ts +0 -53
  361. package/core/marker_manager.d.ts +0 -72
  362. package/core/navigator.d.ts +0 -65
  363. package/media/sprites.png +0 -0
package/msg/zh-hans.js CHANGED
@@ -19,7 +19,29 @@ var Blockly = Blockly || { Msg: Object.create(null) };
19
19
 
20
20
  Blockly.Msg["ADD_COMMENT"] = "添加注释";
21
21
  Blockly.Msg["ALT_KEY"] = "Alt"; // untranslated
22
+ Blockly.Msg["ANNOUNCE_MOVE_AFTER"] = "moving %1 after %3"; // untranslated
23
+ Blockly.Msg["ANNOUNCE_MOVE_AROUND"] = "moving %1 %2 around %3"; // untranslated
24
+ Blockly.Msg["ANNOUNCE_MOVE_BEFORE"] = "moving %1 before %3"; // untranslated
25
+ Blockly.Msg["ANNOUNCE_MOVE_CANCELED"] = "Canceled movement"; // untranslated
26
+ Blockly.Msg["ANNOUNCE_MOVE_INSIDE"] = "moving %1 inside %3 %4"; // untranslated
27
+ Blockly.Msg["ANNOUNCE_MOVE_TO"] = "moving %1 %2 to %3 %4"; // untranslated
28
+ Blockly.Msg["ANNOUNCE_MOVE_WORKSPACE"] = "moving %1 on workspace"; // untranslated
29
+ Blockly.Msg["ARIA_TYPE_FIELD_INPUT"] = "input field"; // untranslated
30
+ Blockly.Msg["BACKSPACE_KEY"] = "Backspace"; // untranslated
31
+ Blockly.Msg["BLOCK_LABEL_BEGIN_PREFIX"] = "Begin %1"; // untranslated
32
+ Blockly.Msg["BLOCK_LABEL_BEGIN_STACK"] = "Begin stack"; // untranslated
33
+ Blockly.Msg["BLOCK_LABEL_COLLAPSED"] = "collapsed"; // untranslated
34
+ Blockly.Msg["BLOCK_LABEL_CONTAINER"] = "container"; // untranslated
35
+ Blockly.Msg["BLOCK_LABEL_DISABLED"] = "disabled"; // untranslated
36
+ Blockly.Msg["BLOCK_LABEL_HAS_INPUT"] = "has input"; // untranslated
37
+ Blockly.Msg["BLOCK_LABEL_HAS_INPUTS"] = "has inputs"; // untranslated
38
+ Blockly.Msg["BLOCK_LABEL_REPLACEABLE"] = "replaceable"; // untranslated
39
+ Blockly.Msg["BLOCK_LABEL_STACK_BLOCKS"] = "%1 stack blocks"; // untranslated
40
+ Blockly.Msg["BLOCK_LABEL_STATEMENT"] = "statement"; // untranslated
41
+ Blockly.Msg["BLOCK_LABEL_TOOLBOX_CATEGORY"] = "%1 category"; // untranslated
42
+ Blockly.Msg["BLOCK_LABEL_VALUE"] = "value"; // untranslated
22
43
  Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "不能删除变量“%1”,因为它是函数“%2”定义的一部分";
44
+ Blockly.Msg["CAPS_LOCK_KEY"] = "Caps Lock"; // untranslated
23
45
  Blockly.Msg["CHANGE_VALUE_TITLE"] = "更改值:";
24
46
  Blockly.Msg["CHROME_OS"] = "ChromeOS"; // untranslated
25
47
  Blockly.Msg["CLEAN_UP"] = "整理块";
@@ -45,6 +67,7 @@ Blockly.Msg["COLOUR_RGB_RED"] = "红色";
45
67
  Blockly.Msg["COLOUR_RGB_TITLE"] = "颜色";
46
68
  Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "通过指定红色、绿色和蓝色的量创建一种颜色。所有的值必须在0和100之间。";
47
69
  Blockly.Msg["COMMAND_KEY"] = "⌘ Command"; // untranslated
70
+ Blockly.Msg["CONTEXT_MENU_KEY"] = "≣ Menu"; // untranslated
48
71
  Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/RaspberryPiFoundation/blockly/wiki/Loops#loop-termination-blocks"; // untranslated
49
72
  Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "跳出循环";
50
73
  Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "继续下一轮循环";
@@ -82,6 +105,7 @@ Blockly.Msg["COPY_SHORTCUT"] = "Copy"; // untranslated
82
105
  Blockly.Msg["CUT_SHORTCUT"] = "Cut"; // untranslated
83
106
  Blockly.Msg["DELETE_ALL_BLOCKS"] = "删除所有 %1 个块吗?";
84
107
  Blockly.Msg["DELETE_BLOCK"] = "删除块";
108
+ Blockly.Msg["DELETE_KEY"] = "Delete"; // untranslated
85
109
  Blockly.Msg["DELETE_VARIABLE"] = "删除变量“%1”";
86
110
  Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "要删除对变量“%2”的%1个引用吗?";
87
111
  Blockly.Msg["DELETE_X_BLOCKS"] = "删除 %1 个块";
@@ -92,16 +116,26 @@ Blockly.Msg["DUPLICATE_BLOCK"] = "复制";
92
116
  Blockly.Msg["DUPLICATE_COMMENT"] = "复制注释";
93
117
  Blockly.Msg["EDIT_BLOCK_CONTENTS"] = "Edit Block contents"; // untranslated
94
118
  Blockly.Msg["ENABLE_BLOCK"] = "启用块";
119
+ Blockly.Msg["END_KEY"] = "End"; // untranslated
120
+ Blockly.Msg["ENTER_KEY"] = "Enter"; // untranslated
121
+ Blockly.Msg["ESCAPE"] = "Esc"; // untranslated
95
122
  Blockly.Msg["EXPAND_ALL"] = "展开块";
96
123
  Blockly.Msg["EXPAND_BLOCK"] = "展开块";
97
124
  Blockly.Msg["EXTERNAL_INPUTS"] = "外部输入";
125
+ Blockly.Msg["FIELD_LABEL_EDIT_PREFIX"] = "Edit %1"; // untranslated
126
+ Blockly.Msg["FIELD_LABEL_EMPTY"] = "empty"; // untranslated
98
127
  Blockly.Msg["HELP"] = "帮助";
99
128
  Blockly.Msg["HELP_PROMPT"] = "Press %1 for help on keyboard controls"; // untranslated
129
+ Blockly.Msg["HOME_KEY"] = "Home"; // untranslated
100
130
  Blockly.Msg["INLINE_INPUTS"] = "单行输入";
131
+ Blockly.Msg["INPUT_LABEL_INDEX"] = "input %1"; // untranslated
132
+ Blockly.Msg["INSERT_KEY"] = "Insert"; // untranslated
133
+ Blockly.Msg["KEYBOARD_NAV_BLOCK_NAVIGATION_HINT"] = "Use the right arrow key to navigate inside of blocks"; // untranslated
101
134
  Blockly.Msg["KEYBOARD_NAV_CONSTRAINED_MOVE_HINT"] = "Use the arrow keys to move, then %1 to accept the position"; // untranslated
102
135
  Blockly.Msg["KEYBOARD_NAV_COPIED_HINT"] = "Copied. Press %1 to paste."; // untranslated
103
136
  Blockly.Msg["KEYBOARD_NAV_CUT_HINT"] = "Cut. Press %1 to paste."; // untranslated
104
137
  Blockly.Msg["KEYBOARD_NAV_UNCONSTRAINED_MOVE_HINT"] = "Hold %1 and use arrow keys to move freely, then %2 to accept the position"; // untranslated
138
+ Blockly.Msg["KEYBOARD_NAV_WORKSPACE_NAVIGATION_HINT"] = "Use the arrow keys to navigate"; // untranslated
105
139
  Blockly.Msg["LINUX"] = "Linux"; // untranslated
106
140
  Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/RaspberryPiFoundation/blockly/wiki/Lists#create-empty-list"; // untranslated
107
141
  Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "创建空列表";
@@ -311,7 +345,10 @@ Blockly.Msg["NEW_VARIABLE_TITLE"] = "新变量的名称:";
311
345
  Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "新变量的类型:";
312
346
  Blockly.Msg["OPTION_KEY"] = "⌥ Option"; // untranslated
313
347
  Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated
348
+ Blockly.Msg["PAGE_DOWN_KEY"] = "Page Down"; // untranslated
349
+ Blockly.Msg["PAGE_UP_KEY"] = "Page Up"; // untranslated
314
350
  Blockly.Msg["PASTE_SHORTCUT"] = "Paste"; // untranslated
351
+ Blockly.Msg["PAUSE_KEY"] = "Pause"; // untranslated
315
352
  Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "允许声明";
316
353
  Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "与:";
317
354
  Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程序";
@@ -343,9 +380,32 @@ Blockly.Msg["REDO"] = "重做";
343
380
  Blockly.Msg["REMOVE_COMMENT"] = "删除注释";
344
381
  Blockly.Msg["RENAME_VARIABLE"] = "重命名变量...";
345
382
  Blockly.Msg["RENAME_VARIABLE_TITLE"] = "将所有“%1”变量重命名为:";
383
+ Blockly.Msg["SHIFT_KEY"] = "Shift"; // untranslated
384
+ Blockly.Msg["SHORTCUTS_ABORT_MOVE"] = "Abort move"; // untranslated
385
+ Blockly.Msg["SHORTCUTS_CLEANUP"] = "Clean up workspace"; // untranslated
346
386
  Blockly.Msg["SHORTCUTS_CODE_NAVIGATION"] = "Code navigation"; // untranslated
387
+ Blockly.Msg["SHORTCUTS_DELETE"] = "Delete"; // untranslated
388
+ Blockly.Msg["SHORTCUTS_DISCONNECT"] = "Disconnect block"; // untranslated
389
+ Blockly.Msg["SHORTCUTS_DUPLICATE"] = "Duplicate"; // untranslated
347
390
  Blockly.Msg["SHORTCUTS_EDITING"] = "Editing"; // untranslated
391
+ Blockly.Msg["SHORTCUTS_ESCAPE"] = "Exit"; // untranslated
392
+ Blockly.Msg["SHORTCUTS_FINISH_MOVE"] = "Finish move"; // untranslated
393
+ Blockly.Msg["SHORTCUTS_FOCUS_TOOLBOX"] = "Focus toolbox"; // untranslated
394
+ Blockly.Msg["SHORTCUTS_FOCUS_WORKSPACE"] = "Focus workspace"; // untranslated
348
395
  Blockly.Msg["SHORTCUTS_GENERAL"] = "General"; // untranslated
396
+ Blockly.Msg["SHORTCUTS_INFORMATION"] = "Announce information"; // untranslated
397
+ Blockly.Msg["SHORTCUTS_MOVE_DOWN"] = "Move down"; // untranslated
398
+ Blockly.Msg["SHORTCUTS_MOVE_LEFT"] = "Move left"; // untranslated
399
+ Blockly.Msg["SHORTCUTS_MOVE_RIGHT"] = "Move right"; // untranslated
400
+ Blockly.Msg["SHORTCUTS_MOVE_UP"] = "Move up"; // untranslated
401
+ Blockly.Msg["SHORTCUTS_NEXT_STACK"] = "Next stack"; // untranslated
402
+ Blockly.Msg["SHORTCUTS_PERFORM_ACTION"] = "Edit or confirm"; // untranslated
403
+ Blockly.Msg["SHORTCUTS_PREVIOUS_STACK"] = "Previous stack"; // untranslated
404
+ Blockly.Msg["SHORTCUTS_SHOW_CONTEXT_MENU"] = "Show menu"; // untranslated
405
+ Blockly.Msg["SHORTCUTS_START_MOVE"] = "Start move"; // untranslated
406
+ Blockly.Msg["SHORTCUTS_START_MOVE_STACK"] = "Start move stack"; // untranslated
407
+ Blockly.Msg["SPACE_KEY"] = "Space"; // untranslated
408
+ Blockly.Msg["TAB_KEY"] = "Tab"; // untranslated
349
409
  Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/RaspberryPiFoundation/blockly/wiki/Text#text-modification"; // untranslated
350
410
  Blockly.Msg["TEXT_APPEND_TITLE"] = "在%1之后加上文本%2";
351
411
  Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "将一些文本追加到变量“%1”里。";
@@ -432,6 +492,11 @@ Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_A_PARAMETER"] = "名为“%1”的变
432
492
  Blockly.Msg["WINDOWS"] = "Windows"; // untranslated
433
493
  Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly工作区";
434
494
  Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "说点什么...";
495
+ Blockly.Msg["WORKSPACE_CONTENTS_BLOCKS_MANY"] = "%1 stacks of blocks%2 in workspace."; // untranslated
496
+ Blockly.Msg["WORKSPACE_CONTENTS_BLOCKS_ONE"] = "One stack of blocks%2 in workspace."; // untranslated
497
+ Blockly.Msg["WORKSPACE_CONTENTS_BLOCKS_ZERO"] = "No blocks%2 in workspace."; // untranslated
498
+ Blockly.Msg["WORKSPACE_CONTENTS_COMMENTS_MANY"] = " and %1 comments"; // untranslated
499
+ Blockly.Msg["WORKSPACE_CONTENTS_COMMENTS_ONE"] = " and one comment"; // untranslated
435
500
  Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
436
501
  Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
437
502
  Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"];
package/msg/zh-hans.mjs CHANGED
@@ -432,6 +432,21 @@ export const {
432
432
  COMMAND_KEY,
433
433
  OPTION_KEY,
434
434
  ALT_KEY,
435
+ ENTER_KEY,
436
+ BACKSPACE_KEY,
437
+ DELETE_KEY,
438
+ ESCAPE,
439
+ TAB_KEY,
440
+ SHIFT_KEY,
441
+ CAPS_LOCK_KEY,
442
+ SPACE_KEY,
443
+ PAGE_UP_KEY,
444
+ PAGE_DOWN_KEY,
445
+ END_KEY,
446
+ HOME_KEY,
447
+ INSERT_KEY,
448
+ PAUSE_KEY,
449
+ CONTEXT_MENU_KEY,
435
450
  CUT_SHORTCUT,
436
451
  COPY_SHORTCUT,
437
452
  PASTE_SHORTCUT,
@@ -439,8 +454,58 @@ export const {
439
454
  SHORTCUTS_GENERAL,
440
455
  SHORTCUTS_EDITING,
441
456
  SHORTCUTS_CODE_NAVIGATION,
457
+ SHORTCUTS_ESCAPE,
458
+ SHORTCUTS_DELETE,
459
+ SHORTCUTS_START_MOVE,
460
+ SHORTCUTS_START_MOVE_STACK,
461
+ SHORTCUTS_MOVE_LEFT,
462
+ SHORTCUTS_MOVE_RIGHT,
463
+ SHORTCUTS_MOVE_UP,
464
+ SHORTCUTS_MOVE_DOWN,
465
+ SHORTCUTS_FINISH_MOVE,
466
+ SHORTCUTS_ABORT_MOVE,
467
+ SHORTCUTS_SHOW_CONTEXT_MENU,
468
+ SHORTCUTS_FOCUS_WORKSPACE,
469
+ SHORTCUTS_FOCUS_TOOLBOX,
470
+ SHORTCUTS_INFORMATION,
471
+ SHORTCUTS_DISCONNECT,
472
+ SHORTCUTS_NEXT_STACK,
473
+ SHORTCUTS_PREVIOUS_STACK,
474
+ SHORTCUTS_PERFORM_ACTION,
475
+ SHORTCUTS_DUPLICATE,
476
+ SHORTCUTS_CLEANUP,
442
477
  KEYBOARD_NAV_UNCONSTRAINED_MOVE_HINT,
443
478
  KEYBOARD_NAV_CONSTRAINED_MOVE_HINT,
444
479
  KEYBOARD_NAV_COPIED_HINT,
445
480
  KEYBOARD_NAV_CUT_HINT,
481
+ WORKSPACE_CONTENTS_BLOCKS_MANY,
482
+ WORKSPACE_CONTENTS_BLOCKS_ONE,
483
+ WORKSPACE_CONTENTS_BLOCKS_ZERO,
484
+ WORKSPACE_CONTENTS_COMMENTS_MANY,
485
+ WORKSPACE_CONTENTS_COMMENTS_ONE,
486
+ KEYBOARD_NAV_BLOCK_NAVIGATION_HINT,
487
+ KEYBOARD_NAV_WORKSPACE_NAVIGATION_HINT,
488
+ BLOCK_LABEL_BEGIN_STACK,
489
+ BLOCK_LABEL_BEGIN_PREFIX,
490
+ BLOCK_LABEL_TOOLBOX_CATEGORY,
491
+ BLOCK_LABEL_DISABLED,
492
+ BLOCK_LABEL_COLLAPSED,
493
+ BLOCK_LABEL_REPLACEABLE,
494
+ BLOCK_LABEL_HAS_INPUT,
495
+ BLOCK_LABEL_HAS_INPUTS,
496
+ BLOCK_LABEL_STATEMENT,
497
+ BLOCK_LABEL_CONTAINER,
498
+ BLOCK_LABEL_VALUE,
499
+ BLOCK_LABEL_STACK_BLOCKS,
500
+ INPUT_LABEL_INDEX,
501
+ ANNOUNCE_MOVE_WORKSPACE,
502
+ ANNOUNCE_MOVE_BEFORE,
503
+ ANNOUNCE_MOVE_AFTER,
504
+ ANNOUNCE_MOVE_INSIDE,
505
+ ANNOUNCE_MOVE_AROUND,
506
+ ANNOUNCE_MOVE_TO,
507
+ ANNOUNCE_MOVE_CANCELED,
508
+ FIELD_LABEL_EMPTY,
509
+ ARIA_TYPE_FIELD_INPUT,
510
+ FIELD_LABEL_EDIT_PREFIX,
446
511
  } = zh_hans;
package/msg/zh-hant.js CHANGED
@@ -19,7 +19,29 @@ var Blockly = Blockly || { Msg: Object.create(null) };
19
19
 
20
20
  Blockly.Msg["ADD_COMMENT"] = "添加評論";
21
21
  Blockly.Msg["ALT_KEY"] = "Alt"; // untranslated
22
+ Blockly.Msg["ANNOUNCE_MOVE_AFTER"] = "moving %1 after %3"; // untranslated
23
+ Blockly.Msg["ANNOUNCE_MOVE_AROUND"] = "moving %1 %2 around %3"; // untranslated
24
+ Blockly.Msg["ANNOUNCE_MOVE_BEFORE"] = "moving %1 before %3"; // untranslated
25
+ Blockly.Msg["ANNOUNCE_MOVE_CANCELED"] = "Canceled movement"; // untranslated
26
+ Blockly.Msg["ANNOUNCE_MOVE_INSIDE"] = "moving %1 inside %3 %4"; // untranslated
27
+ Blockly.Msg["ANNOUNCE_MOVE_TO"] = "moving %1 %2 to %3 %4"; // untranslated
28
+ Blockly.Msg["ANNOUNCE_MOVE_WORKSPACE"] = "moving %1 on workspace"; // untranslated
29
+ Blockly.Msg["ARIA_TYPE_FIELD_INPUT"] = "input field"; // untranslated
30
+ Blockly.Msg["BACKSPACE_KEY"] = "Backspace"; // untranslated
31
+ Blockly.Msg["BLOCK_LABEL_BEGIN_PREFIX"] = "Begin %1"; // untranslated
32
+ Blockly.Msg["BLOCK_LABEL_BEGIN_STACK"] = "Begin stack"; // untranslated
33
+ Blockly.Msg["BLOCK_LABEL_COLLAPSED"] = "collapsed"; // untranslated
34
+ Blockly.Msg["BLOCK_LABEL_CONTAINER"] = "container"; // untranslated
35
+ Blockly.Msg["BLOCK_LABEL_DISABLED"] = "disabled"; // untranslated
36
+ Blockly.Msg["BLOCK_LABEL_HAS_INPUT"] = "has input"; // untranslated
37
+ Blockly.Msg["BLOCK_LABEL_HAS_INPUTS"] = "has inputs"; // untranslated
38
+ Blockly.Msg["BLOCK_LABEL_REPLACEABLE"] = "replaceable"; // untranslated
39
+ Blockly.Msg["BLOCK_LABEL_STACK_BLOCKS"] = "%1 stack blocks"; // untranslated
40
+ Blockly.Msg["BLOCK_LABEL_STATEMENT"] = "statement"; // untranslated
41
+ Blockly.Msg["BLOCK_LABEL_TOOLBOX_CATEGORY"] = "%1 category"; // untranslated
42
+ Blockly.Msg["BLOCK_LABEL_VALUE"] = "value"; // untranslated
22
43
  Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "無法刪除變數「%1」,因為這是功能「%2」定義的一部份內容";
44
+ Blockly.Msg["CAPS_LOCK_KEY"] = "Caps Lock"; // untranslated
23
45
  Blockly.Msg["CHANGE_VALUE_TITLE"] = "修改值:";
24
46
  Blockly.Msg["CHROME_OS"] = "ChromeOS"; // untranslated
25
47
  Blockly.Msg["CLEAN_UP"] = "清理區塊";
@@ -45,6 +67,7 @@ Blockly.Msg["COLOUR_RGB_RED"] = "紅";
45
67
  Blockly.Msg["COLOUR_RGB_TITLE"] = "顏色";
46
68
  Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "透過指定紅、綠、 藍色的值來建立一種顏色。所有的值必須介於 0 和 100 之間。";
47
69
  Blockly.Msg["COMMAND_KEY"] = "⌘ Command"; // untranslated
70
+ Blockly.Msg["CONTEXT_MENU_KEY"] = "≣ Menu"; // untranslated
48
71
  Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/RaspberryPiFoundation/blockly/wiki/Loops#loop-termination-blocks"; // untranslated
49
72
  Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "中斷循環";
50
73
  Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "繼續下一個循環";
@@ -82,6 +105,7 @@ Blockly.Msg["COPY_SHORTCUT"] = "Copy"; // untranslated
82
105
  Blockly.Msg["CUT_SHORTCUT"] = "Cut"; // untranslated
83
106
  Blockly.Msg["DELETE_ALL_BLOCKS"] = "刪除全部 %1 個區塊?";
84
107
  Blockly.Msg["DELETE_BLOCK"] = "刪除區塊";
108
+ Blockly.Msg["DELETE_KEY"] = "Delete"; // untranslated
85
109
  Blockly.Msg["DELETE_VARIABLE"] = "刪除變數「%1」";
86
110
  Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "刪除使用%1次的「%2」變數?";
87
111
  Blockly.Msg["DELETE_X_BLOCKS"] = "刪除%1個區塊";
@@ -92,16 +116,26 @@ Blockly.Msg["DUPLICATE_BLOCK"] = "再製";
92
116
  Blockly.Msg["DUPLICATE_COMMENT"] = "複製註解";
93
117
  Blockly.Msg["EDIT_BLOCK_CONTENTS"] = "Edit Block contents"; // untranslated
94
118
  Blockly.Msg["ENABLE_BLOCK"] = "啟用區塊";
119
+ Blockly.Msg["END_KEY"] = "End"; // untranslated
120
+ Blockly.Msg["ENTER_KEY"] = "Enter"; // untranslated
121
+ Blockly.Msg["ESCAPE"] = "Esc"; // untranslated
95
122
  Blockly.Msg["EXPAND_ALL"] = "展開區塊";
96
123
  Blockly.Msg["EXPAND_BLOCK"] = "展開區塊";
97
124
  Blockly.Msg["EXTERNAL_INPUTS"] = "外部輸入";
125
+ Blockly.Msg["FIELD_LABEL_EDIT_PREFIX"] = "Edit %1"; // untranslated
126
+ Blockly.Msg["FIELD_LABEL_EMPTY"] = "empty"; // untranslated
98
127
  Blockly.Msg["HELP"] = "說明";
99
128
  Blockly.Msg["HELP_PROMPT"] = "Press %1 for help on keyboard controls"; // untranslated
129
+ Blockly.Msg["HOME_KEY"] = "Home"; // untranslated
100
130
  Blockly.Msg["INLINE_INPUTS"] = "單行輸入";
131
+ Blockly.Msg["INPUT_LABEL_INDEX"] = "input %1"; // untranslated
132
+ Blockly.Msg["INSERT_KEY"] = "Insert"; // untranslated
133
+ Blockly.Msg["KEYBOARD_NAV_BLOCK_NAVIGATION_HINT"] = "Use the right arrow key to navigate inside of blocks"; // untranslated
101
134
  Blockly.Msg["KEYBOARD_NAV_CONSTRAINED_MOVE_HINT"] = "Use the arrow keys to move, then %1 to accept the position"; // untranslated
102
135
  Blockly.Msg["KEYBOARD_NAV_COPIED_HINT"] = "Copied. Press %1 to paste."; // untranslated
103
136
  Blockly.Msg["KEYBOARD_NAV_CUT_HINT"] = "Cut. Press %1 to paste."; // untranslated
104
137
  Blockly.Msg["KEYBOARD_NAV_UNCONSTRAINED_MOVE_HINT"] = "Hold %1 and use arrow keys to move freely, then %2 to accept the position"; // untranslated
138
+ Blockly.Msg["KEYBOARD_NAV_WORKSPACE_NAVIGATION_HINT"] = "Use the arrow keys to navigate"; // untranslated
105
139
  Blockly.Msg["LINUX"] = "Linux"; // untranslated
106
140
  Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/RaspberryPiFoundation/blockly/wiki/Lists#create-empty-list"; // untranslated
107
141
  Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "建立空的清單";
@@ -311,7 +345,10 @@ Blockly.Msg["NEW_VARIABLE_TITLE"] = "新變數名稱:";
311
345
  Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "新變數類型:";
312
346
  Blockly.Msg["OPTION_KEY"] = "⌥ Option"; // untranslated
313
347
  Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated
348
+ Blockly.Msg["PAGE_DOWN_KEY"] = "Page Down"; // untranslated
349
+ Blockly.Msg["PAGE_UP_KEY"] = "Page Up"; // untranslated
314
350
  Blockly.Msg["PASTE_SHORTCUT"] = "Paste"; // untranslated
351
+ Blockly.Msg["PAUSE_KEY"] = "Pause"; // untranslated
315
352
  Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "允許陳述式";
316
353
  Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "與:";
317
354
  Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式";
@@ -343,9 +380,32 @@ Blockly.Msg["REDO"] = "重做";
343
380
  Blockly.Msg["REMOVE_COMMENT"] = "移除註解";
344
381
  Blockly.Msg["RENAME_VARIABLE"] = "重新命名變數...";
345
382
  Blockly.Msg["RENAME_VARIABLE_TITLE"] = "將所有「%1」變數重新命名為:";
383
+ Blockly.Msg["SHIFT_KEY"] = "Shift"; // untranslated
384
+ Blockly.Msg["SHORTCUTS_ABORT_MOVE"] = "Abort move"; // untranslated
385
+ Blockly.Msg["SHORTCUTS_CLEANUP"] = "Clean up workspace"; // untranslated
346
386
  Blockly.Msg["SHORTCUTS_CODE_NAVIGATION"] = "Code navigation"; // untranslated
387
+ Blockly.Msg["SHORTCUTS_DELETE"] = "Delete"; // untranslated
388
+ Blockly.Msg["SHORTCUTS_DISCONNECT"] = "Disconnect block"; // untranslated
389
+ Blockly.Msg["SHORTCUTS_DUPLICATE"] = "Duplicate"; // untranslated
347
390
  Blockly.Msg["SHORTCUTS_EDITING"] = "Editing"; // untranslated
391
+ Blockly.Msg["SHORTCUTS_ESCAPE"] = "Exit"; // untranslated
392
+ Blockly.Msg["SHORTCUTS_FINISH_MOVE"] = "Finish move"; // untranslated
393
+ Blockly.Msg["SHORTCUTS_FOCUS_TOOLBOX"] = "Focus toolbox"; // untranslated
394
+ Blockly.Msg["SHORTCUTS_FOCUS_WORKSPACE"] = "Focus workspace"; // untranslated
348
395
  Blockly.Msg["SHORTCUTS_GENERAL"] = "General"; // untranslated
396
+ Blockly.Msg["SHORTCUTS_INFORMATION"] = "Announce information"; // untranslated
397
+ Blockly.Msg["SHORTCUTS_MOVE_DOWN"] = "Move down"; // untranslated
398
+ Blockly.Msg["SHORTCUTS_MOVE_LEFT"] = "Move left"; // untranslated
399
+ Blockly.Msg["SHORTCUTS_MOVE_RIGHT"] = "Move right"; // untranslated
400
+ Blockly.Msg["SHORTCUTS_MOVE_UP"] = "Move up"; // untranslated
401
+ Blockly.Msg["SHORTCUTS_NEXT_STACK"] = "Next stack"; // untranslated
402
+ Blockly.Msg["SHORTCUTS_PERFORM_ACTION"] = "Edit or confirm"; // untranslated
403
+ Blockly.Msg["SHORTCUTS_PREVIOUS_STACK"] = "Previous stack"; // untranslated
404
+ Blockly.Msg["SHORTCUTS_SHOW_CONTEXT_MENU"] = "Show menu"; // untranslated
405
+ Blockly.Msg["SHORTCUTS_START_MOVE"] = "Start move"; // untranslated
406
+ Blockly.Msg["SHORTCUTS_START_MOVE_STACK"] = "Start move stack"; // untranslated
407
+ Blockly.Msg["SPACE_KEY"] = "Space"; // untranslated
408
+ Blockly.Msg["TAB_KEY"] = "Tab"; // untranslated
349
409
  Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/RaspberryPiFoundation/blockly/wiki/Text#text-modification"; // untranslated
350
410
  Blockly.Msg["TEXT_APPEND_TITLE"] = "至 %1 套用文字 %2";
351
411
  Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "添加一些文字到變數「%1」之後。";
@@ -432,6 +492,11 @@ Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_A_PARAMETER"] = "已存在名為「%1
432
492
  Blockly.Msg["WINDOWS"] = "Windows"; // untranslated
433
493
  Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly工作區";
434
494
  Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "來說些事情...";
495
+ Blockly.Msg["WORKSPACE_CONTENTS_BLOCKS_MANY"] = "%1 stacks of blocks%2 in workspace."; // untranslated
496
+ Blockly.Msg["WORKSPACE_CONTENTS_BLOCKS_ONE"] = "One stack of blocks%2 in workspace."; // untranslated
497
+ Blockly.Msg["WORKSPACE_CONTENTS_BLOCKS_ZERO"] = "No blocks%2 in workspace."; // untranslated
498
+ Blockly.Msg["WORKSPACE_CONTENTS_COMMENTS_MANY"] = " and %1 comments"; // untranslated
499
+ Blockly.Msg["WORKSPACE_CONTENTS_COMMENTS_ONE"] = " and one comment"; // untranslated
435
500
  Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
436
501
  Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
437
502
  Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"];
package/msg/zh-hant.mjs CHANGED
@@ -432,6 +432,21 @@ export const {
432
432
  COMMAND_KEY,
433
433
  OPTION_KEY,
434
434
  ALT_KEY,
435
+ ENTER_KEY,
436
+ BACKSPACE_KEY,
437
+ DELETE_KEY,
438
+ ESCAPE,
439
+ TAB_KEY,
440
+ SHIFT_KEY,
441
+ CAPS_LOCK_KEY,
442
+ SPACE_KEY,
443
+ PAGE_UP_KEY,
444
+ PAGE_DOWN_KEY,
445
+ END_KEY,
446
+ HOME_KEY,
447
+ INSERT_KEY,
448
+ PAUSE_KEY,
449
+ CONTEXT_MENU_KEY,
435
450
  CUT_SHORTCUT,
436
451
  COPY_SHORTCUT,
437
452
  PASTE_SHORTCUT,
@@ -439,8 +454,58 @@ export const {
439
454
  SHORTCUTS_GENERAL,
440
455
  SHORTCUTS_EDITING,
441
456
  SHORTCUTS_CODE_NAVIGATION,
457
+ SHORTCUTS_ESCAPE,
458
+ SHORTCUTS_DELETE,
459
+ SHORTCUTS_START_MOVE,
460
+ SHORTCUTS_START_MOVE_STACK,
461
+ SHORTCUTS_MOVE_LEFT,
462
+ SHORTCUTS_MOVE_RIGHT,
463
+ SHORTCUTS_MOVE_UP,
464
+ SHORTCUTS_MOVE_DOWN,
465
+ SHORTCUTS_FINISH_MOVE,
466
+ SHORTCUTS_ABORT_MOVE,
467
+ SHORTCUTS_SHOW_CONTEXT_MENU,
468
+ SHORTCUTS_FOCUS_WORKSPACE,
469
+ SHORTCUTS_FOCUS_TOOLBOX,
470
+ SHORTCUTS_INFORMATION,
471
+ SHORTCUTS_DISCONNECT,
472
+ SHORTCUTS_NEXT_STACK,
473
+ SHORTCUTS_PREVIOUS_STACK,
474
+ SHORTCUTS_PERFORM_ACTION,
475
+ SHORTCUTS_DUPLICATE,
476
+ SHORTCUTS_CLEANUP,
442
477
  KEYBOARD_NAV_UNCONSTRAINED_MOVE_HINT,
443
478
  KEYBOARD_NAV_CONSTRAINED_MOVE_HINT,
444
479
  KEYBOARD_NAV_COPIED_HINT,
445
480
  KEYBOARD_NAV_CUT_HINT,
481
+ WORKSPACE_CONTENTS_BLOCKS_MANY,
482
+ WORKSPACE_CONTENTS_BLOCKS_ONE,
483
+ WORKSPACE_CONTENTS_BLOCKS_ZERO,
484
+ WORKSPACE_CONTENTS_COMMENTS_MANY,
485
+ WORKSPACE_CONTENTS_COMMENTS_ONE,
486
+ KEYBOARD_NAV_BLOCK_NAVIGATION_HINT,
487
+ KEYBOARD_NAV_WORKSPACE_NAVIGATION_HINT,
488
+ BLOCK_LABEL_BEGIN_STACK,
489
+ BLOCK_LABEL_BEGIN_PREFIX,
490
+ BLOCK_LABEL_TOOLBOX_CATEGORY,
491
+ BLOCK_LABEL_DISABLED,
492
+ BLOCK_LABEL_COLLAPSED,
493
+ BLOCK_LABEL_REPLACEABLE,
494
+ BLOCK_LABEL_HAS_INPUT,
495
+ BLOCK_LABEL_HAS_INPUTS,
496
+ BLOCK_LABEL_STATEMENT,
497
+ BLOCK_LABEL_CONTAINER,
498
+ BLOCK_LABEL_VALUE,
499
+ BLOCK_LABEL_STACK_BLOCKS,
500
+ INPUT_LABEL_INDEX,
501
+ ANNOUNCE_MOVE_WORKSPACE,
502
+ ANNOUNCE_MOVE_BEFORE,
503
+ ANNOUNCE_MOVE_AFTER,
504
+ ANNOUNCE_MOVE_INSIDE,
505
+ ANNOUNCE_MOVE_AROUND,
506
+ ANNOUNCE_MOVE_TO,
507
+ ANNOUNCE_MOVE_CANCELED,
508
+ FIELD_LABEL_EMPTY,
509
+ ARIA_TYPE_FIELD_INPUT,
510
+ FIELD_LABEL_EDIT_PREFIX,
446
511
  } = zh_hant;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blockly",
3
- "version": "12.5.1",
3
+ "version": "13.0.0-beta.1",
4
4
  "description": "Blockly is a library for building visual programming editors.",
5
5
  "keywords": [
6
6
  "blockly"
@@ -16,6 +16,9 @@
16
16
  "author": {
17
17
  "name": "Neil Fraser"
18
18
  },
19
+ "browser": {
20
+ "jsdom": false
21
+ },
19
22
  "exports": {
20
23
  ".": {
21
24
  "types": "./index.d.ts",
@@ -69,7 +72,6 @@
69
72
  "devDependencies": {
70
73
  "@blockly/block-test": "^7.0.2",
71
74
  "@blockly/dev-tools": "^9.0.2",
72
- "@blockly/keyboard-navigation": "^3.0.1",
73
75
  "@blockly/theme-modern": "^7.0.1",
74
76
  "@hyperjump/browser": "^1.1.4",
75
77
  "@hyperjump/json-schema": "^1.5.0",
@@ -89,19 +91,17 @@
89
91
  "eslint-plugin-prettier": "^5.2.1",
90
92
  "glob": "^11.0.1",
91
93
  "globals": "^16.0.0",
92
- "google-closure-compiler": "^20260114.0.0",
94
+ "google-closure-compiler": "^20260330.0.0",
93
95
  "gulp": "^5.0.0",
94
96
  "gulp-concat": "^2.6.1",
95
97
  "gulp-gzip": "^1.4.2",
96
98
  "gulp-header": "^2.0.9",
97
- "gulp-insert": "^0.5.0",
98
99
  "gulp-rename": "^2.0.0",
99
100
  "gulp-replace": "^1.0.0",
100
- "gulp-series": "^1.0.2",
101
- "gulp-shell": "^0.8.0",
102
101
  "gulp-sourcemaps": "^3.0.0",
103
102
  "gulp-umd": "^2.0.0",
104
103
  "http-server": "^14.0.0",
104
+ "jsdom": "27.4.0",
105
105
  "json5": "^2.2.0",
106
106
  "markdown-tables-to-json": "^0.1.7",
107
107
  "mocha": "^11.3.0",
@@ -110,17 +110,17 @@
110
110
  "prettier-plugin-organize-imports": "^4.0.0",
111
111
  "puppeteer-core": "^24.17.0",
112
112
  "readline-sync": "^1.4.10",
113
- "rimraf": "^5.0.0",
113
+ "rimraf": "^6.1.2",
114
114
  "typescript": "^5.3.3",
115
115
  "typescript-eslint": "^8.16.0",
116
116
  "webdriverio": "^9.0.7",
117
117
  "yargs": "^17.2.1"
118
118
  },
119
- "dependencies": {
120
- "jsdom": "26.1.0"
121
- },
122
119
  "engines": {
123
- "node": ">=18"
120
+ "node": ">=22"
121
+ },
122
+ "peerDependencies": {
123
+ "jsdom": "^27.4.0"
124
124
  },
125
125
  "type": "commonjs"
126
126
  }
package/php_compressed.js CHANGED
@@ -200,9 +200,9 @@ function ${b.FUNCTION_NAME_PLACEHOLDER_}($a, $b) {
200
200
  return rand($a, $b);
201
201
  }
202
202
  `)+"("+c+", "+a+")",Order$$module$build$src$generators$php$php_generator.FUNCTION_CALL]},math_random_float$$module$build$src$generators$php$math=function(a,b){return["(float)rand()/(float)getrandmax()",Order$$module$build$src$generators$php$php_generator.FUNCTION_CALL]},math_atan2$$module$build$src$generators$php$math=function(a,b){const c=b.valueToCode(a,"X",Order$$module$build$src$generators$php$php_generator.NONE)||"0";return["atan2("+(b.valueToCode(a,"Y",Order$$module$build$src$generators$php$php_generator.NONE)||
203
- "0")+", "+c+") / pi() * 180",Order$$module$build$src$generators$php$php_generator.DIVISION]},procedures_defreturn$$module$build$src$generators$php$procedures=function(a,b){var c=[],d=a.workspace,e=$.allUsedVarModels$$module$build$src$core$variables(d)||[];for(var f of e)e=f.getName(),a.getVars().includes(e)||c.push(b.getVariableName(e));d=$.allDeveloperVariables$$module$build$src$core$variables(d);for(f=0;f<d.length;f++)c.push(b.nameDB_.getName(d[f],$.NameType$$module$build$src$core$names.DEVELOPER_VARIABLE));
203
+ "0")+", "+c+") / pi() * 180",Order$$module$build$src$generators$php$php_generator.DIVISION]},procedures_defreturn$$module$build$src$generators$php$procedures=function(a,b){var c=[],d=a.workspace,e=$.allUsedVarModels$$module$build$src$core$variables(d)||[];for(var f of e)e=f.getName(),a.getVarModels().includes(f)||c.push(b.getVariableName(e));d=$.allDeveloperVariables$$module$build$src$core$variables(d);for(f=0;f<d.length;f++)c.push(b.nameDB_.getName(d[f],$.NameType$$module$build$src$core$names.DEVELOPER_VARIABLE));
204
204
  d=c.length?b.INDENT+"global "+c.join(", ")+";\n":"";c=b.getProcedureName(a.getFieldValue("NAME"));f="";b.STATEMENT_PREFIX&&(f+=b.injectId(b.STATEMENT_PREFIX,a));b.STATEMENT_SUFFIX&&(f+=b.injectId(b.STATEMENT_SUFFIX,a));f&&(f=b.prefixLines(f,b.INDENT));e="";b.INFINITE_LOOP_TRAP&&(e=b.prefixLines(b.injectId(b.INFINITE_LOOP_TRAP,a),b.INDENT));let g="";a.getInput("STACK")&&(g=b.statementToCode(a,"STACK"));let h="";a.getInput("RETURN")&&(h=b.valueToCode(a,"RETURN",Order$$module$build$src$generators$php$php_generator.NONE)||
205
- "");let k="";g&&h&&(k=f);h&&(h=b.INDENT+"return "+h+";\n");const l=[],m=a.getVars();for(let n=0;n<m.length;n++)l[n]=b.getVariableName(m[n]);d="function "+c+"("+l.join(", ")+") {\n"+d+f+e+g+k+h+"}";d=b.scrub_(a,d);b.definitions_["%"+c]=d;return null},procedures_callreturn$$module$build$src$generators$php$procedures=function(a,b){const c=b.getProcedureName(a.getFieldValue("NAME")),d=[],e=a.getVars();for(let f=0;f<e.length;f++)d[f]=b.valueToCode(a,"ARG"+f,Order$$module$build$src$generators$php$php_generator.NONE)||
205
+ "");let k="";g&&h&&(k=f);h&&(h=b.INDENT+"return "+h+";\n");const l=[],m=a.getVarModels();for(let n=0;n<m.length;n++)l[n]=b.getVariableName(m[n].getId());d="function "+c+"("+l.join(", ")+") {\n"+d+f+e+g+k+h+"}";d=b.scrub_(a,d);b.definitions_["%"+c]=d;return null},procedures_callreturn$$module$build$src$generators$php$procedures=function(a,b){const c=b.getProcedureName(a.getFieldValue("NAME")),d=[],e=a.getVarModels();for(let f=0;f<e.length;f++)d[f]=b.valueToCode(a,"ARG"+f,Order$$module$build$src$generators$php$php_generator.NONE)||
206
206
  "null";return[c+"("+d.join(", ")+")",Order$$module$build$src$generators$php$php_generator.FUNCTION_CALL]},procedures_callnoreturn$$module$build$src$generators$php$procedures=function(a,b){return b.forBlock.procedures_callreturn(a,b)[0]+";\n"},procedures_ifreturn$$module$build$src$generators$php$procedures=function(a,b){let c="if ("+(b.valueToCode(a,"CONDITION",Order$$module$build$src$generators$php$php_generator.NONE)||"false")+") {\n";b.STATEMENT_SUFFIX&&(c+=b.prefixLines(b.injectId(b.STATEMENT_SUFFIX,
207
207
  a),b.INDENT));a.hasReturnValue_?(a=b.valueToCode(a,"VALUE",Order$$module$build$src$generators$php$php_generator.NONE)||"null",c+=b.INDENT+"return "+a+";\n"):c+=b.INDENT+"return;\n";return c+"}\n"},text$$module$build$src$generators$php$text=function(a,b){return[b.quote_(a.getFieldValue("TEXT")),Order$$module$build$src$generators$php$php_generator.ATOMIC]},text_join$$module$build$src$generators$php$text=function(a,b){if(a.itemCount_===0)return["''",Order$$module$build$src$generators$php$php_generator.ATOMIC];
208
208
  if(a.itemCount_===1)return[b.valueToCode(a,"ADD0",Order$$module$build$src$generators$php$php_generator.NONE)||"''",Order$$module$build$src$generators$php$php_generator.NONE];if(a.itemCount_===2){var c=b.valueToCode(a,"ADD0",Order$$module$build$src$generators$php$php_generator.STRING_CONCAT)||"''";a=b.valueToCode(a,"ADD1",Order$$module$build$src$generators$php$php_generator.STRING_CONCAT)||"''";return[c+" . "+a,Order$$module$build$src$generators$php$php_generator.STRING_CONCAT]}c=Array(a.itemCount_);