omni-viewer-core 0.16.0 → 0.18.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 +128 -1
- package/dist/i18n/catalog.de.js +7 -2
- package/dist/i18n/catalog.en.js +184 -2
- package/dist/i18n/catalog.fr.js +7 -2
- package/dist/i18n/catalog.it.js +7 -2
- package/dist/i18n/catalog.ja.js +164 -2
- package/dist/i18n/catalog.ko.js +164 -2
- package/dist/i18n/catalog.th.js +7 -2
- package/dist/i18n/catalog.zh-cn.js +158 -2
- package/dist/parsers/coreml/index.d.ts +232 -0
- package/dist/parsers/coreml/index.js +2498 -0
- package/dist/parsers/openvino/index.d.ts +141 -0
- package/dist/parsers/openvino/index.js +950 -0
- package/dist/parsers/pt2/index.d.ts +266 -0
- package/dist/parsers/pt2/index.js +1625 -0
- package/dist/parsers/safetensors/index.d.ts +6 -0
- package/dist/parsers/safetensors/index.js +175 -28
- package/dist/registry/index.d.ts +4 -1
- package/dist/registry/index.js +21 -1
- package/dist/registry/probe.js +16 -0
- package/dist/registry/sniff.d.ts +2 -1
- package/dist/registry/sniff.js +6 -0
- package/dist/styles/audio.css +82 -18
- package/dist/styles/coreml.css +4 -0
- package/dist/styles/openvino.css +4 -0
- package/dist/styles/pt2.css +3 -0
- package/dist/viewers/audio/audio-window.d.ts +70 -0
- package/dist/viewers/audio/audio-window.js +246 -0
- package/dist/viewers/audio/controller.d.ts +10 -1
- package/dist/viewers/audio/controller.js +11 -2
- package/dist/viewers/audio/index.d.ts +37 -2
- package/dist/viewers/audio/index.js +508 -118
- package/dist/viewers/audio/mp3-analyzer.d.ts +9 -0
- package/dist/viewers/audio/mp3-analyzer.js +50 -0
- package/dist/viewers/audio/spectrogram-view.d.ts +121 -0
- package/dist/viewers/audio/spectrogram-view.js +303 -0
- package/dist/viewers/audio/spectrogram.d.ts +57 -0
- package/dist/viewers/audio/spectrogram.js +256 -0
- package/dist/viewers/audio/styles.js +82 -18
- package/dist/viewers/coreml/index.d.ts +18 -0
- package/dist/viewers/coreml/index.js +767 -0
- package/dist/viewers/coreml/styles.d.ts +1 -0
- package/dist/viewers/coreml/styles.js +8 -0
- package/dist/viewers/openvino/index.d.ts +33 -0
- package/dist/viewers/openvino/index.js +522 -0
- package/dist/viewers/openvino/styles.d.ts +1 -0
- package/dist/viewers/openvino/styles.js +5 -0
- package/dist/viewers/pt2/index.d.ts +21 -0
- package/dist/viewers/pt2/index.js +759 -0
- package/dist/viewers/pt2/styles.d.ts +1 -0
- package/dist/viewers/pt2/styles.js +4 -0
- package/dist/viewers/safetensors/index.d.ts +7 -0
- package/dist/viewers/safetensors/index.js +23 -1
- package/package.json +31 -1
package/README.md
CHANGED
|
@@ -16,7 +16,8 @@ models, viewers mount into a DOM element, and everything host-specific
|
|
|
16
16
|
legacy PPT), Markdown, LaTeX (structure and math preview, not typesetting)
|
|
17
17
|
- **Data & spreadsheets** — Excel, CSV/TSV, JSON, JSONL/NDJSON, YAML, TOML,
|
|
18
18
|
Parquet, Avro, HDF5, MATLAB MAT, NumPy (NPY/NPZ), Safetensors, GGUF, ONNX, TFLite/LiteRT,
|
|
19
|
-
Keras (.keras and legacy .h5),
|
|
19
|
+
Keras (.keras and legacy .h5), Core ML (.mlmodel and .mlpackage),
|
|
20
|
+
OpenVINO IR (.xml + .bin), PyTorch Export (.pt2), Protocol Buffers, ReqIF, SQLite
|
|
20
21
|
- **Media & graphics** — audio (waveform/spectrogram), video, images,
|
|
21
22
|
Photoshop PSD
|
|
22
23
|
- **Engineering & automotive** — CAN DBC, AUTOSAR ARXML, ASAM A2L, Vector
|
|
@@ -172,6 +173,132 @@ contents distinguish a Keras model from any other HDF5 file; hosts that read the
|
|
|
172
173
|
whole file can refine that with `looksLikeKerasHdf5` from
|
|
173
174
|
`omni-viewer-core/parsers/keras` and mount the Keras viewer instead.
|
|
174
175
|
|
|
176
|
+
### Core ML models
|
|
177
|
+
|
|
178
|
+
A `.mlmodel` is a serialized `CoreML.Specification.Model` protobuf, and an
|
|
179
|
+
`.mlpackage` is a bundle whose `Manifest.json` points at one such spec plus the
|
|
180
|
+
weight blobs its ML Program references. One entry point reads both — bytes that
|
|
181
|
+
open with a ZIP header are treated as a packaged bundle:
|
|
182
|
+
|
|
183
|
+
```ts
|
|
184
|
+
import { mountCoremlViewer } from 'omni-viewer-core/viewers/coreml';
|
|
185
|
+
|
|
186
|
+
await mountCoremlViewer({ fileName: file.name, data: bytes }, container, ctx);
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Weight payloads are never decoded: blob references resolve to a file, an offset,
|
|
190
|
+
and a byte count, and inline weight tensors to their size and quantization, so a
|
|
191
|
+
multi-gigabyte model costs nothing to open. Package members are read in place,
|
|
192
|
+
and JSZip is only consulted for a bundle that was re-zipped with compression.
|
|
193
|
+
|
|
194
|
+
Two model families carry a graph, and the viewer reads them to different depths:
|
|
195
|
+
|
|
196
|
+
- An **ML Program** (Core ML 5 and newer) is self-describing — every operation
|
|
197
|
+
names its own inputs, so attributes are shown exactly as the producer wrote
|
|
198
|
+
them, with no schema knowledge involved.
|
|
199
|
+
- A **neural network** (the older encoding) stores each layer's parameters in a
|
|
200
|
+
distinct message per layer type. Layer types resolve for all of them, and
|
|
201
|
+
attributes are decoded for the common types; weights need no such table, since
|
|
202
|
+
`WeightParams` has one shape everywhere it appears and is found structurally.
|
|
203
|
+
|
|
204
|
+
The viewer provides a per-graph computation graph with operation, value, and
|
|
205
|
+
weight inspection, navigation into the blocks a control-flow operation
|
|
206
|
+
references, and searchable operation, input/output, weight, package, and
|
|
207
|
+
model-information panels. Custom layers, pipeline stages, unmapped layer types,
|
|
208
|
+
and weight files that are not present are surfaced as warnings.
|
|
209
|
+
|
|
210
|
+
Both extensions route by extension, and an extensionless zipped bundle is
|
|
211
|
+
resolved by `probeContainer` from its `Manifest.json` + `Data/com.apple.CoreML`
|
|
212
|
+
layout. A `.mlmodel` carries no leading magic, so hosts that can read a whole
|
|
213
|
+
extensionless file can refine routing with `looksLikeCoremlSpec` from
|
|
214
|
+
`omni-viewer-core/parsers/coreml`.
|
|
215
|
+
|
|
216
|
+
### OpenVINO IR models
|
|
217
|
+
|
|
218
|
+
An OpenVINO IR is two files that share a base name. The `.xml` is ordinary XML
|
|
219
|
+
whose root is `<net name version>` holding `<layers>` and `<edges>`; the `.bin`
|
|
220
|
+
has no header, magic, or index of its own — it is a raw concatenation of
|
|
221
|
+
constant payloads that `Const` layers address by `offset` and `size`. The core
|
|
222
|
+
receives the `.xml` as its input and the `.bin` as a sidecar the adapter reads
|
|
223
|
+
from the same directory:
|
|
224
|
+
|
|
225
|
+
```ts
|
|
226
|
+
import { mountOpenVinoViewer } from 'omni-viewer-core/viewers/openvino';
|
|
227
|
+
|
|
228
|
+
await mountOpenVinoViewer({ fileName: file.name, data: xmlBytes }, container, ctx, {
|
|
229
|
+
sidecars: { bin: binBytes } // optional
|
|
230
|
+
});
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
The topology renders in full without the `.bin`. When it is supplied, every
|
|
234
|
+
constant's byte range is checked against it and its leading values are decoded
|
|
235
|
+
for a preview (all fixed-width IR element types, including f16, bf16, and the
|
|
236
|
+
f8 variants); the rest of the weights are never read, so a multi-gigabyte model
|
|
237
|
+
costs nothing beyond its XML. A `.bin` that is too short for the constants, or
|
|
238
|
+
that has bytes no constant references, is surfaced as a warning — the usual
|
|
239
|
+
signs of a mismatched pair (the unreferenced-bytes signal is only trusted when
|
|
240
|
+
every constant was read).
|
|
241
|
+
|
|
242
|
+
The viewer provides a computation graph with layer inspection (ports with
|
|
243
|
+
their producers and consumers, `<data>` attributes, `rt_info`, weight ranges,
|
|
244
|
+
and the sub-graphs a `Loop`, `TensorIterator`, or `If` layer carries in its
|
|
245
|
+
body), plus searchable layer, constant, input/output, and model-information
|
|
246
|
+
panels. IR v10 and v11 are the target; the legacy v7-and-earlier layout
|
|
247
|
+
(`<layer precision>` with `<blobs>`) is read on a best-effort basis and
|
|
248
|
+
flagged.
|
|
249
|
+
|
|
250
|
+
Routing is by content only: `.xml` is shared with every other XML dialect, so
|
|
251
|
+
the descriptor claims no extension and `detectViewer` reaches the viewer
|
|
252
|
+
through its text sample (`looksLikeOpenVinoIr`, also exported from
|
|
253
|
+
`omni-viewer-core/parsers/openvino`). A `.bin` opened on its own has nothing to
|
|
254
|
+
identify it; an adapter that wants to open one should look for the same-named
|
|
255
|
+
`.xml` beside it.
|
|
256
|
+
|
|
257
|
+
### PyTorch Export packages (.pt2)
|
|
258
|
+
|
|
259
|
+
A `.pt2` is what `torch.export.save` writes: a ZIP whose members sit under a
|
|
260
|
+
folder named after the file, with the serialized Export IR program in
|
|
261
|
+
`models/<name>.json`, parameters and buffers as raw storage bytes under
|
|
262
|
+
`data/weights/` (indexed by `<name>_weights_config.json`), tensor constants and
|
|
263
|
+
script objects under `data/constants/`, pickled sample inputs, optional
|
|
264
|
+
AOTInductor artifacts under `data/aotinductor/`, and user files under `extra/`.
|
|
265
|
+
|
|
266
|
+
```ts
|
|
267
|
+
import { mountPt2Viewer } from 'omni-viewer-core/viewers/pt2';
|
|
268
|
+
|
|
269
|
+
await mountPt2Viewer({ fileName: file.name, data: bytes }, container, ctx);
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
`parsePt2` reads the archive's central directory and only the JSON members it
|
|
273
|
+
needs; stored weight payloads are viewed in place and sampled for a short value
|
|
274
|
+
preview (every fixed-width torch dtype, including bf16 and the float8
|
|
275
|
+
variants), so a multi-gigabyte package costs nothing beyond its program JSON.
|
|
276
|
+
The viewer shows the ATen graph — placeholders coloured by signature kind
|
|
277
|
+
(user input, parameter, buffer, constant), operator nodes, higher-order
|
|
278
|
+
control-flow nodes with their `cond` / `while_loop` sub-graphs, and outputs —
|
|
279
|
+
with a node inspector (arguments, producers and consumers, module stack,
|
|
280
|
+
metadata, stack trace), plus searchable tables of nodes (sub-graph nodes
|
|
281
|
+
included), weights and constants with their archive status, the graph
|
|
282
|
+
signature (inputs and outputs by kind, buffer mutations, constant inputs), the
|
|
283
|
+
nn.Module hierarchy with preserved call signatures, model information (schema
|
|
284
|
+
and torch versions, opsets, range constraints, guards, operator counts), and
|
|
285
|
+
the archive listing. Symbolic shapes are printed as expressions (`2*s0`)
|
|
286
|
+
rather than the sympy `srepr` the file stores.
|
|
287
|
+
|
|
288
|
+
A package holding several programs (`package_pt2`) gets a model selector; an
|
|
289
|
+
AOTInductor-only package (`aoti_compile_and_package`) opens on the archive
|
|
290
|
+
tab with its compile metadata. The pre-PT2 `torch.export.save` layout
|
|
291
|
+
(`serialized_exported_program.json` beside torch.save pickles) is read on a
|
|
292
|
+
best-effort basis: the graph is complete, but weights are listed from the
|
|
293
|
+
signature without a preview. Schema 8.x is the target; enums
|
|
294
|
+
written as member names by older versions are accepted.
|
|
295
|
+
|
|
296
|
+
Routing is by the `.pt2` extension; an extensionless package reaches the viewer
|
|
297
|
+
through `probeContainer`, which recognizes the `archive_format` marker
|
|
298
|
+
(`looksLikePt2Archive` is also exported from `omni-viewer-core/parsers/pt2`).
|
|
299
|
+
A plain `torch.save` checkpoint (`.pt` / `.pth`) is not an Export package and
|
|
300
|
+
is not claimed.
|
|
301
|
+
|
|
175
302
|
### Archive host integration
|
|
176
303
|
|
|
177
304
|
Archive decompression remains adapter-owned: pass an `ArchiveDecoder` to
|
package/dist/i18n/catalog.de.js
CHANGED
|
@@ -3,14 +3,18 @@
|
|
|
3
3
|
export const CATALOG_DE = {
|
|
4
4
|
'audio.title': 'Audio', 'video.title': 'Video', 'dbc.title': 'CAN-Datenbank',
|
|
5
5
|
'audio.play': 'Wiedergabe', 'audio.pause': 'Pause', 'audio.stop': 'Stopp',
|
|
6
|
-
'audio.
|
|
6
|
+
'audio.volume': 'Lautstärke',
|
|
7
|
+
'audio.loop.region': 'Bereich wiederholen', 'audio.loop.track': 'Titel wiederholen',
|
|
7
8
|
'audio.region.start': 'Bereichsstart (s)', 'audio.region.end': 'Bereichsende (s)', 'audio.region.duration': 'Bereichslänge (s)',
|
|
8
9
|
'audio.zoom': 'Zoom', 'audio.zoomIn': 'Vergrößern', 'audio.zoomOut': 'Verkleinern', 'audio.zoomFit': 'Anpassen',
|
|
9
10
|
'audio.visualization': 'Ansicht', 'audio.vis.waveform': 'Wellenform', 'audio.vis.spectrogram': 'Spektrogramm',
|
|
10
11
|
'audio.vis.both': 'Beide', 'audio.download': 'Herunterladen',
|
|
11
|
-
'audio.spectrogramScale': 'Skala',
|
|
12
|
+
'audio.spectrogramScale': 'Spektrogramm-Skala',
|
|
12
13
|
'audio.scale.linear': 'Linear', 'audio.scale.mel': 'Mel', 'audio.scale.bark': 'Bark', 'audio.scale.erb': 'ERB',
|
|
14
|
+
'audio.scale.logarithmic': 'Logarithmisch',
|
|
15
|
+
'audio.frequencyRange': 'Frequenzbereich', 'audio.frequency.full': 'Gesamt', 'audio.frequency.limit': 'Bis {hz}',
|
|
13
16
|
'audio.error.save': 'Die Audiodatei konnte nicht gespeichert werden.',
|
|
17
|
+
'audio.error.spectrogram': 'Das Spektrogramm für diesen Bereich konnte nicht gezeichnet werden.',
|
|
14
18
|
'audio.info.duration': 'Dauer', 'audio.info.sampleRate': 'Abtastrate', 'audio.info.channels': 'Kanäle',
|
|
15
19
|
'audio.info.channelLevels': 'L Spitze {leftPeak}, RMS {leftRms} | R Spitze {rightPeak}, RMS {rightRms}',
|
|
16
20
|
'audio.info.bitDepth': 'Bittiefe', 'audio.info.format': 'Format', 'audio.info.fileSize': 'Dateigröße',
|
|
@@ -21,6 +25,7 @@ export const CATALOG_DE = {
|
|
|
21
25
|
'audio.error.decode': 'Der Browser konnte diesen Audio-Codec nicht dekodieren. Verwenden Sie einen Host mit dem erforderlichen Codec oder transkodieren Sie die Datei.',
|
|
22
26
|
'audio.warning.analysisFailed': 'Die Wellenform-Voranalyse ist fehlgeschlagen — es wird auf die vollständige Browser-Dekodierung zurückgegriffen, die bei einer Datei dieser Größe langsam sein kann.',
|
|
23
27
|
'audio.warning.analysisSkipped': 'Die Wellenform-Voranalyse ist für dieses Format nicht verfügbar — es wird auf die vollständige Browser-Dekodierung zurückgegriffen, die bei einer Datei dieser Größe langsam sein kann.',
|
|
28
|
+
'audio.warning.reducedFidelity': 'Zur Speicherersparnis mit reduzierter Qualität dekodiert; dem Spektrogramm fehlen die höchsten Frequenzen.',
|
|
24
29
|
'audio.vis.unavailableLarge': 'Das Spektrogramm ist für große Dateien, die aus vorberechneten Spitzenwerten gerendert werden, nicht verfügbar.',
|
|
25
30
|
'video.play': 'Wiedergabe', 'video.pause': 'Pause', 'video.stop': 'Stopp',
|
|
26
31
|
'video.skipBack': '⏪ -{seconds} s', 'video.skipForward': '⏩ +{seconds} s',
|
package/dist/i18n/catalog.en.js
CHANGED
|
@@ -6,14 +6,18 @@
|
|
|
6
6
|
export const CATALOG_EN = {
|
|
7
7
|
'audio.title': 'Audio', 'video.title': 'Video', 'dbc.title': 'CAN database',
|
|
8
8
|
'audio.play': 'Play', 'audio.pause': 'Pause', 'audio.stop': 'Stop',
|
|
9
|
-
'audio.
|
|
9
|
+
'audio.volume': 'Volume',
|
|
10
|
+
'audio.loop.region': 'Loop region', 'audio.loop.track': 'Loop track',
|
|
10
11
|
'audio.region.start': 'Region start (s)', 'audio.region.end': 'Region end (s)', 'audio.region.duration': 'Region length (s)',
|
|
11
12
|
'audio.zoom': 'Zoom', 'audio.zoomIn': 'Zoom in', 'audio.zoomOut': 'Zoom out', 'audio.zoomFit': 'Fit',
|
|
12
13
|
'audio.visualization': 'View', 'audio.vis.waveform': 'Waveform', 'audio.vis.spectrogram': 'Spectrogram',
|
|
13
14
|
'audio.vis.both': 'Both', 'audio.download': 'Download',
|
|
14
|
-
'audio.spectrogramScale': '
|
|
15
|
+
'audio.spectrogramScale': 'Spectrogram scale',
|
|
15
16
|
'audio.scale.linear': 'Linear', 'audio.scale.mel': 'Mel', 'audio.scale.bark': 'Bark', 'audio.scale.erb': 'ERB',
|
|
17
|
+
'audio.scale.logarithmic': 'Logarithmic',
|
|
18
|
+
'audio.frequencyRange': 'Frequency range', 'audio.frequency.full': 'Full', 'audio.frequency.limit': 'Up to {hz}',
|
|
16
19
|
'audio.error.save': 'Saving the audio file failed.',
|
|
20
|
+
'audio.error.spectrogram': 'The spectrogram could not be rendered for this range.',
|
|
17
21
|
'audio.info.duration': 'Duration', 'audio.info.sampleRate': 'Sample rate', 'audio.info.channels': 'Channels',
|
|
18
22
|
'audio.info.channelLevels': 'L peak {leftPeak}, RMS {leftRms} | R peak {rightPeak}, RMS {rightRms}',
|
|
19
23
|
'audio.info.bitDepth': 'Bit depth', 'audio.info.format': 'Format', 'audio.info.fileSize': 'File size',
|
|
@@ -24,6 +28,7 @@ export const CATALOG_EN = {
|
|
|
24
28
|
'audio.error.decode': 'The browser could not decode this audio codec. Try a host with the required codec or transcode the file.',
|
|
25
29
|
'audio.warning.analysisFailed': 'Waveform pre-analysis failed — falling back to a full browser decode, which may be slow for a file this large.',
|
|
26
30
|
'audio.warning.analysisSkipped': 'Waveform pre-analysis is unavailable for this format — falling back to a full browser decode, which may be slow for a file this large.',
|
|
31
|
+
'audio.warning.reducedFidelity': 'Decoded at reduced quality to fit this file in memory; the spectrogram loses its highest frequencies.',
|
|
27
32
|
'audio.vis.unavailableLarge': 'Spectrogram is unavailable for large files rendered from precomputed peaks.',
|
|
28
33
|
'video.play': 'Play', 'video.pause': 'Pause', 'video.stop': 'Stop',
|
|
29
34
|
'video.skipBack': '⏪ -{seconds}s', 'video.skipForward': '⏩ +{seconds}s',
|
|
@@ -210,6 +215,182 @@ export const CATALOG_EN = {
|
|
|
210
215
|
'tflite.inspector.inputs': 'Inputs', 'tflite.inspector.outputs': 'Outputs',
|
|
211
216
|
'tflite.inspector.intermediates': 'Intermediates', 'tflite.inspector.options': 'Options',
|
|
212
217
|
'tflite.inspector.customOptions': 'Custom options', 'tflite.inspector.subgraphs': 'Referenced subgraphs',
|
|
218
|
+
'coreml.title': 'Core ML model', 'coreml.search': 'Search operations, operands, and weights…',
|
|
219
|
+
'coreml.copyJson': 'Copy JSON', 'coreml.graph': 'Graph', 'coreml.unnamed': 'unnamed',
|
|
220
|
+
'coreml.operations': 'Operations', 'coreml.io': 'Inputs & Outputs', 'coreml.weights': 'Weights',
|
|
221
|
+
'coreml.packageContents': 'Package', 'coreml.modelInfo': 'Model Info',
|
|
222
|
+
'coreml.package': 'Package', 'coreml.updatable': 'Updatable',
|
|
223
|
+
'coreml.specVersion': 'specification v{version}',
|
|
224
|
+
'coreml.rows': '{shown} / {total} rows shown', 'coreml.noMatches': 'No rows match the current search.',
|
|
225
|
+
'coreml.selectNode': 'Select an operation or value to inspect it.',
|
|
226
|
+
'coreml.graphLimited': 'Graph preview shows {shown} of {total} items.',
|
|
227
|
+
'coreml.graphEdgesLimited': 'Only the first {count} connections are shown.',
|
|
228
|
+
'coreml.moreItems': '{count} more…', 'coreml.optional': 'Optional', 'coreml.default': 'default',
|
|
229
|
+
'coreml.unknown': 'unknown', 'coreml.external': 'from enclosing scope',
|
|
230
|
+
'coreml.yes': 'Yes', 'coreml.no': 'No', 'coreml.rootItem': 'root model',
|
|
231
|
+
'coreml.blobPresent': '{count} tensor(s), {referenced} referenced of {size} in the package',
|
|
232
|
+
'coreml.blobAbsent': '{count} tensor(s), {referenced} referenced — the file is not available here',
|
|
233
|
+
'coreml.weightFiles': 'Weight files',
|
|
234
|
+
'coreml.summary.operations': 'Operations', 'coreml.summary.graphs': 'Graphs',
|
|
235
|
+
'coreml.summary.inputs': 'Inputs', 'coreml.summary.outputs': 'Outputs',
|
|
236
|
+
'coreml.summary.functions': 'Functions', 'coreml.summary.specVersion': 'Spec version',
|
|
237
|
+
'coreml.kind.operation': 'Operation', 'coreml.kind.layer': 'Layer', 'coreml.kind.stage': 'Pipeline stage',
|
|
238
|
+
'coreml.kind.input': 'Input', 'coreml.kind.output': 'Output', 'coreml.kind.state': 'State',
|
|
239
|
+
'coreml.kind.trainingInput': 'Training input', 'coreml.kind.manifestItem': 'Manifest item',
|
|
240
|
+
'coreml.kind.archiveMember': 'Archive member',
|
|
241
|
+
'coreml.storage.blob': 'Weight file', 'coreml.storage.inline': 'Inline',
|
|
242
|
+
'coreml.column.index': '#', 'coreml.column.name': 'Name', 'coreml.column.type': 'Type',
|
|
243
|
+
'coreml.column.kind': 'Kind', 'coreml.column.inputs': 'Inputs', 'coreml.column.outputs': 'Outputs',
|
|
244
|
+
'coreml.column.attributes': 'Attributes', 'coreml.column.weights': 'Weights',
|
|
245
|
+
'coreml.column.function': 'Function', 'coreml.column.typeShape': 'Type / Shape',
|
|
246
|
+
'coreml.column.flexibility': 'Flexibility', 'coreml.column.optional': 'Optional',
|
|
247
|
+
'coreml.column.description': 'Description', 'coreml.column.graph': 'Graph', 'coreml.column.node': 'Operation',
|
|
248
|
+
'coreml.column.parameter': 'Parameter', 'coreml.column.shape': 'Shape', 'coreml.column.elements': 'Elements',
|
|
249
|
+
'coreml.column.dataSize': 'Data size', 'coreml.column.storage': 'Storage',
|
|
250
|
+
'coreml.column.location': 'Location', 'coreml.column.path': 'Path',
|
|
251
|
+
'coreml.info.modelType': 'Model type', 'coreml.info.specVersion': 'Specification version',
|
|
252
|
+
'coreml.info.availability': 'OS availability', 'coreml.info.description': 'Description',
|
|
253
|
+
'coreml.info.author': 'Author', 'coreml.info.license': 'License', 'coreml.info.version': 'Version',
|
|
254
|
+
'coreml.info.updatable': 'On-device update', 'coreml.info.fileSize': 'File size',
|
|
255
|
+
'coreml.info.functions': 'Functions', 'coreml.info.defaultFunction': 'Default function',
|
|
256
|
+
'coreml.info.graphs': 'Graphs', 'coreml.info.classLabels': 'Class labels',
|
|
257
|
+
'coreml.info.packageVersion': 'Package format', 'coreml.info.modelPath': 'Model path',
|
|
258
|
+
'coreml.inspector.inputs': 'Inputs', 'coreml.inspector.outputs': 'Outputs',
|
|
259
|
+
'coreml.inspector.attributes': 'Attributes', 'coreml.inspector.weights': 'Weights',
|
|
260
|
+
'coreml.inspector.graphs': 'Referenced graphs',
|
|
261
|
+
'coreml.warning.specVersion': 'The model declares specification version {version}, which this viewer does not have an OS mapping for.',
|
|
262
|
+
'coreml.warning.noModelType': 'The model declares no model type.',
|
|
263
|
+
'coreml.warning.emptyGraph': 'The model contains no operations.',
|
|
264
|
+
'coreml.warning.emptyProgram': 'The ML Program declares no functions.',
|
|
265
|
+
'coreml.warning.programVersion': 'The ML Program declares version {version}; this viewer targets version 1.',
|
|
266
|
+
'coreml.warning.emptyPipeline': 'The pipeline contains no stages.',
|
|
267
|
+
'coreml.warning.pipelineDepth': 'Pipeline nesting deeper than {limit} levels was not read.',
|
|
268
|
+
'coreml.warning.unknownLayer': 'Layer {name} declares no recognized layer type.',
|
|
269
|
+
'coreml.warning.customLayers': '{count} custom layer(s) require a matching runtime registration: {names}',
|
|
270
|
+
'coreml.warning.blobMissing': '{count} weight file(s) the model references are not in this package: {names}',
|
|
271
|
+
'coreml.warning.blobUnavailable': '{count} weight file(s) live beside this specification and were not read: {names}',
|
|
272
|
+
'coreml.warning.manifestMissing': 'The package has no Manifest.json; the model was located by its conventional path.',
|
|
273
|
+
'coreml.warning.manifestInvalid': 'The package Manifest.json could not be read.',
|
|
274
|
+
'coreml.warning.manifestUnreadable': 'The package Manifest.json could not be extracted, so the package contents are not described.',
|
|
275
|
+
'coreml.warning.textTruncated': 'Some text fields were longer than this viewer displays and were cut short.',
|
|
276
|
+
'coreml.warning.archiveEntryLimit': 'Only the first {limit} archive entries were read.',
|
|
277
|
+
'coreml.warning.serializedModel': 'This is a private serialized model; Apple documents no schema for its contents.',
|
|
278
|
+
'coreml.warning.linkedModel': 'This model links to a separate model file that this viewer does not read.',
|
|
279
|
+
'openvino.title': 'OpenVINO IR model', 'openvino.search': 'Search layers, ports, constants, and attributes…',
|
|
280
|
+
'openvino.copyJson': 'Copy JSON', 'openvino.unnamed': 'unnamed', 'openvino.unknown': 'unknown', 'openvino.scalar': 'scalar',
|
|
281
|
+
'openvino.irVersion': 'IR v{version}', 'openvino.noBin': 'no .bin supplied', 'openvino.binSize': '.bin {size}',
|
|
282
|
+
'openvino.graph': 'Graph', 'openvino.layers': 'Layers', 'openvino.constants': 'Constants',
|
|
283
|
+
'openvino.io': 'Inputs & Outputs', 'openvino.modelInfo': 'Model Info',
|
|
284
|
+
'openvino.rows': '{shown} / {total} rows shown', 'openvino.noMatches': 'No rows match the current search.',
|
|
285
|
+
'openvino.selectLayer': 'Select a layer to inspect it.',
|
|
286
|
+
'openvino.graphLimited': 'Graph preview shows {shown} of {total} layers.',
|
|
287
|
+
'openvino.graphEdgesLimited': 'Only the first {count} connections are shown.',
|
|
288
|
+
'openvino.moreItems': '{count} more…',
|
|
289
|
+
'openvino.kind.input': 'Input', 'openvino.kind.output': 'Output',
|
|
290
|
+
'openvino.summary.layers': 'Layers', 'openvino.summary.edges': 'Edges', 'openvino.summary.operators': 'Operator types',
|
|
291
|
+
'openvino.summary.constants': 'Constants', 'openvino.summary.weights': 'Weights', 'openvino.summary.io': 'Inputs / outputs',
|
|
292
|
+
'openvino.column.id': 'ID', 'openvino.column.name': 'Name', 'openvino.column.type': 'Type', 'openvino.column.version': 'Opset',
|
|
293
|
+
'openvino.column.inputs': 'Inputs', 'openvino.column.outputs': 'Outputs', 'openvino.column.attributes': 'Attributes',
|
|
294
|
+
'openvino.column.rtInfo': 'Runtime info', 'openvino.column.kind': 'Kind', 'openvino.column.shape': 'Shape',
|
|
295
|
+
'openvino.column.elements': 'Elements', 'openvino.column.offset': 'Offset', 'openvino.column.dataSize': 'Data size',
|
|
296
|
+
'openvino.column.status': 'Status', 'openvino.column.preview': 'Preview', 'openvino.column.tensorNames': 'Tensor names',
|
|
297
|
+
'openvino.column.typeShape': 'Type / Shape',
|
|
298
|
+
'openvino.status.unchecked': 'Not checked', 'openvino.status.available': 'In .bin',
|
|
299
|
+
'openvino.status.out-of-range': 'Beyond .bin', 'openvino.status.invalid': 'Invalid range',
|
|
300
|
+
'openvino.info.name': 'Network name', 'openvino.info.irVersion': 'IR version', 'openvino.info.opsets': 'Opsets',
|
|
301
|
+
'openvino.info.xmlSize': 'XML size', 'openvino.info.binSize': '.bin size', 'openvino.info.referencedBytes': 'Referenced weight bytes',
|
|
302
|
+
'openvino.info.layers': 'Layers', 'openvino.info.edges': 'Edges', 'openvino.info.operator': 'Operator',
|
|
303
|
+
'openvino.inspector.inputs': 'Inputs', 'openvino.inspector.outputs': 'Outputs', 'openvino.inspector.attributes': 'Attributes',
|
|
304
|
+
'openvino.inspector.weights': 'Weights', 'openvino.inspector.range': 'offset {offset} · {size}',
|
|
305
|
+
'openvino.inspector.preview': 'First {count} values', 'openvino.inspector.inputPort': 'input port', 'openvino.inspector.outputPort': 'output port',
|
|
306
|
+
'openvino.inspector.bodies': 'Sub-graphs', 'openvino.inspector.body': '{kind} · {layers} layers · {edges} edges',
|
|
307
|
+
'openvino.warning.noVersion': 'The <net> root declares no IR version.',
|
|
308
|
+
'openvino.warning.legacyVersion': 'IR version {version} predates the opset-based v10 layout; the legacy blobs were read on a best-effort basis.',
|
|
309
|
+
'openvino.warning.noLayers': 'The network contains no layers.',
|
|
310
|
+
'openvino.warning.layersLimited': 'Only the first {shown} of {total} layers were read.',
|
|
311
|
+
'openvino.warning.edgesLimited': 'Only the first {shown} of {total} edges were read.',
|
|
312
|
+
'openvino.warning.metadataLimited': '{count} metadata entries were not read.',
|
|
313
|
+
'openvino.warning.bodyLayersLimited': '{count} layer(s) inside control-flow sub-graphs were not read because the layer limit was reached.',
|
|
314
|
+
'openvino.warning.bodyEdgesLimited': '{count} edge(s) inside control-flow sub-graphs were not read because the edge limit was reached.',
|
|
315
|
+
'openvino.warning.bodiesLimited': '{count} control-flow sub-graph(s) beyond the per-layer limit were not kept.',
|
|
316
|
+
'openvino.warning.truncated': 'The XML ends before its root element closes; the topology may be incomplete.',
|
|
317
|
+
'openvino.warning.danglingEdges': '{count} edge(s) reference a layer that does not exist.',
|
|
318
|
+
'openvino.warning.invalidConstants': '{count} constant(s) declare an unreadable offset or size.',
|
|
319
|
+
'openvino.warning.noWeights': 'No .bin was supplied, so constants are shown by range only.',
|
|
320
|
+
'openvino.warning.weightsOutOfRange': '{count} constant(s) reach beyond the {size} .bin; it may belong to a different model.',
|
|
321
|
+
'openvino.warning.weightsUnreferenced': '{bytes} of the .bin are not referenced by any constant.',
|
|
322
|
+
'pt2.title': 'PyTorch Export program (.pt2)', 'pt2.eyebrowLegacy': 'PyTorch Export · legacy archive',
|
|
323
|
+
'pt2.search': 'Search nodes, values, weights, and modules…', 'pt2.selectModel': 'Model', 'pt2.copyJson': 'Copy JSON',
|
|
324
|
+
'pt2.schema': 'schema {version}', 'pt2.scalar': 'scalar', 'pt2.rootModule': '(root)', 'pt2.preserved': 'preserved',
|
|
325
|
+
'pt2.persistent': 'persistent', 'pt2.nonPersistent': 'non-persistent',
|
|
326
|
+
'pt2.graph': 'Graph', 'pt2.nodes': 'Nodes', 'pt2.weights': 'Weights & Constants', 'pt2.io': 'Inputs & Outputs',
|
|
327
|
+
'pt2.modules': 'Modules', 'pt2.modelInfo': 'Model Info', 'pt2.archive': 'Archive', 'pt2.extraFiles': 'Extra files', 'pt2.files': 'Files',
|
|
328
|
+
'pt2.rows': '{shown} / {total} rows shown', 'pt2.noMatches': 'No rows match the current search.',
|
|
329
|
+
'pt2.selectNode': 'Select a node or value to inspect it.', 'pt2.emptyGraph': 'The graph has no nodes.',
|
|
330
|
+
'pt2.graphLimited': 'Graph preview shows {shown} of {total} elements.',
|
|
331
|
+
'pt2.graphEdgesLimited': 'Only the first {count} connections are shown.', 'pt2.moreItems': '{count} more…',
|
|
332
|
+
'pt2.side.input': 'Input', 'pt2.side.output': 'Output',
|
|
333
|
+
'pt2.kind.user_input': 'User input', 'pt2.kind.parameter': 'Parameter', 'pt2.kind.buffer': 'Buffer',
|
|
334
|
+
'pt2.kind.tensor_constant': 'Tensor constant', 'pt2.kind.custom_obj': 'Custom object', 'pt2.kind.opaque_obj': 'Opaque object',
|
|
335
|
+
'pt2.kind.token': 'Token', 'pt2.kind.constant_input': 'Constant input', 'pt2.kind.user_output': 'User output',
|
|
336
|
+
'pt2.kind.loss_output': 'Loss output', 'pt2.kind.buffer_mutation': 'Buffer mutation', 'pt2.kind.parameter_mutation': 'Parameter mutation',
|
|
337
|
+
'pt2.kind.gradient_to_parameter': 'Gradient to parameter', 'pt2.kind.gradient_to_user_input': 'Gradient to user input',
|
|
338
|
+
'pt2.kind.user_input_mutation': 'User input mutation',
|
|
339
|
+
'pt2.status.raw': 'Raw bytes', 'pt2.status.pickled': 'Pickled (torch.save)', 'pt2.status.missing': 'Missing from archive',
|
|
340
|
+
'pt2.status.truncated': 'Shorter than tensor', 'pt2.status.unlisted': 'No payload listed',
|
|
341
|
+
'pt2.layout.pt2': 'PT2 archive', 'pt2.layout.legacy': 'Legacy torch.export.save layout',
|
|
342
|
+
'pt2.category.model': 'Program', 'pt2.category.weights': 'Weights', 'pt2.category.constants': 'Constants',
|
|
343
|
+
'pt2.category.sampleInputs': 'Sample inputs', 'pt2.category.aotinductor': 'AOTInductor', 'pt2.category.extra': 'Extra',
|
|
344
|
+
'pt2.category.archive': 'Archive marker', 'pt2.category.other': 'Other',
|
|
345
|
+
'pt2.column.index': '#', 'pt2.column.name': 'Name', 'pt2.column.op': 'Operator', 'pt2.column.module': 'Module',
|
|
346
|
+
'pt2.column.inputs': 'Inputs', 'pt2.column.outputs': 'Outputs', 'pt2.column.graph': 'Sub-graph', 'pt2.column.kind': 'Kind',
|
|
347
|
+
'pt2.column.placeholder': 'Placeholder', 'pt2.column.dtype': 'Dtype', 'pt2.column.shape': 'Shape', 'pt2.column.elements': 'Elements',
|
|
348
|
+
'pt2.column.bytes': 'Tensor bytes', 'pt2.column.path': 'Path', 'pt2.column.fileSize': 'File size', 'pt2.column.status': 'Status',
|
|
349
|
+
'pt2.column.preview': 'Preview', 'pt2.column.side': 'Side', 'pt2.column.value': 'Value', 'pt2.column.target': 'Target',
|
|
350
|
+
'pt2.column.typeShape': 'Type / Shape', 'pt2.column.detail': 'Detail', 'pt2.column.class': 'Class', 'pt2.column.nodes': 'Nodes',
|
|
351
|
+
'pt2.column.totalNodes': 'Nodes incl. children', 'pt2.column.signature': 'Call signature', 'pt2.column.forwardArgs': 'Forward args',
|
|
352
|
+
'pt2.column.category': 'Category', 'pt2.column.compressedSize': 'Compressed', 'pt2.column.method': 'Method',
|
|
353
|
+
'pt2.info.model': 'Model', 'pt2.info.torchVersion': 'PyTorch version', 'pt2.info.schemaVersion': 'Schema version',
|
|
354
|
+
'pt2.info.opsets': 'Opsets', 'pt2.info.verifiers': 'Verifiers', 'pt2.info.nodes': 'Nodes', 'pt2.info.values': 'Values',
|
|
355
|
+
'pt2.info.parameters': 'Parameters', 'pt2.info.weightBytes': 'Weight bytes', 'pt2.info.sampleInputs': 'Sample inputs',
|
|
356
|
+
'pt2.info.rangeConstraint': 'Range constraint', 'pt2.info.guard': 'Guard', 'pt2.info.operator': 'Operator',
|
|
357
|
+
'pt2.info.layout': 'Layout', 'pt2.info.fileSize': 'File size', 'pt2.info.prefix': 'Package folder', 'pt2.info.models': 'Programs',
|
|
358
|
+
'pt2.info.aotInductor': 'AOTInductor model',
|
|
359
|
+
'pt2.inspector.inputs': 'Inputs', 'pt2.inspector.outputs': 'Outputs', 'pt2.inspector.subgraphs': 'Sub-graphs',
|
|
360
|
+
'pt2.inspector.subgraph': '{name} · {nodes} nodes · {inputs} inputs · {outputs} outputs',
|
|
361
|
+
'pt2.inspector.moduleStack': 'Module stack', 'pt2.inspector.metadata': 'Metadata', 'pt2.inspector.stackTrace': 'Stack trace',
|
|
362
|
+
'pt2.inspector.value': 'Value', 'pt2.inspector.producer': 'Producer', 'pt2.inspector.consumers': 'Consumers', 'pt2.inspector.payload': 'Payload',
|
|
363
|
+
'pt2.inspector.fileSize': 'file {size}', 'pt2.inspector.tensorBytes': 'tensor {size}', 'pt2.inspector.preview': 'First {count} values',
|
|
364
|
+
'pt2.inspector.strides': 'Strides', 'pt2.inspector.storageOffset': 'Storage offset', 'pt2.inspector.device': 'Device',
|
|
365
|
+
'pt2.inspector.layout': 'Layout', 'pt2.inspector.requiresGrad': 'Requires grad',
|
|
366
|
+
'pt2.summary.models': 'Programs', 'pt2.summary.nodes': 'Nodes', 'pt2.summary.operators': 'Operator types',
|
|
367
|
+
'pt2.summary.parameters': 'Parameters', 'pt2.summary.weights': 'Weights', 'pt2.summary.constants': 'Constants',
|
|
368
|
+
'pt2.summary.io': 'Inputs / outputs', 'pt2.summary.aotInductor': 'AOTInductor models',
|
|
369
|
+
'pt2.summary.files': 'Archive members', 'pt2.summary.fileSize': 'File size',
|
|
370
|
+
'pt2.warning.notZip': 'The file is not a ZIP archive, so it cannot be a PT2 package.',
|
|
371
|
+
'pt2.warning.archiveUnreadable': 'The ZIP central directory could not be read.',
|
|
372
|
+
'pt2.warning.entryLimit': 'Only the first {limit} archive members were read.',
|
|
373
|
+
'pt2.warning.legacyLayout': 'This is the pre-PT2 torch.export.save layout: weights are torch.save pickles and are listed from the graph signature only.',
|
|
374
|
+
'pt2.warning.noArchiveFormat': 'No archive_format marker was found; the package layout was inferred.',
|
|
375
|
+
'pt2.warning.modelsLimited': 'Only the first {shown} of {total} programs were read.',
|
|
376
|
+
'pt2.warning.unknownArchiveFormat': 'archive_format is "{value}" rather than "pt2".',
|
|
377
|
+
'pt2.warning.memberTooLarge': '{name} exceeds the {limit} limit and was not read.',
|
|
378
|
+
'pt2.warning.memberMethod': '{name} uses ZIP compression method {method}, which is not supported.',
|
|
379
|
+
'pt2.warning.memberUnreadable': '{name} could not be read from the archive.',
|
|
380
|
+
'pt2.warning.inflateUnavailable': '{name} is deflated and no inflater (jszip) is available.',
|
|
381
|
+
'pt2.warning.jsonUnreadable': '{name} is not valid JSON.',
|
|
382
|
+
'pt2.warning.modelUnreadable': 'The program "{name}" could not be read.',
|
|
383
|
+
'pt2.warning.schemaVersion': 'Program "{name}" was serialized with schema {version}, newer than the {supported}.x this reader targets; some fields may be missing.',
|
|
384
|
+
'pt2.warning.nodesLimited': '{count} node(s) were not read because the node limit was reached.',
|
|
385
|
+
'pt2.warning.valuesLimited': '{count} value(s) were not read because the value limit was reached.',
|
|
386
|
+
'pt2.warning.payloadsLimited': '{count} weight or constant entries were not read because the limit was reached.',
|
|
387
|
+
'pt2.warning.danglingRefs': '{count} argument(s) reference a value that no node or input produces.',
|
|
388
|
+
'pt2.warning.subgraphDepth': '{count} sub-graph(s) nested deeper than {limit} levels were not read.',
|
|
389
|
+
'pt2.warning.pickledPayloads': 'Program "{name}": {count} tensor(s) are stored as torch.save pickles and are listed without a value preview.',
|
|
390
|
+
'pt2.warning.payloadMissing': 'Program "{name}": {count} weight file(s) referenced by the payload config are not in the archive.',
|
|
391
|
+
'pt2.warning.payloadTruncated': 'Program "{name}": {count} weight file(s) are shorter than the tensor they hold.',
|
|
392
|
+
'pt2.warning.aotiOnly': 'The package holds only AOTInductor compiled artifacts; there is no Export IR graph to show.',
|
|
393
|
+
'pt2.warning.noModels': 'The package holds no exported program (models/*.json).',
|
|
213
394
|
'keras.title': 'Keras model', 'keras.document.v3': 'Keras v3 archive', 'keras.document.hdf5': 'Keras HDF5 model',
|
|
214
395
|
'keras.version': 'Keras {version}', 'keras.search': 'Search layers, weights, and configuration…',
|
|
215
396
|
'keras.copyJson': 'Copy JSON', 'keras.invalid': 'invalid',
|
|
@@ -449,6 +630,7 @@ export const CATALOG_EN = {
|
|
|
449
630
|
'common.copied': 'Copied to clipboard',
|
|
450
631
|
'common.noClipboard': 'Copy is unavailable on this platform',
|
|
451
632
|
'common.copyTooLarge': 'Too large to copy to the clipboard ({size} bytes). Use file export instead.',
|
|
633
|
+
'common.copyTooLargeNoExport': 'Too large to copy to the clipboard ({size} bytes).',
|
|
452
634
|
'common.noFileSave': 'Saving files is unavailable on this platform',
|
|
453
635
|
'common.saved': 'Saved {name}',
|
|
454
636
|
'common.savedToOriginal': 'Saved',
|
package/dist/i18n/catalog.fr.js
CHANGED
|
@@ -3,14 +3,18 @@
|
|
|
3
3
|
export const CATALOG_FR = {
|
|
4
4
|
'audio.title': 'Audio', 'video.title': 'Vidéo', 'dbc.title': 'Base de données CAN',
|
|
5
5
|
'audio.play': 'Lecture', 'audio.pause': 'Pause', 'audio.stop': 'Arrêt',
|
|
6
|
-
'audio.
|
|
6
|
+
'audio.volume': 'Volume',
|
|
7
|
+
'audio.loop.region': 'Boucler la région', 'audio.loop.track': 'Boucler la piste',
|
|
7
8
|
'audio.region.start': 'Début de la région (s)', 'audio.region.end': 'Fin de la région (s)', 'audio.region.duration': 'Durée de la région (s)',
|
|
8
9
|
'audio.zoom': 'Zoom', 'audio.zoomIn': 'Zoom avant', 'audio.zoomOut': 'Zoom arrière', 'audio.zoomFit': 'Ajuster',
|
|
9
10
|
'audio.visualization': 'Affichage', 'audio.vis.waveform': 'Forme d’onde', 'audio.vis.spectrogram': 'Spectrogramme',
|
|
10
11
|
'audio.vis.both': 'Les deux', 'audio.download': 'Télécharger',
|
|
11
|
-
'audio.spectrogramScale': 'Échelle',
|
|
12
|
+
'audio.spectrogramScale': 'Échelle du spectrogramme',
|
|
12
13
|
'audio.scale.linear': 'Linéaire', 'audio.scale.mel': 'Mel', 'audio.scale.bark': 'Bark', 'audio.scale.erb': 'ERB',
|
|
14
|
+
'audio.scale.logarithmic': 'Logarithmique',
|
|
15
|
+
'audio.frequencyRange': 'Plage de fréquences', 'audio.frequency.full': 'Totale', 'audio.frequency.limit': "Jusqu'à {hz}",
|
|
13
16
|
'audio.error.save': 'L’enregistrement du fichier audio a échoué.',
|
|
17
|
+
'audio.error.spectrogram': 'Le spectrogramme de cette plage n’a pas pu être rendu.',
|
|
14
18
|
'audio.info.duration': 'Durée', 'audio.info.sampleRate': 'Fréquence d’échantillonnage', 'audio.info.channels': 'Canaux',
|
|
15
19
|
'audio.info.channelLevels': 'L crête {leftPeak}, RMS {leftRms} | R crête {rightPeak}, RMS {rightRms}',
|
|
16
20
|
'audio.info.bitDepth': 'Profondeur de bits', 'audio.info.format': 'Format', 'audio.info.fileSize': 'Taille du fichier',
|
|
@@ -21,6 +25,7 @@ export const CATALOG_FR = {
|
|
|
21
25
|
'audio.error.decode': 'Le navigateur n’a pas pu décoder ce codec audio. Essayez un hôte disposant du codec requis ou transcodez le fichier.',
|
|
22
26
|
'audio.warning.analysisFailed': 'L’analyse préalable de la forme d’onde a échoué — retour au décodage complet par le navigateur, qui peut être lent pour un fichier de cette taille.',
|
|
23
27
|
'audio.warning.analysisSkipped': 'L’analyse préalable de la forme d’onde n’est pas disponible pour ce format — retour au décodage complet par le navigateur, qui peut être lent pour un fichier de cette taille.',
|
|
28
|
+
'audio.warning.reducedFidelity': 'Décodé en qualité réduite pour tenir en mémoire ; le spectrogramme perd ses fréquences les plus hautes.',
|
|
24
29
|
'audio.vis.unavailableLarge': 'Le spectrogramme n’est pas disponible pour les fichiers volumineux rendus à partir de pics précalculés.',
|
|
25
30
|
'video.play': 'Lecture', 'video.pause': 'Pause', 'video.stop': 'Arrêt',
|
|
26
31
|
'video.skipBack': '⏪ -{seconds} s', 'video.skipForward': '⏩ +{seconds} s',
|
package/dist/i18n/catalog.it.js
CHANGED
|
@@ -3,14 +3,18 @@
|
|
|
3
3
|
export const CATALOG_IT = {
|
|
4
4
|
'audio.title': 'Audio', 'video.title': 'Video', 'dbc.title': 'Database CAN',
|
|
5
5
|
'audio.play': 'Riproduci', 'audio.pause': 'Pausa', 'audio.stop': 'Arresta',
|
|
6
|
-
'audio.
|
|
6
|
+
'audio.volume': 'Volume',
|
|
7
|
+
'audio.loop.region': 'Ripeti regione', 'audio.loop.track': 'Ripeti traccia',
|
|
7
8
|
'audio.region.start': 'Inizio regione (s)', 'audio.region.end': 'Fine regione (s)', 'audio.region.duration': 'Durata regione (s)',
|
|
8
9
|
'audio.zoom': 'Zoom', 'audio.zoomIn': 'Ingrandisci', 'audio.zoomOut': 'Riduci', 'audio.zoomFit': 'Adatta',
|
|
9
10
|
'audio.visualization': 'Vista', 'audio.vis.waveform': 'Forma d’onda', 'audio.vis.spectrogram': 'Spettrogramma',
|
|
10
11
|
'audio.vis.both': 'Entrambi', 'audio.download': 'Scarica',
|
|
11
|
-
'audio.spectrogramScale': 'Scala',
|
|
12
|
+
'audio.spectrogramScale': 'Scala dello spettrogramma',
|
|
12
13
|
'audio.scale.linear': 'Lineare', 'audio.scale.mel': 'Mel', 'audio.scale.bark': 'Bark', 'audio.scale.erb': 'ERB',
|
|
14
|
+
'audio.scale.logarithmic': 'Logaritmica',
|
|
15
|
+
'audio.frequencyRange': 'Intervallo di frequenza', 'audio.frequency.full': 'Completo', 'audio.frequency.limit': 'Fino a {hz}',
|
|
13
16
|
'audio.error.save': 'Salvataggio del file audio non riuscito.',
|
|
17
|
+
'audio.error.spectrogram': 'Non è stato possibile disegnare lo spettrogramma per questo intervallo.',
|
|
14
18
|
'audio.info.duration': 'Durata', 'audio.info.sampleRate': 'Frequenza di campionamento', 'audio.info.channels': 'Canali',
|
|
15
19
|
'audio.info.channelLevels': 'L picco {leftPeak}, RMS {leftRms} | R picco {rightPeak}, RMS {rightRms}',
|
|
16
20
|
'audio.info.bitDepth': 'Profondità di bit', 'audio.info.format': 'Formato', 'audio.info.fileSize': 'Dimensione file',
|
|
@@ -21,6 +25,7 @@ export const CATALOG_IT = {
|
|
|
21
25
|
'audio.error.decode': 'Il browser non è riuscito a decodificare questo codec audio. Prova un host con il codec richiesto o transcodifica il file.',
|
|
22
26
|
'audio.warning.analysisFailed': 'L’analisi preliminare della forma d’onda non è riuscita — si torna alla decodifica completa del browser, che può essere lenta per un file di queste dimensioni.',
|
|
23
27
|
'audio.warning.analysisSkipped': 'L’analisi preliminare della forma d’onda non è disponibile per questo formato — si torna alla decodifica completa del browser, che può essere lenta per un file di queste dimensioni.',
|
|
28
|
+
'audio.warning.reducedFidelity': 'Decodificato a qualità ridotta per rientrare in memoria; lo spettrogramma perde le frequenze più alte.',
|
|
24
29
|
'audio.vis.unavailableLarge': 'Lo spettrogramma non è disponibile per i file di grandi dimensioni renderizzati da picchi precalcolati.',
|
|
25
30
|
'video.play': 'Riproduci', 'video.pause': 'Pausa', 'video.stop': 'Arresta',
|
|
26
31
|
'video.skipBack': '⏪ -{seconds} s', 'video.skipForward': '⏩ +{seconds} s',
|