blockly 13.0.0-beta.2 → 13.0.0-beta.4

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 (284) hide show
  1. package/blockly.min.js +595 -518
  2. package/blockly_compressed.js +558 -506
  3. package/blockly_compressed.js.map +1 -1
  4. package/core/block.d.ts +19 -1
  5. package/core/block_aria_composer.d.ts +19 -4
  6. package/core/block_svg.d.ts +11 -2
  7. package/core/bubbles/textinput_bubble.d.ts +5 -0
  8. package/core/comments/collapse_comment_bar_button.d.ts +7 -0
  9. package/core/comments/comment_bar_button.d.ts +14 -0
  10. package/core/comments/comment_editor.d.ts +15 -0
  11. package/core/comments/comment_view.d.ts +2 -2
  12. package/core/comments/delete_comment_bar_button.d.ts +7 -0
  13. package/core/contextmenu_registry.d.ts +10 -0
  14. package/core/dragging/block_drag_strategy.d.ts +9 -1
  15. package/core/field.d.ts +31 -9
  16. package/core/field_checkbox.d.ts +2 -2
  17. package/core/field_dropdown.d.ts +11 -2
  18. package/core/field_image.d.ts +29 -2
  19. package/core/field_input.d.ts +3 -3
  20. package/core/field_label.d.ts +27 -0
  21. package/core/hints.d.ts +26 -0
  22. package/core/icons/comment_icon.d.ts +8 -0
  23. package/core/icons/icon.d.ts +14 -0
  24. package/core/icons/mutator_icon.d.ts +8 -0
  25. package/core/icons/warning_icon.d.ts +8 -0
  26. package/core/inputs/input.d.ts +34 -2
  27. package/core/keyboard_navigation_controller.d.ts +12 -0
  28. package/core/rendered_connection.d.ts +6 -5
  29. package/core/shortcut_items.d.ts +18 -4
  30. package/core/workspace_audio.d.ts +13 -7
  31. package/core/workspace_svg.d.ts +16 -0
  32. package/msg/ab.js +37 -12
  33. package/msg/ab.mjs +25 -0
  34. package/msg/ace.js +37 -12
  35. package/msg/ace.mjs +25 -0
  36. package/msg/af.js +37 -12
  37. package/msg/af.mjs +25 -0
  38. package/msg/am.js +37 -12
  39. package/msg/am.mjs +25 -0
  40. package/msg/ar.js +34 -9
  41. package/msg/ar.mjs +25 -0
  42. package/msg/ast.js +37 -12
  43. package/msg/ast.mjs +25 -0
  44. package/msg/az.js +37 -12
  45. package/msg/az.mjs +25 -0
  46. package/msg/ba.js +37 -12
  47. package/msg/ba.mjs +25 -0
  48. package/msg/bcc.js +37 -12
  49. package/msg/bcc.mjs +25 -0
  50. package/msg/be-tarask.js +34 -9
  51. package/msg/be-tarask.mjs +25 -0
  52. package/msg/be.js +37 -12
  53. package/msg/be.mjs +25 -0
  54. package/msg/bg.js +37 -12
  55. package/msg/bg.mjs +25 -0
  56. package/msg/bn.js +37 -12
  57. package/msg/bn.mjs +25 -0
  58. package/msg/br.js +37 -12
  59. package/msg/br.mjs +25 -0
  60. package/msg/bs.js +37 -12
  61. package/msg/bs.mjs +25 -0
  62. package/msg/ca.js +37 -12
  63. package/msg/ca.mjs +25 -0
  64. package/msg/ce.js +37 -12
  65. package/msg/ce.mjs +25 -0
  66. package/msg/cs.js +37 -12
  67. package/msg/cs.mjs +25 -0
  68. package/msg/da.js +34 -9
  69. package/msg/da.mjs +25 -0
  70. package/msg/de.js +37 -12
  71. package/msg/de.mjs +25 -0
  72. package/msg/diq.js +37 -12
  73. package/msg/diq.mjs +25 -0
  74. package/msg/dtp.js +37 -12
  75. package/msg/dtp.mjs +25 -0
  76. package/msg/dty.js +37 -12
  77. package/msg/dty.mjs +25 -0
  78. package/msg/ee.js +37 -12
  79. package/msg/ee.mjs +25 -0
  80. package/msg/el.js +34 -9
  81. package/msg/el.mjs +25 -0
  82. package/msg/en-gb.js +37 -12
  83. package/msg/en-gb.mjs +25 -0
  84. package/msg/en.js +37 -12
  85. package/msg/en.mjs +25 -0
  86. package/msg/eo.js +37 -12
  87. package/msg/eo.mjs +25 -0
  88. package/msg/es.js +37 -12
  89. package/msg/es.mjs +25 -0
  90. package/msg/et.js +37 -12
  91. package/msg/et.mjs +25 -0
  92. package/msg/eu.js +37 -12
  93. package/msg/eu.mjs +25 -0
  94. package/msg/fa.js +37 -12
  95. package/msg/fa.mjs +25 -0
  96. package/msg/fi.js +37 -12
  97. package/msg/fi.mjs +25 -0
  98. package/msg/fo.js +37 -12
  99. package/msg/fo.mjs +25 -0
  100. package/msg/fr.js +34 -9
  101. package/msg/fr.mjs +25 -0
  102. package/msg/frr.js +37 -12
  103. package/msg/frr.mjs +25 -0
  104. package/msg/ga.js +34 -9
  105. package/msg/ga.mjs +25 -0
  106. package/msg/gl.js +34 -9
  107. package/msg/gl.mjs +25 -0
  108. package/msg/gn.js +37 -12
  109. package/msg/gn.mjs +25 -0
  110. package/msg/gor.js +37 -12
  111. package/msg/gor.mjs +25 -0
  112. package/msg/ha.js +37 -12
  113. package/msg/ha.mjs +25 -0
  114. package/msg/hak.js +37 -12
  115. package/msg/hak.mjs +25 -0
  116. package/msg/he.js +34 -9
  117. package/msg/he.mjs +25 -0
  118. package/msg/hi.js +37 -12
  119. package/msg/hi.mjs +25 -0
  120. package/msg/hr.js +37 -12
  121. package/msg/hr.mjs +25 -0
  122. package/msg/hrx.js +37 -12
  123. package/msg/hrx.mjs +25 -0
  124. package/msg/hsb.js +37 -12
  125. package/msg/hsb.mjs +25 -0
  126. package/msg/hu.js +37 -12
  127. package/msg/hu.mjs +25 -0
  128. package/msg/hy.js +37 -12
  129. package/msg/hy.mjs +25 -0
  130. package/msg/ia.js +34 -9
  131. package/msg/ia.mjs +25 -0
  132. package/msg/id.js +34 -9
  133. package/msg/id.mjs +25 -0
  134. package/msg/ig.js +37 -12
  135. package/msg/ig.mjs +25 -0
  136. package/msg/inh.js +37 -12
  137. package/msg/inh.mjs +25 -0
  138. package/msg/is.js +37 -12
  139. package/msg/is.mjs +25 -0
  140. package/msg/it.js +37 -12
  141. package/msg/it.mjs +25 -0
  142. package/msg/ja.js +34 -9
  143. package/msg/ja.mjs +25 -0
  144. package/msg/ka.js +37 -12
  145. package/msg/ka.mjs +25 -0
  146. package/msg/kab.js +37 -12
  147. package/msg/kab.mjs +25 -0
  148. package/msg/kbd-cyrl.js +37 -12
  149. package/msg/kbd-cyrl.mjs +25 -0
  150. package/msg/km.js +37 -12
  151. package/msg/km.mjs +25 -0
  152. package/msg/kn.js +37 -12
  153. package/msg/kn.mjs +25 -0
  154. package/msg/ko.js +37 -12
  155. package/msg/ko.mjs +25 -0
  156. package/msg/krc.js +34 -9
  157. package/msg/krc.mjs +25 -0
  158. package/msg/ksh.js +37 -12
  159. package/msg/ksh.mjs +25 -0
  160. package/msg/ku-latn.js +37 -12
  161. package/msg/ku-latn.mjs +25 -0
  162. package/msg/ky.js +37 -12
  163. package/msg/ky.mjs +25 -0
  164. package/msg/la.js +37 -12
  165. package/msg/la.mjs +25 -0
  166. package/msg/lb.js +36 -11
  167. package/msg/lb.mjs +25 -0
  168. package/msg/lki.js +37 -12
  169. package/msg/lki.mjs +25 -0
  170. package/msg/lo.js +37 -12
  171. package/msg/lo.mjs +25 -0
  172. package/msg/lrc.js +37 -12
  173. package/msg/lrc.mjs +25 -0
  174. package/msg/lt.js +37 -12
  175. package/msg/lt.mjs +25 -0
  176. package/msg/lv.js +37 -12
  177. package/msg/lv.mjs +25 -0
  178. package/msg/mg.js +37 -12
  179. package/msg/mg.mjs +25 -0
  180. package/msg/mk.js +37 -12
  181. package/msg/mk.mjs +25 -0
  182. package/msg/ml.js +37 -12
  183. package/msg/ml.mjs +25 -0
  184. package/msg/mnw.js +37 -12
  185. package/msg/mnw.mjs +25 -0
  186. package/msg/ms.js +37 -12
  187. package/msg/ms.mjs +25 -0
  188. package/msg/my.js +37 -12
  189. package/msg/my.mjs +25 -0
  190. package/msg/mzn.js +37 -12
  191. package/msg/mzn.mjs +25 -0
  192. package/msg/nb.js +37 -12
  193. package/msg/nb.mjs +25 -0
  194. package/msg/ne.js +37 -12
  195. package/msg/ne.mjs +25 -0
  196. package/msg/nl.js +34 -9
  197. package/msg/nl.mjs +25 -0
  198. package/msg/oc.js +37 -12
  199. package/msg/oc.mjs +25 -0
  200. package/msg/olo.js +37 -12
  201. package/msg/olo.mjs +25 -0
  202. package/msg/pa.js +37 -12
  203. package/msg/pa.mjs +25 -0
  204. package/msg/pl.js +34 -9
  205. package/msg/pl.mjs +25 -0
  206. package/msg/pms.js +34 -9
  207. package/msg/pms.mjs +25 -0
  208. package/msg/ps.js +37 -12
  209. package/msg/ps.mjs +25 -0
  210. package/msg/pt-br.js +34 -9
  211. package/msg/pt-br.mjs +25 -0
  212. package/msg/pt.js +34 -9
  213. package/msg/pt.mjs +25 -0
  214. package/msg/ro.js +34 -9
  215. package/msg/ro.mjs +25 -0
  216. package/msg/ru.js +34 -9
  217. package/msg/ru.mjs +25 -0
  218. package/msg/sc.js +37 -12
  219. package/msg/sc.mjs +25 -0
  220. package/msg/sco.js +37 -12
  221. package/msg/sco.mjs +25 -0
  222. package/msg/sd.js +37 -12
  223. package/msg/sd.mjs +25 -0
  224. package/msg/shn.js +37 -12
  225. package/msg/shn.mjs +25 -0
  226. package/msg/si.js +37 -12
  227. package/msg/si.mjs +25 -0
  228. package/msg/sk.js +37 -12
  229. package/msg/sk.mjs +25 -0
  230. package/msg/skr-arab.js +37 -12
  231. package/msg/skr-arab.mjs +25 -0
  232. package/msg/sl.js +34 -9
  233. package/msg/sl.mjs +25 -0
  234. package/msg/smn.js +37 -12
  235. package/msg/smn.mjs +25 -0
  236. package/msg/sq.js +36 -11
  237. package/msg/sq.mjs +25 -0
  238. package/msg/sr-latn.js +37 -12
  239. package/msg/sr-latn.mjs +25 -0
  240. package/msg/sr.js +37 -12
  241. package/msg/sr.mjs +25 -0
  242. package/msg/sv.js +34 -9
  243. package/msg/sv.mjs +25 -0
  244. package/msg/sw.js +37 -12
  245. package/msg/sw.mjs +25 -0
  246. package/msg/ta.js +37 -12
  247. package/msg/ta.mjs +25 -0
  248. package/msg/tcy.js +34 -9
  249. package/msg/tcy.mjs +25 -0
  250. package/msg/tdd.js +37 -12
  251. package/msg/tdd.mjs +25 -0
  252. package/msg/te.js +37 -12
  253. package/msg/te.mjs +25 -0
  254. package/msg/th.js +37 -12
  255. package/msg/th.mjs +25 -0
  256. package/msg/ti.js +37 -12
  257. package/msg/ti.mjs +25 -0
  258. package/msg/tl.js +37 -12
  259. package/msg/tl.mjs +25 -0
  260. package/msg/tlh.js +37 -12
  261. package/msg/tlh.mjs +25 -0
  262. package/msg/tr.js +34 -9
  263. package/msg/tr.mjs +25 -0
  264. package/msg/ug-arab.js +37 -12
  265. package/msg/ug-arab.mjs +25 -0
  266. package/msg/uk.js +37 -12
  267. package/msg/uk.mjs +25 -0
  268. package/msg/ur.js +37 -12
  269. package/msg/ur.mjs +25 -0
  270. package/msg/uz.js +37 -12
  271. package/msg/uz.mjs +25 -0
  272. package/msg/vi.js +34 -9
  273. package/msg/vi.mjs +25 -0
  274. package/msg/xmf.js +37 -12
  275. package/msg/xmf.mjs +25 -0
  276. package/msg/yo.js +37 -12
  277. package/msg/yo.mjs +25 -0
  278. package/msg/zgh.js +37 -12
  279. package/msg/zgh.mjs +25 -0
  280. package/msg/zh-hans.js +34 -9
  281. package/msg/zh-hans.mjs +25 -0
  282. package/msg/zh-hant.js +34 -9
  283. package/msg/zh-hant.mjs +25 -0
  284. package/package.json +38 -38
@@ -17,6 +17,12 @@ import type { Field } from '../field.js';
17
17
  import { Verbosity } from '../utils/aria.js';
18
18
  import { Align } from './align.js';
19
19
  import { inputTypes } from './input_types.js';
20
+ /**
21
+ * Represents a string or a function that returns a string which can be used as a
22
+ * custom ARIA string to represent an Input, or null if the default fallback should
23
+ * be used. See setAriaLabelProvider for more context.
24
+ */
25
+ export type AriaLabelProvider = ((input: Input) => string | null) | string;
20
26
  /** Class for an input with optional fields. */
21
27
  export declare class Input {
22
28
  name: string;
@@ -26,6 +32,8 @@ export declare class Input {
26
32
  align: Align;
27
33
  /** Is the input visible? */
28
34
  private visible;
35
+ /** The AriaLabelProvider */
36
+ private ariaLabelProvider;
29
37
  readonly type: inputTypes;
30
38
  connection: Connection | null;
31
39
  /**
@@ -123,6 +131,26 @@ export declare class Input {
123
131
  getShadowDom(): Element | null;
124
132
  /** Initialize the fields on this input. */
125
133
  init(): void;
134
+ /**
135
+ * Sets a custom ARIA label provider for this input, or null if it should be reset
136
+ * to use the default method.
137
+ *
138
+ * Inputs do not compute ARIA contexts directly, so the set provider will be used
139
+ * in select cases when the Input needs to be represented (such as for parts of a
140
+ * block label or for connections). Note that overriding this provider will not
141
+ * recompute any already constructed ARIA labels, and it cannot be assumed that the
142
+ * provider will be called any particular number of times during label
143
+ * recomputation. As such, implementations should make sure to provide a
144
+ * deterministic and idempotent ARIA representation each time the provider is
145
+ * called for a given input. It's also fine to reuse providers across multiple
146
+ * Input implementations.
147
+ */
148
+ setAriaLabelProvider(provider: AriaLabelProvider | null): void;
149
+ /**
150
+ * Returns the string from the custom ARIA label provider set, or null if the default label (from the field row) should
151
+ * be used. See setAriaLabelProvider for more context.
152
+ */
153
+ getAriaLabelText(): string | null;
126
154
  /**
127
155
  * Initializes the fields on this input for a headless block.
128
156
  *
@@ -145,7 +173,10 @@ export declare class Input {
145
173
  */
146
174
  protected makeConnection(type: ConnectionType): Connection;
147
175
  /**
148
- * Returns an ID for the visual "row" this input is part of.
176
+ * Returns an ID for the logical "row" this input is part of. A "row" is
177
+ * bounded by a previous/next connection, a statement input, or a block stack
178
+ * boundary; all blocks/inputs nested inside of one of those are conceptually
179
+ * part of its same row.
149
180
  *
150
181
  * @internal
151
182
  */
@@ -159,7 +190,8 @@ export declare class Input {
159
190
  */
160
191
  getLabel(verbosity?: Verbosity): string;
161
192
  /**
162
- * Returns the index of this input on its source block.
193
+ * Returns the index of this input, excluding inputs without connections, on its
194
+ * source block.
163
195
  *
164
196
  * @internal
165
197
  */
@@ -11,6 +11,8 @@
11
11
  export declare class KeyboardNavigationController {
12
12
  /** Whether the user is actively using keyboard navigation. */
13
13
  private isActive;
14
+ /** Whether to play audio cues when navigating between scope levels. */
15
+ private scopeChangeAudioCuesEnabled;
14
16
  /** Css class name added to body if keyboard nav is active. */
15
17
  private activeClassName;
16
18
  /**
@@ -40,6 +42,16 @@ export declare class KeyboardNavigationController {
40
42
  * (e.g., has recently taken some action that is only relevant to keyboard users)
41
43
  */
42
44
  getIsActive(): boolean;
45
+ /**
46
+ * Sets whether or not audio cues should be played when keyboard navigation
47
+ * transitions between blocks of different nesting levels.
48
+ */
49
+ setScopeChangeAudioCuesEnabled(enabled: boolean): void;
50
+ /**
51
+ * Returns whether or not audio cues should be played when keyboard navigation
52
+ * transitions between blocks of different nesting levels.
53
+ */
54
+ getScopeChangeAudioCuesEnabled(): boolean;
43
55
  /** Adds or removes the css class that indicates keyboard navigation is active. */
44
56
  private updateActiveVisualization;
45
57
  }
@@ -3,11 +3,6 @@
3
3
  * Copyright 2016 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- /**
7
- * Components for creating connections between blocks.
8
- *
9
- * @class
10
- */
11
6
  import type { BlockSvg } from './block_svg.js';
12
7
  import { Connection } from './connection.js';
13
8
  import { IContextMenu } from './interfaces/i_contextmenu.js';
@@ -133,6 +128,12 @@ export declare class RenderedConnection extends Connection implements IContextMe
133
128
  connection: RenderedConnection | null;
134
129
  radius: number;
135
130
  };
131
+ /**
132
+ * Sets the aria role, label, and other state for this connection.
133
+ *
134
+ * @param highlightSvg The focusable element for this connection.
135
+ */
136
+ private recomputeAriaContext;
136
137
  /** Add highlighting around this connection. */
137
138
  highlight(): void;
138
139
  /** Remove the highlighting around this connection. */
@@ -33,10 +33,12 @@ export declare enum names {
33
33
  NEXT_STACK = "next_stack",
34
34
  PREVIOUS_STACK = "previous_stack",
35
35
  INFORMATION = "information",
36
+ EXTENDED_INFORMATION = "extended_information",
36
37
  PERFORM_ACTION = "perform_action",
37
38
  DUPLICATE = "duplicate",
38
39
  CLEANUP = "cleanup",
39
- SHOW_TOOLTIP = "show_tooltip"
40
+ SHOW_TOOLTIP = "show_tooltip",
41
+ TOGGLE_SCREENREADER = "toggle_screenreader"
40
42
  }
41
43
  /**
42
44
  * Keyboard shortcut to hide chaff on escape.
@@ -73,7 +75,8 @@ export declare function registerRedo(): void;
73
75
  */
74
76
  export declare function registerMovementShortcuts(): void;
75
77
  /**
76
- * Keyboard shortcut to show the context menu on ctrl/cmd+Enter.
78
+ * Keyboard shortcut to show the context menu on ctrl/cmd+Enter, shift+F10, and
79
+ * the menu key.
77
80
  */
78
81
  export declare function registerShowContextMenu(): void;
79
82
  /**
@@ -89,9 +92,15 @@ export declare function registerFocusWorkspace(): void;
89
92
  */
90
93
  export declare function registerFocusToolbox(): void;
91
94
  /**
92
- * Registers keyboard shortcut to get count of block stacks and comments.
95
+ * Registers keyboard shortcut to announce information about the focused
96
+ * element.
93
97
  */
94
- export declare function registerWorkspaceOverview(): void;
98
+ export declare function registerReadInformation(): void;
99
+ /**
100
+ * Registers keyboard shortcut to announce an extended description of the
101
+ * focused element.
102
+ */
103
+ export declare function registerReadExtendedInformation(): void;
95
104
  /**
96
105
  * Registers keyboard shortcut to disconnect the focused block.
97
106
  */
@@ -117,6 +126,11 @@ export declare function registerCleanup(): void;
117
126
  * Registers keyboard shortcut to display the tooltip for the focused element.
118
127
  */
119
128
  export declare function registerShowTooltip(): void;
129
+ /**
130
+ * Registers keyboard shortcut to toggle on or off various behaviors that
131
+ * improve the experience for individuals using screenreaders.
132
+ */
133
+ export declare function registerToggleScreenreaderMode(): void;
120
134
  /**
121
135
  * Registers all default keyboard shortcut item. This should be called once per
122
136
  * instance of KeyboardShortcutRegistry.
@@ -3,12 +3,7 @@
3
3
  * Copyright 2017 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- /**
7
- * Object in charge of loading, storing, and playing audio for a
8
- * workspace.
9
- *
10
- * @class
11
- */
6
+ import type { IFocusableNode } from './interfaces/i_focusable_node.js';
12
7
  import type { WorkspaceSvg } from './workspace_svg.js';
13
8
  /**
14
9
  * Class for loading, storing, and playing audio for a workspace.
@@ -25,7 +20,7 @@ export declare class WorkspaceAudio {
25
20
  private readonly context?;
26
21
  /**
27
22
  * @param parentWorkspace The parent of the workspace this audio object
28
- * belongs to, or null.
23
+ * belongs to if it has one, or the workspace that owns this instance.
29
24
  */
30
25
  constructor(parentWorkspace: WorkspaceSvg);
31
26
  /**
@@ -61,6 +56,17 @@ export declare class WorkspaceAudio {
61
56
  * Plays a standard error beep.
62
57
  */
63
58
  playErrorBeep(): Promise<void>;
59
+ /**
60
+ * If enabled, plays a tone corresponding to the nesting level of the given
61
+ * node when it differs from the nesting level of the currently focused node.
62
+ * These tones are generally used for accessibility purposes to indicate a
63
+ * scope transition to users who use a screenreader. This method must be
64
+ * called before focus transitions to the given node.
65
+ *
66
+ * @internal
67
+ * @param newNode The soon-to-be-focused node.
68
+ */
69
+ maybePlayScopeChangeAudioCue(newNode: IFocusableNode): void;
64
70
  /**
65
71
  * Returns whether or not playing sounds is currently allowed.
66
72
  *
@@ -242,6 +242,14 @@ export declare class WorkspaceSvg extends Workspace implements IContextMenu, IFo
242
242
  svgBlockCanvas_: SVGElement;
243
243
  svgBubbleCanvas_: SVGElement;
244
244
  zoomControls_: ZoomControls | null;
245
+ /**
246
+ * Focus ring in the workspace.
247
+ */
248
+ private workspaceFocusRing;
249
+ /**
250
+ * Selection ring inside the workspace.
251
+ */
252
+ private workspaceSelectionRing;
245
253
  /**
246
254
  * Navigator that handles moving focus between items in this workspace in
247
255
  * response to keyboard navigation commands.
@@ -466,6 +474,14 @@ export declare class WorkspaceSvg extends Workspace implements IContextMenu, IFo
466
474
  * trash, zoom, toolbox, etc. (e.g. window resize).
467
475
  */
468
476
  resize(): void;
477
+ /**
478
+ * Sizes the given focus/selection ring inside the bounds of the workspace.
479
+ *
480
+ * @param ring The interior workspace ring indicator to resize.
481
+ * @param inset How many pixels in from the bounds of the workspace the ring
482
+ * should be positioned.
483
+ */
484
+ private resizeWorkspaceRing;
469
485
  /**
470
486
  * Resizes and repositions workspace chrome if the page has a new
471
487
  * scroll position.
package/msg/ab.js CHANGED
@@ -19,14 +19,18 @@ 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
22
+ Blockly.Msg["ANNOUNCE_MOVE_AFTER"] = "Moving %1 after %2."; // untranslated
23
+ Blockly.Msg["ANNOUNCE_MOVE_AROUND"] = "Moving %1 around %2."; // untranslated
24
+ Blockly.Msg["ANNOUNCE_MOVE_BEFORE"] = "Moving %1 before %2."; // untranslated
25
+ Blockly.Msg["ANNOUNCE_MOVE_CANCELED"] = "Canceled movement."; // untranslated
26
+ Blockly.Msg["ANNOUNCE_MOVE_INSIDE"] = "Moving %1 inside %2."; // untranslated
27
+ Blockly.Msg["ANNOUNCE_MOVE_OF"] = "%1 of %2"; // untranslated
28
+ Blockly.Msg["ANNOUNCE_MOVE_TO"] = "Moving %1 to %2."; // untranslated
29
+ Blockly.Msg["ANNOUNCE_MOVE_WORKSPACE"] = "Moving %1 on workspace."; // untranslated
29
30
  Blockly.Msg["ARIA_LABEL_BUTTON"] = "button"; // untranslated
31
+ Blockly.Msg["ARIA_LABEL_COMMENT"] = "Comment"; // untranslated
32
+ Blockly.Msg["ARIA_LABEL_COMMENT_COLLAPSE"] = "Collapse Comment"; // untranslated
33
+ Blockly.Msg["ARIA_LABEL_COMMENT_EXPAND"] = "Expand Comment"; // untranslated
30
34
  Blockly.Msg["ARIA_LABEL_HEADING"] = "heading"; // untranslated
31
35
  Blockly.Msg["ARIA_TYPE_FIELD_CHECKBOX"] = "checkbox"; // untranslated
32
36
  Blockly.Msg["ARIA_TYPE_FIELD_DROPDOWN"] = "dropdown"; // untranslated
@@ -40,6 +44,7 @@ Blockly.Msg["BLOCK_LABEL_BEGIN_STACK"] = "Begin stack"; // untranslated
40
44
  Blockly.Msg["BLOCK_LABEL_COLLAPSED"] = "collapsed"; // untranslated
41
45
  Blockly.Msg["BLOCK_LABEL_CONTAINER"] = "container"; // untranslated
42
46
  Blockly.Msg["BLOCK_LABEL_DISABLED"] = "disabled"; // untranslated
47
+ Blockly.Msg["BLOCK_LABEL_HAS_BRANCHES"] = "has %1 branches"; // untranslated
43
48
  Blockly.Msg["BLOCK_LABEL_HAS_INPUT"] = "has input"; // untranslated
44
49
  Blockly.Msg["BLOCK_LABEL_HAS_INPUTS"] = "has inputs"; // untranslated
45
50
  Blockly.Msg["BLOCK_LABEL_REPLACEABLE"] = "replaceable"; // untranslated
@@ -47,7 +52,9 @@ Blockly.Msg["BLOCK_LABEL_STACK_BLOCKS"] = "%1 stack blocks"; // untranslated
47
52
  Blockly.Msg["BLOCK_LABEL_STATEMENT"] = "command"; // untranslated
48
53
  Blockly.Msg["BLOCK_LABEL_TOOLBOX_CATEGORY"] = "%1 category"; // untranslated
49
54
  Blockly.Msg["BLOCK_LABEL_VALUE"] = "value"; // untranslated
55
+ Blockly.Msg["BUBBLE_LABEL_COMMENT"] = "Comment: %1"; // untranslated
50
56
  Blockly.Msg["BUBBLE_LABEL_DEFAULT"] = "Bubble"; // untranslated
57
+ Blockly.Msg["BUBBLE_LABEL_WARNING"] = "Warning: %1"; // untranslated
51
58
  Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated
52
59
  Blockly.Msg["CAPS_LOCK_KEY"] = "Caps Lock"; // untranslated
53
60
  Blockly.Msg["CHANGE_VALUE_TITLE"] = "Ишәыԥсах аҵакы";
@@ -110,6 +117,7 @@ Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "Аҭагылазаашьа
110
117
  Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "Аҭагылазаашьа иашанаҵ, инанагӡалоит акомандақәа.";
111
118
  Blockly.Msg["CONTROL_KEY"] = "Ctrl"; // untranslated
112
119
  Blockly.Msg["COPY_SHORTCUT"] = "Copy"; // untranslated
120
+ Blockly.Msg["CURRENT_BLOCK_ANNOUNCEMENT"] = "Current block: %1"; // untranslated
113
121
  Blockly.Msg["CUT_SHORTCUT"] = "Cut"; // untranslated
114
122
  Blockly.Msg["DELETE_ALL_BLOCKS"] = "Ианыхтәуп аблокқәа (%1) зегьы?";
115
123
  Blockly.Msg["DELETE_BLOCK"] = "Ианыхтәуп аблок";
@@ -137,17 +145,28 @@ Blockly.Msg["FIELD_LABEL_EMPTY"] = "empty"; // untranslated
137
145
  Blockly.Msg["FIELD_LABEL_OPTION_INDEX"] = "Option %1"; // untranslated
138
146
  Blockly.Msg["FIELD_LABEL_VARIABLE"] = "Variable '%1'"; // untranslated
139
147
  Blockly.Msg["HELP"] = "Ацхыраара";
140
- Blockly.Msg["HELP_PROMPT"] = "Press %1 for help on keyboard controls"; // untranslated
148
+ Blockly.Msg["HELP_PROMPT"] = "Press %1 for help on keyboard controls."; // untranslated
141
149
  Blockly.Msg["HOME_KEY"] = "Home"; // untranslated
150
+ Blockly.Msg["ICON_LABEL_COMMENT_CLOSED"] = "Open Comment"; // untranslated
151
+ Blockly.Msg["ICON_LABEL_COMMENT_OPEN"] = "Close Comment"; // untranslated
152
+ Blockly.Msg["ICON_LABEL_DEFAULT"] = "Icon"; // untranslated
153
+ Blockly.Msg["ICON_LABEL_MUTATOR_CLOSED"] = "Edit this block"; // untranslated
154
+ Blockly.Msg["ICON_LABEL_MUTATOR_OPEN"] = "Close block editor"; // untranslated
155
+ Blockly.Msg["ICON_LABEL_WARNING_CLOSED"] = "Open Warning"; // untranslated
156
+ Blockly.Msg["ICON_LABEL_WARNING_OPEN"] = "Close Warning"; // untranslated
142
157
  Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated
158
+ Blockly.Msg["INPUT_LABEL_EMPTY"] = "Empty"; // untranslated
159
+ Blockly.Msg["INPUT_LABEL_END_STATEMENT"] = "End %1"; // untranslated
143
160
  Blockly.Msg["INPUT_LABEL_INDEX"] = "input %1"; // untranslated
161
+ Blockly.Msg["INPUT_LABEL_STATEMENT"] = "command position"; // untranslated
162
+ Blockly.Msg["INPUT_LABEL_VALUE"] = "value position"; // untranslated
144
163
  Blockly.Msg["INSERT_KEY"] = "Insert"; // untranslated
145
- Blockly.Msg["KEYBOARD_NAV_BLOCK_NAVIGATION_HINT"] = "Use the right arrow key to navigate inside of blocks"; // untranslated
146
- Blockly.Msg["KEYBOARD_NAV_CONSTRAINED_MOVE_HINT"] = "Use the arrow keys to move, then %1 to accept the position"; // untranslated
164
+ Blockly.Msg["KEYBOARD_NAV_BLOCK_NAVIGATION_HINT"] = "Use %1 to navigate inside of blocks."; // untranslated
165
+ Blockly.Msg["KEYBOARD_NAV_CONSTRAINED_MOVE_HINT"] = "Use the arrow keys to move, then %1 to accept the position."; // untranslated
147
166
  Blockly.Msg["KEYBOARD_NAV_COPIED_HINT"] = "Copied. Press %1 to paste."; // untranslated
148
167
  Blockly.Msg["KEYBOARD_NAV_CUT_HINT"] = "Cut. Press %1 to paste."; // untranslated
149
- Blockly.Msg["KEYBOARD_NAV_UNCONSTRAINED_MOVE_HINT"] = "Hold %1 and use arrow keys to move freely, then %2 to accept the position"; // untranslated
150
- Blockly.Msg["KEYBOARD_NAV_WORKSPACE_NAVIGATION_HINT"] = "Use the arrow keys to navigate"; // untranslated
168
+ Blockly.Msg["KEYBOARD_NAV_UNCONSTRAINED_MOVE_HINT"] = "Hold %1 and use arrow keys to move freely, then %2 to accept the position."; // untranslated
169
+ Blockly.Msg["KEYBOARD_NAV_WORKSPACE_NAVIGATION_HINT"] = "Use the arrow keys to navigate."; // untranslated
151
170
  Blockly.Msg["LINUX"] = "Linux"; // untranslated
152
171
  Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/RaspberryPiFoundation/blockly/wiki/Lists#create-empty-list"; // untranslated
153
172
  Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "иаԥцатәуп иҭацәу ахьӡынҵа";
@@ -355,11 +374,13 @@ Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslat
355
374
  Blockly.Msg["NEW_VARIABLE"] = "Иаԥҵатәуп аҽеиҭак";
356
375
  Blockly.Msg["NEW_VARIABLE_TITLE"] = "Аҽеиҭак ахьӡ ҿыц:";
357
376
  Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated
377
+ Blockly.Msg["NO_PARENT_ANNOUNCEMENT"] = "Current block has no parent"; // untranslated
358
378
  Blockly.Msg["OPEN_TRASH"] = "Open trash"; // untranslated
359
379
  Blockly.Msg["OPTION_KEY"] = "⌥ Option"; // untranslated
360
380
  Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated
361
381
  Blockly.Msg["PAGE_DOWN_KEY"] = "Page Down"; // untranslated
362
382
  Blockly.Msg["PAGE_UP_KEY"] = "Page Up"; // untranslated
383
+ Blockly.Msg["PARENT_BLOCKS_ANNOUNCEMENT"] = "Parent blocks: %1"; // untranslated
363
384
  Blockly.Msg["PASTE_SHORTCUT"] = "Paste"; // untranslated
364
385
  Blockly.Msg["PAUSE_KEY"] = "Pause"; // untranslated
365
386
  Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "аоператорқәа азин рыҭара";
@@ -394,6 +415,8 @@ Blockly.Msg["REMOVE_COMMENT"] = "Ианыхтәуп ахцәажәара";
394
415
  Blockly.Msg["RENAME_VARIABLE"] = "Аҽеиҭак ахьӡ ԥсахтәуп";
395
416
  Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Аҽеиҭакқәа'%1' зегь рыхьӡ ԥсахтәуп аҟны:";
396
417
  Blockly.Msg["RESET_ZOOM"] = "Reset zoom"; // untranslated
418
+ Blockly.Msg["SCREENREADER_MODE_DISABLED"] = "Screenreader mode is off, press %1 to turn it on"; // untranslated
419
+ Blockly.Msg["SCREENREADER_MODE_ENABLED"] = "Screenreader mode is on, press %1 to turn it off"; // untranslated
397
420
  Blockly.Msg["SHIFT_KEY"] = "Shift"; // untranslated
398
421
  Blockly.Msg["SHORTCUTS_ABORT_MOVE"] = "Abort move"; // untranslated
399
422
  Blockly.Msg["SHORTCUTS_CLEANUP"] = "Clean up workspace"; // untranslated
@@ -403,6 +426,7 @@ Blockly.Msg["SHORTCUTS_DISCONNECT"] = "Disconnect block"; // untranslated
403
426
  Blockly.Msg["SHORTCUTS_DUPLICATE"] = "Duplicate"; // untranslated
404
427
  Blockly.Msg["SHORTCUTS_EDITING"] = "Editing"; // untranslated
405
428
  Blockly.Msg["SHORTCUTS_ESCAPE"] = "Exit"; // untranslated
429
+ Blockly.Msg["SHORTCUTS_EXTENDED_INFORMATION"] = "Announce detailed information"; // untranslated
406
430
  Blockly.Msg["SHORTCUTS_FINISH_MOVE"] = "Finish move"; // untranslated
407
431
  Blockly.Msg["SHORTCUTS_FOCUS_TOOLBOX"] = "Focus toolbox"; // untranslated
408
432
  Blockly.Msg["SHORTCUTS_FOCUS_WORKSPACE"] = "Focus workspace"; // untranslated
@@ -419,6 +443,7 @@ Blockly.Msg["SHORTCUTS_SHOW_CONTEXT_MENU"] = "Show menu"; // untranslated
419
443
  Blockly.Msg["SHORTCUTS_SHOW_TOOLTIP"] = "Show tooltip"; // untranslated
420
444
  Blockly.Msg["SHORTCUTS_START_MOVE"] = "Start move"; // untranslated
421
445
  Blockly.Msg["SHORTCUTS_START_MOVE_STACK"] = "Start move stack"; // untranslated
446
+ Blockly.Msg["SHORTCUTS_TOGGLE_SCREENREADER_MODE"] = "Toggle screenreader mode"; // untranslated
422
447
  Blockly.Msg["SPACE_KEY"] = "Space"; // untranslated
423
448
  Blockly.Msg["TAB_KEY"] = "Tab"; // untranslated
424
449
  Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/RaspberryPiFoundation/blockly/wiki/Text#text-modification"; // untranslated
package/msg/ab.mjs CHANGED
@@ -467,6 +467,7 @@ export const {
467
467
  SHORTCUTS_FOCUS_WORKSPACE,
468
468
  SHORTCUTS_FOCUS_TOOLBOX,
469
469
  SHORTCUTS_INFORMATION,
470
+ SHORTCUTS_EXTENDED_INFORMATION,
470
471
  SHORTCUTS_DISCONNECT,
471
472
  SHORTCUTS_NEXT_STACK,
472
473
  SHORTCUTS_PREVIOUS_STACK,
@@ -474,6 +475,7 @@ export const {
474
475
  SHORTCUTS_DUPLICATE,
475
476
  SHORTCUTS_CLEANUP,
476
477
  SHORTCUTS_SHOW_TOOLTIP,
478
+ SHORTCUTS_TOGGLE_SCREENREADER_MODE,
477
479
  KEYBOARD_NAV_UNCONSTRAINED_MOVE_HINT,
478
480
  KEYBOARD_NAV_CONSTRAINED_MOVE_HINT,
479
481
  KEYBOARD_NAV_COPIED_HINT,
@@ -497,17 +499,23 @@ export const {
497
499
  BLOCK_LABEL_REPLACEABLE,
498
500
  BLOCK_LABEL_HAS_INPUT,
499
501
  BLOCK_LABEL_HAS_INPUTS,
502
+ BLOCK_LABEL_HAS_BRANCHES,
500
503
  BLOCK_LABEL_STATEMENT,
501
504
  BLOCK_LABEL_CONTAINER,
502
505
  BLOCK_LABEL_VALUE,
503
506
  BLOCK_LABEL_STACK_BLOCKS,
504
507
  INPUT_LABEL_INDEX,
508
+ INPUT_LABEL_VALUE,
509
+ INPUT_LABEL_STATEMENT,
510
+ INPUT_LABEL_END_STATEMENT,
511
+ INPUT_LABEL_EMPTY,
505
512
  ANNOUNCE_MOVE_WORKSPACE,
506
513
  ANNOUNCE_MOVE_BEFORE,
507
514
  ANNOUNCE_MOVE_AFTER,
508
515
  ANNOUNCE_MOVE_INSIDE,
509
516
  ANNOUNCE_MOVE_AROUND,
510
517
  ANNOUNCE_MOVE_TO,
518
+ ANNOUNCE_MOVE_OF,
511
519
  ANNOUNCE_MOVE_CANCELED,
512
520
  FIELD_LABEL_EMPTY,
513
521
  ARIA_TYPE_FIELD_INPUT,
@@ -528,4 +536,21 @@ export const {
528
536
  ARIA_LABEL_BUTTON,
529
537
  ARIA_LABEL_HEADING,
530
538
  BUBBLE_LABEL_DEFAULT,
539
+ BUBBLE_LABEL_COMMENT,
540
+ BUBBLE_LABEL_WARNING,
541
+ ICON_LABEL_DEFAULT,
542
+ ICON_LABEL_COMMENT_CLOSED,
543
+ ICON_LABEL_COMMENT_OPEN,
544
+ ICON_LABEL_MUTATOR_CLOSED,
545
+ ICON_LABEL_MUTATOR_OPEN,
546
+ ICON_LABEL_WARNING_CLOSED,
547
+ ICON_LABEL_WARNING_OPEN,
548
+ ARIA_LABEL_COMMENT,
549
+ ARIA_LABEL_COMMENT_COLLAPSE,
550
+ ARIA_LABEL_COMMENT_EXPAND,
551
+ SCREENREADER_MODE_ENABLED,
552
+ SCREENREADER_MODE_DISABLED,
553
+ CURRENT_BLOCK_ANNOUNCEMENT,
554
+ PARENT_BLOCKS_ANNOUNCEMENT,
555
+ NO_PARENT_ANNOUNCEMENT,
531
556
  } = ab;
package/msg/ace.js CHANGED
@@ -19,14 +19,18 @@ var Blockly = Blockly || { Msg: Object.create(null) };
19
19
 
20
20
  Blockly.Msg["ADD_COMMENT"] = "Add Comment"; // untranslated
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
22
+ Blockly.Msg["ANNOUNCE_MOVE_AFTER"] = "Moving %1 after %2."; // untranslated
23
+ Blockly.Msg["ANNOUNCE_MOVE_AROUND"] = "Moving %1 around %2."; // untranslated
24
+ Blockly.Msg["ANNOUNCE_MOVE_BEFORE"] = "Moving %1 before %2."; // untranslated
25
+ Blockly.Msg["ANNOUNCE_MOVE_CANCELED"] = "Canceled movement."; // untranslated
26
+ Blockly.Msg["ANNOUNCE_MOVE_INSIDE"] = "Moving %1 inside %2."; // untranslated
27
+ Blockly.Msg["ANNOUNCE_MOVE_OF"] = "%1 of %2"; // untranslated
28
+ Blockly.Msg["ANNOUNCE_MOVE_TO"] = "Moving %1 to %2."; // untranslated
29
+ Blockly.Msg["ANNOUNCE_MOVE_WORKSPACE"] = "Moving %1 on workspace."; // untranslated
29
30
  Blockly.Msg["ARIA_LABEL_BUTTON"] = "button"; // untranslated
31
+ Blockly.Msg["ARIA_LABEL_COMMENT"] = "Comment"; // untranslated
32
+ Blockly.Msg["ARIA_LABEL_COMMENT_COLLAPSE"] = "Collapse Comment"; // untranslated
33
+ Blockly.Msg["ARIA_LABEL_COMMENT_EXPAND"] = "Expand Comment"; // untranslated
30
34
  Blockly.Msg["ARIA_LABEL_HEADING"] = "heading"; // untranslated
31
35
  Blockly.Msg["ARIA_TYPE_FIELD_CHECKBOX"] = "checkbox"; // untranslated
32
36
  Blockly.Msg["ARIA_TYPE_FIELD_DROPDOWN"] = "dropdown"; // untranslated
@@ -40,6 +44,7 @@ Blockly.Msg["BLOCK_LABEL_BEGIN_STACK"] = "Begin stack"; // untranslated
40
44
  Blockly.Msg["BLOCK_LABEL_COLLAPSED"] = "collapsed"; // untranslated
41
45
  Blockly.Msg["BLOCK_LABEL_CONTAINER"] = "container"; // untranslated
42
46
  Blockly.Msg["BLOCK_LABEL_DISABLED"] = "disabled"; // untranslated
47
+ Blockly.Msg["BLOCK_LABEL_HAS_BRANCHES"] = "has %1 branches"; // untranslated
43
48
  Blockly.Msg["BLOCK_LABEL_HAS_INPUT"] = "has input"; // untranslated
44
49
  Blockly.Msg["BLOCK_LABEL_HAS_INPUTS"] = "has inputs"; // untranslated
45
50
  Blockly.Msg["BLOCK_LABEL_REPLACEABLE"] = "replaceable"; // untranslated
@@ -47,7 +52,9 @@ Blockly.Msg["BLOCK_LABEL_STACK_BLOCKS"] = "%1 stack blocks"; // untranslated
47
52
  Blockly.Msg["BLOCK_LABEL_STATEMENT"] = "command"; // untranslated
48
53
  Blockly.Msg["BLOCK_LABEL_TOOLBOX_CATEGORY"] = "%1 category"; // untranslated
49
54
  Blockly.Msg["BLOCK_LABEL_VALUE"] = "value"; // untranslated
55
+ Blockly.Msg["BUBBLE_LABEL_COMMENT"] = "Comment: %1"; // untranslated
50
56
  Blockly.Msg["BUBBLE_LABEL_DEFAULT"] = "Bubble"; // untranslated
57
+ Blockly.Msg["BUBBLE_LABEL_WARNING"] = "Warning: %1"; // untranslated
51
58
  Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "Can't delete the variable '%1' because it's part of the definition of the function '%2'"; // untranslated
52
59
  Blockly.Msg["CAPS_LOCK_KEY"] = "Caps Lock"; // untranslated
53
60
  Blockly.Msg["CHANGE_VALUE_TITLE"] = "Change value:"; // untranslated
@@ -110,6 +117,7 @@ Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "While a value is false, then
110
117
  Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "While a value is true, then do some statements."; // untranslated
111
118
  Blockly.Msg["CONTROL_KEY"] = "Ctrl"; // untranslated
112
119
  Blockly.Msg["COPY_SHORTCUT"] = "Copy"; // untranslated
120
+ Blockly.Msg["CURRENT_BLOCK_ANNOUNCEMENT"] = "Current block: %1"; // untranslated
113
121
  Blockly.Msg["CUT_SHORTCUT"] = "Cut"; // untranslated
114
122
  Blockly.Msg["DELETE_ALL_BLOCKS"] = "Delete all %1 blocks?"; // untranslated
115
123
  Blockly.Msg["DELETE_BLOCK"] = "Delete Block"; // untranslated
@@ -137,17 +145,28 @@ Blockly.Msg["FIELD_LABEL_EMPTY"] = "empty"; // untranslated
137
145
  Blockly.Msg["FIELD_LABEL_OPTION_INDEX"] = "Option %1"; // untranslated
138
146
  Blockly.Msg["FIELD_LABEL_VARIABLE"] = "Variable '%1'"; // untranslated
139
147
  Blockly.Msg["HELP"] = "Help"; // untranslated
140
- Blockly.Msg["HELP_PROMPT"] = "Press %1 for help on keyboard controls"; // untranslated
148
+ Blockly.Msg["HELP_PROMPT"] = "Press %1 for help on keyboard controls."; // untranslated
141
149
  Blockly.Msg["HOME_KEY"] = "Home"; // untranslated
150
+ Blockly.Msg["ICON_LABEL_COMMENT_CLOSED"] = "Open Comment"; // untranslated
151
+ Blockly.Msg["ICON_LABEL_COMMENT_OPEN"] = "Close Comment"; // untranslated
152
+ Blockly.Msg["ICON_LABEL_DEFAULT"] = "Icon"; // untranslated
153
+ Blockly.Msg["ICON_LABEL_MUTATOR_CLOSED"] = "Edit this block"; // untranslated
154
+ Blockly.Msg["ICON_LABEL_MUTATOR_OPEN"] = "Close block editor"; // untranslated
155
+ Blockly.Msg["ICON_LABEL_WARNING_CLOSED"] = "Open Warning"; // untranslated
156
+ Blockly.Msg["ICON_LABEL_WARNING_OPEN"] = "Close Warning"; // untranslated
142
157
  Blockly.Msg["INLINE_INPUTS"] = "Inline Inputs"; // untranslated
158
+ Blockly.Msg["INPUT_LABEL_EMPTY"] = "Empty"; // untranslated
159
+ Blockly.Msg["INPUT_LABEL_END_STATEMENT"] = "End %1"; // untranslated
143
160
  Blockly.Msg["INPUT_LABEL_INDEX"] = "input %1"; // untranslated
161
+ Blockly.Msg["INPUT_LABEL_STATEMENT"] = "command position"; // untranslated
162
+ Blockly.Msg["INPUT_LABEL_VALUE"] = "value position"; // untranslated
144
163
  Blockly.Msg["INSERT_KEY"] = "Insert"; // untranslated
145
- Blockly.Msg["KEYBOARD_NAV_BLOCK_NAVIGATION_HINT"] = "Use the right arrow key to navigate inside of blocks"; // untranslated
146
- Blockly.Msg["KEYBOARD_NAV_CONSTRAINED_MOVE_HINT"] = "Use the arrow keys to move, then %1 to accept the position"; // untranslated
164
+ Blockly.Msg["KEYBOARD_NAV_BLOCK_NAVIGATION_HINT"] = "Use %1 to navigate inside of blocks."; // untranslated
165
+ Blockly.Msg["KEYBOARD_NAV_CONSTRAINED_MOVE_HINT"] = "Use the arrow keys to move, then %1 to accept the position."; // untranslated
147
166
  Blockly.Msg["KEYBOARD_NAV_COPIED_HINT"] = "Copied. Press %1 to paste."; // untranslated
148
167
  Blockly.Msg["KEYBOARD_NAV_CUT_HINT"] = "Cut. Press %1 to paste."; // untranslated
149
- Blockly.Msg["KEYBOARD_NAV_UNCONSTRAINED_MOVE_HINT"] = "Hold %1 and use arrow keys to move freely, then %2 to accept the position"; // untranslated
150
- Blockly.Msg["KEYBOARD_NAV_WORKSPACE_NAVIGATION_HINT"] = "Use the arrow keys to navigate"; // untranslated
168
+ Blockly.Msg["KEYBOARD_NAV_UNCONSTRAINED_MOVE_HINT"] = "Hold %1 and use arrow keys to move freely, then %2 to accept the position."; // untranslated
169
+ Blockly.Msg["KEYBOARD_NAV_WORKSPACE_NAVIGATION_HINT"] = "Use the arrow keys to navigate."; // untranslated
151
170
  Blockly.Msg["LINUX"] = "Linux"; // untranslated
152
171
  Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/RaspberryPiFoundation/blockly/wiki/Lists#create-empty-list"; // untranslated
153
172
  Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "create empty list"; // untranslated
@@ -355,11 +374,13 @@ Blockly.Msg["NEW_STRING_VARIABLE"] = "Create string variable..."; // untranslat
355
374
  Blockly.Msg["NEW_VARIABLE"] = "Create variable..."; // untranslated
356
375
  Blockly.Msg["NEW_VARIABLE_TITLE"] = "New variable name:"; // untranslated
357
376
  Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "New variable type:"; // untranslated
377
+ Blockly.Msg["NO_PARENT_ANNOUNCEMENT"] = "Current block has no parent"; // untranslated
358
378
  Blockly.Msg["OPEN_TRASH"] = "Open trash"; // untranslated
359
379
  Blockly.Msg["OPTION_KEY"] = "⌥ Option"; // untranslated
360
380
  Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated
361
381
  Blockly.Msg["PAGE_DOWN_KEY"] = "Page Down"; // untranslated
362
382
  Blockly.Msg["PAGE_UP_KEY"] = "Page Up"; // untranslated
383
+ Blockly.Msg["PARENT_BLOCKS_ANNOUNCEMENT"] = "Parent blocks: %1"; // untranslated
363
384
  Blockly.Msg["PASTE_SHORTCUT"] = "Paste"; // untranslated
364
385
  Blockly.Msg["PAUSE_KEY"] = "Pause"; // untranslated
365
386
  Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "allow statements"; // untranslated
@@ -394,6 +415,8 @@ Blockly.Msg["REMOVE_COMMENT"] = "Remove Comment"; // untranslated
394
415
  Blockly.Msg["RENAME_VARIABLE"] = "Rename the '%1' variable"; // untranslated
395
416
  Blockly.Msg["RENAME_VARIABLE_TITLE"] = "Rename all '%1' variables to:"; // untranslated
396
417
  Blockly.Msg["RESET_ZOOM"] = "Reset zoom"; // untranslated
418
+ Blockly.Msg["SCREENREADER_MODE_DISABLED"] = "Screenreader mode is off, press %1 to turn it on"; // untranslated
419
+ Blockly.Msg["SCREENREADER_MODE_ENABLED"] = "Screenreader mode is on, press %1 to turn it off"; // untranslated
397
420
  Blockly.Msg["SHIFT_KEY"] = "Shift"; // untranslated
398
421
  Blockly.Msg["SHORTCUTS_ABORT_MOVE"] = "Abort move"; // untranslated
399
422
  Blockly.Msg["SHORTCUTS_CLEANUP"] = "Clean up workspace"; // untranslated
@@ -403,6 +426,7 @@ Blockly.Msg["SHORTCUTS_DISCONNECT"] = "Disconnect block"; // untranslated
403
426
  Blockly.Msg["SHORTCUTS_DUPLICATE"] = "Duplicate"; // untranslated
404
427
  Blockly.Msg["SHORTCUTS_EDITING"] = "Editing"; // untranslated
405
428
  Blockly.Msg["SHORTCUTS_ESCAPE"] = "Exit"; // untranslated
429
+ Blockly.Msg["SHORTCUTS_EXTENDED_INFORMATION"] = "Announce detailed information"; // untranslated
406
430
  Blockly.Msg["SHORTCUTS_FINISH_MOVE"] = "Finish move"; // untranslated
407
431
  Blockly.Msg["SHORTCUTS_FOCUS_TOOLBOX"] = "Focus toolbox"; // untranslated
408
432
  Blockly.Msg["SHORTCUTS_FOCUS_WORKSPACE"] = "Focus workspace"; // untranslated
@@ -419,6 +443,7 @@ Blockly.Msg["SHORTCUTS_SHOW_CONTEXT_MENU"] = "Show menu"; // untranslated
419
443
  Blockly.Msg["SHORTCUTS_SHOW_TOOLTIP"] = "Show tooltip"; // untranslated
420
444
  Blockly.Msg["SHORTCUTS_START_MOVE"] = "Start move"; // untranslated
421
445
  Blockly.Msg["SHORTCUTS_START_MOVE_STACK"] = "Start move stack"; // untranslated
446
+ Blockly.Msg["SHORTCUTS_TOGGLE_SCREENREADER_MODE"] = "Toggle screenreader mode"; // untranslated
422
447
  Blockly.Msg["SPACE_KEY"] = "Space"; // untranslated
423
448
  Blockly.Msg["TAB_KEY"] = "Tab"; // untranslated
424
449
  Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/RaspberryPiFoundation/blockly/wiki/Text#text-modification"; // untranslated
package/msg/ace.mjs CHANGED
@@ -467,6 +467,7 @@ export const {
467
467
  SHORTCUTS_FOCUS_WORKSPACE,
468
468
  SHORTCUTS_FOCUS_TOOLBOX,
469
469
  SHORTCUTS_INFORMATION,
470
+ SHORTCUTS_EXTENDED_INFORMATION,
470
471
  SHORTCUTS_DISCONNECT,
471
472
  SHORTCUTS_NEXT_STACK,
472
473
  SHORTCUTS_PREVIOUS_STACK,
@@ -474,6 +475,7 @@ export const {
474
475
  SHORTCUTS_DUPLICATE,
475
476
  SHORTCUTS_CLEANUP,
476
477
  SHORTCUTS_SHOW_TOOLTIP,
478
+ SHORTCUTS_TOGGLE_SCREENREADER_MODE,
477
479
  KEYBOARD_NAV_UNCONSTRAINED_MOVE_HINT,
478
480
  KEYBOARD_NAV_CONSTRAINED_MOVE_HINT,
479
481
  KEYBOARD_NAV_COPIED_HINT,
@@ -497,17 +499,23 @@ export const {
497
499
  BLOCK_LABEL_REPLACEABLE,
498
500
  BLOCK_LABEL_HAS_INPUT,
499
501
  BLOCK_LABEL_HAS_INPUTS,
502
+ BLOCK_LABEL_HAS_BRANCHES,
500
503
  BLOCK_LABEL_STATEMENT,
501
504
  BLOCK_LABEL_CONTAINER,
502
505
  BLOCK_LABEL_VALUE,
503
506
  BLOCK_LABEL_STACK_BLOCKS,
504
507
  INPUT_LABEL_INDEX,
508
+ INPUT_LABEL_VALUE,
509
+ INPUT_LABEL_STATEMENT,
510
+ INPUT_LABEL_END_STATEMENT,
511
+ INPUT_LABEL_EMPTY,
505
512
  ANNOUNCE_MOVE_WORKSPACE,
506
513
  ANNOUNCE_MOVE_BEFORE,
507
514
  ANNOUNCE_MOVE_AFTER,
508
515
  ANNOUNCE_MOVE_INSIDE,
509
516
  ANNOUNCE_MOVE_AROUND,
510
517
  ANNOUNCE_MOVE_TO,
518
+ ANNOUNCE_MOVE_OF,
511
519
  ANNOUNCE_MOVE_CANCELED,
512
520
  FIELD_LABEL_EMPTY,
513
521
  ARIA_TYPE_FIELD_INPUT,
@@ -528,4 +536,21 @@ export const {
528
536
  ARIA_LABEL_BUTTON,
529
537
  ARIA_LABEL_HEADING,
530
538
  BUBBLE_LABEL_DEFAULT,
539
+ BUBBLE_LABEL_COMMENT,
540
+ BUBBLE_LABEL_WARNING,
541
+ ICON_LABEL_DEFAULT,
542
+ ICON_LABEL_COMMENT_CLOSED,
543
+ ICON_LABEL_COMMENT_OPEN,
544
+ ICON_LABEL_MUTATOR_CLOSED,
545
+ ICON_LABEL_MUTATOR_OPEN,
546
+ ICON_LABEL_WARNING_CLOSED,
547
+ ICON_LABEL_WARNING_OPEN,
548
+ ARIA_LABEL_COMMENT,
549
+ ARIA_LABEL_COMMENT_COLLAPSE,
550
+ ARIA_LABEL_COMMENT_EXPAND,
551
+ SCREENREADER_MODE_ENABLED,
552
+ SCREENREADER_MODE_DISABLED,
553
+ CURRENT_BLOCK_ANNOUNCEMENT,
554
+ PARENT_BLOCKS_ANNOUNCEMENT,
555
+ NO_PARENT_ANNOUNCEMENT,
531
556
  } = ace;