omni-viewer-core 0.18.0 → 0.19.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.
Files changed (44) hide show
  1. package/README.md +142 -2
  2. package/dist/i18n/catalog.en.js +164 -0
  3. package/dist/i18n/catalog.ja.js +164 -0
  4. package/dist/i18n/catalog.ko.js +164 -0
  5. package/dist/i18n/catalog.zh-cn.js +164 -0
  6. package/dist/parsers/har/index.d.ts +54 -0
  7. package/dist/parsers/har/index.js +833 -0
  8. package/dist/parsers/har/model.d.ts +172 -0
  9. package/dist/parsers/har/model.js +5 -0
  10. package/dist/parsers/notebook/index.d.ts +17 -0
  11. package/dist/parsers/notebook/index.js +212 -0
  12. package/dist/parsers/notebook/model.d.ts +40 -0
  13. package/dist/parsers/notebook/model.js +1 -0
  14. package/dist/parsers/pt2/index.js +136 -69
  15. package/dist/parsers/pte/index.d.ts +211 -0
  16. package/dist/parsers/pte/index.js +1196 -0
  17. package/dist/registry/index.d.ts +8 -1
  18. package/dist/registry/index.js +19 -3
  19. package/dist/registry/sniff.d.ts +14 -2
  20. package/dist/registry/sniff.js +40 -1
  21. package/dist/styles/har.css +94 -0
  22. package/dist/styles/notebook.css +17 -0
  23. package/dist/styles/pte.css +3 -0
  24. package/dist/viewers/har/index.d.ts +29 -0
  25. package/dist/viewers/har/index.js +804 -0
  26. package/dist/viewers/har/styles.d.ts +1 -0
  27. package/dist/viewers/har/styles.js +98 -0
  28. package/dist/viewers/markdown/index.js +1 -5
  29. package/dist/viewers/markdown/math.d.ts +11 -1
  30. package/dist/viewers/markdown/math.js +315 -19
  31. package/dist/viewers/markdown/sanitize.d.ts +9 -0
  32. package/dist/viewers/markdown/sanitize.js +7 -0
  33. package/dist/viewers/notebook/index.d.ts +24 -0
  34. package/dist/viewers/notebook/index.js +516 -0
  35. package/dist/viewers/notebook/self-loading.d.ts +3 -0
  36. package/dist/viewers/notebook/self-loading.js +18 -0
  37. package/dist/viewers/notebook/styles.d.ts +1 -0
  38. package/dist/viewers/notebook/styles.js +9 -0
  39. package/dist/viewers/pt2/index.js +188 -52
  40. package/dist/viewers/pte/index.d.ts +20 -0
  41. package/dist/viewers/pte/index.js +883 -0
  42. package/dist/viewers/pte/styles.d.ts +1 -0
  43. package/dist/viewers/pte/styles.js +4 -0
  44. package/package.json +38 -1
package/README.md CHANGED
@@ -13,11 +13,14 @@ models, viewers mount into a DOM element, and everything host-specific
13
13
  ## Supported formats
14
14
 
15
15
  - **Documents** — PDF, Word (DOCX and legacy DOC), HWP, PowerPoint (PPTX and
16
- legacy PPT), Markdown, LaTeX (structure and math preview, not typesetting)
16
+ legacy PPT), Markdown, Jupyter Notebook (.ipynb),
17
+ LaTeX (structure and math preview, not typesetting)
17
18
  - **Data & spreadsheets** — Excel, CSV/TSV, JSON, JSONL/NDJSON, YAML, TOML,
18
19
  Parquet, Avro, HDF5, MATLAB MAT, NumPy (NPY/NPZ), Safetensors, GGUF, ONNX, TFLite/LiteRT,
19
20
  Keras (.keras and legacy .h5), Core ML (.mlmodel and .mlpackage),
20
- OpenVINO IR (.xml + .bin), PyTorch Export (.pt2), Protocol Buffers, ReqIF, SQLite
21
+ OpenVINO IR (.xml + .bin), PyTorch Export (.pt2), ExecuTorch (.pte), Protocol
22
+ Buffers, ReqIF, SQLite
23
+ - **Web & network** — HAR (HTTP Archive) request logs
21
24
  - **Media & graphics** — audio (waveform/spectrogram), video, images,
22
25
  Photoshop PSD
23
26
  - **Engineering & automotive** — CAN DBC, AUTOSAR ARXML, ASAM A2L, Vector
@@ -299,6 +302,143 @@ through `probeContainer`, which recognizes the `archive_format` marker
299
302
  A plain `torch.save` checkpoint (`.pt` / `.pth`) is not an Export package and
300
303
  is not claimed.
301
304
 
305
+ ### ExecuTorch programs (.pte)
306
+
307
+ A `.pte` is what `to_executorch().save()` writes: a FlatBuffer following
308
+ ExecuTorch's `program.fbs` (file identifier `ET12`), optionally followed by data
309
+ segments — constant tensors, delegate blobs, mutable initial state, and named
310
+ blobs — that an extended header (`eh00`, inserted right after the identifier)
311
+ locates. The parser reads the FlatBuffer directly with no schema compiler and no
312
+ runtime dependency, and never decodes a segment or buffer payload:
313
+
314
+ ```ts
315
+ import { mountPteViewer } from 'omni-viewer-core/viewers/pte';
316
+
317
+ await mountPteViewer({ fileName: file.name, data: bytes }, container, ctx);
318
+ ```
319
+
320
+ `parsePte` keeps every method (`ExecutionPlan`) with its values, instructions,
321
+ operators, and delegates, and resolves where each tensor's bytes live: the
322
+ deprecated inline `constant_buffer`, the constant segment (`constant_segment`
323
+ offsets, with the alignment-padded slot size and absolute file offset), a
324
+ mutable data segment for buffers with initial state, an external `.ptd` file
325
+ (`ExtraTensorInfo.location = EXTERNAL`), a memory-planned arena slot
326
+ (`AllocationDetails`), or nothing at all for runtime inputs. A kernel call's
327
+ outputs come from the return value the emitter appends after the schema
328
+ arguments (the out tensor, a TensorList of the out tensors, or a fresh scalar
329
+ for a symbolic op), and only the out-argument positions in front of it are
330
+ dropped from the inputs; a delegate call carries inputs then outputs with no marker,
331
+ so those are split by data flow — the trailing arguments nothing defined yet.
332
+ A view or alias the emitter gave its own EValue — a tensor nothing writes that
333
+ shares a memory-planned slot with an earlier one — is resolved to the value it
334
+ aliases when the file leaves no other reading, so a delegate fed through
335
+ aliases keeps its inputs and the graph keeps its edges. Every EValue kind
336
+ gets a preview, delegate compile specs are decoded when they are short text,
337
+ and the leading instructions keep their emitter stack traces.
338
+
339
+ The viewer draws each method's kernel, delegate, and move calls as a graph with
340
+ inputs, consumed constants, and outputs, plus an inspector (arguments with their
341
+ values, backend and compile specs for a delegate call, jump destination, stack
342
+ trace), and searchable instruction, value, input/output, delegate, segment, and
343
+ model-information panels; a multi-method program gets a method selector.
344
+ Warnings cover backends the runtime must register, tensors stored in a separate
345
+ `.ptd`, segments the file cannot locate or that run past its end, constant data
346
+ the program never provides, references to segments the program never declares,
347
+ and unrecognized scalar types, value kinds, or instruction kinds.
348
+
349
+ Routing is by the `.pte` extension, validated against the `ET12` identifier at
350
+ offset 4; an extensionless program is detected from the same bytes. A `.ptd`
351
+ data file (`FT01`) is not a program and is not claimed.
352
+
353
+ ### Jupyter notebooks (.ipynb)
354
+
355
+ View nbformat 4 notebooks with their code and saved results in file order.
356
+ Markdown cells reuse the Markdown renderer, syntax highlighter, math renderer,
357
+ and prose styles. Code cells show `In`/`Out` execution counts, stdout/stderr,
358
+ HTML tables, PNG/JPEG/GIF/WebP/SVG images, Markdown, LaTeX, JSON, plain text,
359
+ and error tracebacks. Raw cells display as text. Code is never executed.
360
+
361
+ ```ts
362
+ import { mountNotebookViewer } from 'omni-viewer-core/viewers/notebook';
363
+ import { loadNotebookViewerDeps } from 'omni-viewer-core/viewers/notebook/self-loading';
364
+
365
+ const deps = await loadNotebookViewerDeps();
366
+ const handle = await mountNotebookViewer(
367
+ { fileName: 'analysis.ipynb', data: notebookBytes }, container, hostContext, deps
368
+ );
369
+ // Release the viewer, listeners, and any host-resolved assets on close.
370
+ handle.dispose();
371
+ ```
372
+
373
+ The loader requires the existing optional peers `marked` and `dompurify`;
374
+ `highlight.js` and `katex` enhance code and formulas when installed. Adapters
375
+ can inject the same dependencies they use for Markdown. Load KaTeX CSS and
376
+ fonts inside the viewer's shadow root when using KaTeX, as with Markdown.
377
+ Scoped mounting uses `styles/notebook.css`.
378
+
379
+ Search cells and results, hide all code or outputs, or expand individual cells.
380
+ Persisted `source_hidden`, `outputs_hidden`, and `collapsed` hints set the
381
+ initial expansion state. One static representation is selected per MIME bundle;
382
+ interactive widget/JavaScript outputs fall back to saved plain text, or a
383
+ clear unsupported-output notice. Markdown `attachment:` images work offline.
384
+ Relative images use the optional `documentAssets` service, external links use
385
+ `navigation`, and remote resources and active HTML are blocked.
386
+
387
+ `parseNotebook` is also available from `parsers/notebook`. It returns a typed
388
+ `ParseOutcome<NotebookDocument>` and uses the core JSON parser, retaining raw
389
+ JSON output tokens. Defaults: 64 MiB input, 2,000 cells, 10,000 outputs, 4 MiB
390
+ per preview, and 16 MiB cumulative previews. `limits.maxEntries` counts cells;
391
+ `maxOutputs` and `maxTotalPreviewBytes` are independent limits. Truncation
392
+ returns `partial` with diagnostics. Invalid JSON and unsupported major versions
393
+ return typed failures. See [viewer details](examples/notebook/README.md) and the
394
+ [sample notebook](examples/notebook/analysis.ipynb).
395
+
396
+ ### HAR network logs (.har)
397
+
398
+ A `.har` file is the HTTP Archive a browser's network panel (or curl, Charles,
399
+ Fiddler, Playwright) exports: one JSON `log` holding every request of a session
400
+ with its headers, bodies, sizes, and phase timings. It is the artifact a web or
401
+ API failure usually arrives as, so the viewer is built for triage rather than
402
+ for reading JSON:
403
+
404
+ ```ts
405
+ import { mountHarViewer } from 'omni-viewer-core/viewers/har';
406
+
407
+ await mountHarViewer({ fileName: file.name, data: bytes }, container, ctx);
408
+ ```
409
+
410
+ `parseHar` is a contract parser (`ParseOutcome<HarDocument>`) and reads the
411
+ archive through the core JSON layer, so a truncated export still yields the
412
+ requests it did hold. Each entry keeps its request and response headers, query
413
+ string, cookies, request payload, and response body, and gains what the table
414
+ needs: host, path, status class, resource type (from `_resourceType` when the
415
+ writer supplied one, from the MIME type otherwise), transferred bytes
416
+ (`_transferSize` when present), decoded resource size, and a phase breakdown
417
+ with the TLS handshake taken out of `connect` so a waterfall cannot
418
+ double-count it. Timestamps go through a core ISO-8601 parser rather than
419
+ `new Date(string)`, and the timeline's origin is the earliest entry, so offsets
420
+ and bar positions are the same on every platform. A base64 body is decoded when
421
+ its MIME type is textual (the URL-safe alphabet included) and reported by size
422
+ only when it is not; bodies are kept up to a preview limit, and entries up to
423
+ `HAR_DEFAULT_MAX_ENTRIES` (a larger archive comes back `partial` with a
424
+ diagnostic). A body cut by the preview limit and one the archive stored
425
+ incompletely — several padded base64 chunks, or a tail outside the alphabet —
426
+ are reported as two different things, and a size or start time the archive never
427
+ gave is kept unknown rather than shown as a confident zero.
428
+
429
+ The viewer shows summary figures (requests, elapsed, transferred, resources,
430
+ domains, errors), a request table sortable by every column with a per-entry
431
+ waterfall bar, and filters for method, status class, resource type, domain, and
432
+ free text over URLs, status text, and headers — with an opt-in toggle that
433
+ extends the search to bodies. Selecting a request opens headers (general,
434
+ request, response), payload (query string and request body, form fields
435
+ expanded), response (body pretty-printed through the JSON serializer when it
436
+ really is JSON), cookies, and timings (drawn phases plus the values the archive
437
+ reported, with `-1` shown as not applicable). Page load timings and archive
438
+ metadata get their own tabs. Routing is by the `.har` extension; an
439
+ extensionless archive is recognized by content — a `log` object holding an
440
+ `entries` array — and claimed before the generic JSON viewer.
441
+
302
442
  ### Archive host integration
303
443
 
304
444
  Archive decompression remains adapter-owned: pass an `ArchiveDecoder` to
@@ -4,6 +4,36 @@
4
4
  // this catalog at build time. Diagnostics (§3-① messageKey) and viewer UI
5
5
  // strings share this key space.
6
6
  export const CATALOG_EN = {
7
+ 'notebook.title': 'Jupyter Notebook',
8
+ 'notebook.summary': '{cells} / {total} cells · {outputs} outputs · {errors} errors',
9
+ 'notebook.savedOutputs': 'Saved results · Code is displayed without execution.',
10
+ 'notebook.search': 'Search cells and outputs',
11
+ 'notebook.showCode': 'Show code',
12
+ 'notebook.showOutputs': 'Show outputs',
13
+ 'notebook.cells': 'Notebook cells',
14
+ 'notebook.cell': 'Cell {index}',
15
+ 'notebook.markdown': 'Markdown',
16
+ 'notebook.code': 'Code',
17
+ 'notebook.raw': 'Raw',
18
+ 'notebook.unknown': 'Unknown cell',
19
+ 'notebook.outputs': 'Outputs ({count})',
20
+ 'notebook.noOutputs': 'No saved outputs.',
21
+ 'notebook.empty': 'This notebook has no cells.',
22
+ 'notebook.noMatches': 'No matching cells.',
23
+ 'notebook.imageOutput': 'Saved image output',
24
+ 'notebook.assetUnavailable': 'Image unavailable',
25
+ 'notebook.unsupportedOutput': 'No supported static representation is available for this output.',
26
+ 'notebook.truncatedOutput': 'This output exceeds the preview limit.',
27
+ 'notebook.renderFailed': 'Preview failed. The source is shown below.',
28
+ 'notebook.blockedResources': 'External resources were blocked.',
29
+ 'diag.notebook.invalid': 'Invalid Jupyter Notebook document.',
30
+ 'diag.notebook.version': 'Only nbformat version 4 notebooks are supported.',
31
+ 'diag.notebook.malformed': 'Some malformed cells or outputs could not be read.',
32
+ 'diag.notebook.unknownCell': 'An unknown cell type is shown as source.',
33
+ 'diag.notebook.unknownOutput': 'An unknown output type could not be rendered.',
34
+ 'diag.notebook.cellLimit': 'The cell preview limit was reached. Some cells are omitted.',
35
+ 'diag.notebook.outputLimit': 'The output preview limit was reached. Some outputs are omitted.',
36
+ 'diag.notebook.previewLimit': 'Some content exceeds the preview size budget and was truncated.',
7
37
  'audio.title': 'Audio', 'video.title': 'Video', 'dbc.title': 'CAN database',
8
38
  'audio.play': 'Play', 'audio.pause': 'Pause', 'audio.stop': 'Stop',
9
39
  'audio.volume': 'Volume',
@@ -215,6 +245,127 @@ export const CATALOG_EN = {
215
245
  'tflite.inspector.inputs': 'Inputs', 'tflite.inspector.outputs': 'Outputs',
216
246
  'tflite.inspector.intermediates': 'Intermediates', 'tflite.inspector.options': 'Options',
217
247
  'tflite.inspector.customOptions': 'Custom options', 'tflite.inspector.subgraphs': 'Referenced subgraphs',
248
+ 'pte.title': 'ExecuTorch program', 'pte.search': 'Search instructions, values, delegates, and segments…',
249
+ 'pte.copyJson': 'Copy JSON', 'pte.method': 'Method', 'pte.unnamed': 'unnamed',
250
+ 'pte.graph': 'Graph', 'pte.instructions': 'Instructions', 'pte.values': 'Values',
251
+ 'pte.io': 'Inputs & Outputs', 'pte.delegates': 'Delegates', 'pte.segments': 'Segments', 'pte.modelInfo': 'Model Info',
252
+ 'pte.rows': '{shown} / {total} rows shown', 'pte.noMatches': 'No rows match the current search.',
253
+ 'pte.selectNode': 'Select an instruction or value to inspect it.',
254
+ 'pte.emptyGraph': 'This method has no kernel or delegate calls.',
255
+ 'pte.graphLimited': 'Graph preview shows {shown} of {total} items.',
256
+ 'pte.graphEdgesLimited': 'Only the first {count} connections are shown.',
257
+ 'pte.moreItems': '{count} more…', 'pte.schema': 'schema v{version}',
258
+ 'pte.scalar': 'scalar', 'pte.none': 'None', 'pte.yes': 'yes',
259
+ 'pte.instructionDetail': '#{index} · chain {chain}', 'pte.jumpTo': 'jump to #{index}',
260
+ 'pte.jumpEnd': 'jump past the end of this chain',
261
+ 'pte.jumpInvalid': 'jump to {index}, outside this chain',
262
+ 'pte.binaryBytes': '{bytes} bytes (binary)', 'pte.missingDelegate': 'Delegate {index} is not declared by this method.',
263
+ 'pte.inRange': 'In file', 'pte.outOfRange': 'Past end of file',
264
+ 'pte.unlocated': 'Unlocated (no header)',
265
+ 'pte.copyFailed': 'Copy failed',
266
+ 'pte.summary.methods': 'Methods', 'pte.summary.instructions': 'Instructions',
267
+ 'pte.summary.operators': 'Operators', 'pte.summary.tensors': 'Tensors',
268
+ 'pte.summary.delegates': 'Delegates', 'pte.summary.constants': 'Constant data',
269
+ 'pte.warning.identifier': 'The file identifier is {identifier} rather than the expected ET12.',
270
+ 'pte.warning.noMethods': 'The program contains no methods.',
271
+ 'pte.warning.noInstructions': 'The program methods contain no instructions.',
272
+ 'pte.warning.headerMissing': '{count} data segment(s) are declared but the file has no extended header to locate them.',
273
+ 'pte.warning.segmentsOutOfRange': '{count} data segment(s) extend past the end of the file.',
274
+ 'pte.warning.delegates': '{count} delegate call(s) need these backends registered in the runtime: {names}',
275
+ 'pte.warning.externalTensors': '{count} tensor(s) are stored in a separate .ptd file that this viewer does not read.',
276
+ 'pte.warning.missingData': '{count} tensor(s) reference constant data the program does not provide.',
277
+ 'pte.warning.missingSegments': '{count} reference(s) name a data segment the program does not declare.',
278
+ 'pte.warning.unknownScalarTypes': '{count} tensor(s) use a scalar type this viewer does not recognize.',
279
+ 'pte.warning.unknownValueKinds': '{count} value(s) are of a kind this viewer does not recognize.',
280
+ 'pte.warning.unknownInstructions': '{count} instruction(s) are of a kind this viewer does not recognize.',
281
+ 'pte.column.index': '#', 'pte.column.name': 'Name', 'pte.column.chain': 'Chain', 'pte.column.kind': 'Kind',
282
+ 'pte.column.target': 'Operator / Backend', 'pte.column.inputs': 'Inputs', 'pte.column.outputs': 'Outputs',
283
+ 'pte.column.args': 'Args', 'pte.column.type': 'Type', 'pte.column.shape': 'Shape', 'pte.column.typeShape': 'Type / Shape',
284
+ 'pte.column.elements': 'Elements', 'pte.column.dataSize': 'Data size', 'pte.column.storage': 'Storage',
285
+ 'pte.column.memory': 'Memory plan', 'pte.column.valueIndex': 'Value', 'pte.column.backend': 'Backend',
286
+ 'pte.column.location': 'Location', 'pte.column.dataIndex': 'Data index', 'pte.column.fileOffset': 'File offset',
287
+ 'pte.column.compileSpecs': 'Compile specs', 'pte.column.offset': 'Offset', 'pte.column.status': 'Status', 'pte.column.usedBy': 'Used by',
288
+ 'pte.kind.KernelCall': 'Kernel call', 'pte.kind.DelegateCall': 'Delegate call', 'pte.kind.MoveCall': 'Move',
289
+ 'pte.kind.JumpFalseCall': 'Jump if false', 'pte.kind.FreeCall': 'Free', 'pte.kind.Unknown': 'Unknown',
290
+ 'pte.kind.input': 'Input', 'pte.kind.output': 'Output',
291
+ 'pte.storage.inline': 'Inline constant', 'pte.storage.segment': 'Constant segment', 'pte.storage.mutable': 'Mutable state',
292
+ 'pte.storage.external': 'External file', 'pte.storage.planned': 'Memory planned', 'pte.storage.runtime': 'Runtime',
293
+ 'pte.location.inline': 'Inline', 'pte.location.segment': 'Segment',
294
+ 'pte.segment.constant': 'Constant tensors', 'pte.segment.mutable': 'Mutable state', 'pte.segment.delegate': 'Delegate blob',
295
+ 'pte.segment.named': 'Named data', 'pte.segment.unused': 'Unreferenced',
296
+ 'pte.info.identifier': 'File identifier', 'pte.info.schemaVersion': 'Schema version', 'pte.info.fileSize': 'File size',
297
+ 'pte.info.extendedHeader': 'Extended header', 'pte.info.noHeader': 'none (no data segments)',
298
+ 'pte.info.headerDetail': 'program {program} · segment base {base} · segment data {data}',
299
+ 'pte.info.constants': 'Constant data', 'pte.info.inlineBuffers': '{count} inline buffer(s)',
300
+ 'pte.info.delegateData': 'Delegate data', 'pte.info.backends': 'Backends', 'pte.info.methods': 'Methods',
301
+ 'pte.info.namedData': 'Named data', 'pte.info.memoryPlan': 'Memory plan', 'pte.info.inputSpec': 'Input spec',
302
+ 'pte.info.outputSpec': 'Output spec', 'pte.info.operator': 'Operator',
303
+ 'pte.info.dimOrder': 'Dim order', 'pte.info.expectedSize': 'Expected size', 'pte.info.shapeDynamism': 'Shape dynamism',
304
+ 'pte.info.segment': 'Segment', 'pte.info.dataIndex': 'Data index', 'pte.info.storageOffset': 'Storage offset',
305
+ 'pte.info.requiresGrad': 'Requires grad', 'pte.info.device': 'Device',
306
+ 'pte.info.aliasOf': 'Shares memory with',
307
+ 'pte.inspector.inputs': 'Inputs', 'pte.inspector.outputs': 'Outputs', 'pte.inspector.arguments': 'Arguments',
308
+ 'pte.inspector.delegate': 'Delegate', 'pte.inspector.destination': 'Destination', 'pte.inspector.stackTrace': 'Stack trace',
309
+ 'pte.inspector.value': 'Value', 'pte.inspector.items': 'Items',
310
+ 'har.title': 'HAR network log',
311
+ 'har.search': 'Search URL, status, headers…', 'har.searchBodies': 'Search bodies',
312
+ 'har.version': 'HAR {version}', 'har.requestCount': '{count} requests', 'har.unknownCreator': 'Unknown writer',
313
+ 'har.requests': 'Requests', 'har.pages': 'Pages', 'har.info': 'Archive info',
314
+ 'har.rows': '{shown} / {total} rows shown', 'har.moreRows': '{count} more…',
315
+ 'har.noMatches': 'No requests match the current filters.',
316
+ 'har.noEntries': 'This archive contains no requests.',
317
+ 'har.noPages': 'This archive records no page loads.',
318
+ 'har.noTimings': 'This request has no timing breakdown.',
319
+ 'har.selectRequest': 'Select a request to inspect it.',
320
+ 'har.unreadable': 'This file could not be read as a HAR archive.',
321
+ 'har.failed': 'failed', 'har.cached': 'cached', 'har.notApplicable': 'n/a',
322
+ 'har.resourceSize': 'Resource size {size}', 'har.startedAt': 'started +{offset}',
323
+ 'har.copyEntry': 'Copy request JSON', 'har.copyBody': 'Copy body',
324
+ 'har.filter.method': 'Method', 'har.filter.allMethods': 'All methods',
325
+ 'har.filter.status': 'Status', 'har.filter.allStatuses': 'All statuses',
326
+ 'har.filter.type': 'Type', 'har.filter.allTypes': 'All types',
327
+ 'har.filter.domain': 'Domain', 'har.filter.allDomains': 'All domains',
328
+ 'har.statusClass.1xx': '1xx informational', 'har.statusClass.2xx': '2xx success',
329
+ 'har.statusClass.3xx': '3xx redirect', 'har.statusClass.4xx': '4xx client error',
330
+ 'har.statusClass.5xx': '5xx server error', 'har.statusClass.none': 'No response',
331
+ 'har.type.document': 'Document', 'har.type.stylesheet': 'Stylesheet', 'har.type.script': 'Script',
332
+ 'har.type.xhr': 'XHR / Fetch', 'har.type.image': 'Image', 'har.type.font': 'Font',
333
+ 'har.type.media': 'Media', 'har.type.websocket': 'WebSocket', 'har.type.manifest': 'Manifest',
334
+ 'har.type.text': 'Text', 'har.type.binary': 'Binary', 'har.type.other': 'Other',
335
+ 'har.timing.blocked': 'Blocked', 'har.timing.dns': 'DNS', 'har.timing.connect': 'Connect',
336
+ 'har.timing.ssl': 'TLS', 'har.timing.send': 'Send', 'har.timing.wait': 'Wait (TTFB)',
337
+ 'har.timing.receive': 'Receive', 'har.timing.total': 'Total',
338
+ 'har.column.index': '#', 'har.column.name': 'Name', 'har.column.method': 'Method',
339
+ 'har.column.status': 'Status', 'har.column.type': 'Type', 'har.column.domain': 'Domain',
340
+ 'har.column.size': 'Transferred', 'har.column.time': 'Time', 'har.column.waterfall': 'Waterfall',
341
+ 'har.column.page': 'Page', 'har.column.title': 'Title', 'har.column.started': 'Started',
342
+ 'har.column.contentLoad': 'DOMContentLoaded', 'har.column.load': 'Load', 'har.column.requests': 'Requests',
343
+ 'har.detail.general': 'General', 'har.detail.headers': 'Headers', 'har.detail.payload': 'Payload',
344
+ 'har.detail.response': 'Response', 'har.detail.cookies': 'Cookies', 'har.detail.timings': 'Timings',
345
+ 'har.detail.rawTimings': 'Reported phases', 'har.detail.requestHeaders': 'Request headers',
346
+ 'har.detail.responseHeaders': 'Response headers', 'har.detail.queryString': 'Query string',
347
+ 'har.detail.requestBody': 'Request body', 'har.detail.responseBody': 'Response body',
348
+ 'har.detail.requestCookies': 'Request cookies', 'har.detail.responseCookies': 'Response cookies',
349
+ 'har.field.url': 'URL', 'har.field.method': 'Method', 'har.field.status': 'Status',
350
+ 'har.field.protocol': 'Protocol', 'har.field.type': 'Type', 'har.field.started': 'Started',
351
+ 'har.field.offset': 'Timeline offset', 'har.field.time': 'Duration', 'har.field.transferred': 'Transferred',
352
+ 'har.field.resourceSize': 'Resource size', 'har.field.remoteAddress': 'Remote address',
353
+ 'har.field.connection': 'Connection', 'har.field.redirect': 'Redirects to', 'har.field.page': 'Page',
354
+ 'har.field.error': 'Error', 'har.field.comment': 'Comment', 'har.field.mimeType': 'MIME type',
355
+ 'har.field.encoding': 'Encoding', 'har.field.compression': 'Saved by compression',
356
+ 'har.body.none': 'None', 'har.body.empty': 'The archive stored no body text.',
357
+ 'har.body.binary': 'Binary body ({size}) — stored as base64 and not decoded.',
358
+ 'har.body.truncated': 'Body truncated at the preview limit.',
359
+ 'har.body.incomplete': 'The stored body ends before its content does — part of it could not be decoded.',
360
+ 'har.summary.requests': 'Requests', 'har.summary.elapsed': 'Elapsed', 'har.summary.transferred': 'Transferred',
361
+ 'har.summary.resources': 'Resources', 'har.summary.domains': 'Domains', 'har.summary.errors': 'Errors',
362
+ 'har.summary.pages': 'Pages',
363
+ 'har.info.version': 'HAR version', 'har.info.creator': 'Writer', 'har.info.browser': 'Browser',
364
+ 'har.info.entries': 'Requests', 'har.info.pages': 'Pages', 'har.info.domains': 'Domains',
365
+ 'har.info.methods': 'Methods', 'har.info.firstRequest': 'First request', 'har.info.elapsed': 'Elapsed',
366
+ 'har.info.totalTime': 'Sum of request times', 'har.info.transferred': 'Transferred',
367
+ 'har.info.resources': 'Resource bytes', 'har.info.errors': 'Error responses',
368
+ 'har.info.creatorComment': 'Writer comment',
218
369
  'coreml.title': 'Core ML model', 'coreml.search': 'Search operations, operands, and weights…',
219
370
  'coreml.copyJson': 'Copy JSON', 'coreml.graph': 'Graph', 'coreml.unnamed': 'unnamed',
220
371
  'coreml.operations': 'Operations', 'coreml.io': 'Inputs & Outputs', 'coreml.weights': 'Weights',
@@ -386,6 +537,7 @@ export const CATALOG_EN = {
386
537
  'pt2.warning.payloadsLimited': '{count} weight or constant entries were not read because the limit was reached.',
387
538
  'pt2.warning.danglingRefs': '{count} argument(s) reference a value that no node or input produces.',
388
539
  'pt2.warning.subgraphDepth': '{count} sub-graph(s) nested deeper than {limit} levels were not read.',
540
+ 'pt2.warning.placeholdersLimited': 'Only the first {limit} graph inputs or outputs were read; {count} were dropped.',
389
541
  'pt2.warning.pickledPayloads': 'Program "{name}": {count} tensor(s) are stored as torch.save pickles and are listed without a value preview.',
390
542
  'pt2.warning.payloadMissing': 'Program "{name}": {count} weight file(s) referenced by the payload config are not in the archive.',
391
543
  'pt2.warning.payloadTruncated': 'Program "{name}": {count} weight file(s) are shorter than the tensor they hold.',
@@ -601,6 +753,18 @@ export const CATALOG_EN = {
601
753
  'diag.limit-exceeded.input': 'The file exceeds the maximum supported size ({maxBytes} bytes).',
602
754
  'diag.limit-exceeded.decompressed': 'The archive declares more uncompressed data than the supported limit ({maxBytes} bytes).',
603
755
  'diag.aborted': 'Parsing was cancelled.',
756
+ 'diag.har.invalid': 'This file could not be parsed as JSON, so it cannot be read as a HAR archive.',
757
+ 'diag.har.missing-log': 'This JSON file has no "log" object, so it is not a HAR archive.',
758
+ 'diag.har.missing-entries': 'The HAR log has no "entries" array.',
759
+ 'diag.har.no-entries': 'This archive records no requests.',
760
+ 'diag.har.version': 'The archive declares HAR version {version}; it is read as 1.2.',
761
+ 'diag.har.entry-limit': 'Only the first {shown} of {total} requests were read.',
762
+ 'diag.har.invalid-entries': '{count} entries are not objects and were skipped.',
763
+ 'diag.har.invalid-dates': '{count} request(s) have a start time that is not a valid ISO-8601 timestamp.',
764
+ 'diag.har.body-truncated': '{count} body(ies) were truncated at {limit} characters.',
765
+ 'diag.har.body-incomplete': '{count} response body(ies) could not be fully decoded.',
766
+ 'diag.har.binary-bodies': '{count} response(s) hold binary bodies that are listed by size only.',
767
+ 'diag.har.request-errors': '{count} request(s) failed before a response arrived.',
604
768
  'diag.csv.ragged-rows': '{count} row(s) had a different number of columns and were padded or truncated.',
605
769
  // JSON parser diagnostics (docs/parsers/json.md)
606
770
  'diag.limit-exceeded.nodes': 'Only the first {count} nodes were parsed (node limit reached).',
@@ -1,5 +1,35 @@
1
1
  // Japanese messages owned by core. Keep the key set aligned with CATALOG_EN.
2
2
  export const CATALOG_JA = {
3
+ 'notebook.title': 'Jupyter Notebook',
4
+ 'notebook.summary': '{cells} / {total} セル · {outputs} 出力 · {errors} エラー',
5
+ 'notebook.savedOutputs': '保存済みの結果 · コードは実行せずに表示します。',
6
+ 'notebook.search': 'セルと出力を検索',
7
+ 'notebook.showCode': 'コードを表示',
8
+ 'notebook.showOutputs': '出力を表示',
9
+ 'notebook.cells': 'Notebook セル',
10
+ 'notebook.cell': 'セル {index}',
11
+ 'notebook.markdown': 'Markdown',
12
+ 'notebook.code': 'コード',
13
+ 'notebook.raw': '未加工テキスト',
14
+ 'notebook.unknown': '不明なセル',
15
+ 'notebook.outputs': '出力 ({count})',
16
+ 'notebook.noOutputs': '保存された出力はありません。',
17
+ 'notebook.empty': 'この Notebook にセルはありません。',
18
+ 'notebook.noMatches': '一致するセルはありません。',
19
+ 'notebook.imageOutput': '保存された画像出力',
20
+ 'notebook.assetUnavailable': '画像を表示できません',
21
+ 'notebook.unsupportedOutput': 'この出力には対応する静的な表現がありません。',
22
+ 'notebook.truncatedOutput': '出力がプレビューの上限を超えています。',
23
+ 'notebook.renderFailed': 'プレビューに失敗しました。以下にソースを表示します。',
24
+ 'notebook.blockedResources': '外部リソースをブロックしました。',
25
+ 'diag.notebook.invalid': '無効な Jupyter Notebook 文書です。',
26
+ 'diag.notebook.version': 'nbformat バージョン 4 の Notebook のみ対応しています。',
27
+ 'diag.notebook.malformed': '形式が不正なセルまたは出力の一部を読み取れませんでした。',
28
+ 'diag.notebook.unknownCell': '不明なセルの種類はソースとして表示します。',
29
+ 'diag.notebook.unknownOutput': '不明な出力の種類は表示できませんでした。',
30
+ 'diag.notebook.cellLimit': 'セルのプレビュー上限に達しました。一部のセルは省略されています。',
31
+ 'diag.notebook.outputLimit': '出力のプレビュー上限に達しました。一部の出力は省略されています。',
32
+ 'diag.notebook.previewLimit': '一部の内容がプレビュー容量の上限を超えたため切り詰められました。',
3
33
  'audio.title': 'オーディオ', 'video.title': '動画', 'dbc.title': 'CANデータベース',
4
34
  'audio.play': '再生', 'audio.pause': '一時停止', 'audio.stop': '停止',
5
35
  'audio.volume': '音量',
@@ -211,6 +241,127 @@ export const CATALOG_JA = {
211
241
  'tflite.inspector.inputs': '入力', 'tflite.inspector.outputs': '出力',
212
242
  'tflite.inspector.intermediates': '中間テンソル', 'tflite.inspector.options': 'オプション',
213
243
  'tflite.inspector.customOptions': 'カスタムオプション', 'tflite.inspector.subgraphs': '参照サブグラフ',
244
+ 'pte.title': 'ExecuTorchプログラム', 'pte.search': '命令、値、デリゲート、セグメントを検索…',
245
+ 'pte.copyJson': 'JSONをコピー', 'pte.method': 'メソッド', 'pte.unnamed': '名前なし',
246
+ 'pte.graph': 'グラフ', 'pte.instructions': '命令', 'pte.values': '値',
247
+ 'pte.io': '入力と出力', 'pte.delegates': 'デリゲート', 'pte.segments': 'セグメント', 'pte.modelInfo': 'モデル情報',
248
+ 'pte.rows': '{total}行中{shown}行を表示', 'pte.noMatches': '検索条件に一致する行はありません。',
249
+ 'pte.selectNode': '検査する命令または値を選択してください。',
250
+ 'pte.emptyGraph': 'このメソッドにはカーネル呼び出しもデリゲート呼び出しもありません。',
251
+ 'pte.graphLimited': 'グラフプレビューは{total}件中{shown}件のみ表示しています。',
252
+ 'pte.graphEdgesLimited': '最初の{count}本の接続のみ表示しています。',
253
+ 'pte.moreItems': 'あと{count}件…', 'pte.schema': 'スキーマ v{version}',
254
+ 'pte.scalar': 'スカラー', 'pte.none': 'None', 'pte.yes': 'はい',
255
+ 'pte.instructionDetail': '#{index} · チェーン {chain}', 'pte.jumpTo': '#{index}へジャンプ',
256
+ 'pte.jumpEnd': 'このチェーンの終端へジャンプ',
257
+ 'pte.jumpInvalid': 'チェーン外の {index} へジャンプ',
258
+ 'pte.binaryBytes': '{bytes}バイト(バイナリ)', 'pte.missingDelegate': 'デリゲート {index} はこのメソッドで宣言されていません。',
259
+ 'pte.inRange': 'ファイル内', 'pte.outOfRange': 'ファイル末尾を超過',
260
+ 'pte.unlocated': '位置不明(ヘッダーなし)',
261
+ 'pte.copyFailed': 'コピーに失敗しました',
262
+ 'pte.summary.methods': 'メソッド', 'pte.summary.instructions': '命令',
263
+ 'pte.summary.operators': '演算子', 'pte.summary.tensors': 'テンソル',
264
+ 'pte.summary.delegates': 'デリゲート', 'pte.summary.constants': '定数データ',
265
+ 'pte.warning.identifier': 'ファイル識別子が期待される ET12 ではなく {identifier} です。',
266
+ 'pte.warning.noMethods': 'プログラムにメソッドがありません。',
267
+ 'pte.warning.noInstructions': 'プログラムのメソッドに命令がありません。',
268
+ 'pte.warning.headerMissing': 'データセグメント{count}件が宣言されていますが、位置を特定する拡張ヘッダーがファイルにありません。',
269
+ 'pte.warning.segmentsOutOfRange': 'データセグメント{count}件がファイル末尾を超えています。',
270
+ 'pte.warning.delegates': 'デリゲート呼び出し{count}件には、ランタイムに次のバックエンドの登録が必要です: {names}',
271
+ 'pte.warning.externalTensors': 'テンソル{count}件は、このビューアが読み込まない別の .ptd ファイルに保存されています。',
272
+ 'pte.warning.missingData': 'テンソル{count}件が、プログラムが提供しない定数データを参照しています。',
273
+ 'pte.warning.missingSegments': '{count}件の参照が、プログラムが宣言していないデータセグメントを指しています。',
274
+ 'pte.warning.unknownScalarTypes': 'テンソル{count}件が、このビューアが認識しないスカラー型を使用しています。',
275
+ 'pte.warning.unknownValueKinds': '値{count}件が、このビューアが認識しない種類です。',
276
+ 'pte.warning.unknownInstructions': '命令{count}件が、このビューアが認識しない種類です。',
277
+ 'pte.column.index': '#', 'pte.column.name': '名前', 'pte.column.chain': 'チェーン', 'pte.column.kind': '種類',
278
+ 'pte.column.target': '演算子 / バックエンド', 'pte.column.inputs': '入力', 'pte.column.outputs': '出力',
279
+ 'pte.column.args': '引数', 'pte.column.type': '型', 'pte.column.shape': '形状', 'pte.column.typeShape': '型 / 形状',
280
+ 'pte.column.elements': '要素数', 'pte.column.dataSize': 'データサイズ', 'pte.column.storage': '格納場所',
281
+ 'pte.column.memory': 'メモリプラン', 'pte.column.valueIndex': '値', 'pte.column.backend': 'バックエンド',
282
+ 'pte.column.location': '位置', 'pte.column.dataIndex': 'データインデックス', 'pte.column.fileOffset': 'ファイルオフセット',
283
+ 'pte.column.compileSpecs': 'コンパイル仕様', 'pte.column.offset': 'オフセット', 'pte.column.status': '状態', 'pte.column.usedBy': '使用元',
284
+ 'pte.kind.KernelCall': 'カーネル呼び出し', 'pte.kind.DelegateCall': 'デリゲート呼び出し', 'pte.kind.MoveCall': '移動',
285
+ 'pte.kind.JumpFalseCall': '偽ならジャンプ', 'pte.kind.FreeCall': '解放', 'pte.kind.Unknown': '不明',
286
+ 'pte.kind.input': '入力', 'pte.kind.output': '出力',
287
+ 'pte.storage.inline': 'インライン定数', 'pte.storage.segment': '定数セグメント', 'pte.storage.mutable': '可変状態',
288
+ 'pte.storage.external': '外部ファイル', 'pte.storage.planned': 'メモリプラン', 'pte.storage.runtime': 'ランタイム',
289
+ 'pte.location.inline': 'インライン', 'pte.location.segment': 'セグメント',
290
+ 'pte.segment.constant': '定数テンソル', 'pte.segment.mutable': '可変状態', 'pte.segment.delegate': 'デリゲートブロブ',
291
+ 'pte.segment.named': '名前付きデータ', 'pte.segment.unused': '未参照',
292
+ 'pte.info.identifier': 'ファイル識別子', 'pte.info.schemaVersion': 'スキーマバージョン', 'pte.info.fileSize': 'ファイルサイズ',
293
+ 'pte.info.extendedHeader': '拡張ヘッダー', 'pte.info.noHeader': 'なし(データセグメントなし)',
294
+ 'pte.info.headerDetail': 'プログラム {program} · セグメント基準 {base} · セグメントデータ {data}',
295
+ 'pte.info.constants': '定数データ', 'pte.info.inlineBuffers': 'インラインバッファ{count}件',
296
+ 'pte.info.delegateData': 'デリゲートデータ', 'pte.info.backends': 'バックエンド', 'pte.info.methods': 'メソッド',
297
+ 'pte.info.namedData': '名前付きデータ', 'pte.info.memoryPlan': 'メモリプラン', 'pte.info.inputSpec': '入力仕様',
298
+ 'pte.info.outputSpec': '出力仕様', 'pte.info.operator': '演算子',
299
+ 'pte.info.dimOrder': '次元順序', 'pte.info.expectedSize': '想定サイズ', 'pte.info.shapeDynamism': '形状の動的性',
300
+ 'pte.info.segment': 'セグメント', 'pte.info.dataIndex': 'データインデックス', 'pte.info.storageOffset': 'ストレージオフセット',
301
+ 'pte.info.requiresGrad': '勾配が必要', 'pte.info.device': 'デバイス',
302
+ 'pte.info.aliasOf': 'メモリ共有元',
303
+ 'pte.inspector.inputs': '入力', 'pte.inspector.outputs': '出力', 'pte.inspector.arguments': '引数',
304
+ 'pte.inspector.delegate': 'デリゲート', 'pte.inspector.destination': 'ジャンプ先', 'pte.inspector.stackTrace': 'スタックトレース',
305
+ 'pte.inspector.value': '値', 'pte.inspector.items': '項目',
306
+ 'har.title': 'HARネットワークログ',
307
+ 'har.search': 'URL・ステータス・ヘッダーを検索…', 'har.searchBodies': '本文も検索',
308
+ 'har.version': 'HAR {version}', 'har.requestCount': 'リクエスト{count}件', 'har.unknownCreator': '作成ツール不明',
309
+ 'har.requests': 'リクエスト', 'har.pages': 'ページ', 'har.info': 'アーカイブ情報',
310
+ 'har.rows': '{total}行中{shown}行を表示', 'har.moreRows': '他{count}件…',
311
+ 'har.noMatches': '現在のフィルターに一致するリクエストはありません。',
312
+ 'har.noEntries': 'このアーカイブにリクエストはありません。',
313
+ 'har.noPages': 'このアーカイブにページ読み込みの記録はありません。',
314
+ 'har.noTimings': 'このリクエストには時間の内訳がありません。',
315
+ 'har.selectRequest': 'リクエストを選択すると詳細が表示されます。',
316
+ 'har.unreadable': 'このファイルをHARアーカイブとして読み取れませんでした。',
317
+ 'har.failed': '失敗', 'har.cached': 'キャッシュ', 'har.notApplicable': '該当なし',
318
+ 'har.resourceSize': 'リソースサイズ {size}', 'har.startedAt': '開始 +{offset}',
319
+ 'har.copyEntry': 'リクエストのJSONをコピー', 'har.copyBody': '本文をコピー',
320
+ 'har.filter.method': 'メソッド', 'har.filter.allMethods': 'すべてのメソッド',
321
+ 'har.filter.status': 'ステータス', 'har.filter.allStatuses': 'すべてのステータス',
322
+ 'har.filter.type': '種類', 'har.filter.allTypes': 'すべての種類',
323
+ 'har.filter.domain': 'ドメイン', 'har.filter.allDomains': 'すべてのドメイン',
324
+ 'har.statusClass.1xx': '1xx 情報', 'har.statusClass.2xx': '2xx 成功',
325
+ 'har.statusClass.3xx': '3xx リダイレクト', 'har.statusClass.4xx': '4xx クライアントエラー',
326
+ 'har.statusClass.5xx': '5xx サーバーエラー', 'har.statusClass.none': '応答なし',
327
+ 'har.type.document': 'ドキュメント', 'har.type.stylesheet': 'スタイルシート', 'har.type.script': 'スクリプト',
328
+ 'har.type.xhr': 'XHR / Fetch', 'har.type.image': '画像', 'har.type.font': 'フォント',
329
+ 'har.type.media': 'メディア', 'har.type.websocket': 'WebSocket', 'har.type.manifest': 'マニフェスト',
330
+ 'har.type.text': 'テキスト', 'har.type.binary': 'バイナリ', 'har.type.other': 'その他',
331
+ 'har.timing.blocked': '待機(キュー)', 'har.timing.dns': 'DNS', 'har.timing.connect': '接続',
332
+ 'har.timing.ssl': 'TLS', 'har.timing.send': '送信', 'har.timing.wait': '応答待ち(TTFB)',
333
+ 'har.timing.receive': '受信', 'har.timing.total': '合計',
334
+ 'har.column.index': '#', 'har.column.name': '名前', 'har.column.method': 'メソッド',
335
+ 'har.column.status': 'ステータス', 'har.column.type': '種類', 'har.column.domain': 'ドメイン',
336
+ 'har.column.size': '転送量', 'har.column.time': '時間', 'har.column.waterfall': 'タイムライン',
337
+ 'har.column.page': 'ページ', 'har.column.title': 'タイトル', 'har.column.started': '開始時刻',
338
+ 'har.column.contentLoad': 'DOMContentLoaded', 'har.column.load': 'Load', 'har.column.requests': 'リクエスト数',
339
+ 'har.detail.general': '概要', 'har.detail.headers': 'ヘッダー', 'har.detail.payload': 'ペイロード',
340
+ 'har.detail.response': '応答', 'har.detail.cookies': 'Cookie', 'har.detail.timings': '時間',
341
+ 'har.detail.rawTimings': '記録された内訳', 'har.detail.requestHeaders': 'リクエストヘッダー',
342
+ 'har.detail.responseHeaders': 'レスポンスヘッダー', 'har.detail.queryString': 'クエリ文字列',
343
+ 'har.detail.requestBody': 'リクエスト本文', 'har.detail.responseBody': 'レスポンス本文',
344
+ 'har.detail.requestCookies': 'リクエストCookie', 'har.detail.responseCookies': 'レスポンスCookie',
345
+ 'har.field.url': 'URL', 'har.field.method': 'メソッド', 'har.field.status': 'ステータス',
346
+ 'har.field.protocol': 'プロトコル', 'har.field.type': '種類', 'har.field.started': '開始時刻',
347
+ 'har.field.offset': 'タイムラインオフセット', 'har.field.time': '所要時間', 'har.field.transferred': '転送量',
348
+ 'har.field.resourceSize': 'リソースサイズ', 'har.field.remoteAddress': 'リモートアドレス',
349
+ 'har.field.connection': 'コネクション', 'har.field.redirect': 'リダイレクト先', 'har.field.page': 'ページ',
350
+ 'har.field.error': 'エラー', 'har.field.comment': 'コメント', 'har.field.mimeType': 'MIMEタイプ',
351
+ 'har.field.encoding': 'エンコーディング', 'har.field.compression': '圧縮による削減量',
352
+ 'har.body.none': 'なし', 'har.body.empty': 'アーカイブに本文テキストは保存されていません。',
353
+ 'har.body.binary': 'バイナリ本文({size}) — base64で保存されており、デコードしません。',
354
+ 'har.body.truncated': 'プレビュー上限で本文を切り詰めました。',
355
+ 'har.body.incomplete': '保存された本文が内容より先に終わっています — 一部をデコードできません。',
356
+ 'har.summary.requests': 'リクエスト', 'har.summary.elapsed': '全体時間', 'har.summary.transferred': '転送量',
357
+ 'har.summary.resources': 'リソース', 'har.summary.domains': 'ドメイン', 'har.summary.errors': 'エラー',
358
+ 'har.summary.pages': 'ページ',
359
+ 'har.info.version': 'HARバージョン', 'har.info.creator': '作成ツール', 'har.info.browser': 'ブラウザー',
360
+ 'har.info.entries': 'リクエスト', 'har.info.pages': 'ページ', 'har.info.domains': 'ドメイン',
361
+ 'har.info.methods': 'メソッド', 'har.info.firstRequest': '最初のリクエスト', 'har.info.elapsed': '全体時間',
362
+ 'har.info.totalTime': 'リクエスト時間の合計', 'har.info.transferred': '転送量',
363
+ 'har.info.resources': 'リソースバイト数', 'har.info.errors': 'エラー応答',
364
+ 'har.info.creatorComment': '作成ツールのコメント',
214
365
  'coreml.title': 'Core MLモデル', 'coreml.search': '演算・オペランド・重みを検索…',
215
366
  'coreml.copyJson': 'JSONをコピー', 'coreml.graph': 'グラフ', 'coreml.unnamed': '名前なし',
216
367
  'coreml.operations': '演算', 'coreml.io': '入力と出力', 'coreml.weights': '重み',
@@ -362,6 +513,7 @@ export const CATALOG_JA = {
362
513
  'pt2.warning.nodesLimited': 'ノード上限に達したため {count} 個のノードを読み取りませんでした。', 'pt2.warning.valuesLimited': '値の上限に達したため {count} 個の値を読み取りませんでした。',
363
514
  'pt2.warning.payloadsLimited': '上限に達したため {count} 個の重みまたは定数エントリを読み取りませんでした。', 'pt2.warning.danglingRefs': '{count} 個の引数が、どのノードも入力も生成しない値を参照しています。',
364
515
  'pt2.warning.subgraphDepth': '{limit} 階層より深くネストしたサブグラフ {count} 個を読み取りませんでした。',
516
+ 'pt2.warning.placeholdersLimited': 'グラフの入力または出力は最初の {limit} 個のみ読み取り、{count} 個を省略しました。',
365
517
  'pt2.warning.pickledPayloads': 'プログラム "{name}": {count} 個のテンソルは torch.save の pickle として保存されており、値のプレビューなしで一覧します。',
366
518
  'pt2.warning.payloadMissing': 'プログラム "{name}": ペイロード設定が参照する {count} 個の重みファイルがアーカイブにありません。',
367
519
  'pt2.warning.payloadTruncated': 'プログラム "{name}": {count} 個の重みファイルが、格納するテンソルより短くなっています。',
@@ -584,6 +736,18 @@ export const CATALOG_JA = {
584
736
  'diag.limit-exceeded.input': 'ファイルが対応する最大サイズ({maxBytes}バイト)を超えています。',
585
737
  'diag.limit-exceeded.decompressed': 'アーカイブの展開後データが対応上限({maxBytes}バイト)を超えています。',
586
738
  'diag.aborted': '解析がキャンセルされました。',
739
+ 'diag.har.invalid': 'このファイルをJSONとして解析できないため、HARアーカイブとして読み取れません。',
740
+ 'diag.har.missing-log': 'このJSONファイルには"log"オブジェクトがないため、HARアーカイブではありません。',
741
+ 'diag.har.missing-entries': 'HARのlogに"entries"配列がありません。',
742
+ 'diag.har.no-entries': 'このアーカイブには記録されたリクエストがありません。',
743
+ 'diag.har.version': 'アーカイブはHAR {version}を宣言しています。1.2として読み取ります。',
744
+ 'diag.har.entry-limit': 'リクエスト{total}件のうち先頭{shown}件のみ読み取りました。',
745
+ 'diag.har.invalid-entries': 'オブジェクトではない項目{count}件をスキップしました。',
746
+ 'diag.har.invalid-dates': 'リクエスト{count}件の開始時刻が有効なISO-8601タイムスタンプではありません。',
747
+ 'diag.har.body-truncated': '本文{count}件を{limit}文字で切り詰めました。',
748
+ 'diag.har.body-incomplete': '応答本文{count}件を最後までデコードできません。',
749
+ 'diag.har.binary-bodies': '応答{count}件の本文はバイナリのため、サイズのみ表示します。',
750
+ 'diag.har.request-errors': 'リクエスト{count}件が応答を受け取る前に失敗しました。',
587
751
  'diag.csv.ragged-rows': '{count}行の列数が異なるため、補完または切り詰められました。',
588
752
  'diag.limit-exceeded.nodes': 'ノード数の上限に達したため、最初の{count}ノードだけを解析しました。',
589
753
  'diag.json.invalid': 'このファイルをJSONとして解析できませんでした。',