{ "multical": { "video_zero": "我确认从参考帧开始的 30 帧均无载荷", "video_zero_tip": "适用于需要单独测量零点的模型。用此片段测量会话零点;选择跟踪参考帧本身不代表零载荷。", "zero": "无载荷置零", "zero_confirm": "请移除全部载荷,并在接下来 30 个处理帧内保持无载荷。使用录像时,请先暂停在已确认的无载荷片段。现在测量本次会话零点吗?", "zero_pending": "正在用 30 帧测量零点,请保持无载荷。", "ok": "有效", "zero_unavailable": "需要无载荷置零", "no_contact": "未检测到接触", "outside_coverage": "超出标定覆盖区域", "coordinate_unmapped": "接触位置无法映射", "out_of_range": "超出标定力值范围", "invalid_input": "测量无效" }, "app": { "title": "Orisys Studio", "about_title": "关于", "about_body": "Orisys Studio 桌面应用\n版本: {app_version}" }, "brand": { "name": "ORISYS", "tagline": "叠动科技", "nav_live": "实时", "nav_live_tip": "当前视图:实时监测。点击可退出历史浏览。", "nav_playback": "回放", "nav_playback_tip": "打开一段录制:视频、曲线与同一游标", "nav_calibration": "标定", "nav_calibration_tip": "显示标定面板" }, "menu": { "file": "文件", "open_video": "打开视频…", "reveal_config": "显示传感器配置…", "playback": "打开录制回放…", "playback_latest": "回放最近一次录制", "session": "采集", "analysis": "分析", "view": "视图", "theme": "主题", "theme_dark": "深色", "theme_light": "浅色", "language": "语言", "lang_zh": "简体中文", "lang_en": "English", "calibration_panel": "标定面板", "finger_3d": "手指 3D 视图", "scene3d_settings": "三维显示设置…", "show_fps": "显示 FPS", "show_diagnostics": "诊断信息", "settings": "设置区", "plot_settings": "绘图设置…", "rotate_arrows": "旋转箭头图 90°", "recompute": "分析视频", "recompute_tip": "有结果就用,没有就分析。改配置用分析设置。", "analysis_setup": "分析设置…", "analysis_setup_tip": "为这段视频选择配置、标定与参考帧,然后跑(或重跑)分析。", "run": "运行 / 停止", "stop": "取消采集", "preview": "预览 / 停止预览", "reset": "重置传感器追踪器", "reset_display": "复位显示", "reset_view": "复位视图", "reset_view_tip": "把曲线窗口、游标与三维视角恢复为默认(F8)。不改动设备,也不清除零点估计。", "pause": "暂停 / 继续(F7)", "help": "帮助", "about": "关于" }, "dialog": { "plot_settings_title": "绘图设置", "plot_tab_curves": "曲线", "plot_tab_filters": "滤波", "plot_window": "时间窗口", "plot_window_tip": "力曲线时间窗口(秒)", "plot_fn_min": "FN 下限", "plot_fn_min_tip": "法向力纵轴下限(牛顿模式);固定为 0", "plot_fn_max": "FN 上限", "plot_fn_max_tip": "法向力纵轴上限(牛顿模式)", "plot_shear_max": "剪切上限", "plot_shear_max_tip": "剪切力 FX/FY 纵轴 ±上限(牛顿模式)", "plot_fn_raw_min": "FN 原始下限", "plot_fn_raw_min_tip": "未标定(原始)模式下的法向力纵轴下限,可为负", "plot_fn_raw_max": "FN 原始上限", "plot_fn_raw_max_tip": "未标定(原始)模式下的法向力纵轴上限。0 = 按数据自动量程;默认值按实测峰值设定,使静止时的抖动在图中不可见", "plot_shear_raw_max": "原始剪切上限", "plot_shear_raw_max_tip": "未标定(原始)模式下的剪切力 FX/FY 纵轴 ±上限。0 = 自动量程", "plot_deadband_n": "归零阈值(N)", "plot_deadband_n_tip": "牛顿输出的绝对归零阈值,逐轴生效。|值| 不超过阈值时输出 0;0 表示关闭。实验记录保留原值及处理后值", "plot_deadband_raw": "归零阈值(原始)", "plot_deadband_raw_tip": "原始计数的绝对归零阈值,逐轴生效。|值| 不超过阈值时输出 0;0 表示关闭。标定拟合仍使用原始采样", "plot_value_decimals": "数值小数位", "reset_defaults": "恢复默认", "plot_orientation_group": "手指 2D 显示方向(只影响 2D 画面;3D 视图仍用设计坐标系)", "plot_orientation": "方向", "plot_orientation_tip": "只影响 2D 画面,默认旋转 180°。", "plot_orientation_note": "只影响 2D 画面,默认旋转 180°。", "orientation_identity": "原始(不旋转)", "orientation_rotate180": "旋转 180°(默认)", "orientation_mirror_h": "水平镜像", "orientation_mirror_v": "垂直镜像", "plot_filters": "滤波(作用于采集,界面与记录同步)", "filter_preset": "预设", "filter_preset_tip": "选择一档现成的滤波组合;改下面任一数值会变成“自定义”", "filter_preset_custom": "自定义", "filter_flow_ema": "光流 EMA α", "filter_flow_ema_tip": "1.00 为关闭。改它会改变测到的力。", "filter_median": "中值窗口", "filter_median_tip": "力读数的滑动中值窗口(采样数)。1 = 关。去掉单点尖峰,代价是约半个窗口的延迟", "filter_lowpass": "低通截止", "filter_lowpass_tip": "力读数低通截止频率(Hz)。0 = 关。必须在奈奎斯特频率(帧率的一半)以下,否则设备不会进行滤波", "filter_order": "低通阶数", "filter_order_tip": "低通滤波器阶数(1–6)。越高越陡,相位失真也越大", "filter_rate": "采样率", "filter_rate_tip": "低通系数按哪个采样率设计(Hz)", "filter_rate_auto": "自动跟随帧率", "filter_rate_auto_tip": "按设备实测帧率设计低通系数;取消可固定一个数值", "filter_measurement_note": "光流 EMA 属于“测量”设置:改了它,本次录制与之前的不可比。", "filter_locked": "录制中不能更改滤波;下一次采集生效。", "filter_nyquist": "注意:低通 {cutoff} Hz 已达到或超过奈奎斯特频率 {nyquist} Hz(采样率 {rate} Hz)——设备不会滤。请调低截止频率或固定更高的采样率。", "filter_off": "未滤波(原始读数)", "ok": "确定", "cancel": "取消", "save": "保存", "close": "关闭" }, "toolbar": { "search_cameras": "搜索", "cam_id": "摄像机", "use_camera": "使用摄像机", "use_camera_tip": "回到摄像机采集(当前的数据源是视频文件)", "choose_video": "选择录制视频…", "choose_video_tip": "打开一段录制的视频:2D 面板放视频,曲线读同目录的 forces.csv(原始记录值)", "recompute": "分析视频…", "recompute_tip": "有结果就用,没有就分析。改配置用分析设置。", "replay_view_only": "请在「历史回放」视图里打开录像", "preview": "预览", "preview_stop": "停止预览", "run": "运行", "stop": "停止", "run_label": "▶ 运行", "stop_label": "■ 停止", "cancel_label": "■ 断开", "cancel_tip": "中断连接(连接卡住时随时可用,快捷键 Esc)", "run_unavailable": "当前不可运行", "run_video_in_replay": "实时视图只用摄像机:请点「使用摄像机」", "run_disabled_sensor": "此传感器类型暂不支持运行", "playback": "▶ 播放", "playback_pause": "⏸ 暂停", "playback_tip": "按 1× 播放这段录制(空格键同效);拖动游标即暂停", "playback_pause_tip": "暂停播放(拖动游标、框选或滚轮也会暂停)", "playback_disabled": "先打开一段录制视频(左上「选择录制视频…」)", "playback_needs_recording": "这段视频旁边没有记录(缺 forces.csv):回放需要一条记录;只想看视频请直接打开视频,或用 分析 ▸ 分析视频", "playback_video_only": "播放这段视频(没有配套记录:可以看画面,力曲线为空)", "reset_sensor": "重置传感器", "reset_sensor_tip": "重置传感器追踪器及参考帧;力值阈值保持设定值,曲线历史保留。", "reset_sensor_unavailable": "把传感器追踪器归零 —— 仅在采集会话运行时可用(先点「运行」)。", "reset_display": "复位显示", "reset_display_tip": "清空累积的显示:曲线、游标与数字卡恢复默认,回放回到录像开头。本视图没有设备会话,不会改动设备;三维视角请用「视图 → 复位视图」(F8)。", "pause": "⏸ 暂停", "pause_tip": "暂停计算,画面停住,设备保持连接(F7);跨过暂停的录制会留空档。", "resume_tip": "继续计算与显示(F7),从最新一帧接着跑。", "resume_label": "▶ 继续", "resume_label_tip": "继续计算与显示(F7):从最新一帧接着跑,设备保持连接。", "stop_playback": "停止", "stop_playback_tip": "停止回放:无论是普通播放还是「分析视频」通道,都在这里停下(Esc 同效)。", "stopped": "已停止:{what}", "stopped_playback": "回放", "stopped_pass": "重算通道", "nothing_to_stop": "当前没有正在进行的回放或重算", "units": "单位", "units_newton": "牛顿", "units_raw": "原始", "settings": "设置", "settings_tip": "展开或收起单位、记录模式与预览" }, "units": { "newton_short": "N", "raw_short": "raw" }, "sensor": { "type": "传感器", "config": "传感器配置", "type_tip": "选择产品/传感器:box、mini、finger。它决定可用的配置文件与算法参数。", "config_tip": "该传感器使用的算法配置文件(config/*.json)。切换传感器会同时切换可选配置。", "summary": "{type} · {config}", "dialog_title": "传感器与标定", "dialog_tip": "选择传感器类型与配置文件,并查看当前生效的标定与最近导出的系数", "calib_section": "当前生效的标定", "calib_version": "设备确认的版本", "calib_axes": "已标定轴", "calib_config": "配置", "calib_none": "设备尚未确认加载标定", "export_section": "最近导出的系数", "export_none": "还没有导出过系数", "export_file": "文件 {name}({size} KB,{time})", "export_identity": "文件身份 类型 {sensor_type} · SN {sn} · 配置 {config}", "thumb_placeholder": "产品型号", "family_unidentified": "未识别", "catalog_name": "名称 {name} · 文件夹 {folder}", "catalog_profile": "配置档案 {profile_id} · {shape} · 来源 {origin}", "catalog_root": "根目录({origin}):{path}", "catalog_state": "SDK 校验:{state}({note})", "catalog_state_ok": "可以开始处理", "catalog_state_degraded": "可以开始处理;有可选项缺失", "catalog_state_failed": "无法开始处理", "catalog_state_invalid": "此目录没有可读取的配置包", "catalog_state_unknown": "无法识别的校验结果", "catalog_calibration_selected": "已选择标定:{name}", "catalog_calibration_none": "未选择标定——使用原始力", "live_calibration_section": "直播用标定", "live_calibration_raw_tip": "点运行时按原始力打开。采集中点「应用到设备」只会记住选择,需重新运行才去掉已加载的系数。", "live_calibration_default_tip": "点运行时加载配置默认标定 {name}。", "live_calibration_file_tip": "点运行时加载 {name};采集中可点「应用到设备」热更新。", "live_calibration_apply_tip": "记住当前选择;若正在采集则热更新到设备", "live_calibration_remembered": "已记住标定选择;下次运行时加载", "live_calibration_applied": "已请求热更新标定:{name}", "live_calibration_invalid": "当前标定选择无效:{reason}", "catalog_duplicate": "同时由 {refs} 提供", "catalog_shape_descriptor": "描述符配置包", "catalog_shape_compatibility": "兼容配置包(无描述符)", "catalog_shape_unreadable": "没有可读取的配置包", "catalog_blocked": "无法启动:{reason}", "catalog_warning": "警告:{sentence}", "catalog_error": "错误:{sentence}" }, "panels": { "arrow": "2D 图像", "view_arrows_pure": "箭头", "view_arrows_stitched": "箭头/采集图像", "view_depth": "深度图", "view_depth_arrows": "深度 + 箭头", "view_recorded": "原始图像", "view_mode_tip": "运行时的图像显示模式", "arrow_settings_tip": "手指 2D 显示方向(只影响画面)", "replay_pipeline": "录制视频(原始相机图像)", "replay_pipeline_tip": "这是录下的相机画面。箭头和深度用分析 ▸ 分析视频。", "replay_raw_note": "尚无分析结果,请用分析 ▸ 分析视频。", "frame_missing_note": "本帧没有{fields}:这个视图这一帧没有数据可画", "field_flow": "光流", "field_depth": "深度", "recompute_pipeline": "由录像重算(非记录值)", "recompute_pipeline_tip": "这一帧是当前算法版本对录像重新计算得到的,不是当初记录下来的测量值。", "replay_empty": "尚未打开录像\n点击顶部「选择录制视频…」", "arrow_empty": "尚未采集图像\n连接摄像机后点击上方「运行」\n录好的视频请到「回放」中打开", "arrow_empty_tip": "运行或预览后在此显示形变箭头图", "arrow_render_failed": "本帧无法绘制形变箭头\n请换一种视图,或重新加载视频", "arrow_capture_unavailable": "当前无法取得采集图像用于叠加\n原始相机画面仍可在同一选择器中查看", "depth_unavailable": "本帧没有深度数据", "depth_scale": "深度色标 {low} – {high}", "arrow_scale": "箭头按位移放大 ×{factor}", "arrow_scale_tip": "箭头长度按位移放大显示。", "arrow_pipeline": "原始图像 → 算法输出", "arrow_pipeline_tip": "箭头画在算法输出上,不是相机原始帧:阈值以下的区域不画箭头", "arrow_area_masked": "有效区域", "arrow_area_full": "全画幅", "depth_scale_tip": "本会话固定色标:色标范围锁定在首个有效深度帧,便于跨帧比较;灰色区域表示无深度数据", "depth_scale_tip_adaptive": "每帧自适应色标:范围随当前帧的有效深度变化,二维与三维使用同一范围;灰色区域表示无深度数据", "depth_scale_tip_fixed": "固定色标:二维与三维都使用设置中填写的上下限;灰色区域表示无深度数据", "plots": "力曲线图", "cal": "标定", "mesh3d": "三维网格", "mesh3d_empty": "三维表面视图", "mesh3d_empty_tip": "手指传感器的三维表面视图(按实时形变场着色)", "mesh3d_no_scene": "此传感器类型没有三维场景", "mesh3d_no_asset": "本机未安装已编译的三维场景。\n场景包(*.oryscene)的查找位置:\n{directory}\n可用 tools/scene_assets/compile_scene.py 生成,它需要哪些文件见 --help。只影响三维视图:采集、记录与力曲线照常工作。", "mesh3d_loading": "正在加载三维场景 {name}…", "mesh3d_rejected": "三维场景被拒绝:{message}\n只影响三维视图:采集、记录与力曲线照常工作。", "mesh3d_unavailable_gl_reason": "本机无法使用三维显示:{reason}\n采集、记录与力曲线照常工作。", "mesh3d_settings_tip": "三维显示设置(视角、外壳、色标、显示频率)", "mesh3d_reset_tip": "复位视角:回到场景自带的取景", "replay_analysis_running": "正在分析,完成后显示箭头与深度。", "replay_analysis_failed": "分析失败:{reason}。", "replay_analysis_unavailable": "尚无分析配置,请用分析 ▸ 分析视频。" }, "chart": { "fn": "FN", "fx": "FX", "fy": "FY", "fn_name": "法向力", "fx_name": "切向力 X", "fy_name": "切向力 Y", "window_readout": "{start} – {end} s / 全程 {total} s", "window_tip": "拖动高亮区域即可移动视窗;这是整段会话的时间轴", "no_data": "—", "mode_follow": "跟随实时", "mode_follow_tip": "曲线跟随最新样本,窗口随采集滚动", "mode_browse": "浏览历史", "mode_browse_tip": "显示暂停,采集与记录继续;拖动或滚轮改变窗口,点「返回最新」回到实时", "mode_replay": "回放录制(浏览)", "mode_replay_tip": "曲线读的是打开的录制;回放期间采集与记录继续", "mode_recomputed": "从这段视频重算(浏览)", "mode_recomputed_tip": "曲线来自这次分析,不是 forces.csv。", "mode_no_trace": "没有力曲线 — {reason}", "mode_no_trace_tip": "没有可画的东西,而原因是输入本身的事实,不是一种加载状态", "trace_not_analysed": "这段视频还没有分析过", "trace_no_force": "这套配置的链路对这段视频没有产生力", "return_latest": "返回最新", "return_latest_tip": "退出历史浏览,恢复跟随最新数据", "overview": "全程总览", "overview_tip": "把整个会话缩放到一屏;拖动下方总览条可移动视窗", "box_zoom": "框选", "box_zoom_tip": "切换为框选放大(拖动图表框选区域)", "settings": "曲线图设置", "settings_tip": "时间窗口、纵轴量程,以及采集端滤波(界面与记录用同一份数据)", "selection_summary": "选区 {duration}s / {samples} 点", "selection_empty": "选区无有效样本", "value_unavailable": "不可用", "value_unavailable_tip": "{channel} 轴未加载标定曲线,因此没有该单位的数值(不会以原始值替代)", "zero_zone": "零区", "zero_zone_tip": "读数位于设定阈值内;曲线与输出列同样归零,原始采样另行保留。", "unit_toggle": "切换单位", "unit_toggle_tip": "点击在「牛顿」与「原始单位」之间切换三轴曲线与读数", "browse_only_tip": "拖动或滚轮即可进入历史浏览" }, "playback": { "open": "打开录制视频…", "video_filter": "录制的视频 (*.mp4 *.avi *.mov *.mkv);;所有文件 (*)", "no_video": "这段录制没有可用的视频分段", "open_failed": "无法打开该录制: {error}", "not_a_recording": "旁边没有 forces.csv,不能当记录打开。", "video_only_opened": "已打开「{name}」;尚无分析结果。点顶部「分析视频…」生成。", "video_only_notice": "这段视频没有配套记录(同目录无 forces.csv):可以播放,但力曲线与记录信息为空。", "video_only_panel": "这不是一条记录,而且无法解码这段视频(没有 forces.csv,也不像可播放的视频文件)\n可以试试 分析 ▸ 分析视频", "empty_recording": "这条记录没有可播放的画面(没有 raw_*.mp4 视频分段),因此无法回放", "none_found": "outputs/recordings 下没有找到录制", "frame_dropped": "该帧未被写入视频(记录队列曾溢出)", "frame_unreadable": "该帧无法从视频中解码", "warnings": "回放提示: {detail}", "decimated": "该录制较长,曲线为降采样视图(显示 {shown} / 共 {total} 行;区间数据按需从磁盘读取)", "warn_config_changed": "配置文件与录制时不一致:分析结果可能与当时不同", "warn_sdk_changed": "SDK 版本与录制时不一致:分析结果可能不同", "warn_config_missing": "找不到配置哈希,无法校验重算一致性", "warn_rows_skipped": "有无法解析的 CSV 行被跳过", "warn_frames_dropped": "有帧在队列溢出时丢失,仅保留索引记录(回放显示为“该帧未录制”)", "warn_out_of_order": "该录制由旧版本写入,行序不是时间序;回放已按时间重排,区间边界可能与当时不同", "analysis_empty": "这个分析结果里没有可显示的帧", "analysis_unreadable": "这一帧读不出来({error})", "analysis_cancelled": "分析已取消:未写出完整结果,因此不提供回放", "analysis_no_source": "这段录制没有可用于分析的视频分段", "analysis_busy": "分析进行中:先等待或取消当前这一遍", "analysis_no_chain": "这条录像没有说明用哪套传感器与配置录下来({error}),因此既无法读取结果,也无法重算", "analysis_setup_declined": "这段视频没有建立分析:设置提示被关掉了,因此没有可画的东西。用「分析 ▸ 分析设置…」或重新打开视频即可分析" }, "video_analysis": { "title": "分析这段视频", "video": "{name} — {frames} 帧 @ {fps} fps", "profile": "处理配置", "calibration": "标定", "calibration_default": "配置默认 — {name}", "calibration_none": "不标定 — 原始力", "calibration_file": "已选文件 — {name}", "calibration_browse": "选择文件…", "calibration_filter": "力标定 (*.json);;所有文件 (*)", "device": "设备编号", "device_tip": "与标定文件中的 SN 一致", "device_required": "使用这份 Finger 标定需要填写视频对应的设备编号", "device_missing_sn": "这份标定文件没有 SN,无法确认它属于哪台传感器", "device_mismatch": "标定文件的 SN 是 {sn},与填写的设备编号不一致", "device_family": "这份标定属于 {family},不能用于 Finger", "reference": "参考帧", "reference_time": "{seconds} 秒", "blocked": "这套配置不能用:{reason}" }, "record": { "mode_video_data": "视频 + 数据", "mode_data_only": "仅数据", "mode_tip": "视频记录的是处理前的相机输入图像(不含箭头与文字叠加)。MP4 是有损封装,不等于无损原始数据。", "start_label": "● 开始记录", "stop_label": "■ 停止记录", "start_tip": "开始记录本实验:视频、力数据与元数据写入同一目录", "stop_tip": "停止记录并写入 session.json(随时可用)", "requires_run": "请先点击「运行」开始采集,再开始记录", "started": "已开始记录({mode})", "start_failed": "无法开始记录: {error}", "finished": "记录完成 — {frames} 帧 / {segments} 段,已写入 {path}", "finished_with_problems": "记录完成,但存在问题: {detail}", "closing": "正在关闭记录文件…", "alarm": "记录异常: {detail}", "state_idle": "尚未记录", "state_recording": "记录中 {duration}", "state_closing": "正在写入…", "state_error": "写入异常({count})", "state_done": "上次记录 {frames} 帧", "dropped": "丢帧 {count}", "strip_idle": "本次会话还没有开始记录", "strip_no_error": "无", "strip_no_path": "尚未创建", "strip_tip": "记录状态: {state}\n帧 {frames} / 分段 {segments} / 时长 {duration}\n丢帧 {dropped}(数据 {dropped_data}、视频 {dropped_video}、空洞 {dropped_gaps})\n写入错误 {errors}\n最近错误: {detail}\n输出目录 {path}" }, "cal": { "weight": "砝码重量 (N)", "duration": "采集时长", "record": "记录", "recording_stop": "停止", "record_disabled": "请先点击「运行」开始采集,再记录标定样本", "record_cancelled": "已取消本次采集", "empty_hint": "当前通道尚无样本:运行后选择通道并点击「记录」。", "delete_row": "删除行", "clear_channel": "清空通道", "clear_all": "全部清空", "export": "导出系数…", "export_tip": "只写出 SDK 标定系数文件,不改变运行中的设备", "apply": "应用到设备", "apply_tip": "把最近导出的系数下发到运行中的设备(需再次确认)", "apply_no_export": "还没有导出的系数文件,请先「导出系数」", "save_record": "保存标定记录…", "save_record_tip": "保存本次标定会话的全部点与三轴完整采样(审计数据),与系数文件相互独立", "save_record_empty": "还没有标定点,无法保存标定记录", "save_record_ok": "已保存标定记录 {path}\n{points} 个点,共 {samples} 条三轴采样", "save_record_failed": "保存标定记录失败: {error}", "open_record": "打开标定记录…", "open_record_tip": "重新打开已保存的标定会话,检查每个点的完整采样与诊断状态", "open_record_filter": "标定记录 (*.json)", "open_record_ok": "已载入 {path}({points} 个点)", "open_record_device": "记录设备: {device}", "open_record_warnings": "注意: {detail}", "open_record_failed": "打开标定记录失败: {error}", "apply_mismatch_title": "标定与目标设备不匹配", "apply_mismatch": "该标定文件属于: {device}\n不匹配项: {detail}\n\n当前目标: {sensor_type} / {config}\n\n继续应用会把不适用于本设备的系数写入运行中的设备。", "apply_mismatch_skipped": "已取消应用(标定身份与目标设备不匹配)", "sn": "序列号", "sn_placeholder": "序列号(可选)", "live_raw_label": "实时原始值", "live_raw": "实时原始值 FN={fn} FX={fx} FY={fy}", "col_weight": "参考载荷", "col_fn": "FN 均值", "col_fx": "FX 均值", "col_fy": "FY 均值", "col_stability": "稳定性", "col_state": "状态", "state_ok": "正常", "state_excluded": "已排除", "state_validation": "验证点", "state_exclude": "排除", "state_exclude_tip": "把选中点排除出拟合与导出(记录保留,可恢复)", "state_restore": "恢复", "mark_validation": "设为验证点", "mark_validation_tip": "把选中点留作独立验证点:不参与拟合,用于检验拟合", "excluded": "该点已排除出拟合", "restored": "该点已恢复", "marked_validation": "该点已标记为验证点", "unmarked_validation": "该点已取消验证点标记", "fit_insufficient": "拟合需要至少 2 个有效点(当前 {count} 个)", "fit_summary": "导出模型 {channel}: {method}({count} 点 / {breakpoints} 个折点,最大残差 {residual} N)", "fit_validation": "独立验证 {count} 点,最大偏差 {error} N", "method_piecewise_linear": "分段线性", "method_linear": "线性", "point_title": "标定点 {channel} @ {load} N", "point_channel": "加载轴", "point_direction": "方向", "point_round": "轮次", "point_duration": "实际采样时长", "point_duration_value": "{actual} s(请求 {requested} s)", "point_samples": "样本数", "point_samples_value": "有效 {valid} / 共 {total}", "point_axes": "三轴均值 ± 标准差", "point_residual": "拟合残差", "recording": "正在采集标定样本…", "recording_stop_tip": "点击可取消本次标定采集(随时可用)", "record_ok": "已记录 weight={weight} raw={raw}", "record_failed_few": "采集失败 — 样本过少", "export_ok": "已导出 {path}", "export_warnings": "跳过: {detail}", "export_failed": "导出失败: {error}", "export_no_model": "没有可导出的模型: {detail}", "apply_title": "应用标定", "apply_confirm": "将刚导出的标定应用到当前设备?\n\n设备类型: {sensor_type}\n配置: {config}\n\n选择「否」只保留导出文件,不改动运行中的设备。", "apply_skipped": "已导出,未应用到设备", "apply_pending": "已请求把标定应用到 {sensor_type},等待设备确认…", "applied": "设备已确认标定生效(版本 {version})", "applied_none": "设备已确认:当前没有加载标定(该项留空)", "export_only": "已导出系数 {path}(未应用到设备)", "apply_no_target": "没有可应用的设备(请先运行一次采集)" }, "status": { "phase_idle": "空闲", "phase_connecting": "连接中", "phase_running": "采集中", "phase_error": "出错", "rail_video_name": "视频:{name}", "rail_recent_video": "上次视频:{name}", "rail_result_profile": "结果:{type}", "rail_result_reused": "已复用缓存结果", "rail_result_complete": "分析完成", "rail_result_running": "正在分析…", "rail_result_ready": "结果可用", "data_valid": "数据有效", "data_invalid": "无效样本 {count}", "calibrated": "已标定", "calibrated_all": "已标定 · 三轴", "calibrated_axes": "已标定 · {axes}", "uncalibrated": "未标定", "config_none": "未选配置", "camera_none": "未发现摄像机", "camera_found": "发现 {count} 个摄像机: {names}", "preview_started": "预览已启动(摄像机 {camera_id})", "preview_stopped": "预览已停止", "preview_failed": "预览失败: {error}", "connect_slow": "连接耗时较长,可点击「取消连接」或按 Esc 中断", "run_stopped": "已停止", "run_stopping": "正在停止…(正在释放设备)", "run_stopping_cancelled": "已取消连接(正在释放设备)", "sample_invalid": "采样无效(第 {count} 次):{reason} — 该样本已标记无效,未计入曲线与标定", "samples_dropped": "记录缓冲已达上限,最早的 {count} 个样本已被释放(全程记录不再完整)", "run_failed": "启动失败: {error}", "filters_saved": "滤波设置已保存:{describe}(下次采集生效)", "rail_camera_fps": "摄像头 {fps}", "capture_slow": "摄像头帧率低于配置:{detail}。", "video_ended": "视频已结束", "camera_disconnected": "摄像机已断开", "reset_ok": "传感器追踪器已重置", "reset_pending": "已请求重置传感器追踪器,等待采集线程确认…", "reset_display": "显示已复位:曲线恢复默认,回放回到开头", "view_reset": "视图已复位", "paused": "已暂停:不再计算,设备保持连接", "resumed": "已继续", "finger_run_unavailable": "此传感器类型暂不支持运行", "video_required": "请先选择视频文件", "config_missing": "未找到传感器配置: {type}", "units_raw_fallback": "无可用标定,暂显示原始单位", "reveal_failed": "无法打开配置位置: {error}" }, "scene3d": { "enable": "显示三维视图", "preset": "观察方向", "housing": "显示外壳", "deform": "放大形变", "deform_tip": "只放大画面上的形变显示。它只改图像:记录的数据、标定与算法相机都不受影响。", "deform_unavailable": "当前数据没有三维位移,形变放大不可用。", "field": "颜色来源", "field_tip": "用深度或光流给表面着色。", "field_depth": "深度响应", "field_flow": "光流幅值", "field_substituted": "这一帧画的是 {shown},不是所选的 {chosen}。", "flow_arrows": "表面光流箭头", "flow_arrows_tip": "在传感表面上按与二维相同的采样点绘制光流箭头。", "flow_arrows_unavailable": "当前场景画不了光流箭头。", "contact_arrow": "接触法向箭头", "contact_arrow_tip": "在接触中心沿局部法向绘制黄色示意箭头(长度由法向响应限幅,不是标定合力)。", "contact_arrow_unavailable": "当前场景画不了接触箭头。", "flow_threshold": "箭头阈值", "flow_threshold_tip": "低于此位移(像素)不画箭头;二维与三维共用。", "depth_threshold": "深度显示阈值", "depth_threshold_tip": "低于此相对深度响应的区域显示为色标基色;0 表示关闭。二维深度图与三维表面共用,不改变测量数据。", "quantity_flow_magnitude": "光流幅值", "quantity_depth_response": "深度响应", "preset_default": "默认视角", "legend_effective": "{quantity} [{unit}] · {mode}色标 {lower} – {upper} · {quality}", "legend_auto": "自动", "legend_fixed": "固定", "scale": "色标", "scale_range": "范围", "scale_range_tip": "固定模式下色标的上下限。自动模式默认把深度色标锁定在本会话第一帧;勾选「每帧自适应」后,二维与三维都按当前帧的有效深度重算。", "depth_adaptive": "每帧自适应", "depth_adaptive_tip": "勾选后,二维深度图和三维表面都按当前帧的有效深度重算色标。不勾选时,色标锁定在本会话第一个有效深度帧,便于跨帧比较。固定色标模式下此项不起作用。", "scale_fixed": "固定", "scale_auto": "自动", "max_fps": "显示帧率", "max_fps_tip": "三维视图每秒绘制多少帧。这只是显示预算:摄像头与记录不受影响,这里丢的帧永远不会变成丢的样本。", "reset_view": "复位视角", "settings_title": "三维显示设置", "settings_hint": "深度显示阈值与每帧自适应同时作用于二维深度图和三维表面。", "legend": "{quantity} [{unit}] · {quality}", "legend_none": "屏幕上没有测量值 — 仅显示不着色的表面模型", "quality_calibrated": "已标定", "quality_approximate": "相对形变示意", "quality_display_only": "仅显示", "state_disabled": "三维视图已关闭", "state_loading": "正在加载场景…", "state_ready": "就绪 — 等待第一帧", "state_live": "实时", "state_no_data": "本帧没有有效测量 — 显示表面模型", "state_suspended": "已挂起(视图被隐藏)", "state_stale": "测量已过期 — 上一帧仍显示,但已不是当前数据", "state_unavailable": "三维不可用", "source_live": "实时采集", "source_live_tip": "画面来自此刻正在采集的数据。", "source_replay": "回放:录像不包含三维场", "source_replay_tip": "录像只保存原始相机图像与力值,没有逐帧的形变场。开启「分析视频」后,本面板会显示分析结果中的形变。", "source_recompute": "分析结果:非录制时的测量值", "source_recompute_tip": "这是存下来的分析结果里当前算法对这段视频算出的形变;它不是当初记录下来的测量值。", "severity_info": "提示", "severity_warning": "警告", "severity_error": "错误", "stats": "已显示 {displayed} · 未赶上显示的帧 {dropped} · 合成 {compose} ms · 绘制 {paint} ms", "source_analysis": "分析结果:按帧读取", "source_analysis_tip": "画面来自已存的分析结果。改阈值或配色不会重算。" }, "analysis": { "title": "正在分析录像", "title_reused": "正在使用已缓存的分析结果", "title_complete": "分析完成", "title_cancelled": "分析已取消", "title_failed": "分析失败", "frames": "{written} / {expected} 帧", "segment": "分段 {index} / {count}", "elapsed": "已用 {seconds:.1f} s", "cancel": "取消", "cancelling": "正在取消…", "cancel_tip": "取消这一遍:已完成的帧会留下,但结果会被标记为未完成,永远不会被当作完整结果回放", "complete": "分析完成:{frames} 帧,用时 {seconds:.1f} s", "cancelled": "分析已取消({frames} 帧已写完,结果标记为未完成)", "failed": "分析失败:{reason}", "blocked": "正在采集:停止后再分析" } }