DataFlowing / processor /web /static /js /i18n-data.js
stouchinglhh
Claude
sync processor from GitLab c697b6e: 版本 1.19.4 / 前端 1.12.4 —— 服务端 i18n(首屏不再闪英文)、推理模块并入模型页、前端抽出 shared/、缓存键改用前端号
bb59211
Raw History Blame Contribute Delete
37.7 kB
// 中英词典 —— **唯一的真源**。
//
// 为什么单独一个文件、而不是写在 i18n.js 里:
// 服务端渲染需要它(app/i18n.py 读这个文件),而服务端是 Python。
// 写在 .js 里的话,Python 要么重复维护一份、要么去解析 JS 源码。
// 这里用**合法 JSON** 作为载荷,外面只包一行赋值 —— Python 剥掉包装就能
// json.loads,浏览器当一个普通脚本同步加载(带 ?v= 缓存,不会每页重下)。
//
// 改词条只改这个文件。别在 i18n.js 里再加字面量。
window.__I18N__ = {
"zh": {
"app_title": "processor",
"language": "语言",
"video_review": "视频审核",
"trash": "回收站",
"all_status": "全部状态",
"reviewing": "审核中",
"reviewed": "已审核",
"all_tasks": "全部任务",
"search": "搜索...",
"loading": "加载中...",
"processing": "处理中...",
"ai_annotating": "AI 标注处理中...",
"ai_annotating_hint": "AI 标注完成后自动载入本批次数据",
"no_data": "暂无数据",
"load_failed": "加载失败",
"select_episode": "选择一个视频开始审核 →",
"no_video": "此 Episode 没有视频数据",
"cameras": "相机",
"play_all": "▶ 全部播放",
"pause_all": "⏸ 全部暂停",
"play_btn": "播放",
"pause_btn": "暂停",
"layout_row": "并排",
"layout_grid": "网格",
"layout_column": "上下",
"no_description": "无任务描述",
"frame": "帧",
"download": "下载",
"export": "导出",
"export_hint": "按工作流导出格式下载最终数据集",
"re_export": "重新导出",
"re_exporting": "重新导出中",
"re_export_done": "重新导出完成",
"re_export_failed": "重新导出失败",
"delete": "删除",
"approve": "通过",
"deleted_msg": "已移入回收站",
"select_hint": "选择 Episode 后显示详情",
"trash_empty": "回收站为空",
"trash_title": "回收站",
"purge_all": "全部清空",
"restore": "恢复",
"permanent_delete": "永久删除",
"days_left": "剩余",
"day_unit": "天",
"confirm_trash": "确定将此视频移入回收站吗?\n7 天后自动清理。",
"confirm_permanent": "确定永久删除吗?此操作不可恢复!",
"confirm_purge": "确定清空回收站吗?所有内容将被永久删除!",
"op_failed": "操作失败",
"restore_failed": "恢复失败",
"delete_failed": "删除失败",
"purge_failed": "清空失败",
"export_failed": "导出失败",
"no_reviewed": "没有已审核的 Episode 可导出",
"export_created": "导出任务已创建,完成后自动下载",
"left_hand": "左手",
"right_hand": "右手",
"single_mono": "单目视频",
"glove_sensor": "手套传感器",
"depth_image": "深度图",
"aux_video": "辅助视频",
"skeleton_suffix": "骨骼",
"glove_suffix": "手套",
"depth_suffix": "深度",
"stereo_pair": "双目并排",
"3d_skeleton": "3D 骨骼",
"stereo_render": "3D 拼接",
"hand3d_no_data": "该帧无 3D 骨骼数据",
"hand3d_hand0": "手 0",
"hand3d_hand1": "手 1",
"hand3d_world": "3D 手部世界坐标",
"heatmap_toggle": "深度热力图",
"synced_ok": "同步正常",
"drag_here": "拖拽素材到这里",
"remove_source": "移除素材",
"video_suffix": "视频",
"hand_pressure": "手部压力",
"media_assets": "素材",
"drag_to_canvas": "拖拽素材到中间视频区域",
"raw_vs_processed": "原始视频 / 处理结果",
"refresh": "刷新",
"not_found": "未找到",
"deleted": "已删除",
"port_label": "Port",
"annotation": "动作标注",
"annotation_readonly": "只读",
"annotations": "标注段",
"new_annotation": "新增标注",
"edit_annotation": "编辑标注",
"delete_annotation": "删除标注",
"label_name": "标注名称",
"start_frame": "起始帧",
"end_frame": "结束帧",
"set_start_frame": "设起始帧",
"set_end_frame": "设结束帧",
"keyframe": "关键帧",
"add_keyframe": "添加关键帧",
"frames_covered": "帧已标注",
"per_frame_label": "每帧标注",
"no_annotations": "暂无标注,点击\"新增\"创建第一个标注段",
"confirm_delete_anno": "确定删除此标注段吗?",
"save_annotation": "保存标注",
"save_changes": "保存修改",
"slice_conflict": "此切片已在另一台电脑修改,已加载最新版本。请确认后再次保存。",
"current_frame": "当前帧",
"anno_color": "颜色",
"anno_frame_range": "帧范围",
"anno_duration": "时长",
"anno_keyframe_event": "关键帧事件",
"seconds_abbr": "s",
"select_all": "全选",
"batch_download": "批量下载",
"batch_export_dataset": "导出数据集 (慢)",
"batch_zip_download": "打包下载 (快)",
"batch_zip_hint": "从源数据集原样裁出所选批次 —— 产出仍是单个 LeRobot 结构(data/ + meta/ + videos/),不重建、秒级返回。只想把这批数据拿走就用这个。",
"batch_export_hint": "把所选批次合并成**一个**可训练数据集(需要整库重建:重编码视频 + 重算统计,约 30 秒/集)。要拿去训练才用这个。",
"batch_selected_summary": "已选 %s 集 · %f 帧",
"minutes_short": "分",
"select_project_all": "全选本项目(含折叠中的批次)",
"unreview": "撤销",
"retry_review": "放入审核",
"reprocess": "重新处理",
"confirm_reprocess": "重新运行该批次绑定的工作流?新产物将替换旧处理结果。",
"reprocess_failed": "重新处理失败: ",
"nav_home": "首页",
"nav_tasks": "项目",
"nav_review": "视频审核",
"nav_trash": "回收站",
"nav_workflow": "工作流",
"nav_users": "用户",
"nav_annotation": "标注",
"nav_model": "模型",
"train_tab_checkpoints": "模型输出",
"train_tab_params": "训练参数",
"train_label_model": "模型",
"train_label_location": "位置",
"train_files_unit": "个文件",
"train_group_train": "训练",
"train_group_policy": "策略 Policy",
"train_group_optimizer": "优化器",
"train_group_dataset": "数据集",
"train_step_badge": "步骤",
"train_file_details": "文件明细",
"train_col_name": "文件名",
"train_col_size": "大小",
"train_col_mtime": "修改时间",
"train_btn_download": "下载",
"train_btn_delete": "删除",
"train_btn_infer": "推理",
"train_btn_deploy": "离线部署",
"train_btn_hint_delete": "删除 checkpoint 是破坏性操作,暂不开放",
"train_btn_hint_download_row": "展开文件明细 —— 那里每行单独下载",
"train_btn_hint_infer_row": "切到「模型推理」页签并选中本检查点",
"train_btn_hint_deploy": "属于部署模块,本期未做",
"train_checkpoints_empty": "这个训练目录下没有 checkpoint。",
"train_params_source": "来源:",
"train_params_empty": "这个 checkpoint 没有 train_config.json,读不到训练参数。",
"train_page_runs": "模型训练",
"train_page_new": "新建训练",
"train_page_inference": "模型推理",
"train_new_live": "实时",
"train_new_pending": "待接入",
"train_new_model_tested": "已实测",
"train_new_model_act_desc": "基于 Transformer 的动作分块模仿学习模型",
"train_new_frames": "帧",
"train_new_reset": "恢复实测默认值",
"train_sec_dataset": "① 训练数据集",
"train_sec_model": "② 选择模型",
"train_sec_location": "③ 训练位置",
"train_sec_params": "④ 训练参数",
"train_sec_resume": "⑤ 从已有训练继续(可选)",
"train_loc_local": "私有算力",
"train_loc_local_desc": "本机显卡直连",
"train_gpu_unavailable": "读不到 GPU",
"train_gpu_unavailable_hint": "训练前请先修驱动 —— 驱动不可用时训练起不来。",
"train_gpu_none": "nvidia-smi 没有报告任何 GPU。",
"train_gpu_busy": "占用中",
"train_gpu_idle": "空闲",
"train_gpu_mem": "显存",
"train_gpu_util": "GPU 利用率",
"train_gpu_temp": "温度",
"train_gpu_include": "参与训练",
"train_framework": "训练框架",
"train_framework_hint": "ACT 在 LeRobot 里只有一种实现,这里没有可选项。",
"train_help_job_name": "这次训练的名字,会成为 checkpoint 的文件夹名 —— 取短一点、别重名。",
"train_help_batch": "较大的批次可以提高训练稳定性,但需要更多显存;较小的批次训练更快但可能不稳定。建议范围 1-32。",
"train_help_steps": "更多步数通常能提高模型性能,但可能导致过拟合。建议从 10000 开始,根据验证结果调整。",
"train_help_seed": "设置固定种子可以复现相同的训练结果,便于调试和比较。建议用 1000、42 等固定值。",
"train_help_workers": "更多工作进程可以加速数据加载,但会占用更多内存。建议设置为 CPU 核心数的 1/2 到 1 倍。",
"train_help_eval_freq": "设置多少步进行一次模型评估,建议设为总步数的 10%。",
"train_help_log_freq": "设置多少步刷新一次进度,建议 10 到 100 步。",
"train_help_save_ckpt": "开启后会在训练过程中保存模型检查点,便于恢复训练或部署模型。",
"train_help_save_freq": "设置多少步保存一次模型检查点,建议设为总步数的 30%。",
"train_ready_title": "已达采集上限,可以导出了",
"train_ready_go": "去导出",
"train_dataset_none": "还没有导出的数据集。",
"train_dataset_goto_export": "去导出已通过的集",
"train_episodes": "集",
"train_resume_none": "— 全新训练 —",
"train_resume_latest": "— 最新 —",
"train_resume_task": "源训练任务",
"train_resume_step": "检查点",
"train_no_output": "这次训练没有可展示的产物。",
"train_no_root": "本机没有训练产物目录",
"train_no_runs": "该目录下没有训练产物",
"train_load_failed": "读取训练产物失败",
"menu_profile": "个人资料",
"menu_change_password": "修改密码",
"menu_logout": "退出登录",
"users_title": "用户管理",
"users_subtitle": "管理账号、角色与账号生命周期。",
"users_new": "新建用户",
"users_total": "用户总数",
"users_active": "活跃用户",
"users_disabled_expired": "已禁用 / 已过期",
"status_active": "正常",
"status_expired": "已过期",
"status_disabled": "已禁用",
"users_disable_warning": "会临时禁止登录,但保留账号与数据,之后可再启用。",
"users_all_roles": "全部角色",
"users_all_status": "全部状态",
"role_admin": "管理员",
"role_engineer": "工程师",
"role_reviewer": "审核员",
"col_user": "用户",
"col_role": "角色",
"col_status": "状态",
"col_last_login": "最近登录",
"col_expires": "到期",
"col_actions": "操作",
"users_extend": "延期",
"users_extend_hint": "修改到期时间以重新启用该账号",
"users_disable": "禁用",
"users_disable_hint": "临时禁止登录,之后可再启用",
"users_enable": "启用",
"users_enable_hint": "允许该用户重新登录",
"users_edit": "编辑",
"users_edit_hint": "编辑账号",
"users_edit_user": "编辑用户",
"users_save_changes": "保存修改",
"users_create": "创建用户",
"users_delete": "删除",
"users_delete_hint": "永久删除该账号",
"users_delete_warning": "将永久删除该账号。",
"users_confirm_delete": "永久删除 %s?如果以后可能还要用这个账号,禁用更稳妥。",
"users_role_perms": "角色权限",
"users_perm_admin": "用户、项目、工作流、处理、审核与系统设置",
"users_perm_engineer": "项目、工作流、处理与审核",
"users_perm_reviewer": "查看数据、视频审核与标注审核",
"field_username": "用户名",
"field_email": "邮箱",
"field_password": "密码",
"field_expires_at": "到期时间",
"users_pw_hint": "(至少 6 个字符)",
"users_pw_keep": "(留空则保持原密码)",
"users_optional": "(可选)",
"users_no_found": "未找到用户",
"users_no_email": "无邮箱",
"users_never": "从未",
"users_count": "%s 个用户",
"preview_options": "预览选项",
"video_sources": "视频源",
"all": "全部",
"hand_skeleton": "手部骨骼",
"hand_trail": "手部轨迹",
"frame_label": "帧:",
"play": "播放",
"select": "选择",
"name_1_to_n": "命名 1→N",
"name_n_to_1": "命名 N→1",
"sort_label": "排序:",
"n_selected": "已选 %s",
"undo": "撤销",
"new_export": "新建导出",
"dataset_name": "数据集名称",
"train_ratio": "训练集占比",
"start_export": "开始导出",
"dataset": "数据集",
"progress": "进度",
"created": "创建时间",
"task_active": "进行中",
"task_paused": "已暂停",
"ai_status_segmenting": "切段中…",
"ai_status_analyzing": "VLM 分析中…",
"ai_status_writing": "写入…",
"ai_status_exporting": "写入数据集…",
"force_unit_mn": "力 mN",
"force_field_title": "接触力场(固定全幅,不可缩放)",
"slice_boundary_suspect": "边界可疑或标签未命中词表",
"anno_ai_mode_title": "AI 自动切段并提案标注(模式由工作流 AI Annotation 卡片配置决定)",
"overview_title": "概览",
"load_failed_stats": "加载统计数据失败",
"retry": "重试",
"stat_reviewing": "待审核",
"stat_approved": "已通过",
"stat_failed": "异常",
"stat_total": "全部",
"stat_to_review": "待审核",
"stat_distribution": "状态分布",
"daily_uploads": "每日上传",
"last_30_days": "(近 30 天)",
"donut_total": "总计",
"stat_processing": "处理中",
"stat_received": "已接收",
"cleaning_passed": "质检通过",
"cleaning_failed": "质检未通过",
"stat_anomaly": "异常",
"recent_episodes": "最近 Episode",
"view_all": "查看全部",
"pipeline_status": "Pipeline 状态",
"new_task": "新建任务",
"edit_task": "编辑任务",
"task_name": "任务名称",
"task_name_hint": "请使用字母/数字/下划线/中文,需与上传文件前缀匹配",
"task_description": "描述",
"claimer": "认领人",
"target_episodes": "目标条数",
"target_duration": "目标时长(秒)",
"fps": "帧率",
"save": "保存",
"cancel": "取消",
"delete_task": "删除任务",
"confirm_delete_task": "确定删除此任务吗?(已有采集数据将保留)",
"episodes": "Episodes",
"frames": "帧",
"no_frame_target": "无帧数目标",
"devices": "设备",
"online": "在线",
"offline": "离线",
"unknown": "未知",
"last_seen": "最近活跃",
"device_empty": "暂无设备接入",
"expand_episodes": "查看 Episodes",
"load_more": "加载更多",
"no_tasks": "暂无任务,点击\"新建任务\"创建第一个采集任务",
"projects_title": "项目",
"search_projects": "搜索项目...",
"new_project": "新建项目",
"edit_project": "编辑项目",
"project_name": "项目名称",
"bind_workflow": "绑定工作流",
"workflow_placeholder": "— 选择工作流 —",
"device_type": "设备类型",
"status": "状态",
"no_projects": "暂无项目,点击右上角「新建项目」创建",
"tasks_count": "任务",
"videos_count": "视频",
"ep_count": "条",
"upload_new": "新批次",
"upload_reupload": "重传",
"upload_total": "总上传",
"upload_unclassified": "历史未分类",
"target_unlimited": "不限",
"no_tasks_in_project": "该项目下暂无任务(上传数据后自动归类)",
"delete_project": "删除",
"confirm_delete_project": "确定删除项目「",
"confirm_delete_project_suffix": "」?项目下的任务/视频记录不会被删除。",
"project_saved": "保存成功",
"project_save_failed": "保存失败",
"project_delete_failed": "删除失败",
"project_load_failed": "加载失败",
"unbound_workflow": "未绑定工作流",
"workflow_edit": "编辑",
"workflow_selected": "已选 %s 个工作流",
"project_need_workflow": "项目设为 active 前必须先绑定至少一个工作流",
"new_workflow_panel": "新建工作流",
"new_workflow_prompt": "新工作流名称:",
"workflow_create_failed": "创建工作流失败",
"workflow_empty": "空",
"template_badge": "模板",
"project_saved_go_build": "项目已保存。是否前往工作流画布搭建/查看工作流?",
"status_purged": "已彻底删除",
"observed_inputs": "输入",
"exceptions_badge": "异常",
"exceptions": "异常",
"exception_kind_mismatch": "输入不匹配",
"exception_kind_missing": "设备数据缺失",
"input_missing_title": "工作流设备数据不完整",
"input_missing_detail": "以下设备缺失,本批次仅处理已上传设备:",
"exception_kind_failed": "运行失败",
"exception_delete": "删除异常",
"exception_delete_failed": "删除异常失败",
"anno_timeline": "标记时间轴",
"slice_marker": "切片标记",
"new_slice": "新建切片",
"no_slices": "暂无切片标记",
"no_slices_hint": "拖动时间轴后创建一个标记区间",
"current_slice": "当前标记",
"enter_slice_name": "请输入标记名称",
"add_slice": "添加切片",
"ai_annotate": "AI 标注",
"unnamed_slice": "未命名切片",
"slice_save_failed": "保存失败: ",
"slice_delete_failed": "删除失败: ",
"inf_sec_model": "① 选择模型",
"inf_sec_data": "② 测试数据",
"inf_sec_run": "③ 运行",
"inf_sec_result": "④ 结果",
"inf_label_run": "训练任务",
"inf_label_step": "检查点",
"inf_label_dataset": "测试集",
"inf_live": "实时",
"inf_pending": "待接入",
"inf_no_params": "这个检查点没有 train_config.json,读不到训练参数。",
"inf_params_from": "来源",
"inf_no_models": "还没有训练好的模型",
"inf_dataset_none": "— 选择测试集 —",
"inf_datasets_available": "个数据集可选",
"inf_no_datasets": "还没有导出的数据集 —— 先去审核页导出一份。",
"inf_run_btn": "运行推理",
"inf_run_disabled": "后端执行尚未接入",
"inf_run_note": "后端执行还没接 —— 这个按钮是**故意禁用**的。",
"inf_run_hint": "接上之后:用所选检查点在测试集上跑一遍,给出方向余弦、幅度比、夹爪 MAE 与误差曲线(eval_gui.py 那套指标)。",
"inf_no_result": "还没有评估结果。"
},
"en": {
"app_title": "processor",
"language": "Language",
"video_review": "Video Review",
"trash": "Trash",
"all_status": "All Status",
"reviewing": "Reviewing",
"reviewed": "Reviewed",
"all_tasks": "All Tasks",
"search": "Search...",
"loading": "Loading...",
"processing": "Processing...",
"ai_annotating": "AI annotation running...",
"ai_annotating_hint": "This batch becomes viewable once AI annotation finishes",
"no_data": "No data",
"load_failed": "Load failed",
"select_episode": "Select an episode to review →",
"no_video": "No video data",
"cameras": "Cameras",
"play_all": "▶ Play All",
"pause_all": "⏸ Pause All",
"play_btn": "Play",
"pause_btn": "Pause",
"layout_row": "Row",
"layout_grid": "Grid",
"layout_column": "Stack",
"no_description": "No description",
"frame": "frames",
"download": "Download",
"export": "Export",
"export_hint": "Download final dataset in workflow export format",
"re_export": "Re-export",
"re_exporting": "Re-exporting…",
"re_export_done": "Re-export done",
"re_export_failed": "Re-export failed",
"delete": "Delete",
"approve": "Approve",
"deleted_msg": "Moved to trash",
"select_hint": "Select an episode to view details",
"trash_empty": "Trash is empty",
"trash_title": "Trash",
"purge_all": "Purge All",
"restore": "Restore",
"permanent_delete": "Delete",
"days_left": "Remaining",
"day_unit": "days",
"confirm_trash": "Move to trash?\nAuto-cleaned after 7 days.",
"confirm_permanent": "Permanently delete? This cannot be undone!",
"confirm_purge": "Purge all trash? All items will be permanently deleted!",
"op_failed": "Operation failed",
"restore_failed": "Restore failed",
"delete_failed": "Delete failed",
"purge_failed": "Purge failed",
"export_failed": "Export failed",
"no_reviewed": "No reviewed episodes to export",
"export_created": "Export job created; it will download when ready",
"left_hand": "Left Hand",
"right_hand": "Right Hand",
"single_mono": "Single Camera",
"glove_sensor": "Glove Sensors",
"depth_image": "Depth Images",
"aux_video": "Aux Video",
"skeleton_suffix": "Skeleton",
"glove_suffix": "Glove",
"depth_suffix": "Depth",
"stereo_pair": "Stereo Pair",
"3d_skeleton": "3D Skeleton",
"stereo_render": "3D Side-by-Side",
"hand3d_no_data": "No 3D skeleton data for this frame",
"hand3d_hand0": "Hand 0",
"hand3d_hand1": "Hand 1",
"hand3d_world": "3D Hand World",
"heatmap_toggle": "Depth Heatmap",
"synced_ok": "Synced",
"drag_here": "Drag assets here",
"remove_source": "Remove",
"video_suffix": "Video",
"hand_pressure": "Hand Pressure",
"media_assets": "Assets",
"drag_to_canvas": "Drag assets onto the video area",
"raw_vs_processed": "Raw video / Processing results",
"refresh": "Refresh",
"not_found": "Not found",
"deleted": "Deleted",
"port_label": "Port",
"annotation": "Annotation",
"annotation_readonly": "Read only",
"annotations": "Annotations",
"new_annotation": "New Annotation",
"edit_annotation": "Edit Annotation",
"delete_annotation": "Delete Annotation",
"label_name": "Label Name",
"start_frame": "Start Frame",
"end_frame": "End Frame",
"set_start_frame": "Set Start",
"set_end_frame": "Set End",
"keyframe": "Keyframe",
"add_keyframe": "Add Keyframe",
"frames_covered": "frames labeled",
"per_frame_label": "per-frame label",
"no_annotations": "No annotations. Click \"+\" to create one.",
"confirm_delete_anno": "Delete this annotation segment?",
"save_annotation": "Save Annotation",
"save_changes": "Save Changes",
"slice_conflict": "This slice was changed on another computer. The latest version has been loaded.",
"current_frame": "Current Frame",
"anno_color": "Color",
"anno_frame_range": "Frame Range",
"anno_duration": "Duration",
"anno_keyframe_event": "Keyframe Event",
"seconds_abbr": "s",
"select_all": "Select All",
"batch_download": "Batch Download",
"batch_export_dataset": "Export dataset (slow)",
"batch_zip_download": "Zip download (fast)",
"batch_zip_hint": "Carves the selected episodes out of the source dataset as-is — still a single LeRobot structure (data/ + meta/ + videos/), no rebuild, returns in seconds. Use this to just take the data away.",
"batch_export_hint": "Merges the selected episodes into ONE trainable dataset (full rebuild: re-encode videos + recompute stats, ~30s/episode). Use this only for training.",
"batch_selected_summary": "%s episodes · %f frames",
"minutes_short": "min",
"select_project_all": "Select all in this project (including collapsed)",
"unreview": "Unreview",
"retry_review": "Re-review",
"reprocess": "Reprocess",
"confirm_reprocess": "Re-run the bound workflows for this episode? New output will replace the old processing result.",
"reprocess_failed": "Reprocess failed: ",
"nav_home": "Home",
"nav_tasks": "Projects",
"nav_review": "Video Review",
"nav_trash": "Trash",
"nav_workflow": "Workflow",
"nav_users": "Users",
"nav_annotation": "Annotation",
"nav_model": "Model",
"train_tab_checkpoints": "Model Output",
"train_tab_params": "Training Config",
"train_label_model": "Model",
"train_label_location": "Location",
"train_files_unit": "files",
"train_group_train": "Training",
"train_group_policy": "Policy",
"train_group_optimizer": "Optimizer",
"train_group_dataset": "Dataset",
"train_step_badge": "Step",
"train_file_details": "File details",
"train_col_name": "Name",
"train_col_size": "Size",
"train_col_mtime": "Modified",
"train_btn_download": "Download",
"train_btn_delete": "Delete",
"train_btn_infer": "Inference",
"train_btn_deploy": "Offline Deploy",
"train_btn_hint_delete": "Deleting a checkpoint is destructive; not exposed yet",
"train_btn_hint_download_row": "Expand the file list — each file downloads individually",
"train_btn_hint_infer_row": "Open the Inference tab with this checkpoint selected",
"train_btn_hint_deploy": "Belongs to the Deployment module, not built yet",
"train_checkpoints_empty": "No checkpoints under this run.",
"train_params_source": "Source:",
"train_params_empty": "No train_config.json in this checkpoint; parameters unavailable.",
"train_page_runs": "Model Training",
"train_page_new": "New Training",
"train_page_inference": "Model Inference",
"train_new_live": "live",
"train_new_pending": "not wired",
"train_new_model_tested": "tested",
"train_new_model_act_desc": "Transformer action-chunking imitation learning policy",
"train_new_frames": "frames",
"train_new_reset": "Restore measured defaults",
"train_sec_dataset": "1. Training Dataset",
"train_sec_model": "2. Model",
"train_sec_location": "3. Training Location",
"train_sec_params": "4. Training Parameters",
"train_sec_resume": "5. Continue From a Previous Run (optional)",
"train_loc_local": "Private Compute",
"train_loc_local_desc": "GPUs on this machine",
"train_gpu_unavailable": "Cannot read the GPUs",
"train_gpu_unavailable_hint": "Fix the driver before training — training cannot start without it.",
"train_gpu_none": "nvidia-smi reported no GPUs.",
"train_gpu_busy": "busy",
"train_gpu_idle": "idle",
"train_gpu_mem": "VRAM",
"train_gpu_util": "GPU util",
"train_gpu_temp": "Temp",
"train_gpu_include": "Use for training",
"train_framework": "Training framework",
"train_framework_hint": "ACT ships as a single LeRobot implementation, so there is nothing to choose here.",
"train_help_job_name": "Name of this run. It becomes the checkpoint folder name, so keep it short and unique.",
"train_help_batch": "Larger batches train more stably but need more VRAM; smaller ones are faster but less stable. Suggested 1-32.",
"train_help_steps": "More steps usually improve the policy but risk overfitting. Start at 10000 and adjust from validation.",
"train_help_seed": "A fixed seed reproduces the same run, which makes debugging and comparison possible. 1000 or 42.",
"train_help_workers": "More workers load data faster but use more memory. About 1/2 to 1x the CPU core count.",
"train_help_eval_freq": "How often to run an evaluation, in steps. About 10% of total steps.",
"train_help_log_freq": "How often to refresh progress, in steps. 10-100 works well.",
"train_help_save_ckpt": "Save checkpoints while training so a run can be resumed or deployed.",
"train_help_save_freq": "How often to save a checkpoint, in steps. About 30% of total steps.",
"train_ready_title": "Collection limit reached — ready to export",
"train_ready_go": "Go export",
"train_dataset_none": "No exported dataset yet.",
"train_dataset_goto_export": "Go export approved episodes",
"train_episodes": "episodes",
"train_resume_none": "— Start fresh —",
"train_resume_latest": "— latest —",
"train_resume_task": "Source run",
"train_resume_step": "Checkpoint",
"train_no_output": "This run has no artifacts to show.",
"train_no_root": "No training output directory on this host",
"train_no_runs": "No training output under this directory",
"train_load_failed": "Failed to load training output",
"menu_profile": "Profile",
"menu_change_password": "Change Password",
"menu_logout": "Logout",
"users_title": "User management",
"users_subtitle": "Manage accounts, roles and account lifecycle.",
"users_new": "New user",
"users_total": "Total users",
"users_active": "Active users",
"users_disabled_expired": "Disabled / expired",
"status_active": "Active",
"status_expired": "Expired",
"status_disabled": "Disabled",
"users_disable_warning": "blocks login temporarily and keeps the account/data; it can be enabled later.",
"users_all_roles": "All roles",
"users_all_status": "All status",
"role_admin": "Admin",
"role_engineer": "Engineer",
"role_reviewer": "Reviewer",
"col_user": "User",
"col_role": "Role",
"col_status": "Status",
"col_last_login": "Last login",
"col_expires": "Expires",
"col_actions": "Actions",
"users_extend": "Extend",
"users_extend_hint": "Edit the expiry date to reactivate this account",
"users_disable": "Disable",
"users_disable_hint": "Block login temporarily; can be enabled later",
"users_enable": "Enable",
"users_enable_hint": "Allow this user to log in again",
"users_edit": "Edit",
"users_edit_hint": "Edit account",
"users_edit_user": "Edit user",
"users_save_changes": "Save changes",
"users_create": "Create user",
"users_delete": "Delete",
"users_delete_hint": "Permanently delete this account",
"users_delete_warning": "permanently removes the account.",
"users_confirm_delete": "Permanently delete %s? Disable is safer if you may need the account later.",
"users_role_perms": "Role permissions",
"users_perm_admin": "Users, projects, workflows, processing, review and system settings",
"users_perm_engineer": "Projects, workflows, processing and review",
"users_perm_reviewer": "View data, video review and annotation review",
"field_username": "Username",
"field_email": "Email",
"field_password": "Password",
"field_expires_at": "Expires at",
"users_pw_hint": "(at least 6 characters)",
"users_pw_keep": "(leave blank to keep current password)",
"users_optional": "(optional)",
"users_no_found": "No users found",
"users_no_email": "No email",
"users_never": "Never",
"users_count": "%s users",
"preview_options": "Preview Options",
"video_sources": "Video Sources",
"all": "All",
"hand_skeleton": "Hand Skeleton",
"hand_trail": "Hand Trail",
"frame_label": "Frame:",
"play": "Play",
"select": "Select",
"name_1_to_n": "Name 1→N",
"name_n_to_1": "Name N→1",
"sort_label": "Sort: ",
"n_selected": "%s selected",
"undo": "Undo",
"new_export": "New Export",
"dataset_name": "Dataset Name",
"train_ratio": "Train Ratio",
"start_export": "Start Export",
"dataset": "Dataset",
"progress": "Progress",
"created": "Created",
"task_active": "active",
"task_paused": "paused",
"ai_status_segmenting": "Segmenting…",
"ai_status_analyzing": "Analyzing (VLM)…",
"ai_status_writing": "Writing…",
"ai_status_exporting": "Writing dataset…",
"force_unit_mn": "Force (mN)",
"force_field_title": "Contact force field (fixed full frame, not zoomable)",
"slice_boundary_suspect": "Suspicious boundary or label not in vocabulary",
"anno_ai_mode_title": "AI auto-segments and proposes annotations (mode is configured on the workflow AI Annotation card)",
"overview_title": "Overview",
"load_failed_stats": "Failed to load statistics",
"retry": "Retry",
"stat_reviewing": "Reviewing",
"stat_approved": "Approved",
"stat_failed": "Failed",
"stat_total": "All Episodes",
"stat_to_review": "To Review",
"stat_distribution": "Status Distribution",
"daily_uploads": "Daily Uploads",
"last_30_days": "(last 30 days)",
"donut_total": "Total",
"stat_processing": "Processing",
"stat_received": "Received",
"cleaning_passed": "Cleaning passed",
"cleaning_failed": "Cleaning failed",
"stat_anomaly": "Anomaly",
"recent_episodes": "Recent Episodes",
"view_all": "View All",
"pipeline_status": "Pipeline Status",
"new_task": "New Task",
"edit_task": "Edit Task",
"task_name": "Task Name",
"task_name_hint": "Letters/digits/underscore/Chinese; must match zip filename prefix",
"task_description": "Description",
"claimer": "Claimer",
"target_episodes": "Target Episodes",
"target_duration": "Target Duration (s)",
"fps": "FPS",
"save": "Save",
"cancel": "Cancel",
"delete_task": "Delete Task",
"confirm_delete_task": "Delete this task? (Existing episodes will be kept)",
"episodes": "Episodes",
"frames": "Frames",
"no_frame_target": "No frame target",
"devices": "Devices",
"online": "Online",
"offline": "Offline",
"unknown": "Unknown",
"last_seen": "Last Seen",
"device_empty": "No devices connected",
"expand_episodes": "View Episodes",
"load_more": "Load More",
"no_tasks": "No tasks yet. Click \"New Task\" to create one.",
"projects_title": "Projects",
"search_projects": "Search projects...",
"new_project": "New Project",
"edit_project": "Edit Project",
"project_name": "Project Name",
"bind_workflow": "Workflow",
"workflow_placeholder": "— Select workflow —",
"device_type": "Device Type",
"status": "Status",
"no_projects": "No projects yet. Click \"New Project\" to create one.",
"tasks_count": "tasks",
"videos_count": "videos",
"ep_count": "episodes",
"upload_new": "new batches",
"upload_reupload": "reuploads",
"upload_total": "total uploads",
"upload_unclassified": "legacy unclassified",
"target_unlimited": "unlimited",
"no_tasks_in_project": "No tasks under this project (uploads are grouped automatically).",
"delete_project": "Delete",
"confirm_delete_project": "Delete project \"",
"confirm_delete_project_suffix": "\"? Task/episode records are kept.",
"project_saved": "Saved",
"project_save_failed": "Save failed",
"project_delete_failed": "Delete failed",
"project_load_failed": "Load failed",
"unbound_workflow": "No workflow bound",
"workflow_edit": "Edit",
"workflow_selected": "%s workflows selected",
"project_need_workflow": "Bind at least one workflow before activating this project",
"new_workflow_panel": "+ New Workflow",
"new_workflow_prompt": "Name for the new workflow:",
"workflow_create_failed": "Failed to create workflow",
"workflow_empty": "empty",
"template_badge": "Template",
"project_saved_go_build": "Project saved. Go to Workflow Studio to build/view the workflow?",
"status_purged": "Purged",
"observed_inputs": "Inputs",
"exceptions_badge": "exceptions",
"exceptions": "Exceptions",
"exception_kind_mismatch": "Input mismatch",
"exception_kind_missing": "Missing device data",
"input_missing_title": "Workflow inputs are incomplete",
"input_missing_detail": "The following devices are missing; only uploaded devices were processed:",
"exception_kind_failed": "Run failed",
"exception_delete": "Remove exception",
"exception_delete_failed": "Failed to remove exception",
"anno_timeline": "Annotation Timeline",
"slice_marker": "Slice Markers",
"new_slice": "New Slice",
"no_slices": "No slices yet",
"no_slices_hint": "Drag the timeline to create a marker range",
"current_slice": "Current Slice",
"enter_slice_name": "Enter a slice name",
"add_slice": "Add Slice",
"ai_annotate": "AI Annotate",
"unnamed_slice": "Untitled slice",
"slice_save_failed": "Save failed: ",
"slice_delete_failed": "Delete failed: ",
"inf_sec_model": "1. Model",
"inf_sec_data": "2. Test Data",
"inf_sec_run": "3. Run",
"inf_sec_result": "4. Results",
"inf_label_run": "Run",
"inf_label_step": "Checkpoint",
"inf_label_dataset": "Test dataset",
"inf_live": "live",
"inf_pending": "not wired",
"inf_no_params": "This checkpoint has no train_config.json; parameters unavailable.",
"inf_params_from": "From",
"inf_no_models": "No trained model yet",
"inf_dataset_none": "— Select a test dataset —",
"inf_datasets_available": "dataset(s) available",
"inf_no_datasets": "No exported dataset yet — export one from the review page first.",
"inf_run_btn": "Run inference",
"inf_run_disabled": "Backend execution is not wired up yet",
"inf_run_note": "Backend execution is not connected yet — this button is intentionally disabled.",
"inf_run_hint": "Once wired: runs the checkpoint over the test set and reports direction cosine, amplitude ratio, gripper MAE and the error curve.",
"inf_no_result": "No evaluation result yet."
}
};