@ioai/lerobot-studio 1.2.0 → 1.2.1

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.
@@ -3022,24 +3022,16 @@ var hn = {
3022
3022
  speed: "播放速度"
3023
3023
  },
3024
3024
  subtask: {
3025
- listTitle: "子任务",
3026
- empty: "当前 episode 没有已标注的子任务",
3027
- coverage: "已标注 {{labeled}}/{{total}} ",
3028
- coverageIncomplete: "仍有未标注帧。导出 v3.0 需要每一帧都有子任务;官方的 -1 视为未覆盖。",
3029
- current: "子任务",
3030
- unlabeled: "未标注",
3031
- start: "开始 (Q)",
3032
- startShort: "开始",
3033
- startHint: "标记子任务开始 (Q)",
3034
- end: "结束 (R)",
3035
- endShort: "结束",
3036
- endHint: "标记子任务结束 (R)",
3037
- dialogTitle: "描述子任务",
3038
- dialogRange: "帧 {{start}}–{{end}}",
3039
- label: "子任务描述",
3040
- labelPlaceholder: "例如 Grasp the apple",
3041
- labelRequired: "请输入子任务描述",
3042
- save: "保存子任务"
3025
+ pauseToLabel: "暂停即可标注",
3026
+ dialogTitle: "子任务",
3027
+ dialogRange: "{{start}}–{{end}} · {{startTime}}{{endTime}} ",
3028
+ label: "名称",
3029
+ labelPlaceholder: "抓住苹果",
3030
+ labelRequired: "请输入名称",
3031
+ save: "保存",
3032
+ rangeTrack: "子任务",
3033
+ resizeBoundary: "移动分界",
3034
+ unlabeledGap: "未标注 {{start}}–{{end}}"
3043
3035
  },
3044
3036
  health: {
3045
3037
  noData: "加载数据集后可查看健康检查",
@@ -3530,14 +3522,6 @@ var hn = {
3530
3522
  lastFrame: {
3531
3523
  action: "跳到结尾",
3532
3524
  key: "End"
3533
- },
3534
- subtaskStart: {
3535
- action: "标记子任务开始",
3536
- key: "Q"
3537
- },
3538
- subtaskEnd: {
3539
- action: "标记子任务结束",
3540
- key: "R"
3541
3525
  }
3542
3526
  },
3543
3527
  welcome: {
@@ -3629,6 +3613,7 @@ var hn = {
3629
3613
  },
3630
3614
  export: {
3631
3615
  title: "导出数据集",
3616
+ a11yDescription: "选择导出格式和目标数据集版本,然后导出到文件或文件夹。",
3632
3617
  format: "导出格式",
3633
3618
  directory: "本地文件夹",
3634
3619
  targetVersion: "目标版本",
@@ -3636,9 +3621,11 @@ var hn = {
3636
3621
  changesSummary: "修改摘要",
3637
3622
  modifiedCount: "已修改",
3638
3623
  deletedCount: "已删除",
3639
- subtaskEpisodes: "已标注子任务的 episode",
3640
- subtaskCoverageHint: "带有子任务的 v3.0 导出要求每个被导出 episode 的每一帧都已标注。官方未标注值(-1)会阻止导出;Studio 不会写入 -1。",
3641
- subtaskCoverageIncomplete: "Episode {{index}} 仍有未标注帧({{labeled}}/{{total}})。导出 v3.0 前请补全每一帧。Studio 不会写入 subtask_index = -1。",
3624
+ subtaskEpisodes: "含子任务的 episode",
3625
+ includeSubtasks: "包含子任务",
3626
+ subtaskCoverageHint: "每个导出的 episode 都必须完整标注子任务。",
3627
+ subtaskCoverageMissing: "Episode #{{index}} 还没有标注子任务。",
3628
+ subtaskCoverageIncomplete: "Episode #{{index}} 标注不完整({{labeled}}/{{total}})。",
3642
3629
  totalEpisodes: "Episode 总数",
3643
3630
  metadataOnlyHint: "当前仅导出元数据(info、episodes、tasks)。",
3644
3631
  export: "导出",
@@ -3652,7 +3639,8 @@ var hn = {
3652
3639
  percentDone: "{{percent}}%",
3653
3640
  errorUnknown: "导出失败",
3654
3641
  cancelled: "导出已取消。",
3655
- cancelExport: "取消导出"
3642
+ cancelExport: "取消导出",
3643
+ versionReadOnly: "此数据集版本不支持导出,仅可查看。"
3656
3644
  },
3657
3645
  dialogs: {
3658
3646
  remoteArchive: {
@@ -3687,7 +3675,9 @@ var hn = {
3687
3675
  restoreHandleMissing: "已保存的文件访问已失效,请重新选择文件或目录。",
3688
3676
  restorePermissionDenied: "权限被拒绝,请重新选择文件或目录。",
3689
3677
  restoreHandleMismatch: "已保存的访问无效,请重新选择文件或目录。",
3690
- restoreHandleNotFound: "文件或目录已被移动或删除,请重新选择。"
3678
+ restoreHandleNotFound: "文件或目录已被移动或删除,请重新选择。",
3679
+ insecureOriginPickerFallback: "当前不是安全源,已改用文件选择器。请优先使用 localhost 或 HTTPS。",
3680
+ insecureOriginExportDirectory: "导出到文件夹需要 localhost 或 HTTPS。"
3691
3681
  },
3692
3682
  pagination: {
3693
3683
  previous: "上一页",
@@ -3790,24 +3780,16 @@ var hn = {
3790
3780
  speed: "Playback speed"
3791
3781
  },
3792
3782
  subtask: {
3793
- listTitle: "Subtasks",
3794
- empty: "No labeled subtasks on this episode",
3795
- coverage: "{{labeled}}/{{total}} frames labeled",
3796
- coverageIncomplete: "Unlabeled frames remain. v3.0 export needs every frame labeled; official -1 is treated as unlabeled.",
3797
- current: "Subtask",
3798
- unlabeled: "Unlabeled",
3799
- start: "Start (Q)",
3800
- startShort: "Start",
3801
- startHint: "Mark subtask start (Q)",
3802
- end: "End (R)",
3803
- endShort: "End",
3804
- endHint: "Mark subtask end (R)",
3805
- dialogTitle: "Describe subtask",
3806
- dialogRange: "Frames {{start}}–{{end}}",
3807
- label: "Subtask description",
3808
- labelPlaceholder: "e.g. Grasp the apple",
3809
- labelRequired: "Enter a subtask description",
3810
- save: "Save subtask"
3783
+ pauseToLabel: "Pause to label",
3784
+ dialogTitle: "Subtask",
3785
+ dialogRange: "{{start}}{{end}} · {{startTime}}–{{endTime}} s",
3786
+ label: "Name",
3787
+ labelPlaceholder: "Grasp the apple",
3788
+ labelRequired: "Enter a name",
3789
+ save: "Save",
3790
+ rangeTrack: "Subtasks",
3791
+ resizeBoundary: "Move boundary",
3792
+ unlabeledGap: "Unlabeled {{start}}–{{end}}"
3811
3793
  },
3812
3794
  health: {
3813
3795
  noData: "Load a dataset to see health checks",
@@ -4264,7 +4246,7 @@ var hn = {
4264
4246
  title: "Keyboard Shortcuts",
4265
4247
  description: "Operate faster: play/seek/switch episode via keyboard.",
4266
4248
  playPause: {
4267
- action: "Play/Pause",
4249
+ action: "Play/pause",
4268
4250
  key: "Space"
4269
4251
  },
4270
4252
  prevFrame: {
@@ -4298,14 +4280,6 @@ var hn = {
4298
4280
  lastFrame: {
4299
4281
  action: "Last frame",
4300
4282
  key: "End"
4301
- },
4302
- subtaskStart: {
4303
- action: "Mark subtask start",
4304
- key: "Q"
4305
- },
4306
- subtaskEnd: {
4307
- action: "Mark subtask end",
4308
- key: "R"
4309
4283
  }
4310
4284
  },
4311
4285
  welcome: {
@@ -4397,6 +4371,7 @@ var hn = {
4397
4371
  },
4398
4372
  export: {
4399
4373
  title: "Export Dataset",
4374
+ a11yDescription: "Choose export format and target dataset version, then export to a file or folder.",
4400
4375
  format: "Export Format",
4401
4376
  directory: "Local Directory",
4402
4377
  targetVersion: "Target Version",
@@ -4404,9 +4379,11 @@ var hn = {
4404
4379
  changesSummary: "Changes Summary",
4405
4380
  modifiedCount: "Modified",
4406
4381
  deletedCount: "Deleted",
4407
- subtaskEpisodes: "Subtask-annotated episodes",
4408
- subtaskCoverageHint: "v3.0 export with subtasks requires every frame of every exported episode to be labeled. Official unlabeled values (-1) block export; Studio does not write -1.",
4409
- subtaskCoverageIncomplete: "Episode {{index}} has unlabeled frames ({{labeled}}/{{total}}). Label every frame before exporting v3.0. Studio does not write subtask_index = -1.",
4382
+ subtaskEpisodes: "Subtask episodes",
4383
+ includeSubtasks: "Include subtasks",
4384
+ subtaskCoverageHint: "Every exported episode must be fully labeled.",
4385
+ subtaskCoverageMissing: "Episode #{{index}} has no subtask labels.",
4386
+ subtaskCoverageIncomplete: "Episode #{{index}} is missing labels ({{labeled}}/{{total}}).",
4410
4387
  totalEpisodes: "Total episodes",
4411
4388
  metadataOnlyHint: "Current export includes metadata only (info, episodes, tasks).",
4412
4389
  export: "Export",
@@ -4420,7 +4397,8 @@ var hn = {
4420
4397
  percentDone: "{{percent}}%",
4421
4398
  errorUnknown: "Export failed",
4422
4399
  cancelled: "Export cancelled.",
4423
- cancelExport: "Cancel export"
4400
+ cancelExport: "Cancel export",
4401
+ versionReadOnly: "This dataset version is not supported for export and can only be viewed."
4424
4402
  },
4425
4403
  dialogs: {
4426
4404
  remoteArchive: {
@@ -4455,7 +4433,9 @@ var hn = {
4455
4433
  restoreHandleMissing: "Saved file access expired. Please select the file or folder again.",
4456
4434
  restorePermissionDenied: "Permission denied. Please select the file or folder again.",
4457
4435
  restoreHandleMismatch: "Saved access is invalid. Please select the file or folder again.",
4458
- restoreHandleNotFound: "The file or folder was moved or deleted. Please select it again."
4436
+ restoreHandleNotFound: "The file or folder was moved or deleted. Please select it again.",
4437
+ insecureOriginPickerFallback: "Not a secure origin. Using the file picker. Prefer localhost or HTTPS.",
4438
+ insecureOriginExportDirectory: "Folder export needs localhost or HTTPS."
4459
4439
  },
4460
4440
  pagination: {
4461
4441
  previous: "Previous",
@@ -4558,24 +4538,16 @@ var hn = {
4558
4538
  speed: "再生速度"
4559
4539
  },
4560
4540
  subtask: {
4561
- listTitle: "サブタスク",
4562
- empty: "このエピソードにはラベル付きサブタスクがありません",
4563
- coverage: "{{labeled}}/{{total}} フレームがラベル済み",
4564
- coverageIncomplete: "未ラベルのフレームが残っています。v3.0 のエクスポートは全フレームのラベルが必要です。公式の -1 は未ラベルとして扱います。",
4565
- current: "サブタスク",
4566
- unlabeled: "未アノテーション",
4567
- start: "開始 (Q)",
4568
- startShort: "開始",
4569
- startHint: "サブタスク開始を記録 (Q)",
4570
- end: "終了 (R)",
4571
- endShort: "終了",
4572
- endHint: "サブタスク終了を記録 (R)",
4573
- dialogTitle: "サブタスクを記述",
4574
- dialogRange: "フレーム {{start}}–{{end}}",
4575
- label: "サブタスクの説明",
4576
- labelPlaceholder: "例: Grasp the apple",
4577
- labelRequired: "サブタスクの説明を入力してください",
4578
- save: "サブタスクを保存"
4541
+ pauseToLabel: "一時停止でラベル",
4542
+ dialogTitle: "サブタスク",
4543
+ dialogRange: "{{start}}{{end}} · {{startTime}}–{{endTime}} 秒",
4544
+ label: "名前",
4545
+ labelPlaceholder: "りんごを掴む",
4546
+ labelRequired: "名前を入力",
4547
+ save: "保存",
4548
+ rangeTrack: "サブタスク",
4549
+ resizeBoundary: "境界を移動",
4550
+ unlabeledGap: "未ラベル {{start}}–{{end}}"
4579
4551
  },
4580
4552
  health: /* @__PURE__ */ JSON.parse("{\"noData\":\"データセットを読み込むとヘルスチェックを表示します\",\"statusErrors\":\"検証でエラーを検出\",\"statusWarnings\":\"検証で警告を検出\",\"statusOk\":\"フォーマットチェック完了\",\"checks\":\"チェック項目\",\"noIssues\":\"問題はありません\",\"fpsInvalid\":\"info.fps が未設定または ≤ 0 です。再生が不正になる可能性があります。\",\"zeroLengthEpisodes\":\"{{count}} 件のエピソードの長さが 0 です\",\"episodeCountMismatch\":\"有効エピソード数({{effective}})が info.total_episodes({{total}})と一致しません。編集/削除を反映しました。\",\"footnote\":\"フォーマット検証は読み込み時に実行されます。データ品質(NaN/外れ値)は今後のバージョンで対応予定です。\",\"healthCheckButton\":\"データセットヘルスチェック\",\"check\":\"チェック\",\"validation\":{\"columns\":{\"field\":\"チェック項目\",\"current\":\"現在\",\"expected\":\"期待値\",\"suggestion\":\"推奨対応\"},\"dialog\":{\"title\":\"データセット品質レポート\",\"summaryErrors\":\"検証でエラーを検出\",\"summaryWarnings\":\"検証で警告を検出\",\"summaryOk\":\"すべてのチェックを通過\",\"errorsCount\":\"エラー {{count}} 件\",\"warningsCount\":\"警告 {{count}} 件\",\"passedCount\":\"{{count}} 件通過\",\"filterErrors\":\"エラー {{count}} 件のみを表示\",\"filterWarnings\":\"警告 {{count}} 件のみを表示\",\"filterPassed\":\"通過した {{count}} 件のみを表示\",\"close\":\"閉じる\",\"retry\":\"再試行\",\"export\":\"エクスポート\",\"exportCsv\":\"CSV でエクスポート\",\"exportPdf\":\"PDF でエクスポート\"},\"categories\":{\"file_structure\":\"ファイル構造\",\"meta_info\":\"メタデータ\",\"features\":\"特徴量\",\"episodes\":\"エピソード\"},\"terms\":{\"exists\":\"存在する\",\"missing\":\"欠損\",\"notExists\":\"見つかりません\",\"invalidJson\":\"無効な JSON\",\"validJson\":\"有効な JSON ファイル\",\"positiveInteger\":\"正の整数\",\"nonNegativeInteger\":\"0 以上の整数\",\"positiveNumber\":\"正の数\",\"nonEmptyString\":\"空でない文字列\",\"present\":\"存在\",\"unknown\":\"不明\",\"validDtype\":\"有効な dtype\",\"object\":\"オブジェクト\",\"arrayOrNull\":\"配列または null\",\"nFeatures\":\"{{count}} 特徴量\",\"pathOrFileExists\":\"パスまたはファイルが存在\",\"fieldExists\":\"フィールドが存在\",\"positiveIntArray\":\"[正の整数, ...]\",\"stringArrayMatchShape\":\"string[](長さ = shape の最終次元)\",\"objectWithFeatures\":\"1 つ以上の feature を持つオブジェクト\",\"positiveIntMatchTotalEpisodes\":\"正の整数、total_episodes と一致\",\"episodeLengthPositive\":\"各エピソードの length > 0\",\"nonNegativeIntCount\":\"0 以上の整数(件数)\",\"requiredParquetColumns\":\"frame_index, episode_index, index, timestamp など\",\"objectWithTrainKey\":\"\\\"train\\\" キーを持つオブジェクト\",\"containsTrain\":\"\\\"train\\\" を含む\",\"requiredEpisodesColumns\":\"episode_index, length, dataset_from_index, dataset_to_index\",\"tasksPresent\":\"tasks.jsonl または tasks.parquet が存在\"},\"codes\":{\"INFO_MISSING\":{\"message\":\"meta/info.json が存在しないか読み取れません\",\"suggestion\":\"LeRobot データセットルートに meta/info.json があることを確認してください\"},\"INFO_PARSE_ERROR\":{\"message\":\"meta/info.json の JSON 解析に失敗しました\",\"suggestion\":\"JSON 構文を確認してください(例: https://jsonlint.com)\"},\"VERSION_MISMATCH\":{\"message\":\"codebase_version が v2.x ではありません\",\"suggestion\":\"v3.0 の場合は対応ローダーを使用するか、codebase_version を v2.0 または v2.1 に設定してください\"},\"VERSION_MISMATCH_V3\":{\"message\":\"codebase_version が v3.x ではありません\",\"suggestion\":\"codebase_version を v3.0 に設定してください\"},\"ROBOT_TYPE_MISSING\":{\"message\":\"robot_type が未設定または空です\",\"suggestion\":\"ロボットタイプを設定してください(例: \\\"so100\\\", \\\"lekiwi\\\")\"},\"TOTAL_EPISODES_INVALID\":{\"message\":\"total_episodes は正の整数である必要があります\",\"suggestion\":\"正しいエピソード総数を設定してください\"},\"TOTAL_FRAMES_INVALID\":{\"message\":\"total_frames は正の整数である必要があります\",\"suggestion\":\"正しいフレーム総数を設定してください\"},\"TOTAL_TASKS_INVALID\":{\"message\":\"total_tasks は 0 以上の整数である必要があります\",\"suggestion\":\"正しいタスク総数を設定してください(0 可)\"},\"FPS_INVALID\":{\"message\":\"fps は正の数である必要があります\",\"suggestion\":\"正しい FPS を設定してください(例: 30)\"},\"CHUNKS_SIZE_MISSING\":{\"message\":\"chunks_size が未設定です。デフォルト 1000 を使用します\",\"suggestion\":\"chunks_size フィールドを追加してください(推奨: 1000)\"},\"FEATURES_EMPTY\":{\"message\":\"features が未設定または空です\",\"suggestion\":\"info.json の features にデータセットの全カラムを定義してください\"},\"EPISODES_MISSING\":{\"message\":\"meta/episodes.jsonl が存在しないか読み取れません\",\"suggestion\":\"1 行 1 エピソードの JSON で meta/episodes.jsonl を作成してください\"},\"EPISODES_INVALID_JSONL\":{\"message\":\"episodes.jsonl の行の JSON 解析に失敗しました\",\"suggestion\":\"各行が有効な JSON オブジェクトであることを確認してください\"},\"EPISODES_EMPTY\":{\"message\":\"episodes.jsonl は空です\",\"suggestion\":\"episodes.jsonl にデータがあることを確認してください\"},\"EPISODES_COUNT_MISMATCH\":{\"message\":\"解析したエピソード数({{parsed}})が total_episodes({{expected}})と一致しません\",\"suggestion\":\"episodes.jsonl を再生成するか info.json の total_episodes を修正してください\"},\"ZERO_LENGTH_EPISODES\":{\"message\":\"{{count}} 件のエピソードの長さが 0 です\",\"suggestion\":\"各エピソードが正のフレーム数を持つよう episodes.jsonl を再生成してください\"},\"EPISODES_NO_LENGTH\":{\"message\":\"{{count}} 件のエピソードに length/num_frames がありません\",\"suggestion\":\"episodes.jsonl の各行に \\\"length\\\" を追加してください\"},\"TASKS_MISSING\":{\"message\":\"meta/tasks.jsonl が存在しないか空です\",\"suggestion\":\"1 行 1 JSON で tasks.jsonl を作成: {\\\"task_index\\\": 0, \\\"task\\\": \\\"説明\\\"}\"},\"DATA_FILE_MISSING\":{\"message\":\"データファイルが存在しません\",\"suggestion\":\"v2 形式で data/ に Parquet ファイルを生成してください\"},\"EPISODE_DATA_MISSING\":{\"message\":\"{{total}} 件中 {{missing}} 件の episode parquet がありません\",\"suggestion\":\"欠けている episode parquet を入手するか、完全なデータセットを開いてください\"},\"DATA_FILE_CHECK_FAILED\":{\"message\":\"データファイルの存在を確認できませんでした\",\"suggestion\":\"data/chunk-xxx/episode_xxxxxx.parquet が存在することを確認してください\"},\"VIDEO_FILE_MISSING\":{\"message\":\"動画ファイルが存在しません\",\"suggestion\":\"videos/chunk-xxx/<key>/episode_xxxxxx.mp4 を生成してください\"},\"VIDEO_FILE_CHECK_FAILED\":{\"message\":\"動画ファイルの存在を確認できませんでした\",\"suggestion\":\"videos/chunk-xxx/<key>/episode_xxxxxx.mp4 が存在することを確認してください\"},\"PARQUET_MISSING_COLS\":{\"message\":\"データ Parquet に必須カラムがありません: {{cols}}\",\"suggestion\":\"システムカラムを含むデータ Parquet を再生成してください\"},\"DEFAULT_FEATURE_MISSING\":{\"message\":\"システムフィールド {{key}} がありません\",\"suggestion\":\"meta/info.json の features に \\\"{{key}}\\\" を追加してください\"},\"FEATURE_INVALID\":{\"message\":\"features.{{key}} は有効なオブジェクトではありません\",\"suggestion\":\"各 feature が dtype と shape を持つオブジェクトであることを確認してください\"},\"DTYPE_MISSING\":{\"message\":\"features.{{key}}.dtype がありません\",\"suggestion\":\"dtype を追加してください(例: float32, int64, video, image, string)\"},\"DTYPE_INVALID\":{\"message\":\"features.{{key}}.dtype が無効です: {{dtype}}\",\"suggestion\":\"標準の dtype を使用してください\"},\"SHAPE_INVALID\":{\"message\":\"features.{{key}}.shape は正の整数の非空配列である必要があります\",\"suggestion\":\"shape を設定してください(例: [7], [3, 480, 640])\"},\"NAMES_INVALID\":{\"message\":\"features.{{key}}.names は配列ではありません\",\"suggestion\":\"names を文字列配列または null に設定してください\"},\"NAMES_LENGTH_MISMATCH\":{\"message\":\"features.{{key}}.names の長さ({{actual}})が shape の最終次元({{expected}})と一致しません\",\"suggestion\":\"names の長さを shape の最終次元と一致させてください\"},\"VIDEO_FPS_MISSING\":{\"message\":\"動画 feature {{key}} の fps が未設定または ≤0 です。info.fps を使用します\",\"suggestion\":\"オプション: この feature に fps を設定。未設定の場合は info.fps を使用\"},\"VIDEO_SHAPE_CHANNELS\":{\"message\":\"動画の shape チャンネル数が一般的ではありません\",\"suggestion\":\"通常は 3(RGB)です。[C,H,W] と [H,W,C] の両方に対応\"},\"VIDEO_SHAPE_NDIM\":{\"message\":\"動画 shape は 3D (C, H, W) である必要があります。現在 {{n}}D です\",\"suggestion\":\"shape を [C, H, W] に設定してください\"},\"IMAGE_SHAPE_NDIM\":{\"message\":\"画像 shape は 3D (C, H, W) である必要があります。現在 {{n}}D です\",\"suggestion\":\"shape を [C, H, W] に設定してください\"},\"EPISODES_PARQUET_MISSING\":{\"message\":\"meta/episodes の最初のファイルが存在しません\",\"suggestion\":\"v3 形式で meta/episodes/chunk-xxx/file-xxx.parquet を生成してください\"},\"EPISODES_PARQUET_INVALID\":{\"message\":\"meta/episodes の最初のファイルを Parquet として解析できませんでした\",\"suggestion\":\"episodes Parquet ファイルが有効であることを確認してください\"},\"DATA_PATH_TEMPLATE\":{\"message\":\"info.data_path がデフォルトテンプレートと一致しません\",\"suggestion\":\"デフォルトの data パステンプレートを使用するか、カスタムパスを一貫させてください\"},\"VIDEO_PATH_TEMPLATE\":{\"message\":\"info.video_path がデフォルトテンプレートと一致しません\",\"suggestion\":\"デフォルトの動画パステンプレートを使用してください\"},\"TASKS_PRESENT\":{\"message\":\"タスクメタデータを検出しました\",\"suggestion\":\"\"},\"EPISODE_COUNT\":{\"message\":\"{{count}} 件のエピソードを解析しました\",\"suggestion\":\"\"},\"TASK_COUNT\":{\"message\":\"{{count}} 件のタスクを解析しました\",\"suggestion\":\"\"},\"SPLITS_MISSING_TRAIN\":{\"message\":\"splits に \\\"train\\\" が必要です\",\"suggestion\":\"splits に少なくとも \\\"train\\\" キーを追加してください\"}}}}"),
4581
4553
  summary: {
@@ -4820,14 +4792,6 @@ var hn = {
4820
4792
  lastFrame: {
4821
4793
  action: "最終フレーム",
4822
4794
  key: "End"
4823
- },
4824
- subtaskStart: {
4825
- action: "サブタスク開始を記録",
4826
- key: "Q"
4827
- },
4828
- subtaskEnd: {
4829
- action: "サブタスク終了を記録",
4830
- key: "R"
4831
4795
  }
4832
4796
  },
4833
4797
  welcome: {
@@ -4919,6 +4883,7 @@ var hn = {
4919
4883
  },
4920
4884
  export: {
4921
4885
  title: "データセットをエクスポート",
4886
+ a11yDescription: "エクスポート形式と対象データセットバージョンを選び、ファイルまたはフォルダに書き出します。",
4922
4887
  format: "エクスポート形式",
4923
4888
  directory: "ローカルディレクトリ",
4924
4889
  targetVersion: "対象バージョン",
@@ -4926,9 +4891,11 @@ var hn = {
4926
4891
  changesSummary: "変更概要",
4927
4892
  modifiedCount: "変更済み",
4928
4893
  deletedCount: "削除済み",
4929
- subtaskEpisodes: "サブタスク注釈済みエピソード",
4930
- subtaskCoverageHint: "サブタスク付きの v3.0 エクスポートでは、書き出す各エピソードの全フレームにラベルが必要です。公式の未ラベル値(-1)はエクスポートを阻止します。Studio は -1 を書き込みません。",
4931
- subtaskCoverageIncomplete: "エピソード {{index}} に未ラベルのフレームがあります({{labeled}}/{{total}})。v3.0 を書き出す前に全フレームをラベルしてください。Studio は subtask_index = -1 を書き込みません。",
4894
+ subtaskEpisodes: "サブタスク付きエピソード",
4895
+ includeSubtasks: "サブタスクを含める",
4896
+ subtaskCoverageHint: "書き出す各エピソードはサブタスクをすべてラベルする必要があります。",
4897
+ subtaskCoverageMissing: "エピソード #{{index}} にはサブタスクのラベルがありません。",
4898
+ subtaskCoverageIncomplete: "エピソード #{{index}} のラベルが不完全です({{labeled}}/{{total}})。",
4932
4899
  totalEpisodes: "エピソード総数",
4933
4900
  metadataOnlyHint: "現在のエクスポートはメタデータのみ(info, episodes, tasks)です。",
4934
4901
  export: "エクスポート",
@@ -4942,7 +4909,8 @@ var hn = {
4942
4909
  percentDone: "{{percent}}%",
4943
4910
  errorUnknown: "エクスポートに失敗しました",
4944
4911
  cancelled: "エクスポートをキャンセルしました。",
4945
- cancelExport: "エクスポートをキャンセル"
4912
+ cancelExport: "エクスポートをキャンセル",
4913
+ versionReadOnly: "このデータセットバージョンはエクスポートに対応しておらず、閲覧のみです。"
4946
4914
  },
4947
4915
  dialogs: {
4948
4916
  remoteArchive: {
@@ -4977,7 +4945,9 @@ var hn = {
4977
4945
  restoreHandleMissing: "保存されたファイルアクセスの有効期限が切れました。ファイルまたはフォルダを再度選択してください。",
4978
4946
  restorePermissionDenied: "権限が拒否されました。ファイルまたはフォルダを再度選択してください。",
4979
4947
  restoreHandleMismatch: "保存されたアクセスが無効です。ファイルまたはフォルダを再度選択してください。",
4980
- restoreHandleNotFound: "ファイルまたはフォルダが移動または削除されました。再度選択してください。"
4948
+ restoreHandleNotFound: "ファイルまたはフォルダが移動または削除されました。再度選択してください。",
4949
+ insecureOriginPickerFallback: "セキュアなオリジンではないため、ファイル選択に切り替えました。localhost または HTTPS を推奨します。",
4950
+ insecureOriginExportDirectory: "フォルダへの書き出しには localhost または HTTPS が必要です。"
4981
4951
  },
4982
4952
  pagination: {
4983
4953
  previous: "前へ",