omni-viewer-core 0.7.0 → 0.9.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.
- package/README.md +32 -0
- package/dist/i18n/catalog.de.js +6 -1
- package/dist/i18n/catalog.en.js +30 -6
- package/dist/i18n/catalog.fr.js +6 -1
- package/dist/i18n/catalog.it.js +6 -1
- package/dist/i18n/catalog.ja.js +30 -6
- package/dist/i18n/catalog.ko.js +30 -6
- package/dist/i18n/catalog.th.js +6 -1
- package/dist/i18n/catalog.zh-cn.js +29 -5
- package/dist/parsers/archive/index.d.ts +2 -0
- package/dist/parsers/archive/index.js +6 -5
- package/dist/parsers/archive/model.d.ts +36 -11
- package/dist/parsers/archive/worker.d.ts +8 -1
- package/dist/parsers/doc-binary/index.d.ts +23 -1
- package/dist/parsers/doc-binary/index.js +175 -7
- package/dist/parsers/parquet/index.d.ts +14 -0
- package/dist/parsers/parquet/index.js +23 -8
- package/dist/parsers/pptx/index.d.ts +2 -0
- package/dist/parsers/pptx/index.js +1 -1
- package/dist/parsers/pptx/limits.d.ts +26 -0
- package/dist/parsers/pptx/limits.js +154 -0
- package/dist/parsers/pptx/vscode-parser.d.ts +49 -3
- package/dist/parsers/pptx/vscode-parser.js +517 -63
- package/dist/parsers/pptx/vscode.d.ts +6 -2
- package/dist/parsers/pptx/vscode.js +95 -10
- package/dist/parsers/slide-model.d.ts +89 -6
- package/dist/parsers/types.d.ts +2 -0
- package/dist/parsers/zip-scan.d.ts +7 -0
- package/dist/parsers/zip-scan.js +22 -0
- package/dist/registry/index.js +2 -2
- package/dist/styles/archive.css +3 -1
- package/dist/styles/hdf5.css +1 -1
- package/dist/styles/jsonl.css +1 -1
- package/dist/styles/markdown.css +2 -2
- package/dist/styles/mermaid.css +10 -1
- package/dist/styles/parquet.css +1 -1
- package/dist/styles/pdf.css +6 -1
- package/dist/styles/plantuml.css +10 -1
- package/dist/styles/proto.css +1 -1
- package/dist/styles/safetensors.css +1 -1
- package/dist/styles/toml.css +1 -1
- package/dist/styles/word.css +2 -2
- package/dist/styles/yaml.css +1 -1
- package/dist/viewers/archive/controller.d.ts +4 -0
- package/dist/viewers/archive/controller.js +22 -0
- package/dist/viewers/archive/index.d.ts +38 -1
- package/dist/viewers/archive/index.js +176 -41
- package/dist/viewers/archive/styles.d.ts +1 -1
- package/dist/viewers/archive/styles.js +3 -1
- package/dist/viewers/diagram-controller.d.ts +42 -0
- package/dist/viewers/diagram-controller.js +47 -0
- package/dist/viewers/diagram-styles.d.ts +1 -0
- package/dist/viewers/diagram-styles.js +11 -0
- package/dist/viewers/diagram.d.ts +16 -6
- package/dist/viewers/diagram.js +321 -75
- package/dist/viewers/hdf5/styles.d.ts +1 -1
- package/dist/viewers/hdf5/styles.js +1 -1
- package/dist/viewers/hwp/self-loading.d.ts +2 -0
- package/dist/viewers/hwp/self-loading.js +6 -0
- package/dist/viewers/jsonl/controller.d.ts +2 -0
- package/dist/viewers/jsonl/controller.js +4 -0
- package/dist/viewers/jsonl/index.d.ts +1 -0
- package/dist/viewers/jsonl/index.js +97 -51
- package/dist/viewers/jsonl/popup.d.ts +16 -0
- package/dist/viewers/jsonl/popup.js +20 -0
- package/dist/viewers/jsonl/styles.d.ts +1 -1
- package/dist/viewers/jsonl/styles.js +1 -1
- package/dist/viewers/markdown/index.js +79 -14
- package/dist/viewers/markdown/styles.d.ts +1 -1
- package/dist/viewers/markdown/styles.js +2 -2
- package/dist/viewers/mermaid/index.d.ts +3 -4
- package/dist/viewers/mermaid/index.js +1 -1
- package/dist/viewers/mermaid/self-loading.js +4 -1
- package/dist/viewers/parquet/index.d.ts +9 -1
- package/dist/viewers/parquet/index.js +20 -10
- package/dist/viewers/parquet/styles.d.ts +1 -1
- package/dist/viewers/parquet/styles.js +1 -1
- package/dist/viewers/pdf/controller.d.ts +9 -0
- package/dist/viewers/pdf/controller.js +17 -0
- package/dist/viewers/pdf/index.js +90 -22
- package/dist/viewers/pdf/styles.d.ts +1 -1
- package/dist/viewers/pdf/styles.js +6 -1
- package/dist/viewers/plantuml/index.d.ts +3 -4
- package/dist/viewers/plantuml/index.js +1 -1
- package/dist/viewers/plantuml/self-loading.js +1 -1
- package/dist/viewers/ppt/chart.js +58 -18
- package/dist/viewers/ppt/index.d.ts +33 -2
- package/dist/viewers/ppt/index.js +245 -61
- package/dist/viewers/ppt/render.js +85 -40
- package/dist/viewers/ppt/self-loading.d.ts +2 -0
- package/dist/viewers/ppt/self-loading.js +4 -1
- package/dist/viewers/proto/index.js +77 -2
- package/dist/viewers/proto/styles.d.ts +1 -1
- package/dist/viewers/proto/styles.js +1 -1
- package/dist/viewers/safetensors/styles.d.ts +1 -1
- package/dist/viewers/safetensors/styles.js +1 -1
- package/dist/viewers/structured-styles.d.ts +1 -1
- package/dist/viewers/structured-styles.js +1 -1
- package/dist/viewers/structured.js +28 -1
- package/dist/viewers/word/docx-preprocess.d.ts +18 -2
- package/dist/viewers/word/docx-preprocess.js +248 -47
- package/dist/viewers/word/index.d.ts +108 -1
- package/dist/viewers/word/index.js +772 -85
- package/dist/viewers/word/self-loading.d.ts +5 -1
- package/dist/viewers/word/self-loading.js +17 -4
- package/dist/viewers/word/styles.d.ts +1 -1
- package/dist/viewers/word/styles.js +2 -2
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -83,6 +83,38 @@ Node hosts can use `parseSafetensorsFile` from
|
|
|
83
83
|
with `mountSafetensorsDocument`. The legacy `Uint8Array` input remains
|
|
84
84
|
available, but it requires the host to load the complete file first.
|
|
85
85
|
|
|
86
|
+
### Archive host integration
|
|
87
|
+
|
|
88
|
+
Archive decompression remains adapter-owned: pass an `ArchiveDecoder` to
|
|
89
|
+
`mountArchiveViewer`, retaining JSZip or libarchive according to the formats
|
|
90
|
+
the platform supports. All parity extensions are optional. `previewEntry`
|
|
91
|
+
delegates extracted PDF, Office, HWP, Parquet, or nested-archive entries to a
|
|
92
|
+
host viewer router; `requestPassword` retries decoder open/extract/save calls;
|
|
93
|
+
and `includeImplicitDirectories` synthesizes view-only folders for decoders
|
|
94
|
+
that omit directory records. Hosts that omit these options keep the existing
|
|
95
|
+
media/text/hex preview and encrypted-entry blocking behavior.
|
|
96
|
+
|
|
97
|
+
### Word host integration
|
|
98
|
+
|
|
99
|
+
`mountWordViewer` exposes a typed `status`, `subscribeStatus`, `contentElement`,
|
|
100
|
+
and `viewportElement`. Hosts can use `onStatusChange` to observe the initial
|
|
101
|
+
`loading` state, inspect structured diagnostics, and distinguish `ready`,
|
|
102
|
+
`partial`, `failed`, and `aborted` outcomes. A host-owned
|
|
103
|
+
`fallbackRenderer` can render Mammoth HTML into the stable content root after a
|
|
104
|
+
core failure; successful fallback is reported as `ready` with
|
|
105
|
+
`renderer: 'fallback'`.
|
|
106
|
+
|
|
107
|
+
`toolbarActions` adds host operations such as “Save as PDF” without adding PDF
|
|
108
|
+
or download dependencies to core. The handle's `refreshToolbarActions()`
|
|
109
|
+
re-evaluates dynamic disabled states, while core manages in-progress disabling
|
|
110
|
+
and reports rejected actions through `onToolbarActionError`.
|
|
111
|
+
|
|
112
|
+
Hosts may tighten `limits` and tune the safe `docxRenderOptions` subset.
|
|
113
|
+
`inWrapper` is always kept enabled for the DOM contract. The self-loading entry
|
|
114
|
+
imports `xlsx` only when an embedded workbook is discovered; pass
|
|
115
|
+
`loadWordViewerDeps({ embeddedSheets: false })` to disable that path entirely.
|
|
116
|
+
All element accessors become invalid when the handle is disposed.
|
|
117
|
+
|
|
86
118
|
### PDF host integration
|
|
87
119
|
|
|
88
120
|
The PDF viewer asks `ctx.assets.resolveAssetUrl` for the exact key
|
package/dist/i18n/catalog.de.js
CHANGED
|
@@ -26,7 +26,12 @@ export const CATALOG_DE = {
|
|
|
26
26
|
'arxml.title': 'AUTOSAR XML', 'a2l.title': 'ASAM A2L', 'asc.title': 'Vector ASC-Log',
|
|
27
27
|
'blf.title': 'Vector BLF-Log', 'mf4.title': 'ASAM MDF 4', 'pcap.title': 'PCAP-Aufzeichnung',
|
|
28
28
|
'pcapng.title': 'PCAPNG-Aufzeichnung', 'mermaid.title': 'Mermaid-Diagramm',
|
|
29
|
-
'plantuml.title': 'PlantUML-Diagramm',
|
|
29
|
+
'plantuml.title': 'PlantUML-Diagramm',
|
|
30
|
+
'diagram.ready': 'Bereit', 'diagram.rendering': 'Wird gerendert…', 'diagram.rendered': 'Gerendert', 'diagram.invalid': 'Ungültig', 'diagram.modified': 'Geändert',
|
|
31
|
+
'diagram.diagram': 'Diagramm', 'diagram.split': 'Geteilt', 'diagram.source': 'Quelle', 'diagram.render': 'Rendern', 'diagram.undo': 'Rückgängig', 'diagram.redo': 'Wiederholen',
|
|
32
|
+
'diagram.copySvg': 'SVG kopieren', 'diagram.copySource': 'Quelle kopieren', 'diagram.svgCopied': 'SVG kopiert', 'diagram.sourceCopied': 'Quelle kopiert',
|
|
33
|
+
'diagram.editable': 'Bearbeitbar', 'diagram.edited': 'Bearbeitet', 'diagram.renderFailed': 'Diagramm kann nicht gerendert werden.', 'diagram.notInstalled': 'Der Diagramm-Renderer ist nicht installiert. Die Quelle wird unten angezeigt.',
|
|
34
|
+
'diagram.theme': 'Design', 'diagram.zoomIn': 'Vergrößern', 'diagram.zoomOut': 'Verkleinern', 'diagram.zoomReset': 'Zoom zurücksetzen', 'shapefile.title': 'ESRI Shapefile', 'psd.title': 'Photoshop-Dokument',
|
|
30
35
|
'shapefile.zoomIn': 'Vergrößern', 'shapefile.zoomOut': 'Verkleinern', 'shapefile.reset': 'Ansicht zurücksetzen',
|
|
31
36
|
'shapefile.projection': 'Projektion: {name}', 'shapefile.attributes': 'Objektattribute',
|
|
32
37
|
'shapefile.featureLabel': 'Objekt {id}',
|
package/dist/i18n/catalog.en.js
CHANGED
|
@@ -29,7 +29,12 @@ export const CATALOG_EN = {
|
|
|
29
29
|
'arxml.title': 'AUTOSAR XML', 'a2l.title': 'ASAM A2L', 'asc.title': 'Vector ASC log',
|
|
30
30
|
'blf.title': 'Vector BLF log', 'mf4.title': 'ASAM MDF 4', 'pcap.title': 'PCAP capture',
|
|
31
31
|
'pcapng.title': 'PCAPNG capture', 'mermaid.title': 'Mermaid diagram',
|
|
32
|
-
'plantuml.title': 'PlantUML diagram',
|
|
32
|
+
'plantuml.title': 'PlantUML diagram',
|
|
33
|
+
'diagram.ready': 'Ready', 'diagram.rendering': 'Rendering…', 'diagram.rendered': 'Rendered', 'diagram.invalid': 'Invalid', 'diagram.modified': 'Modified',
|
|
34
|
+
'diagram.diagram': 'Diagram', 'diagram.split': 'Split', 'diagram.source': 'Source', 'diagram.render': 'Render', 'diagram.undo': 'Undo', 'diagram.redo': 'Redo',
|
|
35
|
+
'diagram.copySvg': 'Copy SVG', 'diagram.copySource': 'Copy source', 'diagram.svgCopied': 'SVG copied', 'diagram.sourceCopied': 'Source copied',
|
|
36
|
+
'diagram.editable': 'Editable', 'diagram.edited': 'Edited', 'diagram.renderFailed': 'Unable to render diagram.', 'diagram.notInstalled': 'The diagram renderer is not installed. The source is shown below.',
|
|
37
|
+
'diagram.theme': 'Theme', 'diagram.zoomIn': 'Zoom in', 'diagram.zoomOut': 'Zoom out', 'diagram.zoomReset': 'Reset zoom', 'shapefile.title': 'ESRI Shapefile', 'psd.title': 'Photoshop document',
|
|
33
38
|
'shapefile.zoomIn': 'Zoom in', 'shapefile.zoomOut': 'Zoom out', 'shapefile.reset': 'Reset view',
|
|
34
39
|
'shapefile.projection': 'Projection: {name}', 'shapefile.attributes': 'Feature attributes',
|
|
35
40
|
'shapefile.featureLabel': 'Feature {id}',
|
|
@@ -73,11 +78,26 @@ export const CATALOG_EN = {
|
|
|
73
78
|
'parquet.title': 'Parquet', 'parquet.search': 'Search rows…', 'parquet.raw': 'Raw', 'parquet.table': 'Table', 'parquet.copyJson': 'Copy JSON', 'parquet.exportJson': 'Export JSON', 'parquet.loadMore': 'Load Next {count} Rows', 'parquet.loading': 'Loading…', 'parquet.loadFailed': 'Could not load more rows: {message}', 'parquet.rows': 'rows', 'parquet.columns': 'columns', 'parquet.limited': 'Large file preview: {loaded} / {total} rows loaded.', 'parquet.copyCell': 'Copy cell value', 'parquet.copyRow': 'Copy row as JSON', 'parquet.copyColumn': 'Copy column values', 'parquet.autoFit': 'Auto fit column', 'parquet.resize': 'Drag to resize · double-click to auto fit', 'parquet.copyTable': 'Copy table', 'parquet.copied': 'Copied to clipboard',
|
|
74
79
|
'word.title': 'Word document', 'word.zoomIn': 'Zoom in', 'word.zoomOut': 'Zoom out',
|
|
75
80
|
'word.reset': 'Reset', 'word.print': 'Print', 'word.printUnavailable': 'Printing is not available on this platform.',
|
|
76
|
-
'word.empty': 'This document has no readable text.',
|
|
81
|
+
'word.empty': 'This document has no readable text.', 'word.chart': 'Chart',
|
|
82
|
+
'word.chartUnsupported': 'This {type} chart cannot be rendered. A placeholder is shown.',
|
|
77
83
|
'diag.word.invalid-format': 'This file could not be read as a Word document.',
|
|
84
|
+
'diag.word.password-required': 'This Word document requires a password.',
|
|
85
|
+
'diag.word.corrupted': 'This Word document is damaged or corrupted.',
|
|
86
|
+
'diag.word.recovered-corruption': 'The document was partially recovered from a damaged piece table.',
|
|
87
|
+
'diag.word.render-failed': 'This Word document could not be rendered.',
|
|
78
88
|
'diag.word.missing-dependency': 'DOCX rendering is not installed on this platform.',
|
|
79
|
-
'diag.word.limit-exceeded': 'This Word document exceeds the
|
|
89
|
+
'diag.word.limit-exceeded': 'This Word document exceeds the configured input limit.',
|
|
80
90
|
'diag.word.decompression-limit': 'This Word document declares more uncompressed data than can be safely opened.',
|
|
91
|
+
'diag.word.page-limit': 'Only the first {count} pages were rendered.',
|
|
92
|
+
'diag.word.image-limit': 'An embedded image exceeded the configured size limit and was omitted.',
|
|
93
|
+
'diag.word.embedded-limit': 'The embedded file limit was reached; remaining objects were omitted.',
|
|
94
|
+
'diag.word.blocked-external-resource': 'An external Word document resource was blocked for safety.',
|
|
95
|
+
'diag.word.embedded-workbook-disabled': 'An embedded workbook was not rendered because spreadsheet support is unavailable.',
|
|
96
|
+
'diag.word.embedded-workbook-failed': 'An embedded workbook could not be rendered.',
|
|
97
|
+
'diag.word.chart-fallback-used': 'The fallback image included with a chart was used.',
|
|
98
|
+
'diag.word.unsupported-chart': 'The {type} chart type is unsupported; a placeholder was used.',
|
|
99
|
+
'diag.word.fallback-renderer-used': 'The host fallback renderer was used.',
|
|
100
|
+
'diag.word.fallback-renderer-failed': 'The host fallback renderer failed.',
|
|
81
101
|
'diag.word.legacy-partial': 'Some legacy Word formatting could not be displayed.',
|
|
82
102
|
'diag.word.embedded-partial': 'Some embedded Word objects could not be displayed.', 'word.image': 'Embedded image',
|
|
83
103
|
'hwp.title': 'HWP document', 'hwp.zoomIn': 'Zoom in', 'hwp.zoomOut': 'Zoom out',
|
|
@@ -91,9 +111,11 @@ export const CATALOG_EN = {
|
|
|
91
111
|
'ppt.jump': 'Go to slide', 'ppt.mode.single': 'Single slide', 'ppt.mode.continuous': 'Continuous',
|
|
92
112
|
'ppt.empty': 'This presentation contains no slides.',
|
|
93
113
|
'diag.ppt.invalid-format': 'This file could not be read as a PowerPoint presentation.',
|
|
114
|
+
'diag.ppt.corrupted': 'This PowerPoint presentation is damaged or corrupted.',
|
|
94
115
|
'diag.ppt.empty': 'This presentation contains no renderable slides.',
|
|
95
116
|
'diag.ppt.pdf-missing-dependency': 'PDF fallback requires PDF.js on this platform.',
|
|
96
117
|
'diag.ppt.limit-exceeded': 'Only part of this presentation could be loaded.',
|
|
118
|
+
'diag.ppt.unsupported-object': 'A {objectKind} object was {handling} while rendering this presentation.',
|
|
97
119
|
'markdown.title': 'Markdown', 'markdown.preview': 'Preview', 'markdown.split': 'Split', 'markdown.source': 'Source',
|
|
98
120
|
'markdown.render': 'Render', 'markdown.copyHtml': 'Copy HTML', 'markdown.copySource': 'Copy Source',
|
|
99
121
|
'markdown.undo': 'Undo', 'markdown.redo': 'Redo', 'markdown.ready': 'Ready',
|
|
@@ -106,11 +128,13 @@ export const CATALOG_EN = {
|
|
|
106
128
|
'diag.markdown.limit-exceeded': 'The Markdown document exceeds a supported limit.',
|
|
107
129
|
'archive.title': 'Archive', 'archive.search': 'Search entries', 'archive.entries': '{count} entries',
|
|
108
130
|
'archive.previewUnavailable': 'Preview unavailable', 'archive.mediaUnsupported': 'Media preview is unsupported.',
|
|
109
|
-
'archive.encrypted': 'This archive is encrypted.', '
|
|
131
|
+
'archive.encrypted': 'This archive is encrypted.', 'archive.encryptedEntries': 'This archive contains {count} encrypted entries.',
|
|
132
|
+
'archive.encryptedEntry': 'This entry is encrypted and cannot be previewed or saved.', 'archive.encryptedStatus': 'Encrypted', 'diag.archive.invalid-format': 'This file could not be read as an archive.',
|
|
110
133
|
'diag.archive.limit-exceeded': 'The archive exceeds a supported limit.',
|
|
111
134
|
'archive.preview': 'Archive Preview', 'archive.summary': 'Browsing the archive structure in read-only preview mode.',
|
|
112
135
|
'archive.filter': 'Filter', 'archive.path': 'Path', 'archive.type': 'Type',
|
|
113
136
|
'archive.compressedSize': 'Compressed Size', 'archive.originalSize': 'Original Size', 'archive.modified': 'Modified',
|
|
137
|
+
'archive.compressedStatus': 'Compressed', 'archive.storedStatus': 'Stored',
|
|
114
138
|
'archive.files': 'Files', 'archive.directories': 'Directories', 'archive.visible': 'Visible',
|
|
115
139
|
'archive.file': 'FILE', 'archive.directory': 'DIR', 'archive.noMatches': 'No matching entries found.',
|
|
116
140
|
'archive.entryPreview': 'Entry Preview', 'archive.chooseFile': 'Choose a file', 'archive.idle': 'Idle',
|
|
@@ -119,7 +143,7 @@ export const CATALOG_EN = {
|
|
|
119
143
|
'archive.loadingContent': 'Loading preview…', 'archive.ready': 'Ready',
|
|
120
144
|
'archive.textReady': 'Rendered as plain text from the selected archive entry.',
|
|
121
145
|
'archive.binaryReady': 'Rendered as a hexadecimal preview from the selected archive entry.',
|
|
122
|
-
'archive.androidBinaryXmlReady': 'Decoded from Android binary XML.',
|
|
146
|
+
'archive.androidBinaryXmlReady': 'Decoded from Android binary XML.', 'archive.delegatedReady': 'Opened with the host viewer.',
|
|
123
147
|
'archive.audioReady': 'Playing the selected audio entry.',
|
|
124
148
|
'archive.imageReady': 'Showing the selected image entry.',
|
|
125
149
|
'archive.videoReady': 'Playing the selected video entry.',
|
|
@@ -162,7 +186,7 @@ export const CATALOG_EN = {
|
|
|
162
186
|
'jsonl.add': 'Add line', 'jsonl.delete': 'Delete selected', 'jsonl.edit': 'Edit', 'jsonl.apply': 'Apply',
|
|
163
187
|
'jsonl.cancel': 'Cancel', 'jsonl.preview': 'Search and selection apply only to the loaded preview.',
|
|
164
188
|
'jsonl.showMore': 'Show 5,000 more lines', 'jsonl.invalidSave': 'Fix invalid edited lines before saving.',
|
|
165
|
-
'jsonl.rowValid': 'Line {line}, valid JSON', 'jsonl.rowInvalid': 'Line {line}, invalid JSON',
|
|
189
|
+
'jsonl.rowValid': 'Line {line}, valid JSON', 'jsonl.rowInvalid': 'Line {line}, invalid JSON', 'jsonl.singleLine': 'Each JSON Lines record must stay on one physical line.',
|
|
166
190
|
// Generic diagnostics
|
|
167
191
|
'diag.limit-exceeded.rows': 'Only the first {count} rows were parsed (row limit reached).',
|
|
168
192
|
'diag.limit-exceeded.input': 'The file exceeds the maximum supported size ({maxBytes} bytes).',
|
package/dist/i18n/catalog.fr.js
CHANGED
|
@@ -26,7 +26,12 @@ export const CATALOG_FR = {
|
|
|
26
26
|
'arxml.title': 'AUTOSAR XML', 'a2l.title': 'ASAM A2L', 'asc.title': 'Journal Vector ASC',
|
|
27
27
|
'blf.title': 'Journal Vector BLF', 'mf4.title': 'ASAM MDF 4', 'pcap.title': 'Capture PCAP',
|
|
28
28
|
'pcapng.title': 'Capture PCAPNG', 'mermaid.title': 'Diagramme Mermaid',
|
|
29
|
-
'plantuml.title': 'Diagramme PlantUML',
|
|
29
|
+
'plantuml.title': 'Diagramme PlantUML',
|
|
30
|
+
'diagram.ready': 'Prêt', 'diagram.rendering': 'Rendu…', 'diagram.rendered': 'Rendu', 'diagram.invalid': 'Invalide', 'diagram.modified': 'Modifié',
|
|
31
|
+
'diagram.diagram': 'Diagramme', 'diagram.split': 'Partagé', 'diagram.source': 'Source', 'diagram.render': 'Rendre', 'diagram.undo': 'Annuler', 'diagram.redo': 'Rétablir',
|
|
32
|
+
'diagram.copySvg': 'Copier le SVG', 'diagram.copySource': 'Copier la source', 'diagram.svgCopied': 'SVG copié', 'diagram.sourceCopied': 'Source copiée',
|
|
33
|
+
'diagram.editable': 'Modifiable', 'diagram.edited': 'Modifié', 'diagram.renderFailed': 'Impossible de générer le diagramme.', 'diagram.notInstalled': "Le moteur de rendu de diagrammes n'est pas installé. La source est affichée ci-dessous.",
|
|
34
|
+
'diagram.theme': 'Thème', 'diagram.zoomIn': 'Zoom avant', 'diagram.zoomOut': 'Zoom arrière', 'diagram.zoomReset': 'Réinitialiser le zoom', 'shapefile.title': 'ESRI Shapefile', 'psd.title': 'Document Photoshop',
|
|
30
35
|
'shapefile.zoomIn': 'Zoom avant', 'shapefile.zoomOut': 'Zoom arrière', 'shapefile.reset': 'Réinitialiser la vue',
|
|
31
36
|
'shapefile.projection': 'Projection : {name}', 'shapefile.attributes': 'Attributs de l’entité',
|
|
32
37
|
'shapefile.featureLabel': 'Entité {id}',
|
package/dist/i18n/catalog.it.js
CHANGED
|
@@ -26,7 +26,12 @@ export const CATALOG_IT = {
|
|
|
26
26
|
'arxml.title': 'AUTOSAR XML', 'a2l.title': 'ASAM A2L', 'asc.title': 'Log Vector ASC',
|
|
27
27
|
'blf.title': 'Log Vector BLF', 'mf4.title': 'ASAM MDF 4', 'pcap.title': 'Cattura PCAP',
|
|
28
28
|
'pcapng.title': 'Cattura PCAPNG', 'mermaid.title': 'Diagramma Mermaid',
|
|
29
|
-
'plantuml.title': 'Diagramma PlantUML',
|
|
29
|
+
'plantuml.title': 'Diagramma PlantUML',
|
|
30
|
+
'diagram.ready': 'Pronto', 'diagram.rendering': 'Rendering…', 'diagram.rendered': 'Renderizzato', 'diagram.invalid': 'Non valido', 'diagram.modified': 'Modificato',
|
|
31
|
+
'diagram.diagram': 'Diagramma', 'diagram.split': 'Diviso', 'diagram.source': 'Sorgente', 'diagram.render': 'Renderizza', 'diagram.undo': 'Annulla', 'diagram.redo': 'Ripeti',
|
|
32
|
+
'diagram.copySvg': 'Copia SVG', 'diagram.copySource': 'Copia sorgente', 'diagram.svgCopied': 'SVG copiato', 'diagram.sourceCopied': 'Sorgente copiata',
|
|
33
|
+
'diagram.editable': 'Modificabile', 'diagram.edited': 'Modificato', 'diagram.renderFailed': 'Impossibile renderizzare il diagramma.', 'diagram.notInstalled': 'Il renderer dei diagrammi non è installato. La sorgente è mostrata di seguito.',
|
|
34
|
+
'diagram.theme': 'Tema', 'diagram.zoomIn': 'Ingrandisci', 'diagram.zoomOut': 'Riduci', 'diagram.zoomReset': 'Reimposta zoom', 'shapefile.title': 'ESRI Shapefile', 'psd.title': 'Documento Photoshop',
|
|
30
35
|
'shapefile.zoomIn': 'Ingrandisci', 'shapefile.zoomOut': 'Riduci', 'shapefile.reset': 'Reimposta vista',
|
|
31
36
|
'shapefile.projection': 'Proiezione: {name}', 'shapefile.attributes': 'Attributi dell’elemento',
|
|
32
37
|
'shapefile.featureLabel': 'Elemento {id}',
|
package/dist/i18n/catalog.ja.js
CHANGED
|
@@ -25,7 +25,12 @@ export const CATALOG_JA = {
|
|
|
25
25
|
'arxml.title': 'AUTOSAR XML', 'a2l.title': 'ASAM A2L', 'asc.title': 'Vector ASCログ',
|
|
26
26
|
'blf.title': 'Vector BLFログ', 'mf4.title': 'ASAM MDF 4', 'pcap.title': 'PCAPキャプチャ',
|
|
27
27
|
'pcapng.title': 'PCAPNGキャプチャ', 'mermaid.title': 'Mermaidダイアグラム',
|
|
28
|
-
'plantuml.title': 'PlantUMLダイアグラム',
|
|
28
|
+
'plantuml.title': 'PlantUMLダイアグラム',
|
|
29
|
+
'diagram.ready': '準備完了', 'diagram.rendering': 'レンダリング中…', 'diagram.rendered': 'レンダリング完了', 'diagram.invalid': '無効', 'diagram.modified': '変更あり',
|
|
30
|
+
'diagram.diagram': 'ダイアグラム', 'diagram.split': '分割', 'diagram.source': 'ソース', 'diagram.render': 'レンダー', 'diagram.undo': '元に戻す', 'diagram.redo': 'やり直し',
|
|
31
|
+
'diagram.copySvg': 'SVGをコピー', 'diagram.copySource': 'ソースをコピー', 'diagram.svgCopied': 'SVGをコピーしました', 'diagram.sourceCopied': 'ソースをコピーしました',
|
|
32
|
+
'diagram.editable': '編集可能', 'diagram.edited': '編集済み', 'diagram.renderFailed': 'ダイアグラムをレンダリングできません。', 'diagram.notInstalled': 'ダイアグラムレンダラーがインストールされていません。以下にソースを表示します。',
|
|
33
|
+
'diagram.theme': 'テーマ', 'diagram.zoomIn': '拡大', 'diagram.zoomOut': '縮小', 'diagram.zoomReset': 'ズームをリセット', 'shapefile.title': 'ESRI Shapefile', 'psd.title': 'Photoshopドキュメント',
|
|
29
34
|
'shapefile.zoomIn': '拡大', 'shapefile.zoomOut': '縮小', 'shapefile.reset': '表示をリセット',
|
|
30
35
|
'shapefile.projection': '投影法: {name}', 'shapefile.attributes': '地物の属性',
|
|
31
36
|
'shapefile.featureLabel': '地物 {id}',
|
|
@@ -76,11 +81,26 @@ export const CATALOG_JA = {
|
|
|
76
81
|
'parquet.copyTable': 'テーブルをコピー', 'parquet.copied': 'クリップボードにコピーしました',
|
|
77
82
|
'word.title': 'Word文書', 'word.zoomIn': '拡大', 'word.zoomOut': '縮小',
|
|
78
83
|
'word.reset': 'リセット', 'word.print': '印刷', 'word.printUnavailable': 'この環境では印刷を利用できません。',
|
|
79
|
-
'word.empty': 'この文書には読み取り可能なテキストがありません。',
|
|
84
|
+
'word.empty': 'この文書には読み取り可能なテキストがありません。', 'word.chart': 'グラフ',
|
|
85
|
+
'word.chartUnsupported': '{type}グラフを描画できないため、プレースホルダーを表示します。',
|
|
80
86
|
'diag.word.invalid-format': 'このファイルをWord文書として読み込めませんでした。',
|
|
87
|
+
'diag.word.password-required': 'このWord文書を開くにはパスワードが必要です。',
|
|
88
|
+
'diag.word.corrupted': 'このWord文書は破損しています。',
|
|
89
|
+
'diag.word.recovered-corruption': '破損したピーステーブルから文書を部分的に復元しました。',
|
|
90
|
+
'diag.word.render-failed': 'このWord文書を描画できませんでした。',
|
|
81
91
|
'diag.word.missing-dependency': 'この環境にはDOCXレンダラーがインストールされていません。',
|
|
82
|
-
'diag.word.limit-exceeded': 'このWord
|
|
92
|
+
'diag.word.limit-exceeded': 'このWord文書は設定された入力上限を超えています。',
|
|
83
93
|
'diag.word.decompression-limit': 'このWord文書は、安全に開ける量を超える展開後データを宣言しています。',
|
|
94
|
+
'diag.word.page-limit': '最初の{count}ページだけを描画しました。',
|
|
95
|
+
'diag.word.image-limit': '埋め込み画像が設定されたサイズ上限を超えたため、省略しました。',
|
|
96
|
+
'diag.word.embedded-limit': '埋め込みファイルの上限に達したため、残りのオブジェクトを省略しました。',
|
|
97
|
+
'diag.word.blocked-external-resource': '安全のため、Word文書の外部リソースをブロックしました。',
|
|
98
|
+
'diag.word.embedded-workbook-disabled': 'スプレッドシート機能を利用できないため、埋め込みブックを描画しませんでした。',
|
|
99
|
+
'diag.word.embedded-workbook-failed': '埋め込みブックを描画できませんでした。',
|
|
100
|
+
'diag.word.chart-fallback-used': 'グラフに含まれるフォールバック画像を使用しました。',
|
|
101
|
+
'diag.word.unsupported-chart': '{type}グラフ形式は未対応のため、プレースホルダーを使用しました。',
|
|
102
|
+
'diag.word.fallback-renderer-used': 'ホストのフォールバックレンダラーを使用しました。',
|
|
103
|
+
'diag.word.fallback-renderer-failed': 'ホストのフォールバックレンダラーに失敗しました。',
|
|
84
104
|
'diag.word.legacy-partial': '一部の旧形式のWord書式を表示できませんでした。',
|
|
85
105
|
'diag.word.embedded-partial': '一部の埋め込みWordオブジェクトを表示できませんでした。', 'word.image': '埋め込み画像',
|
|
86
106
|
'hwp.title': 'HWP文書', 'hwp.zoomIn': '拡大', 'hwp.zoomOut': '縮小',
|
|
@@ -95,9 +115,11 @@ export const CATALOG_JA = {
|
|
|
95
115
|
'ppt.jump': 'スライドへ移動', 'ppt.mode.single': '単一スライド', 'ppt.mode.continuous': '連続表示',
|
|
96
116
|
'ppt.empty': 'このプレゼンテーションにはスライドがありません。',
|
|
97
117
|
'diag.ppt.invalid-format': 'このファイルをPowerPointプレゼンテーションとして読み込めませんでした。',
|
|
118
|
+
'diag.ppt.corrupted': 'このPowerPointプレゼンテーションは破損しています。',
|
|
98
119
|
'diag.ppt.empty': 'このプレゼンテーションには表示可能なスライドがありません。',
|
|
99
120
|
'diag.ppt.pdf-missing-dependency': 'PDFフォールバックには、この環境のPDF.jsが必要です。',
|
|
100
121
|
'diag.ppt.limit-exceeded': 'このプレゼンテーションの一部だけを読み込めました。',
|
|
122
|
+
'diag.ppt.unsupported-object': 'このプレゼンテーションの表示中に{objectKind}オブジェクトを{handling}として処理しました。',
|
|
101
123
|
'markdown.title': 'Markdown', 'markdown.preview': 'プレビュー', 'markdown.split': '分割', 'markdown.source': 'ソース',
|
|
102
124
|
'markdown.render': 'レンダリング', 'markdown.copyHtml': 'HTMLをコピー', 'markdown.copySource': 'ソースをコピー',
|
|
103
125
|
'markdown.undo': '元に戻す', 'markdown.redo': 'やり直す', 'markdown.ready': '準備完了',
|
|
@@ -110,11 +132,13 @@ export const CATALOG_JA = {
|
|
|
110
132
|
'diag.markdown.limit-exceeded': 'Markdown文書が対応上限を超えています。',
|
|
111
133
|
'archive.title': 'アーカイブ', 'archive.search': '項目を検索', 'archive.entries': '{count}項目',
|
|
112
134
|
'archive.previewUnavailable': 'プレビューできません', 'archive.mediaUnsupported': 'メディアのプレビューには対応していません。',
|
|
113
|
-
'archive.encrypted': 'このアーカイブは暗号化されています。', '
|
|
135
|
+
'archive.encrypted': 'このアーカイブは暗号化されています。', 'archive.encryptedEntries': 'このアーカイブには暗号化された項目が{count}件あります。',
|
|
136
|
+
'archive.encryptedEntry': 'この項目は暗号化されているため、プレビューまたは保存できません。', 'archive.encryptedStatus': '暗号化済み', 'diag.archive.invalid-format': 'このファイルをアーカイブとして読み込めませんでした。',
|
|
114
137
|
'diag.archive.limit-exceeded': 'アーカイブが対応上限を超えています。',
|
|
115
138
|
'archive.preview': 'アーカイブプレビュー', 'archive.summary': '読み取り専用プレビューモードでアーカイブ構造を参照しています。',
|
|
116
139
|
'archive.filter': 'フィルター', 'archive.path': 'パス', 'archive.type': '種類',
|
|
117
140
|
'archive.compressedSize': '圧縮サイズ', 'archive.originalSize': '元のサイズ', 'archive.modified': '更新日時',
|
|
141
|
+
'archive.compressedStatus': '圧縮済み', 'archive.storedStatus': '無圧縮',
|
|
118
142
|
'archive.files': 'ファイル', 'archive.directories': 'ディレクトリ', 'archive.visible': '表示中',
|
|
119
143
|
'archive.file': 'ファイル', 'archive.directory': 'ディレクトリ', 'archive.noMatches': '一致する項目がありません。',
|
|
120
144
|
'archive.entryPreview': '項目のプレビュー', 'archive.chooseFile': 'ファイルを選択', 'archive.idle': '待機中',
|
|
@@ -123,7 +147,7 @@ export const CATALOG_JA = {
|
|
|
123
147
|
'archive.loadingContent': 'プレビューを読み込み中…', 'archive.ready': '準備完了',
|
|
124
148
|
'archive.textReady': '選択したアーカイブ項目をプレーンテキストとして表示しました。',
|
|
125
149
|
'archive.binaryReady': '選択したアーカイブ項目を16進数プレビューとして表示しました。',
|
|
126
|
-
'archive.androidBinaryXmlReady': 'AndroidバイナリXMLからデコードしました。',
|
|
150
|
+
'archive.androidBinaryXmlReady': 'AndroidバイナリXMLからデコードしました。', 'archive.delegatedReady': 'ホストビューアーで開きました。',
|
|
127
151
|
'archive.audioReady': '選択した音声エントリを再生しています。',
|
|
128
152
|
'archive.imageReady': '選択した画像エントリを表示しています。',
|
|
129
153
|
'archive.videoReady': '選択した動画エントリを再生しています。',
|
|
@@ -166,7 +190,7 @@ export const CATALOG_JA = {
|
|
|
166
190
|
'jsonl.add': '行を追加', 'jsonl.delete': '選択項目を削除', 'jsonl.edit': '編集', 'jsonl.apply': '適用',
|
|
167
191
|
'jsonl.cancel': 'キャンセル', 'jsonl.preview': '検索と選択は読み込み済みのプレビューだけに適用されます。',
|
|
168
192
|
'jsonl.showMore': 'さらに5,000行を表示', 'jsonl.invalidSave': '保存する前に無効な編集行を修正してください。',
|
|
169
|
-
'jsonl.rowValid': '{line}行目、有効なJSON', 'jsonl.rowInvalid': '{line}行目、無効なJSON',
|
|
193
|
+
'jsonl.rowValid': '{line}行目、有効なJSON', 'jsonl.rowInvalid': '{line}行目、無効なJSON', 'jsonl.singleLine': '各JSON Linesレコードは1つの物理行に収める必要があります。',
|
|
170
194
|
'diag.limit-exceeded.rows': '行数の上限に達したため、最初の{count}行だけを解析しました。',
|
|
171
195
|
'diag.limit-exceeded.input': 'ファイルが対応する最大サイズ({maxBytes}バイト)を超えています。',
|
|
172
196
|
'diag.limit-exceeded.decompressed': 'アーカイブの展開後データが対応上限({maxBytes}バイト)を超えています。',
|
package/dist/i18n/catalog.ko.js
CHANGED
|
@@ -27,7 +27,12 @@ export const CATALOG_KO = {
|
|
|
27
27
|
'arxml.title': 'AUTOSAR XML', 'a2l.title': 'ASAM A2L', 'asc.title': 'Vector ASC 로그',
|
|
28
28
|
'blf.title': 'Vector BLF 로그', 'mf4.title': 'ASAM MDF 4', 'pcap.title': 'PCAP 캡처',
|
|
29
29
|
'pcapng.title': 'PCAPNG 캡처', 'mermaid.title': 'Mermaid 다이어그램',
|
|
30
|
-
'plantuml.title': 'PlantUML 다이어그램',
|
|
30
|
+
'plantuml.title': 'PlantUML 다이어그램',
|
|
31
|
+
'diagram.ready': '준비', 'diagram.rendering': '렌더링 중…', 'diagram.rendered': '렌더링됨', 'diagram.invalid': '오류', 'diagram.modified': '수정됨',
|
|
32
|
+
'diagram.diagram': '다이어그램', 'diagram.split': '분할', 'diagram.source': '소스', 'diagram.render': '렌더', 'diagram.undo': '실행 취소', 'diagram.redo': '다시 실행',
|
|
33
|
+
'diagram.copySvg': 'SVG 복사', 'diagram.copySource': '소스 복사', 'diagram.svgCopied': 'SVG 복사됨', 'diagram.sourceCopied': '소스 복사됨',
|
|
34
|
+
'diagram.editable': '편집 가능', 'diagram.edited': '편집됨', 'diagram.renderFailed': '다이어그램을 렌더링할 수 없습니다.', 'diagram.notInstalled': '다이어그램 렌더러가 설치되지 않았습니다. 아래에 소스를 표시합니다.',
|
|
35
|
+
'diagram.theme': '테마', 'diagram.zoomIn': '확대', 'diagram.zoomOut': '축소', 'diagram.zoomReset': '확대/축소 초기화', 'shapefile.title': 'ESRI Shapefile', 'psd.title': 'Photoshop 문서',
|
|
31
36
|
'shapefile.zoomIn': '확대', 'shapefile.zoomOut': '축소', 'shapefile.reset': '보기 초기화',
|
|
32
37
|
'shapefile.projection': '좌표계: {name}', 'shapefile.attributes': '피처 속성',
|
|
33
38
|
'shapefile.featureLabel': '피처 {id}',
|
|
@@ -71,11 +76,26 @@ export const CATALOG_KO = {
|
|
|
71
76
|
'parquet.title': 'Parquet', 'parquet.search': '행 검색…', 'parquet.raw': '원시', 'parquet.table': '표', 'parquet.copyJson': 'JSON 복사', 'parquet.exportJson': 'JSON 내보내기', 'parquet.loadMore': '다음 {count}행 불러오기', 'parquet.loading': '불러오는 중…', 'parquet.loadFailed': '행을 더 불러올 수 없습니다: {message}', 'parquet.rows': '행', 'parquet.columns': '열', 'parquet.limited': '대용량 파일 미리보기: 전체 {total}행 중 {loaded}행 로드됨.', 'parquet.copyCell': '셀 값 복사', 'parquet.copyRow': '행을 JSON으로 복사', 'parquet.copyColumn': '열 값 복사', 'parquet.autoFit': '열 자동 맞춤', 'parquet.resize': '드래그하여 크기 조절 · 더블클릭하여 자동 맞춤', 'parquet.copyTable': '표 복사', 'parquet.copied': '클립보드에 복사됨',
|
|
72
77
|
'word.title': 'Word 문서', 'word.zoomIn': '확대', 'word.zoomOut': '축소',
|
|
73
78
|
'word.reset': '초기화', 'word.print': '인쇄', 'word.printUnavailable': '이 플랫폼에서는 인쇄를 사용할 수 없습니다.',
|
|
74
|
-
'word.empty': '이 문서에는 읽을 수 있는 텍스트가 없습니다.',
|
|
79
|
+
'word.empty': '이 문서에는 읽을 수 있는 텍스트가 없습니다.', 'word.chart': '차트',
|
|
80
|
+
'word.chartUnsupported': '{type} 차트를 렌더링할 수 없어 자리표시자를 표시합니다.',
|
|
75
81
|
'diag.word.invalid-format': '이 파일을 Word 문서로 읽을 수 없습니다.',
|
|
82
|
+
'diag.word.password-required': '이 Word 문서를 열려면 암호가 필요합니다.',
|
|
83
|
+
'diag.word.corrupted': '이 Word 문서가 손상되었습니다.',
|
|
84
|
+
'diag.word.recovered-corruption': '손상된 piece table에서 문서를 부분 복구했습니다.',
|
|
85
|
+
'diag.word.render-failed': '이 Word 문서를 렌더링할 수 없습니다.',
|
|
76
86
|
'diag.word.missing-dependency': '이 플랫폼에 DOCX 렌더러가 설치되어 있지 않습니다.',
|
|
77
|
-
'diag.word.limit-exceeded': '이 Word
|
|
87
|
+
'diag.word.limit-exceeded': '이 Word 문서가 설정된 입력 한도를 초과합니다.',
|
|
78
88
|
'diag.word.decompression-limit': '이 Word 문서는 안전하게 열 수 있는 것보다 많은 압축 해제 데이터를 선언합니다.',
|
|
89
|
+
'diag.word.page-limit': '처음 {count}페이지만 렌더링했습니다.',
|
|
90
|
+
'diag.word.image-limit': '포함된 이미지가 설정된 크기 한도를 초과해 제외했습니다.',
|
|
91
|
+
'diag.word.embedded-limit': '포함 파일 한도에 도달해 나머지 객체를 제외했습니다.',
|
|
92
|
+
'diag.word.blocked-external-resource': '보안을 위해 Word 문서의 외부 리소스를 차단했습니다.',
|
|
93
|
+
'diag.word.embedded-workbook-disabled': '스프레드시트 지원을 사용할 수 없어 포함된 통합 문서를 렌더링하지 않았습니다.',
|
|
94
|
+
'diag.word.embedded-workbook-failed': '포함된 통합 문서를 렌더링할 수 없습니다.',
|
|
95
|
+
'diag.word.chart-fallback-used': '차트에 포함된 대체 이미지를 사용했습니다.',
|
|
96
|
+
'diag.word.unsupported-chart': '{type} 차트 형식을 지원하지 않아 자리표시자를 사용했습니다.',
|
|
97
|
+
'diag.word.fallback-renderer-used': '호스트 폴백 렌더러를 사용했습니다.',
|
|
98
|
+
'diag.word.fallback-renderer-failed': '호스트 폴백 렌더러가 실패했습니다.',
|
|
79
99
|
'diag.word.legacy-partial': '일부 구형 Word 서식은 표시할 수 없습니다.',
|
|
80
100
|
'diag.word.embedded-partial': '일부 포함된 Word 객체는 표시할 수 없습니다.', 'word.image': '포함된 이미지',
|
|
81
101
|
'hwp.title': '한글 문서', 'hwp.zoomIn': '확대', 'hwp.zoomOut': '축소',
|
|
@@ -91,9 +111,11 @@ export const CATALOG_KO = {
|
|
|
91
111
|
'ppt.jump': '슬라이드 이동', 'ppt.mode.single': '단일 슬라이드', 'ppt.mode.continuous': '연속',
|
|
92
112
|
'ppt.empty': '이 프레젠테이션에는 슬라이드가 없습니다.',
|
|
93
113
|
'diag.ppt.invalid-format': '이 파일을 PowerPoint 프레젠테이션으로 읽을 수 없습니다.',
|
|
114
|
+
'diag.ppt.corrupted': '이 PowerPoint 프레젠테이션이 손상되었습니다.',
|
|
94
115
|
'diag.ppt.empty': '이 프레젠테이션에는 렌더링할 수 있는 슬라이드가 없습니다.',
|
|
95
116
|
'diag.ppt.pdf-missing-dependency': 'PDF 폴백에는 이 플랫폼의 PDF.js가 필요합니다.',
|
|
96
117
|
'diag.ppt.limit-exceeded': '이 프레젠테이션의 일부만 불러올 수 있었습니다.',
|
|
118
|
+
'diag.ppt.unsupported-object': '이 프레젠테이션을 표시하는 동안 {objectKind} 객체가 {handling} 처리되었습니다.',
|
|
97
119
|
'markdown.title': 'Markdown', 'markdown.preview': '미리보기', 'markdown.split': '분할', 'markdown.source': '소스',
|
|
98
120
|
'markdown.render': '렌더링', 'markdown.copyHtml': 'HTML 복사', 'markdown.copySource': '소스 복사',
|
|
99
121
|
'markdown.undo': '실행 취소', 'markdown.redo': '다시 실행', 'markdown.ready': '준비됨',
|
|
@@ -106,11 +128,13 @@ export const CATALOG_KO = {
|
|
|
106
128
|
'diag.markdown.limit-exceeded': 'Markdown 문서가 지원 한도를 초과합니다.',
|
|
107
129
|
'archive.title': '압축 파일', 'archive.search': '항목 검색', 'archive.entries': '항목 {count}개',
|
|
108
130
|
'archive.previewUnavailable': '미리보기를 사용할 수 없음', 'archive.mediaUnsupported': '미디어 미리보기는 지원되지 않습니다.',
|
|
109
|
-
'archive.encrypted': '이 압축 파일은 암호화되어 있습니다.', '
|
|
131
|
+
'archive.encrypted': '이 압축 파일은 암호화되어 있습니다.', 'archive.encryptedEntries': '이 압축 파일에는 암호화된 항목이 {count}개 있습니다.',
|
|
132
|
+
'archive.encryptedEntry': '이 항목은 암호화되어 미리 보거나 저장할 수 없습니다.', 'archive.encryptedStatus': '암호화됨', 'diag.archive.invalid-format': '이 파일을 압축 파일로 읽을 수 없습니다.',
|
|
110
133
|
'diag.archive.limit-exceeded': '압축 파일이 지원 한도를 초과합니다.',
|
|
111
134
|
'archive.preview': '압축 파일 미리보기', 'archive.summary': '읽기 전용 미리보기 모드로 압축 파일 구조를 탐색합니다.',
|
|
112
135
|
'archive.filter': '필터', 'archive.path': '경로', 'archive.type': '종류',
|
|
113
136
|
'archive.compressedSize': '압축 크기', 'archive.originalSize': '원본 크기', 'archive.modified': '수정 날짜',
|
|
137
|
+
'archive.compressedStatus': '압축됨', 'archive.storedStatus': '무압축 저장',
|
|
114
138
|
'archive.files': '파일', 'archive.directories': '디렉터리', 'archive.visible': '표시됨',
|
|
115
139
|
'archive.file': '파일', 'archive.directory': '디렉터리', 'archive.noMatches': '일치하는 항목이 없습니다.',
|
|
116
140
|
'archive.entryPreview': '항목 미리보기', 'archive.chooseFile': '파일 선택', 'archive.idle': '대기 중',
|
|
@@ -119,7 +143,7 @@ export const CATALOG_KO = {
|
|
|
119
143
|
'archive.loadingContent': '미리보기 불러오는 중…', 'archive.ready': '준비됨',
|
|
120
144
|
'archive.textReady': '선택한 압축 파일 항목을 일반 텍스트로 표시합니다.',
|
|
121
145
|
'archive.binaryReady': '선택한 압축 파일 항목을 16진수 미리보기로 표시합니다.',
|
|
122
|
-
'archive.androidBinaryXmlReady': 'Android 바이너리 XML에서 디코딩했습니다.',
|
|
146
|
+
'archive.androidBinaryXmlReady': 'Android 바이너리 XML에서 디코딩했습니다.', 'archive.delegatedReady': '호스트 뷰어로 열었습니다.',
|
|
123
147
|
'archive.audioReady': '선택한 오디오 항목을 재생합니다.',
|
|
124
148
|
'archive.imageReady': '선택한 이미지 항목을 표시합니다.',
|
|
125
149
|
'archive.videoReady': '선택한 비디오 항목을 재생합니다.',
|
|
@@ -162,7 +186,7 @@ export const CATALOG_KO = {
|
|
|
162
186
|
'jsonl.add': '줄 추가', 'jsonl.delete': '선택 삭제', 'jsonl.edit': '편집', 'jsonl.apply': '적용',
|
|
163
187
|
'jsonl.cancel': '취소', 'jsonl.preview': '검색과 선택은 불러온 미리보기에만 적용됩니다.',
|
|
164
188
|
'jsonl.showMore': '5,000줄 더 보기', 'jsonl.invalidSave': '저장하기 전에 잘못 편집된 줄을 수정하세요.',
|
|
165
|
-
'jsonl.rowValid': '{line}번째 줄, 유효한 JSON', 'jsonl.rowInvalid': '{line}번째 줄, 유효하지 않은 JSON',
|
|
189
|
+
'jsonl.rowValid': '{line}번째 줄, 유효한 JSON', 'jsonl.rowInvalid': '{line}번째 줄, 유효하지 않은 JSON', 'jsonl.singleLine': '각 JSON Lines 레코드는 한 개의 물리적 줄로 유지해야 합니다.',
|
|
166
190
|
// 공통 진단
|
|
167
191
|
'diag.limit-exceeded.rows': '처음 {count}행만 파싱되었습니다(행 한도 도달).',
|
|
168
192
|
'diag.limit-exceeded.input': '파일이 지원하는 최대 크기({maxBytes}바이트)를 초과합니다.',
|
package/dist/i18n/catalog.th.js
CHANGED
|
@@ -26,7 +26,12 @@ export const CATALOG_TH = {
|
|
|
26
26
|
'arxml.title': 'AUTOSAR XML', 'a2l.title': 'ASAM A2L', 'asc.title': 'บันทึก Vector ASC',
|
|
27
27
|
'blf.title': 'บันทึก Vector BLF', 'mf4.title': 'ASAM MDF 4', 'pcap.title': 'การจับ PCAP',
|
|
28
28
|
'pcapng.title': 'การจับ PCAPNG', 'mermaid.title': 'ไดอะแกรม Mermaid',
|
|
29
|
-
'plantuml.title': 'ไดอะแกรม PlantUML',
|
|
29
|
+
'plantuml.title': 'ไดอะแกรม PlantUML',
|
|
30
|
+
'diagram.ready': 'พร้อม', 'diagram.rendering': 'กำลังเรนเดอร์…', 'diagram.rendered': 'เรนเดอร์แล้ว', 'diagram.invalid': 'ไม่ถูกต้อง', 'diagram.modified': 'แก้ไขแล้ว',
|
|
31
|
+
'diagram.diagram': 'ไดอะแกรม', 'diagram.split': 'แยก', 'diagram.source': 'ซอร์ส', 'diagram.render': 'เรนเดอร์', 'diagram.undo': 'เลิกทำ', 'diagram.redo': 'ทำซ้ำ',
|
|
32
|
+
'diagram.copySvg': 'คัดลอก SVG', 'diagram.copySource': 'คัดลอกซอร์ส', 'diagram.svgCopied': 'คัดลอก SVG แล้ว', 'diagram.sourceCopied': 'คัดลอกซอร์สแล้ว',
|
|
33
|
+
'diagram.editable': 'แก้ไขได้', 'diagram.edited': 'แก้ไขแล้ว', 'diagram.renderFailed': 'ไม่สามารถเรนเดอร์ไดอะแกรมได้', 'diagram.notInstalled': 'ไม่ได้ติดตั้งตัวเรนเดอร์ไดอะแกรม จะแสดงซอร์สด้านล่าง',
|
|
34
|
+
'diagram.theme': 'ธีม', 'diagram.zoomIn': 'ขยาย', 'diagram.zoomOut': 'ย่อ', 'diagram.zoomReset': 'รีเซ็ตการซูม', 'shapefile.title': 'ESRI Shapefile', 'psd.title': 'เอกสาร Photoshop',
|
|
30
35
|
'shapefile.zoomIn': 'ซูมเข้า', 'shapefile.zoomOut': 'ซูมออก', 'shapefile.reset': 'รีเซ็ตมุมมอง',
|
|
31
36
|
'shapefile.projection': 'การฉาย: {name}', 'shapefile.attributes': 'แอตทริบิวต์ของฟีเจอร์',
|
|
32
37
|
'shapefile.featureLabel': 'ฟีเจอร์ {id}',
|
|
@@ -21,6 +21,11 @@ export const CATALOG_ZH_CN = {
|
|
|
21
21
|
'arxml.title': 'AUTOSAR XML', 'a2l.title': 'ASAM A2L', 'asc.title': 'Vector ASC 日志',
|
|
22
22
|
'blf.title': 'Vector BLF 日志', 'mf4.title': 'ASAM MDF 4', 'pcap.title': 'PCAP 捕获',
|
|
23
23
|
'pcapng.title': 'PCAPNG 捕获', 'mermaid.title': 'Mermaid 图表', 'plantuml.title': 'PlantUML 图表',
|
|
24
|
+
'diagram.ready': '就绪', 'diagram.rendering': '渲染中…', 'diagram.rendered': '已渲染', 'diagram.invalid': '无效', 'diagram.modified': '已修改',
|
|
25
|
+
'diagram.diagram': '图表', 'diagram.split': '分屏', 'diagram.source': '源代码', 'diagram.render': '渲染', 'diagram.undo': '撤销', 'diagram.redo': '重做',
|
|
26
|
+
'diagram.copySvg': '复制 SVG', 'diagram.copySource': '复制源代码', 'diagram.svgCopied': '已复制 SVG', 'diagram.sourceCopied': '已复制源代码',
|
|
27
|
+
'diagram.editable': '可编辑', 'diagram.edited': '已编辑', 'diagram.renderFailed': '无法渲染图表。', 'diagram.notInstalled': '未安装图表渲染器。下方显示源代码。',
|
|
28
|
+
'diagram.theme': '主题', 'diagram.zoomIn': '放大', 'diagram.zoomOut': '缩小', 'diagram.zoomReset': '重置缩放',
|
|
24
29
|
'shapefile.title': 'ESRI Shapefile', 'psd.title': 'Photoshop 文档',
|
|
25
30
|
'shapefile.zoomIn': '放大', 'shapefile.zoomOut': '缩小', 'shapefile.reset': '重置视图',
|
|
26
31
|
'shapefile.projection': '投影:{name}', 'shapefile.attributes': '要素属性', 'shapefile.featureLabel': '要素 {id}',
|
|
@@ -69,11 +74,26 @@ export const CATALOG_ZH_CN = {
|
|
|
69
74
|
'parquet.copyTable': '复制表格', 'parquet.copied': '已复制到剪贴板',
|
|
70
75
|
'word.title': 'Word 文档', 'word.zoomIn': '放大', 'word.zoomOut': '缩小',
|
|
71
76
|
'word.reset': '重置', 'word.print': '打印', 'word.printUnavailable': '此平台不支持打印。',
|
|
72
|
-
'word.empty': '此文档没有可读取的文本。',
|
|
77
|
+
'word.empty': '此文档没有可读取的文本。', 'word.chart': '图表',
|
|
78
|
+
'word.chartUnsupported': '无法呈现 {type} 图表,已显示占位符。',
|
|
73
79
|
'diag.word.invalid-format': '无法将此文件作为 Word 文档读取。',
|
|
80
|
+
'diag.word.password-required': '此 Word 文档需要密码。',
|
|
81
|
+
'diag.word.corrupted': '此 Word 文档已损坏。',
|
|
82
|
+
'diag.word.recovered-corruption': '已从损坏的片段表中部分恢复文档。',
|
|
83
|
+
'diag.word.render-failed': '无法呈现此 Word 文档。',
|
|
74
84
|
'diag.word.missing-dependency': '此平台未安装 DOCX 渲染器。',
|
|
75
|
-
'diag.word.limit-exceeded': '此 Word
|
|
85
|
+
'diag.word.limit-exceeded': '此 Word 文档超过配置的输入限制。',
|
|
76
86
|
'diag.word.decompression-limit': '此 Word 文档声明的解压后数据量超过安全打开限制。',
|
|
87
|
+
'diag.word.page-limit': '仅呈现了前 {count} 页。',
|
|
88
|
+
'diag.word.image-limit': '嵌入图像超过配置的大小限制,已省略。',
|
|
89
|
+
'diag.word.embedded-limit': '已达到嵌入文件限制,剩余对象已省略。',
|
|
90
|
+
'diag.word.blocked-external-resource': '出于安全考虑,已阻止 Word 文档中的外部资源。',
|
|
91
|
+
'diag.word.embedded-workbook-disabled': '电子表格支持不可用,未呈现嵌入工作簿。',
|
|
92
|
+
'diag.word.embedded-workbook-failed': '无法呈现嵌入工作簿。',
|
|
93
|
+
'diag.word.chart-fallback-used': '已使用图表中包含的回退图像。',
|
|
94
|
+
'diag.word.unsupported-chart': '不支持 {type} 图表类型,已使用占位符。',
|
|
95
|
+
'diag.word.fallback-renderer-used': '已使用宿主回退呈现器。',
|
|
96
|
+
'diag.word.fallback-renderer-failed': '宿主回退呈现器失败。',
|
|
77
97
|
'diag.word.legacy-partial': '部分旧版 Word 格式无法显示。',
|
|
78
98
|
'diag.word.embedded-partial': '部分嵌入的 Word 对象无法显示。', 'word.image': '嵌入图像',
|
|
79
99
|
'hwp.title': 'HWP 文档', 'hwp.zoomIn': '放大', 'hwp.zoomOut': '缩小', 'hwp.reset': '重置',
|
|
@@ -88,9 +108,11 @@ export const CATALOG_ZH_CN = {
|
|
|
88
108
|
'ppt.jump': '转到幻灯片', 'ppt.mode.single': '单张幻灯片', 'ppt.mode.continuous': '连续显示',
|
|
89
109
|
'ppt.empty': '此演示文稿不包含幻灯片。',
|
|
90
110
|
'diag.ppt.invalid-format': '无法将此文件作为 PowerPoint 演示文稿读取。',
|
|
111
|
+
'diag.ppt.corrupted': '此 PowerPoint 演示文稿已损坏。',
|
|
91
112
|
'diag.ppt.empty': '此演示文稿没有可渲染的幻灯片。',
|
|
92
113
|
'diag.ppt.pdf-missing-dependency': 'PDF 回退功能需要此平台提供 PDF.js。',
|
|
93
114
|
'diag.ppt.limit-exceeded': '只能加载此演示文稿的一部分。',
|
|
115
|
+
'diag.ppt.unsupported-object': '呈现此演示文稿时,{objectKind} 对象被按 {handling} 方式处理。',
|
|
94
116
|
'markdown.title': 'Markdown', 'markdown.preview': '预览', 'markdown.split': '拆分', 'markdown.source': '源代码',
|
|
95
117
|
'markdown.render': '渲染', 'markdown.copyHtml': '复制 HTML', 'markdown.copySource': '复制源代码',
|
|
96
118
|
'markdown.undo': '撤销', 'markdown.redo': '重做', 'markdown.ready': '就绪',
|
|
@@ -103,11 +125,13 @@ export const CATALOG_ZH_CN = {
|
|
|
103
125
|
'diag.markdown.limit-exceeded': 'Markdown 文档超过支持的限制。',
|
|
104
126
|
'archive.title': '压缩包', 'archive.search': '搜索条目', 'archive.entries': '{count} 个条目',
|
|
105
127
|
'archive.previewUnavailable': '无法预览', 'archive.mediaUnsupported': '不支持媒体预览。',
|
|
106
|
-
'archive.encrypted': '此压缩包已加密。', '
|
|
128
|
+
'archive.encrypted': '此压缩包已加密。', 'archive.encryptedEntries': '此压缩包包含 {count} 个加密条目。',
|
|
129
|
+
'archive.encryptedEntry': '此条目已加密,无法预览或保存。', 'archive.encryptedStatus': '已加密', 'diag.archive.invalid-format': '无法将此文件作为压缩包读取。',
|
|
107
130
|
'diag.archive.limit-exceeded': '压缩包超过支持的限制。',
|
|
108
131
|
'archive.preview': '压缩包预览', 'archive.summary': '正在以只读预览模式浏览压缩包结构。',
|
|
109
132
|
'archive.filter': '筛选', 'archive.path': '路径', 'archive.type': '类型',
|
|
110
133
|
'archive.compressedSize': '压缩后大小', 'archive.originalSize': '原始大小', 'archive.modified': '修改时间',
|
|
134
|
+
'archive.compressedStatus': '已压缩', 'archive.storedStatus': '未压缩存储',
|
|
111
135
|
'archive.files': '文件', 'archive.directories': '目录', 'archive.visible': '可见',
|
|
112
136
|
'archive.file': '文件', 'archive.directory': '目录', 'archive.noMatches': '未找到匹配的条目。',
|
|
113
137
|
'archive.entryPreview': '条目预览', 'archive.chooseFile': '选择文件', 'archive.idle': '空闲',
|
|
@@ -116,7 +140,7 @@ export const CATALOG_ZH_CN = {
|
|
|
116
140
|
'archive.loadingContent': '正在加载预览…', 'archive.ready': '就绪',
|
|
117
141
|
'archive.textReady': '已将所选压缩包条目渲染为纯文本。',
|
|
118
142
|
'archive.binaryReady': '已将所选压缩包条目渲染为十六进制预览。',
|
|
119
|
-
'archive.androidBinaryXmlReady': '已从 Android 二进制 XML 解码。',
|
|
143
|
+
'archive.androidBinaryXmlReady': '已从 Android 二进制 XML 解码。', 'archive.delegatedReady': '已使用宿主查看器打开。',
|
|
120
144
|
'archive.audioReady': '正在播放所选音频条目。',
|
|
121
145
|
'archive.imageReady': '正在显示所选图像条目。',
|
|
122
146
|
'archive.videoReady': '正在播放所选视频条目。',
|
|
@@ -153,7 +177,7 @@ export const CATALOG_ZH_CN = {
|
|
|
153
177
|
'jsonl.add': '添加行', 'jsonl.delete': '删除所选项', 'jsonl.edit': '编辑', 'jsonl.apply': '应用',
|
|
154
178
|
'jsonl.cancel': '取消', 'jsonl.preview': '搜索和选择仅适用于已加载的预览。',
|
|
155
179
|
'jsonl.showMore': '再显示 5,000 行', 'jsonl.invalidSave': '请先修复无效的编辑行再保存。',
|
|
156
|
-
'jsonl.rowValid': '第 {line} 行,有效 JSON', 'jsonl.rowInvalid': '第 {line} 行,无效 JSON',
|
|
180
|
+
'jsonl.rowValid': '第 {line} 行,有效 JSON', 'jsonl.rowInvalid': '第 {line} 行,无效 JSON', 'jsonl.singleLine': '每条 JSON Lines 记录必须保持在一个物理行内。',
|
|
157
181
|
'diag.limit-exceeded.rows': '已达到行数限制,仅解析前 {count} 行。',
|
|
158
182
|
'diag.limit-exceeded.input': '文件超过支持的最大大小({maxBytes} 字节)。',
|
|
159
183
|
'diag.limit-exceeded.decompressed': '压缩包声明的解压后数据超过支持的限制({maxBytes} 字节)。',
|
|
@@ -15,12 +15,14 @@ export declare class ArchiveError extends Error {
|
|
|
15
15
|
}
|
|
16
16
|
export interface ArchiveParseOptions extends ParseOptions {
|
|
17
17
|
fileName?: string;
|
|
18
|
+
password?: string;
|
|
18
19
|
}
|
|
19
20
|
export interface ArchiveStreamOptions {
|
|
20
21
|
fileName?: string;
|
|
21
22
|
totalSize?: number;
|
|
22
23
|
signal?: AbortSignal;
|
|
23
24
|
limits?: ResourceLimits;
|
|
25
|
+
password?: string;
|
|
24
26
|
}
|
|
25
27
|
export declare function parseArchive(data: Uint8Array, decoder: ArchiveDecoder, options?: ArchiveParseOptions): Promise<{
|
|
26
28
|
outcome: ParseOutcome<ArchiveDocument>;
|
|
@@ -19,7 +19,7 @@ export async function parseArchive(data, decoder, options = {}) {
|
|
|
19
19
|
if (options.fileName?.toLowerCase().endsWith('.dmg') && !hasDmgTrailer(data))
|
|
20
20
|
return failed('invalid-format', 'diag.archive.invalid-format', started);
|
|
21
21
|
try {
|
|
22
|
-
const raw = await decoder.openArchive(data, openOptionsFrom(options.limits, options.signal));
|
|
22
|
+
const raw = await decoder.openArchive(data, openOptionsFrom(options.limits, options.signal, options.password));
|
|
23
23
|
return finalizeOpen(raw, options.limits, started);
|
|
24
24
|
}
|
|
25
25
|
catch (error) {
|
|
@@ -43,25 +43,26 @@ export async function openArchiveStream(source, options = {}) {
|
|
|
43
43
|
if (options.signal?.aborted)
|
|
44
44
|
return failed('aborted', 'diag.aborted', started, true, true);
|
|
45
45
|
try {
|
|
46
|
-
const raw = await source.openArchive(openOptionsFrom(options.limits, options.signal));
|
|
46
|
+
const raw = await source.openArchive(openOptionsFrom(options.limits, options.signal, options.password));
|
|
47
47
|
return finalizeOpen(raw, options.limits, started);
|
|
48
48
|
}
|
|
49
49
|
catch (error) {
|
|
50
50
|
return openError(error, started);
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
|
-
function openOptionsFrom(limits, signal) { return { maxEntries: limits?.maxEntries ?? ARCHIVE_DEFAULT_LIMITS.maxEntries, maxDecompressedBytes: limits?.maxDecompressedBytes ?? ARCHIVE_DEFAULT_LIMITS.maxDecompressedBytes, ...(signal ? { signal } : {}) }; }
|
|
53
|
+
function openOptionsFrom(limits, signal, password) { return { maxEntries: limits?.maxEntries ?? ARCHIVE_DEFAULT_LIMITS.maxEntries, maxDecompressedBytes: limits?.maxDecompressedBytes ?? ARCHIVE_DEFAULT_LIMITS.maxDecompressedBytes, ...(signal ? { signal } : {}), ...(password !== undefined ? { password } : {}) }; }
|
|
54
54
|
function finalizeOpen(raw, limits, started) {
|
|
55
55
|
const maxEntries = limits?.maxEntries ?? ARCHIVE_DEFAULT_LIMITS.maxEntries;
|
|
56
56
|
const entries = raw.entries.slice(0, maxEntries);
|
|
57
57
|
const partial = entries.length !== raw.entries.length;
|
|
58
58
|
const handle = limitHandle(raw, limits?.maxDecompressedBytes ?? ARCHIVE_DEFAULT_LIMITS.maxDecompressedBytes);
|
|
59
|
-
|
|
59
|
+
const document = { entries, ...(raw.encrypted !== undefined ? { encrypted: raw.encrypted } : {}) };
|
|
60
|
+
return { handle, outcome: { result: partial ? { status: 'partial', document, diagnostics: [{ severity: 'warning', code: 'archive.limit-exceeded', messageKey: 'diag.archive.limit-exceeded' }] } : { status: 'ok', document, diagnostics: [] }, execution: { workerUsed: false, hardLimitEnforced: false, elapsedMillis: Date.now() - started } } };
|
|
60
61
|
}
|
|
61
62
|
function openError(error, started) { const known = error instanceof ArchiveError ? error : new ArchiveError('invalid-format', 'diag.archive.invalid-format'); return { outcome: { result: { status: 'failed', failure: { code: known.code, retryable: known.code === 'aborted' || known.code === 'password-required', messageKey: known.messageKey }, diagnostics: [] }, execution: { workerUsed: false, hardLimitEnforced: false, elapsedMillis: Date.now() - started } } }; }
|
|
62
63
|
function failed(code, messageKey, started, retryable = false, hardLimitEnforced = true) { return { outcome: { result: { status: 'failed', failure: { code, retryable, messageKey }, diagnostics: [] }, execution: { workerUsed: false, hardLimitEnforced, elapsedMillis: Date.now() - started } } }; }
|
|
63
64
|
function hasDmgTrailer(data) { return data.byteLength >= 512 && [0x6b, 0x6f, 0x6c, 0x79].every((x, i) => data[data.byteLength - 512 + i] === x); }
|
|
64
|
-
function limitHandle(raw, maxTotal) { let used = 0; let reserved = 0; return { entries: raw.entries, async extract(id, opts) { const allowance = Math.min(opts.maxBytes, maxTotal - used - reserved); if (allowance <= 0)
|
|
65
|
+
function limitHandle(raw, maxTotal) { let used = 0; let reserved = 0; return { entries: raw.entries, ...(raw.encrypted !== undefined ? { encrypted: raw.encrypted } : {}), async extract(id, opts) { const allowance = Math.min(opts.maxBytes, maxTotal - used - reserved); if (allowance <= 0)
|
|
65
66
|
throw new ArchiveError('limit-exceeded', 'diag.archive.limit-exceeded'); reserved += allowance; try {
|
|
66
67
|
const bytes = await raw.extract(id, { ...opts, maxBytes: allowance });
|
|
67
68
|
used += bytes.byteLength;
|