重构 Autocal 采集页:单一队列与控制器驱动的主按钮
选点、对准、加载与录像分散在两个面板,状态靠隐藏相位判断。现改由不依赖 Qt 的采集控制器驱动,并加入录像选项、汇总平铺副本、保持到时自动结束、会话结束回到空闲,以及无设备时的模拟采集。已运行 Autocal 非 Qt 测试并通过范围内门禁;界面测试待 Windows 复核,未做实机验收。
This commit is contained in:
@@ -230,7 +230,7 @@
|
||||
"workspace": {
|
||||
"tab_axes": "Axis debug",
|
||||
"tab_sequence": "Test sequence",
|
||||
"tab_finger": "Finger debug",
|
||||
"tab_finger": "Geometry & mounting",
|
||||
"tab_sensor": "Calibration capture",
|
||||
"tab_records": "Calibration records",
|
||||
"not_built": "Not built yet",
|
||||
@@ -338,7 +338,6 @@
|
||||
"remove": "Delete selected",
|
||||
"up": "Move up",
|
||||
"down": "Move down",
|
||||
"import_points": "Import from finger debug",
|
||||
"align": "Align normal",
|
||||
"reacquire": "Record selected again",
|
||||
"source": "Reference source",
|
||||
@@ -410,7 +409,7 @@
|
||||
"capture_wait": "recording is not ready; the hold cannot be confirmed yet"
|
||||
},
|
||||
"finger": {
|
||||
"title": "Finger calibration-point debug",
|
||||
"title": "Geometry & mounting",
|
||||
"bundle_path": "Export bundle",
|
||||
"load": "Load bundle…",
|
||||
"reset_view": "Reset view",
|
||||
@@ -421,8 +420,7 @@
|
||||
"flat_title": "Flat image (click to pick)",
|
||||
"readout_title": "Readouts",
|
||||
"preview_title": "3D preview",
|
||||
"points_title": "Picked points",
|
||||
"select_hint": "Click a point on the flat image to pick a calibration point.",
|
||||
"select_hint": "Click a point on the flat map to try that point's pose.",
|
||||
"no_bundle": "No export bundle loaded.",
|
||||
"no_surface": "Pixel ({x}, {y}) is not on the sensing surface (UV gap).",
|
||||
"row_sensor_point": "Sensor point (mm)",
|
||||
@@ -453,14 +451,7 @@
|
||||
"sensor_xy": "Sensor X / Y",
|
||||
"sensor_zy": "Sensor Z / yaw",
|
||||
"setup_hint": "How the sensor actually sits on the stack with the machine at zero: X/Y/Z translation and a yaw about Z. Z is the mounting-plate thickness. The plate on this bench is 8 mm.",
|
||||
"clear_points": "Clear points",
|
||||
"remove_selected": "Remove selected",
|
||||
"move_up": "Move up",
|
||||
"move_down": "Move down",
|
||||
"selected_count": "{count} selected",
|
||||
"table_hint": "Tick a row to select it, double-click a sensor coordinate or normal to edit it. The pose columns are solved from those, so they update themselves.",
|
||||
"edit_not_a_number": "That cell needs a number; the previous value was kept.",
|
||||
"point_count": "{count} points",
|
||||
"residual_value": "{residual}° — {verdict}",
|
||||
"reachable": "this normal can be aligned with Z",
|
||||
"unreachable": "this normal cannot be aligned with Z (yaw travel limit)",
|
||||
@@ -482,28 +473,9 @@
|
||||
"preview_no_gl": "No OpenGL context: {error}",
|
||||
"preview_draw_failed": "Drawing failed: {error}",
|
||||
"preview_solve_failed": "Solve failed: {error}",
|
||||
"col_x": "x",
|
||||
"col_y": "y",
|
||||
"col_z": "z",
|
||||
"col_nx": "nx",
|
||||
"col_ny": "ny",
|
||||
"col_nz": "nz",
|
||||
"col_X": "X",
|
||||
"col_Y": "Y",
|
||||
"col_Z": "Z",
|
||||
"col_yaw": "yaw",
|
||||
"col_pitch": "pitch",
|
||||
"col_residual": "residual(°)",
|
||||
"loaded": "Bundle loaded: {vertices} vertices · {triangles} triangles · {extent} mm · {scale} mm per unit",
|
||||
"load_failed": "Load failed: {error}",
|
||||
"picked": "Picked: residual {residual}° · yaw {yaw}° · pitch {pitch}°",
|
||||
"export_sites": "Export operator site list…",
|
||||
"export_sites_tip": "Export all points in displayed order, with UV pixels and sensor/platform millimetres. UV origin matches calibration.",
|
||||
"export_no_points": "Pick UV sites first",
|
||||
"export_edited_point": "Point {order} was edited in 3D and no longer matches its UV pixel; pick it again before exporting",
|
||||
"sites_exported": "Operator site list exported: {path}",
|
||||
"col_u_px": "U (px)",
|
||||
"col_v_px": "V (px)"
|
||||
"picked": "Picked: residual {residual}° · yaw {yaw}° · pitch {pitch}°"
|
||||
},
|
||||
"sequence": {
|
||||
"title": "Test sequence design",
|
||||
@@ -671,7 +643,8 @@
|
||||
"guide_incomplete": "1 Check identity → 2 Select site / trial → 3 Check stable windows → 4 Save\nNext: inspect the stop reason and recorded signal. Incomplete attempts are excluded from fitting.",
|
||||
"guide_check": "1 Check identity → 2 Select site / trial → 3 Check stable windows → 4 Save\nNext: select a trial and Check hold windows; adjust the time interval if needed.",
|
||||
"guide_save": "1 Check identity → 2 Select site / trial → 3 Check stable windows → 4 Save\nNext: inspect remaining holds or save current analysis.",
|
||||
"video": "View recording"
|
||||
"video": "View recording",
|
||||
"video_not_recorded": "Video not recorded, per the session settings"
|
||||
},
|
||||
"quality": {
|
||||
"open": "Repeatability and validation…",
|
||||
@@ -780,6 +753,163 @@
|
||||
"retry": "Publish summary again",
|
||||
"done": "Summary published again: {path}",
|
||||
"reason_hold_not_found": "This hold attempt is not in the record",
|
||||
"reason_hold_not_complete": "This hold attempt was discarded by a remeasure"
|
||||
"reason_hold_not_complete": "This hold attempt was discarded by a remeasure",
|
||||
"copy_failed": "The summary was published, but the readable copy was not written: {detail}. The pointer still names the published summary and the recording is unchanged."
|
||||
},
|
||||
"cap": {
|
||||
"check": {
|
||||
"bundle": "Calibration bundle",
|
||||
"frames": "Input frames",
|
||||
"bus": "Bus and axis mapping",
|
||||
"output": "Output folder writable",
|
||||
"sn": "Sensor SN",
|
||||
"max_force": "Maximum force"
|
||||
},
|
||||
"action": {
|
||||
"start": "Start capture",
|
||||
"align": "Align this point",
|
||||
"confirm_target": "At the target — begin the hold",
|
||||
"confirm_hold": "Hold finished — record this level",
|
||||
"confirm_liftoff": "Confirm the probe has left the sensor",
|
||||
"finish": "Finish the session",
|
||||
"remeasure": "Measure this level again",
|
||||
"skip": "Skip this point",
|
||||
"stop": "Stop and keep the data",
|
||||
"open_session": "Open session folder",
|
||||
"open_summary": "Open summary",
|
||||
"copy_path": "Copy path",
|
||||
"settings": "Change input / bundle…"
|
||||
},
|
||||
"block": {
|
||||
"closing": "Still writing to disk — wait for the close to finish",
|
||||
"align_while_recording": "Recording: the platform cannot move to align another point",
|
||||
"skip_live": "This level is already being recorded and cannot be skipped",
|
||||
"no_directory": "There is no session folder yet",
|
||||
"no_summary": "No summary has been published yet",
|
||||
"not_ready": "Some checks are still unmet — see the Ready list above",
|
||||
"no_sites": "The queue has no points yet",
|
||||
"no_session": "The session settings are incomplete (output folder, model, SN, …)",
|
||||
"no_solver": "No pose solver is connected, so the platform cannot be aligned",
|
||||
"no_pose": "This point has no usable solved pose",
|
||||
"hold_running": "The hold time has not elapsed",
|
||||
"remeasure_unavailable": "No level can be measured again right now",
|
||||
"stop_unavailable": "There is no running session to stop",
|
||||
"finish_unavailable": "The session is not finished yet",
|
||||
"skip_unavailable": "This build has no way to skip the current point, so it cannot be skipped",
|
||||
"busy": "This action is not available in the current step",
|
||||
"no_bundle": "No calibration bundle (export) is loaded",
|
||||
"no_uv": "Click a position on the UV map first",
|
||||
"no_output": "Choose the output directory first",
|
||||
"no_sn": "Enter the sensor SN first",
|
||||
"no_max_force": "Enter the maximum force (N) first",
|
||||
"queue_busy": "The session is running; the point queue cannot be edited",
|
||||
"bundle_busy": "The session is running; the calibration bundle cannot be changed",
|
||||
"no_worker": "The input is not running, so recording cannot start",
|
||||
"bad_levels": "Load levels must be strictly increasing, above zero and within the maximum force",
|
||||
"bad_reference": "The measured reference force is not a valid number",
|
||||
"align_running": "An alignment move is still running; wait for it to finish",
|
||||
"pose_unreachable": "This point cannot be reached under the current mounting and travel, so aligning is disabled"
|
||||
},
|
||||
"session": {
|
||||
"active": "Session: {sites} site(s) · {done}/{total} holds\n{path}",
|
||||
"none": "No session yet. Align the first point, then press Start capture.",
|
||||
"settings_hint": "Input source, bundle, session parameters and recording options are in \"Change input / bundle…\"; starting a capture does not switch pages."
|
||||
},
|
||||
"queue": {
|
||||
"title": "Point queue",
|
||||
"empty": "The queue is empty: click a position on the UV map, set the levels, then press Add current point.",
|
||||
"add": "Add current point",
|
||||
"update": "Update selected",
|
||||
"remove": "Remove selected",
|
||||
"up": "Move up",
|
||||
"down": "Move down",
|
||||
"site_id": "Site id",
|
||||
"repeats": "Repeats",
|
||||
"current_uv": "Current UV",
|
||||
"col_id": "Site",
|
||||
"col_position": "Sensor position (mm)",
|
||||
"col_repeats": "Repeats",
|
||||
"col_reachable": "Reachable",
|
||||
"col_state": "State",
|
||||
"reachable": "reachable",
|
||||
"unreachable": "unreachable",
|
||||
"state_pending": "pending",
|
||||
"state_partial": "in progress",
|
||||
"state_complete": "complete",
|
||||
"state_skipped": "skipped",
|
||||
"selected": "Selected: {site}",
|
||||
"update_short": "Update",
|
||||
"remove_short": "Remove",
|
||||
"export": "Export point sheet…",
|
||||
"export_tip": "Exports U/V, sensor coordinates, platform targets and the mapping identity in queue order; refuses when a coordinate no longer matches the mapping.",
|
||||
"export_saved": "Point sheet exported: {path}",
|
||||
"export_no_points": "The queue has no points yet",
|
||||
"export_no_map": "No UV map is loaded, so the point sheet cannot be exported",
|
||||
"export_missing_uv": "Point {order} has no UV coordinates, so the point sheet cannot be exported",
|
||||
"export_no_pose": "Point {order} has no solved pose, so the point sheet cannot be exported",
|
||||
"export_edited_point": "Point {order}'s sensor coordinates no longer match the current UV map; take the point again before exporting."
|
||||
},
|
||||
"card": {
|
||||
"title": "Current point",
|
||||
"no_point": "The queue is empty: add a point first.",
|
||||
"no_progress": "Progress appears once the session starts.",
|
||||
"next_site": "Next point: {site}"
|
||||
},
|
||||
"step": {
|
||||
"align_point": "1. Align the current point",
|
||||
"start_session": "2. Start capture",
|
||||
"confirm_target": "3. Target reached - start the hold",
|
||||
"confirm_hold": "4. Hold finished - record this step",
|
||||
"confirm_liftoff": "5. Confirm liftoff, go to the next point",
|
||||
"finish_session": "6. Finish the session",
|
||||
"closing": "Writing to disk"
|
||||
},
|
||||
"hint": {
|
||||
"align_point": "Align first: the primary button asks for the move plan; Start capture only appears after the move has been confirmed complete.",
|
||||
"start_session": "This point is aligned. The primary button opens the session and records the first point step by step.",
|
||||
"not_ready": "The ✗ checks must pass before starting; hover them to see why.",
|
||||
"confirm_target": "Load to the current target, enter the measured reference force (or the six-axis components), then press the primary button.",
|
||||
"confirm_hold": "Holding: {seconds:.1f} s left; do not change the load.",
|
||||
"confirm_liftoff": "This repeat is recorded. Lift the indenter, confirm it has left the sensor, then press the primary button to go to the next point.",
|
||||
"finish_session": "Every record is written. Press the primary button to finish the session and publish the summary.",
|
||||
"closing": "Closing the recording and checking it; nothing else runs until it finishes."
|
||||
},
|
||||
"message": {
|
||||
"aligning": "Alignment requested for {site}. Start capture stays unavailable until the move completes and is confirmed.",
|
||||
"aligned": "Alignment confirmed: {site}",
|
||||
"align_failed": "Alignment did not finish: {detail}. The platform is not confirmed in place; align again.",
|
||||
"started": "Session started: {path}",
|
||||
"attach_failed": "Could not start recording: {detail}",
|
||||
"queue_added": "Point added: {site}",
|
||||
"queue_removed": "Point removed: {site}",
|
||||
"skipped": "Point skipped: {site}",
|
||||
"stopped": "Stopped; the data already written is kept.",
|
||||
"done": "Session finished: {path}"
|
||||
},
|
||||
"recording": {
|
||||
"title": "Recording",
|
||||
"video": "Record video",
|
||||
"codec": "Video codec",
|
||||
"lossless": "Also store lossless frames",
|
||||
"unavailable": "{codec}: unavailable on this machine, disabled",
|
||||
"probe_failed": "The codec probe did not run: {detail}",
|
||||
"off": "Video off, per the session settings",
|
||||
"estimate": "Estimated {size} ({seconds}); {free} free on disk",
|
||||
"disk_short": "Less than twice the estimated size is free on disk",
|
||||
"no_plan": "The queue is empty, so no size can be estimated yet",
|
||||
"locked": "Recording options are locked once the session has started",
|
||||
"summary": "Recording: {codec}"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Capture settings",
|
||||
"input": "Input source",
|
||||
"bundle": "Calibration bundle (export)",
|
||||
"bundle_none": "not loaded",
|
||||
"bundle_load": "Load export bundle…",
|
||||
"session": "Session parameters",
|
||||
"simulate": "Simulate (no camera, no platform motion)",
|
||||
"close": "Close",
|
||||
"max_required": "Required; the program does not assume a value"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,7 +230,7 @@
|
||||
"workspace": {
|
||||
"tab_axes": "轴调试",
|
||||
"tab_sequence": "测试序列",
|
||||
"tab_finger": "手指调试",
|
||||
"tab_finger": "几何与安装",
|
||||
"tab_sensor": "标定采集",
|
||||
"tab_records": "标定记录",
|
||||
"not_built": "尚未实现",
|
||||
@@ -338,7 +338,6 @@
|
||||
"remove": "删除所选",
|
||||
"up": "上移",
|
||||
"down": "下移",
|
||||
"import_points": "从手指调试导入",
|
||||
"align": "对齐法向",
|
||||
"reacquire": "补采所选",
|
||||
"source": "参考力来源",
|
||||
@@ -410,7 +409,7 @@
|
||||
"capture_wait": "录像未就绪,暂时不能确认保持"
|
||||
},
|
||||
"finger": {
|
||||
"title": "手指标定点调试",
|
||||
"title": "几何与安装",
|
||||
"bundle_path": "导出包",
|
||||
"load": "载入导出包…",
|
||||
"reset_view": "复位视角",
|
||||
@@ -421,8 +420,7 @@
|
||||
"flat_title": "展开平面图(点击选点)",
|
||||
"readout_title": "读数",
|
||||
"preview_title": "三维预览",
|
||||
"points_title": "已选标定点",
|
||||
"select_hint": "在展开图上点击一点以选取标定点。",
|
||||
"select_hint": "在展开图上点击一点以试算该点的姿态。",
|
||||
"no_bundle": "尚未载入导出包。",
|
||||
"no_surface": "像素 ({x}, {y}) 不在传感面上(UV 空隙)。",
|
||||
"row_sensor_point": "传感器坐标 (mm)",
|
||||
@@ -453,14 +451,7 @@
|
||||
"sensor_xy": "传感器 X / Y",
|
||||
"sensor_zy": "传感器 Z / yaw",
|
||||
"setup_hint": "传感器在转台零位时相对工作台原点的实际安装位姿:X/Y/Z 平移与绕 Z 的偏摆。Z 为安装板厚度,当前安装台是 8 mm。",
|
||||
"clear_points": "清空标定点",
|
||||
"remove_selected": "删除所选",
|
||||
"move_up": "上移",
|
||||
"move_down": "下移",
|
||||
"selected_count": "已选 {count} 点",
|
||||
"table_hint": "勾选复选框选中该点;双击传感器坐标或法向即可修改。位姿列由这些数值解算得出,会自动更新。",
|
||||
"edit_not_a_number": "该单元格需要数字,已保留原值。",
|
||||
"point_count": "共 {count} 点",
|
||||
"residual_value": "{residual}° — {verdict}",
|
||||
"reachable": "该点法向可与 Z 轴对齐",
|
||||
"unreachable": "该点法向无法与 Z 轴对齐(受 yaw 行程限制)",
|
||||
@@ -482,28 +473,9 @@
|
||||
"preview_no_gl": "无 OpenGL 上下文:{error}",
|
||||
"preview_draw_failed": "绘制失败:{error}",
|
||||
"preview_solve_failed": "求解失败:{error}",
|
||||
"col_x": "x",
|
||||
"col_y": "y",
|
||||
"col_z": "z",
|
||||
"col_nx": "nx",
|
||||
"col_ny": "ny",
|
||||
"col_nz": "nz",
|
||||
"col_X": "X",
|
||||
"col_Y": "Y",
|
||||
"col_Z": "Z",
|
||||
"col_yaw": "yaw",
|
||||
"col_pitch": "pitch",
|
||||
"col_residual": "残差(°)",
|
||||
"loaded": "已载入导出包:{vertices} 顶点 · {triangles} 三角面 · {extent} mm · 每单位 {scale} mm",
|
||||
"load_failed": "载入失败: {error}",
|
||||
"picked": "已选点:残差 {residual}° · yaw {yaw}° · pitch {pitch}°",
|
||||
"export_sites": "导出测点操作表…",
|
||||
"export_sites_tip": "按当前列表顺序导出全部测点的 U/V 像素、传感器与平台毫米坐标;与标定页共用 UV 原点。",
|
||||
"export_no_points": "请先在 UV 图上选择测点",
|
||||
"export_edited_point": "第 {order} 点的三维位置已改动,与原 UV 像素不一致;请重新在图上选点后导出",
|
||||
"sites_exported": "已导出测点操作表:{path}",
|
||||
"col_u_px": "U (px)",
|
||||
"col_v_px": "V (px)"
|
||||
"picked": "已选点:残差 {residual}° · yaw {yaw}° · pitch {pitch}°"
|
||||
},
|
||||
"sequence": {
|
||||
"title": "测试序列设计",
|
||||
@@ -671,7 +643,8 @@
|
||||
"guide_incomplete": "① 核对身份 → ② 选测点/试验 → ③ 检查稳定段 → ④ 保存\n下一步:查看结束原因及已录曲线,决定补采;未完成试验不参与拟合。",
|
||||
"guide_check": "① 核对身份 → ② 选测点/试验 → ③ 检查稳定段 → ④ 保存\n下一步:选择单次试验,点击“检查保持段…”;必要时调整时间区间。",
|
||||
"guide_save": "① 核对身份 → ② 选测点/试验 → ③ 检查稳定段 → ④ 保存\n下一步:继续检查剩余保持段,或保存当前分析结果。",
|
||||
"video": "查看录像"
|
||||
"video": "查看录像",
|
||||
"video_not_recorded": "按设置未录视频"
|
||||
},
|
||||
"quality": {
|
||||
"open": "重复性与验证…",
|
||||
@@ -780,6 +753,163 @@
|
||||
"retry": "重新导出汇总",
|
||||
"done": "汇总已重新发布:{path}",
|
||||
"reason_hold_not_found": "记录中找不到这个保持尝试",
|
||||
"reason_hold_not_complete": "这个保持尝试已被重测废弃,没有可复核的画面"
|
||||
"reason_hold_not_complete": "这个保持尝试已被重测废弃,没有可复核的画面",
|
||||
"copy_failed": "汇总已发布,但可读副本没有写成:{detail}。指针仍指向已发布的汇总,采集结果未改变。"
|
||||
},
|
||||
"cap": {
|
||||
"check": {
|
||||
"bundle": "标定包",
|
||||
"frames": "输入出帧",
|
||||
"bus": "总线与轴映射",
|
||||
"output": "输出目录可写",
|
||||
"sn": "传感器 SN",
|
||||
"max_force": "最大力"
|
||||
},
|
||||
"action": {
|
||||
"start": "开始采集",
|
||||
"align": "对准当前点",
|
||||
"confirm_target": "已到目标力,开始保持",
|
||||
"confirm_hold": "保持完成,记录本档",
|
||||
"confirm_liftoff": "确认压头已脱离",
|
||||
"finish": "结束会话",
|
||||
"remeasure": "重测本档",
|
||||
"skip": "跳过本点",
|
||||
"stop": "停止并保留数据",
|
||||
"open_session": "打开会话文件夹",
|
||||
"open_summary": "打开汇总",
|
||||
"copy_path": "复制路径",
|
||||
"settings": "更改输入/标定包…"
|
||||
},
|
||||
"block": {
|
||||
"closing": "正在写盘,等待收尾完成",
|
||||
"align_while_recording": "正在录制,不能移动平台去对准其它点",
|
||||
"skip_live": "这一档已经开始录制,不能跳过",
|
||||
"no_directory": "还没有会话目录",
|
||||
"no_summary": "还没有汇总;结束本场标定后自动发布",
|
||||
"not_ready": "还有未满足的检查项,见上方 Ready 列表",
|
||||
"no_sites": "队列里还没有测点",
|
||||
"no_session": "还没有配置会话参数(输出目录、型号、SN 等)",
|
||||
"no_solver": "没有接上姿态求解器,不能对准",
|
||||
"no_pose": "这个点还没有解出可用的姿态",
|
||||
"hold_running": "保持时间还没到",
|
||||
"remeasure_unavailable": "当前没有可重测的档位",
|
||||
"stop_unavailable": "没有进行中的会话可停止",
|
||||
"finish_unavailable": "会话还没有结束,不能点结束",
|
||||
"skip_unavailable": "程序没有提供跳过当前点的推进接口,本版不能跳过",
|
||||
"busy": "当前阶段不能执行这个动作",
|
||||
"no_bundle": "还没有载入标定包(导出包)",
|
||||
"no_uv": "先在 UV 图上点选位置",
|
||||
"no_output": "先选择保存目录",
|
||||
"no_sn": "先填写传感器 SN",
|
||||
"no_max_force": "先填写最大力 (N)",
|
||||
"queue_busy": "会话进行中,不能修改测点队列",
|
||||
"bundle_busy": "会话进行中,不能更换标定包",
|
||||
"no_worker": "输入没有运行,无法开始录像",
|
||||
"bad_levels": "加载档位需要严格递增、每档大于 0 且不超过最大力",
|
||||
"bad_reference": "人工参考力不是有效数字",
|
||||
"align_running": "对准移动还在进行,请等它完成",
|
||||
"pose_unreachable": "当前安装或行程下这个点不可达,已禁止对准"
|
||||
},
|
||||
"session": {
|
||||
"active": "本场标定:{sites} 个测点 · 进度 {done}/{total} 档\n{path}",
|
||||
"none": "尚未建立本场标定;对准第一点后点「开始采集」创建。",
|
||||
"settings_hint": "输入源、标定包、会话参数与录像选项都在「更改输入/标定包…」里;开始试验不会切换页面。"
|
||||
},
|
||||
"queue": {
|
||||
"title": "测点队列",
|
||||
"empty": "队列里还没有测点:在 UV 图上点选位置,填好档位后点「添加当前点」。",
|
||||
"add": "添加当前点",
|
||||
"update": "更新选中",
|
||||
"remove": "删除选中",
|
||||
"up": "上移",
|
||||
"down": "下移",
|
||||
"site_id": "测点编号",
|
||||
"repeats": "重复次数",
|
||||
"current_uv": "当前 UV",
|
||||
"col_id": "测点",
|
||||
"col_position": "传感器位置 (mm)",
|
||||
"col_repeats": "重复进度",
|
||||
"col_reachable": "可达性",
|
||||
"col_state": "状态",
|
||||
"reachable": "可达",
|
||||
"unreachable": "不可达",
|
||||
"state_pending": "待采",
|
||||
"state_partial": "进行中",
|
||||
"state_complete": "已完成",
|
||||
"state_skipped": "已跳过",
|
||||
"selected": "当前选中:{site}",
|
||||
"update_short": "更新",
|
||||
"remove_short": "删除",
|
||||
"export": "导出测点操作表…",
|
||||
"export_tip": "按当前队列顺序导出 U/V、传感器坐标、平台目标与映射身份;坐标与映射不符时拒绝导出。",
|
||||
"export_saved": "已导出操作表:{path}",
|
||||
"export_no_points": "队列里还没有测点",
|
||||
"export_no_map": "还没有载入 UV 映射,无法导出操作表",
|
||||
"export_missing_uv": "第 {order} 点没有 UV 坐标,无法导出操作表",
|
||||
"export_no_pose": "第 {order} 点还没有解出姿态,无法导出操作表",
|
||||
"export_edited_point": "第 {order} 点的传感器坐标与当前 UV 映射不符;请重新取点后再导出。"
|
||||
},
|
||||
"card": {
|
||||
"title": "当前点",
|
||||
"no_point": "队列是空的:先添加测点。",
|
||||
"no_progress": "开始后显示进度。",
|
||||
"next_site": "下一测点:{site}"
|
||||
},
|
||||
"step": {
|
||||
"align_point": "① 对准当前点",
|
||||
"start_session": "② 开始采集",
|
||||
"confirm_target": "③ 到达目标力,开始保持",
|
||||
"confirm_hold": "④ 保持完成,记录本档",
|
||||
"confirm_liftoff": "⑤ 确认离开,换到下一个点",
|
||||
"finish_session": "⑥ 结束会话",
|
||||
"closing": "正在写盘"
|
||||
},
|
||||
"hint": {
|
||||
"align_point": "先对准:点主按钮确认移动计划,平台到位并确认后才会出现「开始采集」。",
|
||||
"start_session": "本点已对准。点主按钮建立本场标定,并从第一个点开始逐档记录。",
|
||||
"not_ready": "标记 ✗ 的检查项满足后才能开始;鼠标停在标记上可看原因。",
|
||||
"confirm_target": "按当前档位加载到目标力,填写人工参考力(或六维力分量)后点主按钮。",
|
||||
"confirm_hold": "保持中:剩余 {seconds:.1f} s;请勿换档。",
|
||||
"confirm_liftoff": "这一轮记录完成。抬起接触头、确认压头已脱离传感器,再点主按钮换到下一个点。",
|
||||
"finish_session": "全部记录已写入。点主按钮结束本场标定并发布汇总。",
|
||||
"closing": "正在写盘并检查录像;收尾完成前不能继续。"
|
||||
},
|
||||
"message": {
|
||||
"aligning": "已发出对准请求:{site}。移动完成并确认后才会允许开始采集。",
|
||||
"aligned": "已确认对准:{site}",
|
||||
"align_failed": "对准未完成:{detail}。平台没有确认到位,请重新对准。",
|
||||
"started": "已开始本场标定:{path}",
|
||||
"attach_failed": "无法开始录像:{detail}",
|
||||
"queue_added": "已添加测点 {site}",
|
||||
"queue_removed": "已删除测点 {site}",
|
||||
"skipped": "已跳过测点 {site}",
|
||||
"stopped": "已停止,已写入的数据保留。",
|
||||
"done": "本场标定已结束:{path}"
|
||||
},
|
||||
"recording": {
|
||||
"title": "录像",
|
||||
"video": "录制视频",
|
||||
"codec": "视频编码",
|
||||
"lossless": "同时保存无损帧",
|
||||
"unavailable": "{codec}:本机不可用,已禁用",
|
||||
"probe_failed": "编码探测没有运行:{detail}",
|
||||
"off": "按设置不录视频",
|
||||
"estimate": "预计占用 {size}({seconds});磁盘剩余 {free}",
|
||||
"disk_short": "磁盘剩余不足估算体积的两倍",
|
||||
"no_plan": "队列为空,暂时无法估算体积",
|
||||
"locked": "会话建立后录像选项锁定",
|
||||
"summary": "录像:{codec}"
|
||||
},
|
||||
"settings": {
|
||||
"title": "采集设置",
|
||||
"input": "输入源",
|
||||
"bundle": "标定包(导出包)",
|
||||
"bundle_none": "未载入",
|
||||
"bundle_load": "载入导出包…",
|
||||
"session": "会话参数",
|
||||
"simulate": "模拟运行(不接相机、不移动平台)",
|
||||
"close": "关闭",
|
||||
"max_required": "必须填写,程序不预设"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user