blockly 13.1.1 → 13.2.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 (278) hide show
  1. package/blockly.min.js +881 -864
  2. package/blockly_compressed.js +771 -759
  3. package/blockly_compressed.js.map +1 -1
  4. package/blocks_compressed.js +77 -77
  5. package/blocks_compressed.js.map +1 -1
  6. package/core/block.d.ts +1 -1
  7. package/core/block_svg.d.ts +0 -10
  8. package/core/blockly.d.ts +1 -0
  9. package/core/connection_db.d.ts +40 -0
  10. package/core/dragging/block_drag_strategy.d.ts +8 -3
  11. package/core/field.d.ts +12 -0
  12. package/core/field_dropdown.d.ts +5 -1
  13. package/core/field_input.d.ts +7 -0
  14. package/core/insertion_marker.d.ts +54 -0
  15. package/core/insertion_marker_previewer.d.ts +17 -1
  16. package/core/interfaces/i_json_block_definition.d.ts +10 -0
  17. package/core/rendered_connection.d.ts +20 -0
  18. package/core/utils/aria.d.ts +6 -0
  19. package/dart_compressed.js +23 -23
  20. package/javascript_compressed.js +28 -28
  21. package/lua_compressed.js +41 -41
  22. package/msg/ab.js +5 -0
  23. package/msg/ab.mjs +5 -0
  24. package/msg/ace.js +5 -0
  25. package/msg/ace.mjs +5 -0
  26. package/msg/af.js +5 -0
  27. package/msg/af.mjs +5 -0
  28. package/msg/am.js +5 -0
  29. package/msg/am.mjs +5 -0
  30. package/msg/ar.js +5 -0
  31. package/msg/ar.mjs +5 -0
  32. package/msg/ast.js +5 -0
  33. package/msg/ast.mjs +5 -0
  34. package/msg/az.js +5 -0
  35. package/msg/az.mjs +5 -0
  36. package/msg/ba.js +5 -0
  37. package/msg/ba.mjs +5 -0
  38. package/msg/bcc.js +5 -0
  39. package/msg/bcc.mjs +5 -0
  40. package/msg/be-tarask.js +5 -0
  41. package/msg/be-tarask.mjs +5 -0
  42. package/msg/be.js +5 -0
  43. package/msg/be.mjs +5 -0
  44. package/msg/bg.js +5 -0
  45. package/msg/bg.mjs +5 -0
  46. package/msg/bn.js +5 -0
  47. package/msg/bn.mjs +5 -0
  48. package/msg/br.js +5 -0
  49. package/msg/br.mjs +5 -0
  50. package/msg/bs.js +5 -0
  51. package/msg/bs.mjs +5 -0
  52. package/msg/ca.js +5 -0
  53. package/msg/ca.mjs +5 -0
  54. package/msg/ce.js +5 -0
  55. package/msg/ce.mjs +5 -0
  56. package/msg/cs.js +5 -0
  57. package/msg/cs.mjs +5 -0
  58. package/msg/csb.js +5 -0
  59. package/msg/csb.mjs +5 -0
  60. package/msg/da.js +5 -0
  61. package/msg/da.mjs +5 -0
  62. package/msg/de.js +5 -0
  63. package/msg/de.mjs +5 -0
  64. package/msg/diq.js +5 -0
  65. package/msg/diq.mjs +5 -0
  66. package/msg/dtp.js +5 -0
  67. package/msg/dtp.mjs +5 -0
  68. package/msg/dty.js +5 -0
  69. package/msg/dty.mjs +5 -0
  70. package/msg/ee.js +5 -0
  71. package/msg/ee.mjs +5 -0
  72. package/msg/el.js +5 -0
  73. package/msg/el.mjs +5 -0
  74. package/msg/en-gb.js +5 -0
  75. package/msg/en-gb.mjs +5 -0
  76. package/msg/en.js +5 -0
  77. package/msg/en.mjs +5 -0
  78. package/msg/eo.js +5 -0
  79. package/msg/eo.mjs +5 -0
  80. package/msg/es.js +5 -0
  81. package/msg/es.mjs +5 -0
  82. package/msg/et.js +5 -0
  83. package/msg/et.mjs +5 -0
  84. package/msg/eu.js +5 -0
  85. package/msg/eu.mjs +5 -0
  86. package/msg/fa.js +5 -0
  87. package/msg/fa.mjs +5 -0
  88. package/msg/fi.js +10 -5
  89. package/msg/fi.mjs +5 -0
  90. package/msg/fo.js +5 -0
  91. package/msg/fo.mjs +5 -0
  92. package/msg/fr.js +90 -85
  93. package/msg/fr.mjs +5 -0
  94. package/msg/frr.js +5 -0
  95. package/msg/frr.mjs +5 -0
  96. package/msg/ga.js +5 -0
  97. package/msg/ga.mjs +5 -0
  98. package/msg/gl.js +29 -24
  99. package/msg/gl.mjs +5 -0
  100. package/msg/gn.js +5 -0
  101. package/msg/gn.mjs +5 -0
  102. package/msg/gor.js +5 -0
  103. package/msg/gor.mjs +5 -0
  104. package/msg/ha.js +5 -0
  105. package/msg/ha.mjs +5 -0
  106. package/msg/he.js +36 -31
  107. package/msg/he.mjs +5 -0
  108. package/msg/hi.js +5 -0
  109. package/msg/hi.mjs +5 -0
  110. package/msg/hr.js +5 -0
  111. package/msg/hr.mjs +5 -0
  112. package/msg/hrx.js +5 -0
  113. package/msg/hrx.mjs +5 -0
  114. package/msg/hsb.js +5 -0
  115. package/msg/hsb.mjs +5 -0
  116. package/msg/hu.js +5 -0
  117. package/msg/hu.mjs +5 -0
  118. package/msg/hy.js +5 -0
  119. package/msg/hy.mjs +5 -0
  120. package/msg/ia.js +5 -0
  121. package/msg/ia.mjs +5 -0
  122. package/msg/id.js +5 -0
  123. package/msg/id.mjs +5 -0
  124. package/msg/ig.js +5 -0
  125. package/msg/ig.mjs +5 -0
  126. package/msg/inh.js +5 -0
  127. package/msg/inh.mjs +5 -0
  128. package/msg/is.js +5 -0
  129. package/msg/is.mjs +5 -0
  130. package/msg/it.js +10 -5
  131. package/msg/it.mjs +5 -0
  132. package/msg/ja.js +5 -0
  133. package/msg/ja.mjs +5 -0
  134. package/msg/ka.js +5 -0
  135. package/msg/ka.mjs +5 -0
  136. package/msg/kab.js +5 -0
  137. package/msg/kab.mjs +5 -0
  138. package/msg/kbd-cyrl.js +5 -0
  139. package/msg/kbd-cyrl.mjs +5 -0
  140. package/msg/km.js +5 -0
  141. package/msg/km.mjs +5 -0
  142. package/msg/kn.js +5 -0
  143. package/msg/kn.mjs +5 -0
  144. package/msg/ko.js +29 -24
  145. package/msg/ko.mjs +5 -0
  146. package/msg/krc.js +5 -0
  147. package/msg/krc.mjs +5 -0
  148. package/msg/ksh.js +5 -0
  149. package/msg/ksh.mjs +5 -0
  150. package/msg/ku-latn.js +5 -0
  151. package/msg/ku-latn.mjs +5 -0
  152. package/msg/ky.js +90 -85
  153. package/msg/ky.mjs +5 -0
  154. package/msg/la.js +5 -0
  155. package/msg/la.mjs +5 -0
  156. package/msg/lb.js +22 -17
  157. package/msg/lb.mjs +5 -0
  158. package/msg/lki.js +5 -0
  159. package/msg/lki.mjs +5 -0
  160. package/msg/lo.js +5 -0
  161. package/msg/lo.mjs +5 -0
  162. package/msg/lrc.js +5 -0
  163. package/msg/lrc.mjs +5 -0
  164. package/msg/lt.js +5 -0
  165. package/msg/lt.mjs +5 -0
  166. package/msg/lv.js +5 -0
  167. package/msg/lv.mjs +5 -0
  168. package/msg/mg.js +5 -0
  169. package/msg/mg.mjs +5 -0
  170. package/msg/mk.js +5 -0
  171. package/msg/mk.mjs +5 -0
  172. package/msg/ml.js +5 -0
  173. package/msg/ml.mjs +5 -0
  174. package/msg/mnw.js +5 -0
  175. package/msg/mnw.mjs +5 -0
  176. package/msg/ms.js +5 -0
  177. package/msg/ms.mjs +5 -0
  178. package/msg/mt.js +5 -0
  179. package/msg/mt.mjs +5 -0
  180. package/msg/my.js +5 -0
  181. package/msg/my.mjs +5 -0
  182. package/msg/mzn.js +5 -0
  183. package/msg/mzn.mjs +5 -0
  184. package/msg/nb.js +5 -0
  185. package/msg/nb.mjs +5 -0
  186. package/msg/ne.js +5 -0
  187. package/msg/ne.mjs +5 -0
  188. package/msg/nl.js +82 -77
  189. package/msg/nl.mjs +5 -0
  190. package/msg/oc.js +5 -0
  191. package/msg/oc.mjs +5 -0
  192. package/msg/olo.js +5 -0
  193. package/msg/olo.mjs +5 -0
  194. package/msg/pa.js +5 -0
  195. package/msg/pa.mjs +5 -0
  196. package/msg/pl.js +5 -0
  197. package/msg/pl.mjs +5 -0
  198. package/msg/pms.js +92 -87
  199. package/msg/pms.mjs +5 -0
  200. package/msg/ps.js +5 -0
  201. package/msg/ps.mjs +5 -0
  202. package/msg/pt-br.js +5 -0
  203. package/msg/pt-br.mjs +5 -0
  204. package/msg/pt.js +5 -0
  205. package/msg/pt.mjs +5 -0
  206. package/msg/ro.js +5 -0
  207. package/msg/ro.mjs +5 -0
  208. package/msg/ru.js +44 -39
  209. package/msg/ru.mjs +5 -0
  210. package/msg/sc.js +5 -0
  211. package/msg/sc.mjs +5 -0
  212. package/msg/sco.js +5 -0
  213. package/msg/sco.mjs +5 -0
  214. package/msg/sd.js +5 -0
  215. package/msg/sd.mjs +5 -0
  216. package/msg/shn.js +5 -0
  217. package/msg/shn.mjs +5 -0
  218. package/msg/si.js +5 -0
  219. package/msg/si.mjs +5 -0
  220. package/msg/sk.js +27 -22
  221. package/msg/sk.mjs +5 -0
  222. package/msg/skr-arab.js +5 -0
  223. package/msg/skr-arab.mjs +5 -0
  224. package/msg/sl.js +5 -0
  225. package/msg/sl.mjs +5 -0
  226. package/msg/smn.js +5 -0
  227. package/msg/smn.mjs +5 -0
  228. package/msg/sq.js +5 -0
  229. package/msg/sq.mjs +5 -0
  230. package/msg/sr-latn.js +5 -0
  231. package/msg/sr-latn.mjs +5 -0
  232. package/msg/sr.js +5 -0
  233. package/msg/sr.mjs +5 -0
  234. package/msg/sv.js +5 -0
  235. package/msg/sv.mjs +5 -0
  236. package/msg/sw.js +5 -0
  237. package/msg/sw.mjs +5 -0
  238. package/msg/ta.js +5 -0
  239. package/msg/ta.mjs +5 -0
  240. package/msg/tcy.js +5 -0
  241. package/msg/tcy.mjs +5 -0
  242. package/msg/tdd.js +5 -0
  243. package/msg/tdd.mjs +5 -0
  244. package/msg/te.js +5 -0
  245. package/msg/te.mjs +5 -0
  246. package/msg/th.js +5 -0
  247. package/msg/th.mjs +5 -0
  248. package/msg/ti.js +5 -0
  249. package/msg/ti.mjs +5 -0
  250. package/msg/tl.js +5 -0
  251. package/msg/tl.mjs +5 -0
  252. package/msg/tlh.js +5 -0
  253. package/msg/tlh.mjs +5 -0
  254. package/msg/tr.js +59 -54
  255. package/msg/tr.mjs +5 -0
  256. package/msg/ug-arab.js +5 -0
  257. package/msg/ug-arab.mjs +5 -0
  258. package/msg/uk.js +5 -0
  259. package/msg/uk.mjs +5 -0
  260. package/msg/ur.js +5 -0
  261. package/msg/ur.mjs +5 -0
  262. package/msg/uz.js +5 -0
  263. package/msg/uz.mjs +5 -0
  264. package/msg/vi.js +5 -0
  265. package/msg/vi.mjs +5 -0
  266. package/msg/xmf.js +5 -0
  267. package/msg/xmf.mjs +5 -0
  268. package/msg/yo.js +5 -0
  269. package/msg/yo.mjs +5 -0
  270. package/msg/zgh.js +5 -0
  271. package/msg/zgh.mjs +5 -0
  272. package/msg/zh-hans.js +134 -129
  273. package/msg/zh-hans.mjs +5 -0
  274. package/msg/zh-hant.js +5 -0
  275. package/msg/zh-hant.mjs +5 -0
  276. package/package.json +15 -21
  277. package/php_compressed.js +51 -51
  278. package/python_compressed.js +41 -41
package/msg/zgh.mjs CHANGED
@@ -662,6 +662,10 @@ export const {
662
662
  ARIA_TYPE_FIELD_GRID,
663
663
  FIELD_BITMAP_BUTTON_LABEL_RANDOMIZE,
664
664
  FIELD_BITMAP_BUTTON_LABEL_CLEAR,
665
+ FIELD_BITMAP_PIXEL_ON,
666
+ FIELD_BITMAP_PIXEL_OFF,
667
+ FIELD_BITMAP_PIXEL_LABEL,
668
+ FIELD_BITMAP_ARIA_VALUE,
665
669
  OPEN_BACKPACK,
666
670
  CLOSE_BACKPACK,
667
671
  COPY_ALL_TO_BACKPACK,
@@ -673,4 +677,5 @@ export const {
673
677
  FIELD_MULTILINEINPUT_NEW_LINE,
674
678
  ZOOM_TO_FIT_ARIA_LABEL,
675
679
  MINIMAP_ARIA_LABEL,
680
+ ARIA_LABEL_TRASH_EMPTY,
676
681
  } = zgh;
package/msg/zh-hans.js CHANGED
@@ -27,27 +27,28 @@ Blockly.Msg["ANNOUNCE_MOVE_INSIDE"] = "Moving %1 inside %2."; // untranslated
27
27
  Blockly.Msg["ANNOUNCE_MOVE_OF"] = "%1 of %2"; // untranslated
28
28
  Blockly.Msg["ANNOUNCE_MOVE_TO"] = "Moving %1 to %2."; // untranslated
29
29
  Blockly.Msg["ANNOUNCE_MOVE_WORKSPACE"] = "Moving %1 on workspace."; // untranslated
30
- Blockly.Msg["ARIA_LABEL_ADD_ELSE_IF"] = "Add else if"; // untranslated
30
+ Blockly.Msg["ARIA_LABEL_ADD_ELSE_IF"] = "添加否则如果";
31
31
  Blockly.Msg["ARIA_LABEL_ADD_INPUT"] = "添加输入";
32
- Blockly.Msg["ARIA_LABEL_ADD_LIST_ITEM"] = "Add list item"; // untranslated
32
+ Blockly.Msg["ARIA_LABEL_ADD_LIST_ITEM"] = "添加列表项目";
33
33
  Blockly.Msg["ARIA_LABEL_ADD_TEXT"] = "添加文字";
34
34
  Blockly.Msg["ARIA_LABEL_BUTTON"] = "button"; // untranslated
35
- Blockly.Msg["ARIA_LABEL_COMMENT"] = "Comment"; // untranslated
36
- Blockly.Msg["ARIA_LABEL_COMMENT_COLLAPSE"] = "Collapse Comment"; // untranslated
37
- Blockly.Msg["ARIA_LABEL_COMMENT_EXPAND"] = "Expand Comment"; // untranslated
35
+ Blockly.Msg["ARIA_LABEL_COMMENT"] = "注释";
36
+ Blockly.Msg["ARIA_LABEL_COMMENT_COLLAPSE"] = "收起注释";
37
+ Blockly.Msg["ARIA_LABEL_COMMENT_EXPAND"] = "展开注释";
38
38
  Blockly.Msg["ARIA_LABEL_FIELD_ANGLE"] = "%1度";
39
39
  Blockly.Msg["ARIA_LABEL_HEADING"] = "heading"; // untranslated
40
- Blockly.Msg["ARIA_LABEL_REMOVE_ELSE_IF"] = "Remove else if"; // untranslated
40
+ Blockly.Msg["ARIA_LABEL_REMOVE_ELSE_IF"] = "移除否则如果";
41
41
  Blockly.Msg["ARIA_LABEL_REMOVE_INPUT"] = "删除输入";
42
42
  Blockly.Msg["ARIA_LABEL_REMOVE_LIST_ITEM"] = "移除列表中的项目";
43
43
  Blockly.Msg["ARIA_LABEL_REMOVE_TEXT"] = "删除文字";
44
+ Blockly.Msg["ARIA_LABEL_TRASH_EMPTY"] = "垃圾桶,当前为空";
44
45
  Blockly.Msg["ARIA_TYPE_FIELD_ANGLE"] = "角度";
45
- Blockly.Msg["ARIA_TYPE_FIELD_BITMAP"] = "pixel image"; // untranslated
46
+ Blockly.Msg["ARIA_TYPE_FIELD_BITMAP"] = "位图";
46
47
  Blockly.Msg["ARIA_TYPE_FIELD_CHECKBOX"] = "checkbox"; // untranslated
47
48
  Blockly.Msg["ARIA_TYPE_FIELD_COLOUR"] = "颜色";
48
49
  Blockly.Msg["ARIA_TYPE_FIELD_DATE"] = "日期";
49
50
  Blockly.Msg["ARIA_TYPE_FIELD_DROPDOWN"] = "dropdown"; // untranslated
50
- Blockly.Msg["ARIA_TYPE_FIELD_GRID"] = "grid dropdown"; // untranslated
51
+ Blockly.Msg["ARIA_TYPE_FIELD_GRID"] = "方格下拉框";
51
52
  Blockly.Msg["ARIA_TYPE_FIELD_IMAGE"] = "image"; // untranslated
52
53
  Blockly.Msg["ARIA_TYPE_FIELD_INPUT"] = "input"; // untranslated
53
54
  Blockly.Msg["ARIA_TYPE_FIELD_NUMBER"] = "number"; // untranslated
@@ -55,29 +56,29 @@ Blockly.Msg["ARIA_TYPE_FIELD_TEXT_INPUT"] = "text"; // untranslated
55
56
  Blockly.Msg["ARIA_TYPE_FIELD_TEXT_INPUT_ARGUMENT"] = "input name"; // untranslated
56
57
  Blockly.Msg["ARIA_TYPE_FIELD_TEXT_INPUT_PROCEDURE"] = "function name"; // untranslated
57
58
  Blockly.Msg["BACKSPACE_KEY"] = "退格";
58
- Blockly.Msg["BLOCK_LABEL_BEGIN_PREFIX"] = "Begin %1"; // untranslated
59
- Blockly.Msg["BLOCK_LABEL_BEGIN_STACK"] = "Begin stack"; // untranslated
60
- Blockly.Msg["BLOCK_LABEL_COLLAPSED"] = "collapsed"; // untranslated
61
- Blockly.Msg["BLOCK_LABEL_CONTAINER"] = "container"; // untranslated
62
- Blockly.Msg["BLOCK_LABEL_DISABLED"] = "disabled"; // untranslated
63
- Blockly.Msg["BLOCK_LABEL_HAS_BRANCHES"] = "has %1 branches"; // untranslated
64
- Blockly.Msg["BLOCK_LABEL_HAS_INPUT"] = "has input"; // untranslated
65
- Blockly.Msg["BLOCK_LABEL_HAS_INPUTS"] = "has inputs"; // untranslated
66
- Blockly.Msg["BLOCK_LABEL_REPLACEABLE"] = "replaceable"; // untranslated
67
- Blockly.Msg["BLOCK_LABEL_STACK_BLOCKS"] = "%1 stack blocks"; // untranslated
68
- Blockly.Msg["BLOCK_LABEL_STATEMENT"] = "statement"; // untranslated
69
- Blockly.Msg["BLOCK_LABEL_TOOLBOX_CATEGORY"] = "%1 category"; // untranslated
70
- Blockly.Msg["BLOCK_LABEL_VALUE"] = "value"; // untranslated
71
- Blockly.Msg["BUBBLE_LABEL_COMMENT"] = "Comment: %1"; // untranslated
59
+ Blockly.Msg["BLOCK_LABEL_BEGIN_PREFIX"] = "%1开始";
60
+ Blockly.Msg["BLOCK_LABEL_BEGIN_STACK"] = "块堆开始";
61
+ Blockly.Msg["BLOCK_LABEL_COLLAPSED"] = "已折叠";
62
+ Blockly.Msg["BLOCK_LABEL_CONTAINER"] = "容器";
63
+ Blockly.Msg["BLOCK_LABEL_DISABLED"] = "已禁用";
64
+ Blockly.Msg["BLOCK_LABEL_HAS_BRANCHES"] = "有%1个分支";
65
+ Blockly.Msg["BLOCK_LABEL_HAS_INPUT"] = "有输入";
66
+ Blockly.Msg["BLOCK_LABEL_HAS_INPUTS"] = "有输入";
67
+ Blockly.Msg["BLOCK_LABEL_REPLACEABLE"] = "可替换";
68
+ Blockly.Msg["BLOCK_LABEL_STACK_BLOCKS"] = "%1块堆";
69
+ Blockly.Msg["BLOCK_LABEL_STATEMENT"] = "语句";
70
+ Blockly.Msg["BLOCK_LABEL_TOOLBOX_CATEGORY"] = "%1分类";
71
+ Blockly.Msg["BLOCK_LABEL_VALUE"] = "";
72
+ Blockly.Msg["BUBBLE_LABEL_COMMENT"] = "注释:%1";
72
73
  Blockly.Msg["BUBBLE_LABEL_DEFAULT"] = "Bubble"; // untranslated
73
- Blockly.Msg["BUBBLE_LABEL_WARNING"] = "Warning: %1"; // untranslated
74
+ Blockly.Msg["BUBBLE_LABEL_WARNING"] = "警告:%1";
74
75
  Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "不能删除变量“%1”,因为它是函数“%2”定义的一部分";
75
76
  Blockly.Msg["CAPS_LOCK_KEY"] = "Caps Lock"; // untranslated
76
77
  Blockly.Msg["CHANGE_VALUE_TITLE"] = "更改值:";
77
78
  Blockly.Msg["CHROME_OS"] = "ChromeOS";
78
79
  Blockly.Msg["CLEAN_UP"] = "整理块";
79
80
  Blockly.Msg["CLOSE"] = "关闭";
80
- Blockly.Msg["CLOSE_BACKPACK"] = "Close backpack"; // untranslated
81
+ Blockly.Msg["CLOSE_BACKPACK"] = "关闭背包";
81
82
  Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "已收起的信息块内包含警告。";
82
83
  Blockly.Msg["COLLAPSE_ALL"] = "折叠块";
83
84
  Blockly.Msg["COLLAPSE_BLOCK"] = "折叠块";
@@ -133,10 +134,10 @@ Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "当条件满足时重复";
133
134
  Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "只要值为假,就一直循环执行一些语句。";
134
135
  Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "只要值为真,就一直循环执行一些语句。";
135
136
  Blockly.Msg["CONTROL_KEY"] = "Ctrl键";
136
- Blockly.Msg["COPY_ALL_TO_BACKPACK"] = "Copy All Blocks to Backpack"; // untranslated
137
+ Blockly.Msg["COPY_ALL_TO_BACKPACK"] = "将所有块复制到背包";
137
138
  Blockly.Msg["COPY_SHORTCUT"] = "复制";
138
- Blockly.Msg["COPY_TO_BACKPACK"] = "Copy to Backpack"; // untranslated
139
- Blockly.Msg["CURRENT_BLOCK_ANNOUNCEMENT"] = "Current block: %1"; // untranslated
139
+ Blockly.Msg["COPY_TO_BACKPACK"] = "复制到背包";
140
+ Blockly.Msg["CURRENT_BLOCK_ANNOUNCEMENT"] = "当前块:%1";
140
141
  Blockly.Msg["CUT_SHORTCUT"] = "剪切";
141
142
  Blockly.Msg["DELETE_ALL_BLOCKS"] = "删除所有 %1 个块吗?";
142
143
  Blockly.Msg["DELETE_BLOCK"] = "删除块";
@@ -150,7 +151,7 @@ Blockly.Msg["DISABLE_BLOCK"] = "禁用块";
150
151
  Blockly.Msg["DUPLICATE_BLOCK"] = "复制";
151
152
  Blockly.Msg["DUPLICATE_COMMENT"] = "复制注释";
152
153
  Blockly.Msg["EDIT_BLOCK_CONTENTS"] = "编辑块内容";
153
- Blockly.Msg["EMPTY_BACKPACK"] = "Empty Backpack"; // untranslated
154
+ Blockly.Msg["EMPTY_BACKPACK"] = "清空背包";
154
155
  Blockly.Msg["ENABLE_BLOCK"] = "启用块";
155
156
  Blockly.Msg["END_KEY"] = "End"; // untranslated
156
157
  Blockly.Msg["ENTER_KEY"] = "Enter"; // untranslated
@@ -158,33 +159,37 @@ Blockly.Msg["ESCAPE"] = "Esc";
158
159
  Blockly.Msg["EXPAND_ALL"] = "展开块";
159
160
  Blockly.Msg["EXPAND_BLOCK"] = "展开块";
160
161
  Blockly.Msg["EXTERNAL_INPUTS"] = "外部输入";
161
- Blockly.Msg["FIELD_BITMAP_BUTTON_LABEL_CLEAR"] = "Clear"; // untranslated
162
- Blockly.Msg["FIELD_BITMAP_BUTTON_LABEL_RANDOMIZE"] = "Randomize"; // untranslated
162
+ Blockly.Msg["FIELD_BITMAP_ARIA_VALUE"] = "%1乘%2,%3 个像素开启";
163
+ Blockly.Msg["FIELD_BITMAP_BUTTON_LABEL_CLEAR"] = "清空";
164
+ Blockly.Msg["FIELD_BITMAP_BUTTON_LABEL_RANDOMIZE"] = "随机";
165
+ Blockly.Msg["FIELD_BITMAP_PIXEL_LABEL"] = "%1,第%2行,第%3列";
166
+ Blockly.Msg["FIELD_BITMAP_PIXEL_OFF"] = "关";
167
+ Blockly.Msg["FIELD_BITMAP_PIXEL_ON"] = "开";
163
168
  Blockly.Msg["FIELD_LABEL_CHECKBOX_CHECKED"] = "Checked"; // untranslated
164
169
  Blockly.Msg["FIELD_LABEL_CHECKBOX_UNCHECKED"] = "Not checked"; // untranslated
165
170
  Blockly.Msg["FIELD_LABEL_EDIT_PREFIX"] = "Edit %1"; // untranslated
166
171
  Blockly.Msg["FIELD_LABEL_EMPTY"] = "empty"; // untranslated
167
172
  Blockly.Msg["FIELD_LABEL_OPTION_INDEX"] = "Option %1"; // untranslated
168
173
  Blockly.Msg["FIELD_LABEL_VARIABLE"] = "Variable '%1'"; // untranslated
169
- Blockly.Msg["FIELD_MULTILINEINPUT_FINISH_EDITING"] = "Finish editing"; // untranslated
170
- Blockly.Msg["FIELD_MULTILINEINPUT_NEW_LINE"] = "New line"; // untranslated
174
+ Blockly.Msg["FIELD_MULTILINEINPUT_FINISH_EDITING"] = "结束编辑";
175
+ Blockly.Msg["FIELD_MULTILINEINPUT_NEW_LINE"] = "换行";
171
176
  Blockly.Msg["HELP"] = "帮助";
172
177
  Blockly.Msg["HELP_PROMPT"] = "按 %1 来获取有关键盘控制的帮助。";
173
178
  Blockly.Msg["HOME_KEY"] = "Home"; // untranslated
174
- Blockly.Msg["ICON_LABEL_COMMENT_CLOSED"] = "Open Comment"; // untranslated
175
- Blockly.Msg["ICON_LABEL_COMMENT_OPEN"] = "Close Comment"; // untranslated
176
- Blockly.Msg["ICON_LABEL_DEFAULT"] = "Icon"; // untranslated
177
- Blockly.Msg["ICON_LABEL_MUTATOR_CLOSED"] = "Edit this block"; // untranslated
178
- Blockly.Msg["ICON_LABEL_MUTATOR_OPEN"] = "Close block editor"; // untranslated
179
- Blockly.Msg["ICON_LABEL_WARNING_CLOSED"] = "Open Warning"; // untranslated
180
- Blockly.Msg["ICON_LABEL_WARNING_OPEN"] = "Close Warning"; // untranslated
179
+ Blockly.Msg["ICON_LABEL_COMMENT_CLOSED"] = "打开注释";
180
+ Blockly.Msg["ICON_LABEL_COMMENT_OPEN"] = "关闭注释";
181
+ Blockly.Msg["ICON_LABEL_DEFAULT"] = "图标";
182
+ Blockly.Msg["ICON_LABEL_MUTATOR_CLOSED"] = "编辑这个块";
183
+ Blockly.Msg["ICON_LABEL_MUTATOR_OPEN"] = "关闭块编辑器";
184
+ Blockly.Msg["ICON_LABEL_WARNING_CLOSED"] = "打开警告";
185
+ Blockly.Msg["ICON_LABEL_WARNING_OPEN"] = "关闭警告";
181
186
  Blockly.Msg["INLINE_INPUTS"] = "单行输入";
182
- Blockly.Msg["INPUT_LABEL_CONDITION"] = "condition"; // untranslated
183
- Blockly.Msg["INPUT_LABEL_CONDITION_A"] = "first condition"; // untranslated
184
- Blockly.Msg["INPUT_LABEL_CONDITION_B"] = "second condition"; // untranslated
185
- Blockly.Msg["INPUT_LABEL_EMPTY"] = "Empty"; // untranslated
186
- Blockly.Msg["INPUT_LABEL_END_STATEMENT"] = "End %1"; // untranslated
187
- Blockly.Msg["INPUT_LABEL_INDEX"] = "input %1"; // untranslated
187
+ Blockly.Msg["INPUT_LABEL_CONDITION"] = "条件";
188
+ Blockly.Msg["INPUT_LABEL_CONDITION_A"] = "第一个条件";
189
+ Blockly.Msg["INPUT_LABEL_CONDITION_B"] = "第二个条件";
190
+ Blockly.Msg["INPUT_LABEL_EMPTY"] = "";
191
+ Blockly.Msg["INPUT_LABEL_END_STATEMENT"] = "%1结束";
192
+ Blockly.Msg["INPUT_LABEL_INDEX"] = "第%1个输入";
188
193
  Blockly.Msg["INPUT_LABEL_LISTS_CREATE_WITH_ITEM"] = "value %1"; // untranslated
189
194
  Blockly.Msg["INPUT_LABEL_LISTS_DELIMITER"] = "delimiter"; // untranslated
190
195
  Blockly.Msg["INPUT_LABEL_LISTS_END_POSITION"] = "end position"; // untranslated
@@ -202,20 +207,20 @@ Blockly.Msg["INPUT_LABEL_LOOP_FROM"] = "starting number"; // untranslated
202
207
  Blockly.Msg["INPUT_LABEL_LOOP_LIST"] = "list to iterate over"; // untranslated
203
208
  Blockly.Msg["INPUT_LABEL_LOOP_TIMES"] = "number of times to repeat"; // untranslated
204
209
  Blockly.Msg["INPUT_LABEL_LOOP_TO"] = "ending number"; // untranslated
205
- Blockly.Msg["INPUT_LABEL_MATH_CHANGE_BY"] = "amount to change by"; // untranslated
206
- Blockly.Msg["INPUT_LABEL_MATH_CONSTRAIN_VALUE"] = "number to constrain"; // untranslated
207
- Blockly.Msg["INPUT_LABEL_MATH_DIVIDEND"] = "dividend"; // untranslated
208
- Blockly.Msg["INPUT_LABEL_MATH_DIVISOR"] = "divisor"; // untranslated
209
- Blockly.Msg["INPUT_LABEL_NUMBER"] = "number"; // untranslated
210
- Blockly.Msg["INPUT_LABEL_NUMBER_A"] = "first number"; // untranslated
211
- Blockly.Msg["INPUT_LABEL_NUMBER_ATAN2_X"] = "x coordinate"; // untranslated
212
- Blockly.Msg["INPUT_LABEL_NUMBER_ATAN2_Y"] = "y coordinate"; // untranslated
213
- Blockly.Msg["INPUT_LABEL_NUMBER_B"] = "second number"; // untranslated
214
- Blockly.Msg["INPUT_LABEL_NUMBER_LIST"] = "list of numbers"; // untranslated
215
- Blockly.Msg["INPUT_LABEL_NUMBER_MAX"] = "maximum"; // untranslated
216
- Blockly.Msg["INPUT_LABEL_NUMBER_MIN"] = "minimum"; // untranslated
217
- Blockly.Msg["INPUT_LABEL_NUMBER_TO_CHECK"] = "number to check"; // untranslated
218
- Blockly.Msg["INPUT_LABEL_STATEMENT"] = "statement position"; // untranslated
210
+ Blockly.Msg["INPUT_LABEL_MATH_CHANGE_BY"] = "更改量";
211
+ Blockly.Msg["INPUT_LABEL_MATH_CONSTRAIN_VALUE"] = "要约束的数字";
212
+ Blockly.Msg["INPUT_LABEL_MATH_DIVIDEND"] = "被除数";
213
+ Blockly.Msg["INPUT_LABEL_MATH_DIVISOR"] = "除数";
214
+ Blockly.Msg["INPUT_LABEL_NUMBER"] = "数字";
215
+ Blockly.Msg["INPUT_LABEL_NUMBER_A"] = "第一个数字";
216
+ Blockly.Msg["INPUT_LABEL_NUMBER_ATAN2_X"] = "X坐标";
217
+ Blockly.Msg["INPUT_LABEL_NUMBER_ATAN2_Y"] = "Y坐标";
218
+ Blockly.Msg["INPUT_LABEL_NUMBER_B"] = "第二个数字";
219
+ Blockly.Msg["INPUT_LABEL_NUMBER_LIST"] = "数字列表";
220
+ Blockly.Msg["INPUT_LABEL_NUMBER_MAX"] = "最大";
221
+ Blockly.Msg["INPUT_LABEL_NUMBER_MIN"] = "最小";
222
+ Blockly.Msg["INPUT_LABEL_NUMBER_TO_CHECK"] = "要检查的数字";
223
+ Blockly.Msg["INPUT_LABEL_STATEMENT"] = "语句位置";
219
224
  Blockly.Msg["INPUT_LABEL_TEXT_APPEND"] = "value to append"; // untranslated
220
225
  Blockly.Msg["INPUT_LABEL_TEXT_END_POSITION"] = "end position"; // untranslated
221
226
  Blockly.Msg["INPUT_LABEL_TEXT_JOIN_ITEM"] = "value %1"; // untranslated
@@ -226,18 +231,18 @@ Blockly.Msg["INPUT_LABEL_TEXT_TO_CHANGE"] = "text to change"; // untranslated
226
231
  Blockly.Msg["INPUT_LABEL_TEXT_TO_CHECK"] = "text to check"; // untranslated
227
232
  Blockly.Msg["INPUT_LABEL_TEXT_TO_FIND"] = "text to find"; // untranslated
228
233
  Blockly.Msg["INPUT_LABEL_TEXT_TO_REPLACE"] = "text to replace"; // untranslated
229
- Blockly.Msg["INPUT_LABEL_VALUE"] = "value position"; // untranslated
230
- Blockly.Msg["INPUT_LABEL_VALUE_A"] = "first value"; // untranslated
231
- Blockly.Msg["INPUT_LABEL_VALUE_B"] = "second value"; // untranslated
234
+ Blockly.Msg["INPUT_LABEL_VALUE"] = "值位置";
235
+ Blockly.Msg["INPUT_LABEL_VALUE_A"] = "第一个值";
236
+ Blockly.Msg["INPUT_LABEL_VALUE_B"] = "第二个值";
232
237
  Blockly.Msg["INPUT_LABEL_VARIABLES_SET"] = "value to set"; // untranslated
233
238
  Blockly.Msg["INSERT_KEY"] = "Insert"; // untranslated
234
- Blockly.Msg["KEYBOARD_NAV_BLOCK_NAVIGATION_HINT"] = "Use %1 to navigate inside of blocks."; // untranslated
239
+ Blockly.Msg["KEYBOARD_NAV_BLOCK_NAVIGATION_HINT"] = "使用%1导航到块内部。";
235
240
  Blockly.Msg["KEYBOARD_NAV_CONSTRAINED_MOVE_HINT"] = "使用箭头键移动,然后按%1接受位置。";
236
241
  Blockly.Msg["KEYBOARD_NAV_COPIED_HINT"] = "已拷貝。按下 %1 貼上。";
237
242
  Blockly.Msg["KEYBOARD_NAV_CUT_HINT"] = "已剪下。按下 %1 貼上。";
238
- Blockly.Msg["KEYBOARD_NAV_FLYOUT_LABEL_HINT"] = "Use the arrow keys to navigate to a block, or press %1 to go to the next heading."; // untranslated
243
+ Blockly.Msg["KEYBOARD_NAV_FLYOUT_LABEL_HINT"] = "使用方向键导航到一个块,或按%1跳转到下一个标题。";
239
244
  Blockly.Msg["KEYBOARD_NAV_UNCONSTRAINED_MOVE_HINT"] = "按住 %1 并使用箭头键来自由一点,然后按下 %2 接受位置。";
240
- Blockly.Msg["KEYBOARD_NAV_WORKSPACE_NAVIGATION_HINT"] = "Use the arrow keys to navigate."; // untranslated
245
+ Blockly.Msg["KEYBOARD_NAV_WORKSPACE_NAVIGATION_HINT"] = "使用方向键导航。";
241
246
  Blockly.Msg["LINUX"] = "Linux";
242
247
  Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/RaspberryPiFoundation/blockly/wiki/Lists#create-empty-list"; // untranslated
243
248
  Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "创建空列表";
@@ -373,7 +378,7 @@ Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://zh.wikipedia.org/wiki/加法";
373
378
  Blockly.Msg["MATH_CHANGE_TITLE"] = "给 %1 加 %2";
374
379
  Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "把数加到变量“%1”。";
375
380
  Blockly.Msg["MATH_CONSTANT_E_ARIA"] = "e";
376
- Blockly.Msg["MATH_CONSTANT_GOLDEN_RATIO_ARIA"] = "golden ratio"; // untranslated
381
+ Blockly.Msg["MATH_CONSTANT_GOLDEN_RATIO_ARIA"] = "黄金比例";
377
382
  Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://zh.wikipedia.org/wiki/数学常数";
378
383
  Blockly.Msg["MATH_CONSTANT_INFINITY_ARIA"] = "无限";
379
384
  Blockly.Msg["MATH_CONSTANT_PI_ARIA"] = "派";
@@ -403,10 +408,10 @@ Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "一个数。";
403
408
  Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated
404
409
  Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "列表的平均";
405
410
  Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "列表的最大数";
406
- Blockly.Msg["MATH_ONLIST_OPERATOR_MAX_ARIA"] = "maximum"; // untranslated
411
+ Blockly.Msg["MATH_ONLIST_OPERATOR_MAX_ARIA"] = "最大";
407
412
  Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "列表的中位数";
408
413
  Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "列表的最小数";
409
- Blockly.Msg["MATH_ONLIST_OPERATOR_MIN_ARIA"] = "minimum"; // untranslated
414
+ Blockly.Msg["MATH_ONLIST_OPERATOR_MIN_ARIA"] = "最小";
410
415
  Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "列表的众数";
411
416
  Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "列表的随机项";
412
417
  Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "列表的标准差";
@@ -420,7 +425,7 @@ Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "返回列表内的一个随机元
420
425
  Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "返回列表的标准差。";
421
426
  Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "返回列表内的所有数的和。";
422
427
  Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated
423
- Blockly.Msg["MATH_POWER_SYMBOL_ARIA"] = "to the power of"; // untranslated
428
+ Blockly.Msg["MATH_POWER_SYMBOL_ARIA"] = "次幂";
424
429
  Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://zh.wikipedia.org/wiki/随机数生成器";
425
430
  Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "随机小数";
426
431
  Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "返回一个从0.0(含)到1.0(不含)之间的随机数。";
@@ -435,11 +440,11 @@ Blockly.Msg["MATH_ROUND_TOOLTIP"] = "数向上或向下取整。";
435
440
  Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://zh.wikipedia.org/wiki/平方根";
436
441
  Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "绝对值";
437
442
  Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE_ARIA"] = "绝对值";
438
- Blockly.Msg["MATH_SINGLE_OP_EXP_ARIA"] = "e to the power of"; // untranslated
439
- Blockly.Msg["MATH_SINGLE_OP_LN_ARIA"] = "natural logarithm"; // untranslated
440
- Blockly.Msg["MATH_SINGLE_OP_LOG10_ARIA"] = "base 10 logarithm"; // untranslated
443
+ Blockly.Msg["MATH_SINGLE_OP_EXP_ARIA"] = "e次幂";
444
+ Blockly.Msg["MATH_SINGLE_OP_LN_ARIA"] = "自然对数";
445
+ Blockly.Msg["MATH_SINGLE_OP_LOG10_ARIA"] = "10为底的对数";
441
446
  Blockly.Msg["MATH_SINGLE_OP_NEG_ARIA"] = "负";
442
- Blockly.Msg["MATH_SINGLE_OP_POW10_ARIA"] = "10 to the power of"; // untranslated
447
+ Blockly.Msg["MATH_SINGLE_OP_POW10_ARIA"] = "10次幂";
443
448
  Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "平方根";
444
449
  Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "返回一个数的绝对值。";
445
450
  Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "返回e的一个数次幂。";
@@ -451,11 +456,11 @@ Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "返回一个数的平方根。";
451
456
  Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated
452
457
  Blockly.Msg["MATH_SUBTRACTION_SYMBOL_ARIA"] = "减去";
453
458
  Blockly.Msg["MATH_TRIG_ACOS"] = "反余弦";
454
- Blockly.Msg["MATH_TRIG_ACOS_ARIA"] = "inverse cosine"; // untranslated
459
+ Blockly.Msg["MATH_TRIG_ACOS_ARIA"] = "反余弦";
455
460
  Blockly.Msg["MATH_TRIG_ASIN"] = "反正弦";
456
- Blockly.Msg["MATH_TRIG_ASIN_ARIA"] = "inverse sine"; // untranslated
461
+ Blockly.Msg["MATH_TRIG_ASIN_ARIA"] = "反正弦";
457
462
  Blockly.Msg["MATH_TRIG_ATAN"] = "反正切";
458
- Blockly.Msg["MATH_TRIG_ATAN_ARIA"] = "inverse tangent"; // untranslated
463
+ Blockly.Msg["MATH_TRIG_ATAN_ARIA"] = "反正切";
459
464
  Blockly.Msg["MATH_TRIG_COS"] = "余弦";
460
465
  Blockly.Msg["MATH_TRIG_COS_ARIA"] = "余弦";
461
466
  Blockly.Msg["MATH_TRIG_HELPURL"] = "https://zh.wikipedia.org/wiki/三角函数";
@@ -469,7 +474,7 @@ Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "返回一个数的反正切。";
469
474
  Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "返回角度(非弧度)的余弦。";
470
475
  Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "返回角度(非弧度)的正弦。";
471
476
  Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "返回角度(非弧度)的正切。";
472
- Blockly.Msg["MINIMAP_ARIA_LABEL"] = "Workspace minimap. Use the arrow keys to pan the workspace."; // untranslated
477
+ Blockly.Msg["MINIMAP_ARIA_LABEL"] = "工作区小地图,用方向键平移工作区。";
473
478
  Blockly.Msg["MOVE_BLOCK"] = "移动块";
474
479
  Blockly.Msg["NEW_COLOUR_VARIABLE"] = "创建颜色变量...";
475
480
  Blockly.Msg["NEW_NUMBER_VARIABLE"] = "创建数变量...";
@@ -477,15 +482,15 @@ Blockly.Msg["NEW_STRING_VARIABLE"] = "创建字符串变量...";
477
482
  Blockly.Msg["NEW_VARIABLE"] = "创建变量...";
478
483
  Blockly.Msg["NEW_VARIABLE_TITLE"] = "新变量的名称:";
479
484
  Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "新变量的类型:";
480
- Blockly.Msg["NO_PARENT_ANNOUNCEMENT"] = "Current block has no parent"; // untranslated
481
- Blockly.Msg["OPEN_BACKPACK"] = "Open backpack"; // untranslated
485
+ Blockly.Msg["NO_PARENT_ANNOUNCEMENT"] = "当前块没有父块";
486
+ Blockly.Msg["OPEN_BACKPACK"] = "打开背包";
482
487
  Blockly.Msg["OPEN_TRASH"] = "Open trash"; // untranslated
483
488
  Blockly.Msg["OPTION_KEY"] = "Option键";
484
489
  Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated
485
490
  Blockly.Msg["PAGE_DOWN_KEY"] = "Page Down"; // untranslated
486
491
  Blockly.Msg["PAGE_UP_KEY"] = "Page Up"; // untranslated
487
- Blockly.Msg["PARENT_BLOCKS_ANNOUNCEMENT"] = "Parent blocks: %1"; // untranslated
488
- Blockly.Msg["PASTE_ALL_FROM_BACKPACK"] = "Paste All Blocks from Backpack"; // untranslated
492
+ Blockly.Msg["PARENT_BLOCKS_ANNOUNCEMENT"] = "父块:%1";
493
+ Blockly.Msg["PASTE_ALL_FROM_BACKPACK"] = "从背包粘贴所有块";
489
494
  Blockly.Msg["PASTE_SHORTCUT"] = "粘贴";
490
495
  Blockly.Msg["PAUSE_KEY"] = "Pause"; // untranslated
491
496
  Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "允许声明";
@@ -517,48 +522,48 @@ Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "输入";
517
522
  Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "添加、移除或重新排此函数的输入。";
518
523
  Blockly.Msg["REDO"] = "重做";
519
524
  Blockly.Msg["REMOVE_COMMENT"] = "删除注释";
520
- Blockly.Msg["REMOVE_FROM_BACKPACK"] = "Remove from Backpack"; // untranslated
525
+ Blockly.Msg["REMOVE_FROM_BACKPACK"] = "从背包移除";
521
526
  Blockly.Msg["RENAME_VARIABLE"] = "重命名变量“%1”...";
522
527
  Blockly.Msg["RENAME_VARIABLE_TITLE"] = "将所有“%1”变量重命名为:";
523
528
  Blockly.Msg["RESET_ZOOM"] = "Reset zoom"; // untranslated
524
- Blockly.Msg["SCREENREADER_HINT"] = "Use the arrow keys to navigate. Press %1 to toggle screenreader accessibility mode."; // untranslated
525
- Blockly.Msg["SCREENREADER_MODE_DISABLED"] = "Screenreader mode is off, press %1 to turn it on"; // untranslated
526
- Blockly.Msg["SCREENREADER_MODE_ENABLED"] = "Screenreader mode is on, press %1 to turn it off"; // untranslated
529
+ Blockly.Msg["SCREENREADER_HINT"] = "使用方向键导航。按%1切换屏幕阅读器模式";
530
+ Blockly.Msg["SCREENREADER_MODE_DISABLED"] = "屏幕阅读器已关闭,按%1以启用";
531
+ Blockly.Msg["SCREENREADER_MODE_ENABLED"] = "屏幕阅读器已启用,按%1以关闭";
527
532
  Blockly.Msg["SHIFT_KEY"] = "Shift"; // untranslated
528
- Blockly.Msg["SHORTCUTS_ABORT_MOVE"] = "Abort move"; // untranslated
529
- Blockly.Msg["SHORTCUTS_CLEANUP"] = "Clean up workspace"; // untranslated
533
+ Blockly.Msg["SHORTCUTS_ABORT_MOVE"] = "中止移动";
534
+ Blockly.Msg["SHORTCUTS_CLEANUP"] = "清空工作区";
530
535
  Blockly.Msg["SHORTCUTS_CODE_NAVIGATION"] = "代码导航";
531
- Blockly.Msg["SHORTCUTS_DELETE"] = "Delete"; // untranslated
532
- Blockly.Msg["SHORTCUTS_DISCONNECT"] = "Disconnect block"; // untranslated
533
- Blockly.Msg["SHORTCUTS_DUPLICATE"] = "Duplicate"; // untranslated
536
+ Blockly.Msg["SHORTCUTS_DELETE"] = "删除";
537
+ Blockly.Msg["SHORTCUTS_DISCONNECT"] = "断开块";
538
+ Blockly.Msg["SHORTCUTS_DUPLICATE"] = "复制";
534
539
  Blockly.Msg["SHORTCUTS_EDITING"] = "编辑";
535
- Blockly.Msg["SHORTCUTS_ESCAPE"] = "Exit"; // untranslated
536
- Blockly.Msg["SHORTCUTS_EXTENDED_INFORMATION"] = "Announce detailed information"; // untranslated
537
- Blockly.Msg["SHORTCUTS_FINISH_MOVE"] = "Finish move"; // untranslated
538
- Blockly.Msg["SHORTCUTS_FOCUS_TOOLBOX"] = "Focus toolbox"; // untranslated
539
- Blockly.Msg["SHORTCUTS_FOCUS_WORKSPACE"] = "Focus workspace"; // untranslated
540
+ Blockly.Msg["SHORTCUTS_ESCAPE"] = "退出";
541
+ Blockly.Msg["SHORTCUTS_EXTENDED_INFORMATION"] = "朗读详细信息";
542
+ Blockly.Msg["SHORTCUTS_FINISH_MOVE"] = "完成移动";
543
+ Blockly.Msg["SHORTCUTS_FOCUS_TOOLBOX"] = "聚焦到工具箱";
544
+ Blockly.Msg["SHORTCUTS_FOCUS_WORKSPACE"] = "聚焦到工作区";
540
545
  Blockly.Msg["SHORTCUTS_GENERAL"] = "常规";
541
- Blockly.Msg["SHORTCUTS_INFORMATION"] = "Announce information"; // untranslated
542
- Blockly.Msg["SHORTCUTS_JUMP_BLOCK_END"] = "Jump to block end"; // untranslated
543
- Blockly.Msg["SHORTCUTS_JUMP_BLOCK_START"] = "Jump to block start"; // untranslated
544
- Blockly.Msg["SHORTCUTS_JUMP_BOTTOM_STACK"] = "Jump to bottom of stack"; // untranslated
545
- Blockly.Msg["SHORTCUTS_JUMP_FIRST_BLOCK"] = "Jump to first block"; // untranslated
546
- Blockly.Msg["SHORTCUTS_JUMP_LAST_BLOCK"] = "Jump to last block"; // untranslated
547
- Blockly.Msg["SHORTCUTS_JUMP_TOP_STACK"] = "Jump to top of stack"; // untranslated
548
- Blockly.Msg["SHORTCUTS_MOVE_DOWN"] = "Move down"; // untranslated
549
- Blockly.Msg["SHORTCUTS_MOVE_LEFT"] = "Move left"; // untranslated
550
- Blockly.Msg["SHORTCUTS_MOVE_RIGHT"] = "Move right"; // untranslated
551
- Blockly.Msg["SHORTCUTS_MOVE_UP"] = "Move up"; // untranslated
552
- Blockly.Msg["SHORTCUTS_NEXT_HEADING"] = "Next heading"; // untranslated
553
- Blockly.Msg["SHORTCUTS_NEXT_STACK"] = "Next stack"; // untranslated
554
- Blockly.Msg["SHORTCUTS_PERFORM_ACTION"] = "Edit or confirm"; // untranslated
555
- Blockly.Msg["SHORTCUTS_PREVIOUS_HEADING"] = "Previous heading"; // untranslated
556
- Blockly.Msg["SHORTCUTS_PREVIOUS_STACK"] = "Previous stack"; // untranslated
557
- Blockly.Msg["SHORTCUTS_SHOW_CONTEXT_MENU"] = "Show menu"; // untranslated
558
- Blockly.Msg["SHORTCUTS_SHOW_TOOLTIP"] = "Show tooltip"; // untranslated
559
- Blockly.Msg["SHORTCUTS_START_MOVE"] = "Start move"; // untranslated
560
- Blockly.Msg["SHORTCUTS_START_MOVE_STACK"] = "Start move stack"; // untranslated
561
- Blockly.Msg["SHORTCUTS_TOGGLE_SCREENREADER_MODE"] = "Toggle screenreader mode"; // untranslated
546
+ Blockly.Msg["SHORTCUTS_INFORMATION"] = "朗读信息";
547
+ Blockly.Msg["SHORTCUTS_JUMP_BLOCK_END"] = "移动到块尾";
548
+ Blockly.Msg["SHORTCUTS_JUMP_BLOCK_START"] = "移动到块首";
549
+ Blockly.Msg["SHORTCUTS_JUMP_BOTTOM_STACK"] = "移动到块堆尾部";
550
+ Blockly.Msg["SHORTCUTS_JUMP_FIRST_BLOCK"] = "移动到第一个块";
551
+ Blockly.Msg["SHORTCUTS_JUMP_LAST_BLOCK"] = "移动到最后一个块";
552
+ Blockly.Msg["SHORTCUTS_JUMP_TOP_STACK"] = "移动到块堆开始";
553
+ Blockly.Msg["SHORTCUTS_MOVE_DOWN"] = "下移";
554
+ Blockly.Msg["SHORTCUTS_MOVE_LEFT"] = "左移";
555
+ Blockly.Msg["SHORTCUTS_MOVE_RIGHT"] = "右移";
556
+ Blockly.Msg["SHORTCUTS_MOVE_UP"] = "上移";
557
+ Blockly.Msg["SHORTCUTS_NEXT_HEADING"] = "下一个标题";
558
+ Blockly.Msg["SHORTCUTS_NEXT_STACK"] = "下一个块堆";
559
+ Blockly.Msg["SHORTCUTS_PERFORM_ACTION"] = "编辑或确认";
560
+ Blockly.Msg["SHORTCUTS_PREVIOUS_HEADING"] = "上一个标题";
561
+ Blockly.Msg["SHORTCUTS_PREVIOUS_STACK"] = "上一个块堆";
562
+ Blockly.Msg["SHORTCUTS_SHOW_CONTEXT_MENU"] = "显示菜单";
563
+ Blockly.Msg["SHORTCUTS_SHOW_TOOLTIP"] = "显示工具提示";
564
+ Blockly.Msg["SHORTCUTS_START_MOVE"] = "开始移动";
565
+ Blockly.Msg["SHORTCUTS_START_MOVE_STACK"] = "开始移动块堆";
566
+ Blockly.Msg["SHORTCUTS_TOGGLE_SCREENREADER_MODE"] = "切换屏幕阅读器模式";
562
567
  Blockly.Msg["SPACE_KEY"] = "空格";
563
568
  Blockly.Msg["TAB_KEY"] = "Tab"; // untranslated
564
569
  Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/RaspberryPiFoundation/blockly/wiki/Text#text-modification"; // untranslated
@@ -584,8 +589,8 @@ Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "计算在一段文本中,某个部分文
584
589
  Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "将一个项添加到文本中。";
585
590
  Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "拼接";
586
591
  Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "添加、移除或重新排列各节来重新配置这个文本块。";
587
- Blockly.Msg["TEXT_FROM_END_ARIA"] = "letter number from end"; // untranslated
588
- Blockly.Msg["TEXT_FROM_START_ARIA"] = "letter number"; // untranslated
592
+ Blockly.Msg["TEXT_FROM_END_ARIA"] = "倒数字符序号";
593
+ Blockly.Msg["TEXT_FROM_START_ARIA"] = "字符序号";
589
594
  Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "到倒数第#个字符";
590
595
  Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "到第#个字符";
591
596
  Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "到最后一个字符";
@@ -648,20 +653,20 @@ Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "名字叫“%1”的
648
653
  Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_A_PARAMETER"] = "名为“%1”的变量已经作为参数存在于流程“%2”中。";
649
654
  Blockly.Msg["WINDOWS"] = "Windows";
650
655
  Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "说点什么...";
651
- Blockly.Msg["WORKSPACE_CONTENTS_BLOCKS_MANY"] = "%1 stacks of blocks%2 in workspace."; // untranslated
652
- Blockly.Msg["WORKSPACE_CONTENTS_BLOCKS_ONE"] = "One stack of blocks%2 in workspace."; // untranslated
653
- Blockly.Msg["WORKSPACE_CONTENTS_BLOCKS_ZERO"] = "No blocks%2 in workspace."; // untranslated
654
- Blockly.Msg["WORKSPACE_CONTENTS_COMMENTS_MANY"] = " and %1 comments"; // untranslated
655
- Blockly.Msg["WORKSPACE_CONTENTS_COMMENTS_ONE"] = " and one comment"; // untranslated
656
- Blockly.Msg["WORKSPACE_LABEL_1_STACK"] = "1 stack of blocks"; // untranslated
657
- Blockly.Msg["WORKSPACE_LABEL_FLYOUT_WORKSPACE"] = "%1 blocks"; // untranslated
658
- Blockly.Msg["WORKSPACE_LABEL_MANY_STACKS"] = "%1 stacks of blocks"; // untranslated
659
- Blockly.Msg["WORKSPACE_LABEL_MUTATOR_WORKSPACE"] = "Block editor workspace"; // untranslated
656
+ Blockly.Msg["WORKSPACE_CONTENTS_BLOCKS_MANY"] = "%1个块堆%2在工作区中";
657
+ Blockly.Msg["WORKSPACE_CONTENTS_BLOCKS_ONE"] = "1个块堆%2在工作区中";
658
+ Blockly.Msg["WORKSPACE_CONTENTS_BLOCKS_ZERO"] = "没有块%2在工作区中";
659
+ Blockly.Msg["WORKSPACE_CONTENTS_COMMENTS_MANY"] = "和%1个注释";
660
+ Blockly.Msg["WORKSPACE_CONTENTS_COMMENTS_ONE"] = "和1个注释";
661
+ Blockly.Msg["WORKSPACE_LABEL_1_STACK"] = "1个块堆";
662
+ Blockly.Msg["WORKSPACE_LABEL_FLYOUT_WORKSPACE"] = "%1个块";
663
+ Blockly.Msg["WORKSPACE_LABEL_MANY_STACKS"] = "%1个块堆";
664
+ Blockly.Msg["WORKSPACE_LABEL_MUTATOR_WORKSPACE"] = "块编辑工作区";
660
665
  Blockly.Msg["WORKSPACE_LABEL_PLAIN"] = "Blocks工作区。";
661
- Blockly.Msg["WORKSPACE_ROLEDESCRIPTION"] = "workspace"; // untranslated
666
+ Blockly.Msg["WORKSPACE_ROLEDESCRIPTION"] = "工作区";
662
667
  Blockly.Msg["ZOOM_IN"] = "Zoom in"; // untranslated
663
668
  Blockly.Msg["ZOOM_OUT"] = "Zoom out"; // untranslated
664
- Blockly.Msg["ZOOM_TO_FIT_ARIA_LABEL"] = "Zoom to fit"; // untranslated
669
+ Blockly.Msg["ZOOM_TO_FIT_ARIA_LABEL"] = "缩放到适合";
665
670
  Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
666
671
  Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
667
672
  Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"];
package/msg/zh-hans.mjs CHANGED
@@ -662,6 +662,10 @@ export const {
662
662
  ARIA_TYPE_FIELD_GRID,
663
663
  FIELD_BITMAP_BUTTON_LABEL_RANDOMIZE,
664
664
  FIELD_BITMAP_BUTTON_LABEL_CLEAR,
665
+ FIELD_BITMAP_PIXEL_ON,
666
+ FIELD_BITMAP_PIXEL_OFF,
667
+ FIELD_BITMAP_PIXEL_LABEL,
668
+ FIELD_BITMAP_ARIA_VALUE,
665
669
  OPEN_BACKPACK,
666
670
  CLOSE_BACKPACK,
667
671
  COPY_ALL_TO_BACKPACK,
@@ -673,4 +677,5 @@ export const {
673
677
  FIELD_MULTILINEINPUT_NEW_LINE,
674
678
  ZOOM_TO_FIT_ARIA_LABEL,
675
679
  MINIMAP_ARIA_LABEL,
680
+ ARIA_LABEL_TRASH_EMPTY,
676
681
  } = zh_hans;
package/msg/zh-hant.js CHANGED
@@ -41,6 +41,7 @@ Blockly.Msg["ARIA_LABEL_REMOVE_ELSE_IF"] = "Remove else if"; // untranslated
41
41
  Blockly.Msg["ARIA_LABEL_REMOVE_INPUT"] = "Remove input"; // untranslated
42
42
  Blockly.Msg["ARIA_LABEL_REMOVE_LIST_ITEM"] = "Remove list item"; // untranslated
43
43
  Blockly.Msg["ARIA_LABEL_REMOVE_TEXT"] = "Remove text"; // untranslated
44
+ Blockly.Msg["ARIA_LABEL_TRASH_EMPTY"] = "Trash, currently empty"; // untranslated
44
45
  Blockly.Msg["ARIA_TYPE_FIELD_ANGLE"] = "angle"; // untranslated
45
46
  Blockly.Msg["ARIA_TYPE_FIELD_BITMAP"] = "pixel image"; // untranslated
46
47
  Blockly.Msg["ARIA_TYPE_FIELD_CHECKBOX"] = "checkbox"; // untranslated
@@ -158,8 +159,12 @@ Blockly.Msg["ESCAPE"] = "Escape"; // untranslated
158
159
  Blockly.Msg["EXPAND_ALL"] = "展開區塊";
159
160
  Blockly.Msg["EXPAND_BLOCK"] = "展開區塊";
160
161
  Blockly.Msg["EXTERNAL_INPUTS"] = "外部輸入";
162
+ Blockly.Msg["FIELD_BITMAP_ARIA_VALUE"] = "%1 by %2, %3 pixels on"; // untranslated
161
163
  Blockly.Msg["FIELD_BITMAP_BUTTON_LABEL_CLEAR"] = "Clear"; // untranslated
162
164
  Blockly.Msg["FIELD_BITMAP_BUTTON_LABEL_RANDOMIZE"] = "Randomize"; // untranslated
165
+ Blockly.Msg["FIELD_BITMAP_PIXEL_LABEL"] = "%1, row %2, column %3"; // untranslated
166
+ Blockly.Msg["FIELD_BITMAP_PIXEL_OFF"] = "off"; // untranslated
167
+ Blockly.Msg["FIELD_BITMAP_PIXEL_ON"] = "on"; // untranslated
163
168
  Blockly.Msg["FIELD_LABEL_CHECKBOX_CHECKED"] = "Checked"; // untranslated
164
169
  Blockly.Msg["FIELD_LABEL_CHECKBOX_UNCHECKED"] = "Not checked"; // untranslated
165
170
  Blockly.Msg["FIELD_LABEL_EDIT_PREFIX"] = "Edit %1"; // untranslated
package/msg/zh-hant.mjs CHANGED
@@ -662,6 +662,10 @@ export const {
662
662
  ARIA_TYPE_FIELD_GRID,
663
663
  FIELD_BITMAP_BUTTON_LABEL_RANDOMIZE,
664
664
  FIELD_BITMAP_BUTTON_LABEL_CLEAR,
665
+ FIELD_BITMAP_PIXEL_ON,
666
+ FIELD_BITMAP_PIXEL_OFF,
667
+ FIELD_BITMAP_PIXEL_LABEL,
668
+ FIELD_BITMAP_ARIA_VALUE,
665
669
  OPEN_BACKPACK,
666
670
  CLOSE_BACKPACK,
667
671
  COPY_ALL_TO_BACKPACK,
@@ -673,4 +677,5 @@ export const {
673
677
  FIELD_MULTILINEINPUT_NEW_LINE,
674
678
  ZOOM_TO_FIT_ARIA_LABEL,
675
679
  MINIMAP_ARIA_LABEL,
680
+ ARIA_LABEL_TRASH_EMPTY,
676
681
  } = zh_hant;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blockly",
3
- "version": "13.1.1",
3
+ "version": "13.2.1",
4
4
  "description": "Blockly is a library for building visual programming editors.",
5
5
  "keywords": [
6
6
  "blockly"
@@ -19,6 +19,10 @@
19
19
  "browser": {
20
20
  "jsdom": false
21
21
  },
22
+ "imports": {
23
+ "#core/*": "./build/src/core/*",
24
+ "#generators/*": "./build/src/generators/*"
25
+ },
22
26
  "exports": {
23
27
  ".": {
24
28
  "types": "./index.d.ts",
@@ -70,10 +74,7 @@
70
74
  },
71
75
  "license": "Apache-2.0",
72
76
  "devDependencies": {
73
- "@blockly/block-test": "^7.0.6",
74
- "@blockly/dev-tools": "^9.0.9",
75
- "@blockly/theme-modern": "^7.0.5",
76
- "@eslint/js": "^10.0.1",
77
+ "@blockly/block-test": "^13.1.0",
77
78
  "@hyperjump/browser": "^1.3.1",
78
79
  "@hyperjump/json-schema": "^1.17.6",
79
80
  "@microsoft/api-documenter": "7.30.7",
@@ -81,18 +82,12 @@
81
82
  "ajv": "^8.20.0",
82
83
  "async-done": "^2.0.0",
83
84
  "chai": "^6.2.2",
84
- "concurrently": "^10.0.3",
85
- "conventional-changelog-conventionalcommits": "^9.3.1",
86
- "conventional-recommended-bump": "^11.2.0",
87
- "eslint": "10.5.0",
88
- "eslint-config-google": "^0.14.0",
89
- "eslint-config-prettier": "^10.1.8",
90
- "eslint-plugin-jsdoc": "^63.0.7",
91
- "eslint-plugin-mocha": "^11.3.0",
92
- "eslint-plugin-prettier": "^5.5.5",
85
+ "concurrently": "^10.0.4",
86
+ "conventional-changelog-conventionalcommits": "^10.2.1",
87
+ "conventional-recommended-bump": "^12.0.0",
93
88
  "glob": "^13.0.6",
94
89
  "globals": "^17.7.0",
95
- "google-closure-compiler": "^20260520.0.0",
90
+ "google-closure-compiler": "^20260629.0.0",
96
91
  "gulp": "^5.0.1",
97
92
  "gulp-concat": "^2.6.1",
98
93
  "gulp-gzip": "^1.4.2",
@@ -107,21 +102,20 @@
107
102
  "markdown-tables-to-json": "^0.1.7",
108
103
  "mocha": "^11.7.6",
109
104
  "patch-package": "^8.0.1",
110
- "prettier": "3.8.4",
111
- "prettier-plugin-organize-imports": "^4.3.0",
112
- "puppeteer-core": "^25.1.0",
105
+ "puppeteer-core": "^25.3.0",
113
106
  "readline-sync": "^1.4.10",
114
107
  "rimraf": "^6.1.3",
108
+ "sinon": "^22.1.0",
115
109
  "typescript": "^6.0.3",
116
- "typescript-eslint": "^8.59.3",
117
- "webdriverio": "^9.29.1",
110
+ "typescript-eslint": "^8.62.1",
111
+ "webdriverio": "^9.30.0",
118
112
  "yargs": "^18.0.0"
119
113
  },
120
114
  "engines": {
121
115
  "node": ">=22"
122
116
  },
123
117
  "peerDependencies": {
124
- "jsdom": "^27.4.0"
118
+ "jsdom": ">=27.4.0 <30.0.0"
125
119
  },
126
120
  "type": "commonjs"
127
121
  }