js-draw 1.30.1 → 1.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,116 +4,194 @@ const localization_1 = require("../localization");
4
4
  // German localization
5
5
  const localization = {
6
6
  ...localization_1.defaultEditorLocalization,
7
+ help: 'Hilfe',
8
+ helpHidden: 'Hilfe ausgeblendet',
9
+ next: 'Weiter',
10
+ previous: 'Zurück',
11
+ close: 'Schließen',
12
+ helpScreenNavigationHelp: 'Auf ein Steuerelement klicken, um weitere Informationen zu erhalten.',
13
+ helpControlsAccessibilityLabel: 'Steuerelemente: Aktiviere ein Steuerelement, um Hilfe anzuzeigen.',
7
14
  pen: 'Stift',
8
15
  eraser: 'Radierer',
9
16
  select: 'Auswahl',
10
17
  handTool: 'Verschieben',
11
18
  zoom: 'Vergrößerung',
12
19
  image: 'Bild',
13
- inputAltText: 'Alt-Text: ',
14
- chooseFile: 'Wähle Datei: ',
20
+ reformatSelection: 'Formatauswahl',
21
+ inputAltText: 'Alt-Text:',
22
+ decreaseImageSize: 'Verkleinern',
23
+ resetImage: 'Zurücksetzen',
24
+ chooseFile: 'Datei wählen',
25
+ dragAndDropHereOrBrowse: 'Hierher ziehen\noder\n{{Durchsuchen}}',
15
26
  submit: 'Absenden',
27
+ addAll: 'Alle hinzufügen',
16
28
  cancel: 'Abbrechen',
17
29
  resetView: 'Ansicht zurücksetzen',
18
- thicknessLabel: 'Dicke: ',
19
- colorLabel: 'Farbe: ',
20
- fontLabel: 'Schriftart: ',
21
- textSize: 'Größe: ',
30
+ thicknessLabel: 'Dicke:',
31
+ colorLabel: 'Farbe:',
32
+ fontLabel: 'Schriftart:',
33
+ textSize: 'Größe:',
22
34
  resizeImageToSelection: 'Bildgröße an Auswahl anpassen',
23
35
  deleteSelection: 'Auswahl löschen',
24
36
  duplicateSelection: 'Auswahl duplizieren',
37
+ exit: 'Beenden',
38
+ save: 'Speichern',
25
39
  undo: 'Rückgängig',
26
40
  redo: 'Wiederholen',
41
+ fullStrokeEraser: 'Vollständiger Radierer',
42
+ selectPenType: 'Stiftstil:',
43
+ selectShape: 'Form',
27
44
  pickColorFromScreen: 'Farbe von Bildschirm auswählen',
28
45
  clickToPickColorAnnouncement: 'Klicke auf den Bildschirm, um eine Farbe auszuwählen',
29
- selectionToolKeyboardShortcuts: 'Auswahl-Werkzeug: Verwende die Pfeiltasten, um ausgewählte Elemente zu verschieben und ‚i‘ und ‚o‘, um ihre Größe zu ändern.',
30
- touchPanning: 'Ansicht mit Touchscreen verschieben',
31
- anyDevicePanning: 'Ansicht mit jedem Eingabegerät verschieben',
32
- selectPenType: 'Objekt-Typ: ',
33
- roundedTipPen: 'Freihand',
34
- flatTipPen: 'Stift (druckempfindlich)',
46
+ colorSelectionCanceledAnnouncement: 'Farbauswahl abgebrochen',
47
+ selectionTool__lassoSelect: 'Freihand-Auswahl',
48
+ selectionTool__lassoSelect__help: 'Wenn diese Option aktiviert ist, wird durch Ziehen eine Freiformauswahl (Lasso) erstellt.',
49
+ selectionToolKeyboardShortcuts: 'Auswahl-Werkzeug: Verwende die Pfeiltasten, um ausgewählte Elemente zu verschieben, und die Kleinbuchstaben/Großbuchstaben „i“ und „o“, um die Größe zu ändern.',
50
+ documentProperties: 'Seite',
51
+ backgroundColor: 'Hintergrundfarbe:',
52
+ imageWidthOption: 'Breite:',
53
+ imageHeightOption: 'Höhe:',
54
+ useGridOption: 'Gitter:',
55
+ enableAutoresizeOption: 'Automatische Größenanpassung',
56
+ toggleOverflow: 'Mehr',
57
+ about: 'Über',
58
+ inputStabilization: 'Stabilisierung',
59
+ strokeAutocorrect: 'Autokorrektur',
60
+ pressureSensitivity: 'Druck',
61
+ touchPanning: 'Mit Touch verschieben',
62
+ roundedTipPen: 'Rund',
63
+ roundedTipPen2: 'Polylinie',
64
+ flatTipPen: 'Flach',
35
65
  arrowPen: 'Pfeil',
36
66
  linePen: 'Linie',
37
- outlinedRectanglePen: 'Umrissenes Rechteck',
67
+ outlinedRectanglePen: 'Umrandetes Rechteck',
38
68
  filledRectanglePen: 'Ausgefülltes Rechteck',
39
- lockRotation: 'Sperre Rotation',
69
+ outlinedCirclePen: 'Umrandeter Kreis.',
70
+ lockRotation: 'Drehung sperren',
40
71
  paste: 'Einfügen',
72
+ errorImageHasZeroSize: 'Fehler: Bild hat Größe Null',
73
+ describeTheImage: 'Bildbeschreibung',
74
+ fileInput__loading: 'Lade...',
75
+ fileInput__andNMoreFiles: (n) => `(...${n} mehr)`,
76
+ penDropdown__baseHelpText: 'Dieses Werkzeug zeichnet Formen oder Freihandlinien.',
77
+ penDropdown__colorHelpText: 'Ändert die Farbe des Stifts',
78
+ penDropdown__thicknessHelpText: 'Ändert die Strichstärke des mit dem Stift gezeichneten Strichs.',
79
+ penDropdown__penTypeHelpText: 'Ändert den Stiftstil.\n\nEs kann entweder ein „Stiftstil“ oder eine „Form“ ausgewählt werden. Bei Auswahl eines „Stiftstils“ werden Freihandlinien gezeichnet. Bei Auswahl einer „Form“ werden Formen gezeichnet.',
80
+ penDropdown__autocorrectHelpText: 'Wandelt grobe Freihandlinien und Rechtecke in perfekte Linien und Rechtecke um.\n\nDer Stift muss am Ende eines Strichs still gehalten werden, um eine Korrektur auszulösen.',
81
+ penDropdown__stabilizationHelpText: 'Zeichnet glattere Striche.\n\nDadurch entsteht auch eine kurze Verzögerung zwischen Maus/Stift und Strich.',
82
+ penDropdown__pressureSensitivityHelpText: 'Ändert die Strichstärke entsprechend der Druckstärke, wenn du ein kompatibles Gerät wie einen Stylus verwendest.',
83
+ handDropdown__baseHelpText: 'Dieses Werkzeug ist für das Scrollen, Drehen und Zoomen im Editor zuständig.',
84
+ handDropdown__zoomInHelpText: 'Vergrößert',
85
+ handDropdown__zoomOutHelpText: 'Verkleinert',
86
+ handDropdown__resetViewHelpText: 'Setzt den Zoomfaktor auf 100 % zurück und setzt den Bildlauf zurück.',
87
+ handDropdown__zoomDisplayHelpText: 'Zeigt den aktuellen Zoomfaktor an. 100 % zeigt das Bild in seiner tatsächlichen Größe an.',
88
+ handDropdown__touchPanningHelpText: 'Wenn aktiviert, verschieben Touchscreen-Gesten das Bild, anstatt es auszuwählen oder zu zeichnen.',
89
+ handDropdown__lockRotationHelpText: 'Wenn aktiviert, verhindert diese Option, dass Touch-Gesten den Bildschirm drehen.',
90
+ eraserDropdown__baseHelpText: 'Dieses Werkzeug entfernt Striche, Bilder und Text unter dem Cursor.',
91
+ eraserDropdown__thicknessHelpText: 'Ändert die Größe des Radierers.',
92
+ eraserDropdown__fullStrokeEraserHelpText: 'Im vollständigen Modus werden ganze Formen gelöscht.\n\nAußerhalb des vollständigen Modus können Formen teilweise gelöscht werden.',
93
+ selectionDropdown__baseHelpText: 'Wählt Inhalte aus und bearbeitet die Auswahl',
94
+ selectionDropdown__resizeToHelpText: 'Schneidet die Zeichnung auf die Größe der aktuell ausgewählten Fläche zu.\n\nWenn die automatische Größenanpassung aktiviert ist, wird sie deaktiviert.',
95
+ selectionDropdown__deleteHelpText: 'Löscht ausgewählte Elemente.',
96
+ selectionDropdown__duplicateHelpText: 'Erstellt eine Kopie der ausgewählten Elemente.',
97
+ selectionDropdown__changeColorHelpText: 'Ändert die Farbe ausgewählter Elemente.',
98
+ pageDropdown__baseHelpText: 'Steuert die Hintergrundfarbe, das Muster und die Größe der Zeichenfläche.',
99
+ pageDropdown__backgroundColorHelpText: 'Ändert die Hintergrundfarbe der Zeichenfläche.',
100
+ pageDropdown__gridCheckboxHelpText: 'Aktiviert/deaktiviert ein Hintergrundraster',
101
+ pageDropdown__autoresizeCheckboxHelpText: 'Wenn aktiviert, wird die Seite an die Zeichnung angepasst.\n\nWenn deaktiviert, ist die Seite sichtbar und ihre Größe kann manuell festgelegt werden.',
102
+ pageDropdown__aboutButtonHelpText: 'Zeigt Version, Debugging und andere Informationen an.',
103
+ colorPickerPipetteHelpText: 'Wählt eine Farbe vom Bildschirm aus.',
104
+ colorPickerToggleHelpText: 'Öffnet/schließt den Farbwähler.',
105
+ closeSidebar: (toolName) => `Sidebar für ${toolName} schließen`,
41
106
  dropdownShown: (toolName) => `Dropdown-Menü für ${toolName} angezeigt`,
42
107
  dropdownHidden: (toolName) => `Dropdown-Menü für ${toolName} versteckt`,
43
108
  zoomLevel: (zoomPercent) => `Vergößerung: ${zoomPercent}%`,
44
109
  colorChangedAnnouncement: (color) => `Farbe zu ${color} geändert`,
45
110
  imageSize: (size, units) => `Bild-Größe: ${size} ${units}`,
46
111
  imageLoadError: (message) => `Fehler beim Laden des Bildes: ${message}`,
47
- errorImageHasZeroSize: 'Fehler: Bild hat Größe Null',
48
112
  penTool: (penNumber) => `Stift ${penNumber}`,
49
113
  selectionTool: 'Auswahl',
50
- eraserTool: 'Radiergummi',
114
+ selectAllTool: 'Alle auswählen',
115
+ eraserTool: 'Radierer',
51
116
  touchPanTool: 'Ansicht mit Touchscreen verschieben',
52
117
  twoFingerPanZoomTool: 'Ansicht verschieben und vergrößern',
53
118
  undoRedoTool: 'Rückgängig/Wiederholen',
54
119
  rightClickDragPanTool: 'Rechtsklick-Ziehen',
55
120
  pipetteTool: 'Farbe von Bildschirm auswählen',
56
121
  keyboardPanZoom: 'Tastaturkürzel zum Verschieben/Vergrößern der Ansicht',
57
- textTool: 'Text',
122
+ selectionMenu__show: 'Auswahlmenü anzeigen',
123
+ selectionMenu__copyToClipboard: 'In Zwischenablage kopieren',
124
+ selectionMenu__duplicate: 'Duplizieren',
125
+ selectionMenu__delete: 'Löschen',
126
+ selectionMenu__paste: 'Einfügen',
127
+ copyPasteError__heading: 'Kopieren/Einfügen',
128
+ copyPasteError__description: 'Ein Fehler ist aufgetreten – dieses Tool hat möglicherweise keinen Zugriff auf die Zwischenablage.',
129
+ copyPasteError__errorDetails: 'Fehler anzeigen',
130
+ copyPasteError__pasteRetry: 'Um es erneut zu versuchen, füge bitte den Text in das Eingabefeld unten ein:',
131
+ copyPasteError__copyMe: 'Kopiere mich!',
132
+ autocorrectedTo: (strokeDescription) => `Automatisch korrigiert zu ${strokeDescription}`,
133
+ autocorrectionCanceled: 'Autokorrektur abgebrochen',
58
134
  enterTextToInsert: 'Einzufügender Text',
59
- changeTool: 'Wechsle Werkzeug',
60
- pasteHandler: 'Copy-Paste-Handler',
61
- findLabel: 'Finde',
62
- toNextMatch: 'Nächstes',
135
+ changeTool: 'Werkzeug wechseln',
136
+ pasteHandler: 'Kopieren-Einfügen-Handler',
137
+ soundExplorer: 'Klangbasierte Bilderkundung',
138
+ disableAccessibilityExploreTool: 'Klangbasierte Erkundung deaktivieren',
139
+ enableAccessibilityExploreTool: 'Klangbasierte Erkundung aktivieren',
140
+ soundExplorerUsageAnnouncement: 'Soundbasierte Bilduntersuchung aktiviert: Klicke/ziehe den Bildschirm, um eine akustische Darstellung verschiedener Bildbereiche abzuspielen.',
141
+ findLabel: 'Suchen',
142
+ toNextMatch: 'Weiter',
63
143
  closeDialog: 'Schließen',
64
- findDialogShown: 'Finde-Dialog angezeigt',
65
- findDialogHidden: 'Finde-Dialog versteckt',
144
+ findDialogShown: 'Suchen-Dialog angezeigt',
145
+ findDialogHidden: 'Suchen-Dialog versteckt',
66
146
  focusedFoundText: (matchIdx, totalMatches) => `Sieh Treffer ${matchIdx} von ${totalMatches} an`,
147
+ anyDevicePanning: 'Ansicht mit jedem Eingabegerät verschieben',
148
+ copied: (count) => `Copied ${count} item(s)`,
149
+ pasted: (count) => `Pasted ${count} item(s)`,
67
150
  toolEnabledAnnouncement: (toolName) => `${toolName} aktiviert`,
68
151
  toolDisabledAnnouncement: (toolName) => `${toolName} deaktiviert`,
69
152
  updatedViewport: 'Transformierte Ansicht',
70
153
  transformedElements: (elemCount, action) => `${elemCount} Element${1 === elemCount ? '' : 'e'} transformiert (${action})`,
71
154
  resizeOutputCommand: (newSize) => `Bildgröße auf ${newSize.w}x${newSize.h} geändert`,
155
+ enabledAutoresizeOutputCommand: 'Automatische Größenanpassung der Ausgabe aktiviert',
156
+ disabledAutoresizeOutputCommand: 'Automatische Größenanpassung der Ausgabe deaktiviert',
72
157
  addComponentAction: (componentDescription) => `${componentDescription} hinzugefügt`,
73
158
  eraseAction: (elemDescription, countErased) => `${countErased} ${elemDescription} gelöscht`,
74
159
  duplicateAction: (elemDescription, countErased) => `${countErased} ${elemDescription} dupliziert`,
160
+ unionOf: (actionDescription, actionCount) => `Vereinigung: ${actionCount} ${actionDescription}`,
75
161
  inverseOf: (actionDescription) => `${actionDescription} umgekehrt`,
76
162
  elements: 'Elemente',
77
163
  erasedNoElements: 'Nichts entfernt',
78
164
  duplicatedNoElements: 'Nichts dupliziert',
79
165
  rotatedBy: (degrees) => `${Math.abs(degrees)} Grad ${degrees < 0 ? 'im Uhrzeigersinn' : 'gegen den Uhrzeigersinn'} gedreht`,
80
- movedLeft: 'Nacht links bewegt',
81
- movedUp: 'Nacht oben bewegt',
82
- movedDown: 'Nacht unten bewegt',
83
- movedRight: 'Nacht rechts bewegt',
166
+ movedLeft: 'Nach links bewegt',
167
+ movedUp: 'Nach oben bewegt',
168
+ movedDown: 'Nach unten bewegt',
169
+ movedRight: 'Nach rechts bewegt',
84
170
  zoomedOut: 'Ansicht verkleinert',
85
171
  zoomedIn: 'Ansicht vergrößert',
172
+ andNMoreCommands: (count) => `Und noch ${count} weitere Befehle.`,
86
173
  selectedElements: (count) => `${count} Element${1 === count ? '' : 'e'} ausgewählt`,
174
+ unlabeledImageNode: 'Bild ohne Label',
87
175
  stroke: 'Strich',
88
176
  svgObject: 'SVG-Objekt',
177
+ emptyBackground: 'Leerer Hintergrund',
178
+ gridBackground: 'Hintergrundraster',
179
+ filledBackgroundWithColor: (color) => `Gefüllter Hintergrund (${color})`,
89
180
  text: (text) => `Text-Objekt: ${text}`,
181
+ imageNode: (label) => `Bild: ${label}`,
182
+ restyledElement: (elementDescription) => `${elementDescription} umgestaltet`,
90
183
  pathNodeCount: (count) => `Es gibt ${count} sichtbare Pfad-Objekte.`,
91
184
  textNodeCount: (count) => `Es gibt ${count} sichtbare Text-Knotenpunkte.`,
92
- textNode: (content) => `Text: ${content}`,
93
185
  imageNodeCount: (nodeCount) => `Es gibt ${nodeCount} sichtbare Bild-Knoten.`,
94
- imageNode: (label) => `Bild: ${label}`,
95
- unlabeledImageNode: 'Bild ohne Label',
186
+ textNode: (content) => `Text: ${content}`,
96
187
  rerenderAsText: 'Als Text darstellen',
97
188
  accessibilityInputInstructions: 'Drücke ‚t‘, um den Inhalt des Ansichtsfensters als Text zu lesen. Verwende die Pfeiltasten, um die Ansicht zu verschieben, und klicke und ziehe, um Striche zu zeichnen. Drücke ‚w‘ zum Vergrößern und ‚s‘ zum Verkleinern der Ansicht.',
98
- loading: (percentage) => `Laden ${percentage}%...`,
99
- doneLoading: 'Laden fertig',
189
+ loading: (percentage) => `${percentage}% geladen...`,
100
190
  imageEditor: 'Bild-Editor',
191
+ doneLoading: 'Fertig geladen',
101
192
  undoAnnouncement: (commandDescription) => `${commandDescription} rückgängig gemacht`,
102
193
  redoAnnouncement: (commandDescription) => `${commandDescription} wiederholt`,
103
- reformatSelection: 'Formatiere Auswahl',
104
- documentProperties: 'Seite',
105
- backgroundColor: 'Hintergrundfarbe: ',
106
- imageWidthOption: 'Breite: ',
107
- imageHeightOption: 'Höhe: ',
108
- useGridOption: 'Gitter: ',
109
- toggleOverflow: 'Mehr',
110
- selectAllTool: 'Alle auswählen',
111
- soundExplorer: 'Klangbasierte Bilderkundung',
112
- disableAccessibilityExploreTool: 'Deaktiviere klangbasierte Erkundung',
113
- enableAccessibilityExploreTool: 'Aktiviere klangbasierte Erkundung',
114
- unionOf: (actionDescription, actionCount) => `Vereinigung: ${actionCount} ${actionDescription}`,
115
- emptyBackground: 'Leerer Hintergrund',
116
- filledBackgroundWithColor: (color) => `Gefüllter Hintergrund (${color})`,
117
- restyledElement: (elementDescription) => `${elementDescription} umgestaltet`,
194
+ softwareLibraries: 'Bibliotheken',
195
+ developerInformation: 'Enwicklerinformation',
118
196
  };
119
197
  exports.default = localization;
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.matchingLocalizationTable = exports.allLocales = void 0;
7
7
  const localization_1 = require("../localization");
8
+ const zh_1 = __importDefault(require("./zh"));
8
9
  const de_1 = __importDefault(require("./de"));
9
10
  const en_1 = __importDefault(require("./en"));
10
11
  const es_1 = __importDefault(require("./es"));
@@ -14,6 +15,7 @@ exports.allLocales = {
14
15
  en: en_1.default,
15
16
  es: es_1.default,
16
17
  sk: sk_1.default,
18
+ zh: zh_1.default,
17
19
  };
18
20
  // [locale]: A string in the format languageCode_Region or just languageCode. For example, en_US.
19
21
  const languageFromLocale = (locale) => {
@@ -0,0 +1,3 @@
1
+ import { EditorLocalization } from '../localization';
2
+ declare const localization: EditorLocalization;
3
+ export default localization;
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const localization_1 = require("../localization");
4
+ // Chinese localization
5
+ const localization = {
6
+ ...localization_1.defaultEditorLocalization,
7
+ help: '帮助',
8
+ helpHidden: '帮助已隐藏',
9
+ next: '下一页',
10
+ previous: '上一页',
11
+ close: '关闭',
12
+ helpScreenNavigationHelp: '点击控件查看更多信息。',
13
+ helpControlsAccessibilityLabel: '控件:激活控件以显示帮助。',
14
+ pen: '画笔',
15
+ eraser: '橡皮擦',
16
+ select: '选择',
17
+ handTool: '平移',
18
+ zoom: '缩放',
19
+ image: '图片',
20
+ reformatSelection: '格式化选区',
21
+ inputAltText: '替代文本',
22
+ decreaseImageSize: '减小尺寸',
23
+ resetImage: '重置',
24
+ chooseFile: '选择文件',
25
+ dragAndDropHereOrBrowse: '将文件拖拽到此处或{{浏览}}',
26
+ submit: '提交',
27
+ addAll: '全部添加',
28
+ cancel: '取消',
29
+ resetView: '重置视图',
30
+ thicknessLabel: '粗细',
31
+ colorLabel: '颜色',
32
+ fontLabel: '字体',
33
+ textSize: '字号',
34
+ resizeImageToSelection: '按选区调整图片大小',
35
+ deleteSelection: '删除选区',
36
+ duplicateSelection: '复制选区',
37
+ exit: '退出',
38
+ save: '保存',
39
+ undo: '撤销',
40
+ redo: '重做',
41
+ fullStrokeEraser: '全笔划橡皮擦',
42
+ selectPenType: '工具类型',
43
+ selectShape: '形状',
44
+ pickColorFromScreen: '从屏幕取色',
45
+ clickToPickColorAnnouncement: '点击屏幕以选取颜色',
46
+ colorSelectionCanceledAnnouncement: '颜色选择已取消',
47
+ selectionTool__lassoSelect: '自由选区',
48
+ selectionTool__lassoSelect__help: '启用后,拖拽将创建自由形式(套索)选区。',
49
+ selectionToolKeyboardShortcuts: '选择工具:使用方向键移动所选项目,使用小写/大写 “i” 和 “o” 调整大小。',
50
+ documentProperties: '页面',
51
+ backgroundColor: '背景色',
52
+ imageWidthOption: '宽度',
53
+ imageHeightOption: '高度',
54
+ useGridOption: '网格',
55
+ enableAutoresizeOption: '自动调整大小',
56
+ toggleOverflow: '更多',
57
+ about: '关于',
58
+ inputStabilization: '稳定',
59
+ strokeAutocorrect: '自动更正',
60
+ pressureSensitivity: '压力',
61
+ touchPanning: '触屏平移',
62
+ roundedTipPen: '自由画笔',
63
+ roundedTipPen2: '折线',
64
+ flatTipPen: '平头笔',
65
+ arrowPen: '箭头',
66
+ linePen: '直线',
67
+ outlinedRectanglePen: '空心矩形',
68
+ filledRectanglePen: '实心矩形',
69
+ outlinedCirclePen: '空心圆',
70
+ lockRotation: '锁定旋转',
71
+ paste: '粘v贴',
72
+ errorImageHasZeroSize: '错误:图片尺寸为零',
73
+ describeTheImage: '图像描述',
74
+ fileInput__loading: '加载中...',
75
+ fileInput__andNMoreFiles: (n) => `(还有 ${n} 个)`,
76
+ closeSidebar: (toolName) => `关闭 ${toolName} 的侧边栏`,
77
+ dropdownShown: (toolName) => `已显示 ${toolName} 下拉菜单`,
78
+ dropdownHidden: (toolName) => `已隐藏 ${toolName} 下拉菜单`,
79
+ zoomLevel: (zoomPercent) => `缩放:${zoomPercent}%`,
80
+ colorChangedAnnouncement: (color) => `颜色已更改为 ${color}`,
81
+ imageSize: (size, units) => `图片尺寸:${size} ${units}`,
82
+ imageLoadError: (message) => `图片加载错误:${message}`,
83
+ penTool: (penId) => `画笔 ${penId}`,
84
+ selectionTool: '选择工具',
85
+ selectAllTool: '全选',
86
+ eraserTool: '橡皮擦工具',
87
+ touchPanTool: '触屏平移工具',
88
+ twoFingerPanZoomTool: '双指平移与缩放',
89
+ undoRedoTool: '撤销/重做工具',
90
+ rightClickDragPanTool: '右键拖拽',
91
+ pipetteTool: '取色器',
92
+ keyboardPanZoom: '键盘平移与缩放快捷键',
93
+ selectionMenu__show: '显示选择菜单',
94
+ selectionMenu__copyToClipboard: '复制到剪贴板',
95
+ selectionMenu__duplicate: '复制',
96
+ selectionMenu__delete: '删除',
97
+ selectionMenu__paste: '粘贴',
98
+ copyPasteError__heading: '复制/粘贴',
99
+ copyPasteError__description: '出错了——此工具可能无法访问剪贴板。',
100
+ copyPasteError__errorDetails: '显示错误',
101
+ copyPasteError__pasteRetry: '请重试:在下方输入框中粘贴:',
102
+ copyPasteError__copyRetry: '请重试:在下方输入框中复制文本:',
103
+ copyPasteError__copyMe: '点我复制!',
104
+ autocorrectedTo: (strokeDescription) => `已自动更正为 ${strokeDescription}`,
105
+ autocorrectionCanceled: '自动更正已取消',
106
+ textTool: '文本工具',
107
+ enterTextToInsert: '输入要插入的文本',
108
+ changeTool: '切换工具',
109
+ pasteHandler: '复制粘贴处理器',
110
+ soundExplorer: '声音探索',
111
+ disableAccessibilityExploreTool: '关闭声音探索',
112
+ enableAccessibilityExploreTool: '开启声音探索',
113
+ soundExplorerUsageAnnouncement: '已启用声音图像探索:点击或拖拽屏幕,即可通过声音感受图像不同区域。',
114
+ findLabel: '查找',
115
+ toNextMatch: '下一个',
116
+ closeDialog: '关闭',
117
+ findDialogShown: '已显示查找对话框',
118
+ findDialogHidden: '已隐藏查找对话框',
119
+ focusedFoundText: (matchIdx, totalMatches) => `第 ${matchIdx} 条结果,共 ${totalMatches} 条`,
120
+ anyDevicePanning: '任意设备平移',
121
+ copied: (count) => `已复制 ${count} 个项目`,
122
+ pasted: (count) => `已粘贴 ${count} 个项目`,
123
+ toolEnabledAnnouncement: (toolName) => `${toolName} 已启用`,
124
+ toolDisabledAnnouncement: (toolName) => `${toolName} 已禁用`,
125
+ updatedViewport: '已更新视口',
126
+ transformedElements: (elemCount, action) => `${elemCount} 个元素已变换 (${action})`,
127
+ resizeOutputCommand: (newSize) => `图片尺寸已更改为 ${newSize.w}×${newSize.h}`,
128
+ enabledAutoresizeOutputCommand: '已启用输出自动调整大小',
129
+ disabledAutoresizeOutputCommand: '已禁用输出自动调整大小',
130
+ addComponentAction: (componentDescription) => `已添加 ${componentDescription}`,
131
+ eraseAction: (componentDescription, countErased) => `已删除 ${countErased} 个 ${componentDescription}`,
132
+ duplicateAction: (componentDescription, countErased) => `已复制 ${countErased} 个 ${componentDescription}`,
133
+ unionOf: (actionDescription, actionCount) => `合并:${actionCount} 个 ${actionDescription}`,
134
+ inverseOf: (actionDescription) => `${actionDescription} 已反向`,
135
+ elements: '元素',
136
+ erasedNoElements: '未v删除任何内容',
137
+ duplicatedNoElements: '未复制任何内容',
138
+ rotatedBy: (degrees) => `已旋转 ${Math.abs(degrees)} 度 ${degrees < 0 ? '顺时针' : '逆时针'}`,
139
+ movedLeft: '已向左移动',
140
+ movedUp: '已向上移动',
141
+ movedDown: '已向下移动',
142
+ movedRight: '已向右移动',
143
+ zoomedOut: '已缩小',
144
+ zoomedIn: '已放大',
145
+ andNMoreCommands: (count) => `还有 ${count} 条命令。`,
146
+ selectedElements: (count) => `已选 ${count} 个元素`,
147
+ unlabeledImageNode: '未命名图片',
148
+ stroke: '笔画',
149
+ svgObject: 'SVG 对象',
150
+ emptyBackground: '空白背景',
151
+ gridBackground: '网格背景',
152
+ filledBackgroundWithColor: (color) => `已填充背景(${color})`,
153
+ text: (text) => `文本对象:${text}`,
154
+ imageNode: (label) => `图片:${label}`,
155
+ restyledElement: (elementDescription) => `已重新样式化 ${elementDescription}`,
156
+ pathNodeCount: (count) => `可见路径对象:${count} 个`,
157
+ textNodeCount: (count) => `可见文本节点:${count} 个`,
158
+ imageNodeCount: (nodeCount) => `可见图片节点:${nodeCount} 个`,
159
+ textNode: (content) => `文本:${content}`,
160
+ rerenderAsText: '以文本形式重绘',
161
+ accessibilityInputInstructions: '按“t”将视口内容朗读为文本。使用方向键移动视口,点击并拖拽绘制笔画。按“w”放大,按“s”缩小。',
162
+ loading: (percentage) => `加载中 ${percentage}%...`,
163
+ imageEditor: '图片编辑器',
164
+ doneLoading: '加载完成',
165
+ undoAnnouncement: (commandDescription) => `已撤销 ${commandDescription}`,
166
+ redoAnnouncement: (commandDescription) => `已重做 ${commandDescription}`,
167
+ softwareLibraries: '软件库',
168
+ developerInformation: '开发者信息',
169
+ };
170
+ exports.default = localization;
@@ -131,9 +131,15 @@ class PanZoom extends BaseTool_1.default {
131
131
  this.inertialScroller?.stop();
132
132
  this.velocity = inertialScrollerVelocity;
133
133
  this.lastPointerDownTimestamp = currentPointer.timeStamp;
134
- const allAreTouch = this.allPointersAreOfType(pointers, Pointer_1.PointerDevice.Touch);
135
134
  const isRightClick = this.allPointersAreOfType(pointers, Pointer_1.PointerDevice.RightButtonMouse);
136
- if (allAreTouch && pointers.length === 2 && this.mode & PanZoomMode.TwoFingerTouchGestures) {
135
+ // Work around a Chromium bug where touch events are reported to have unknown type.
136
+ // See https://issues.chromium.org/u/1/issues/428153664.
137
+ const allAreTouch = this.allPointersAreOfType(pointers, Pointer_1.PointerDevice.Touch);
138
+ const allAreUnknown = this.allPointersAreOfType(pointers, Pointer_1.PointerDevice.Other);
139
+ const allAreProbablyTouch = allAreTouch || allAreUnknown;
140
+ if (allAreProbablyTouch &&
141
+ pointers.length === 2 &&
142
+ this.mode & PanZoomMode.TwoFingerTouchGestures) {
137
143
  const { screenCenter, angle, dist } = this.computePinchData(pointers[0], pointers[1]);
138
144
  this.lastTouchDist = dist;
139
145
  this.startTouchDist = dist;
@@ -7,5 +7,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  */
8
8
  exports.default = {
9
9
  // Note: Auto-updated by prebuild.js:
10
- number: '1.30.1',
10
+ number: '1.32.0',
11
11
  };