490 lines
29 KiB
JSON
490 lines
29 KiB
JSON
{
|
||
"app": {
|
||
"title": "Orisys Studio",
|
||
"about_title": "关于",
|
||
"about_body": "Orisys Studio 桌面应用\n版本: {app_version}",
|
||
"scaffold_hint": "脚手架界面 — 采集功能稍后加入"
|
||
},
|
||
"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": "回放最近一次录制",
|
||
"view": "视图",
|
||
"theme": "主题",
|
||
"theme_dark": "深色",
|
||
"theme_light": "浅色",
|
||
"language": "语言",
|
||
"lang_zh": "简体中文",
|
||
"lang_en": "English",
|
||
"calibration_panel": "标定面板",
|
||
"finger_3d": "手指 3D 视图",
|
||
"scene3d_settings": "三维显示设置…",
|
||
"show_fps": "显示 FPS",
|
||
"show_diagnostics": "诊断信息",
|
||
"raw_auto_zero": "Finger raw 启动归零",
|
||
"raw_auto_zero_tip": "仅影响数字卡展示:启动后自动估计无载偏置与死区。曲线、统计与 CSV 仍为测量值。",
|
||
"raw_reestimate": "重新估计 raw 基线…",
|
||
"raw_reestimate_tip": "丢弃当前展示基线,从接下来的无载样本重新估计(仅数字卡)。",
|
||
"settings": "设置区",
|
||
"plot_settings": "绘图设置…",
|
||
"rotate_arrows": "旋转箭头图 90°",
|
||
"recompute": "由视频重算力值",
|
||
"recompute_tip": "关闭:曲线读录制的 forces.csv(当时测得的值)。打开:把录制的视频重新跑一遍视觉管线(算法复核,只能顺序前进)。",
|
||
"run": "运行 / 停止",
|
||
"stop": "取消采集",
|
||
"preview": "预览 / 停止预览",
|
||
"reset": "重置追踪器",
|
||
"reset_view": "复位视图",
|
||
"reset_view_tip": "把曲线窗口、游标与三维视角恢复为默认(F8)。不改动设备,也不清除零点估计。",
|
||
"pause": "暂停 / 继续(F7)",
|
||
"help": "帮助",
|
||
"about": "关于"
|
||
},
|
||
"dialog": {
|
||
"plot_settings_title": "绘图设置",
|
||
"plot_window": "时间窗口",
|
||
"plot_window_tip": "力曲线时间窗口(秒)",
|
||
"plot_fn_min": "FN 下限",
|
||
"plot_fn_min_tip": "法向力纵轴下限(牛顿模式)。可以是负数:留出零点以下的空间,静止曲线不会压在 FX 框线上,小压力也更清楚",
|
||
"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 = 自动(用启动静默窗口估计的噪声,牛顿模式无固定下限)。只影响显示,记录与 forces.csv 仍是实测值",
|
||
"plot_deadband_raw": "归零阈值(原始)",
|
||
"plot_deadband_raw_tip": "原始模式下的显示死区下限(原始计数)。0 = 自动(默认下限 50 计数)。标定数据可疑时可手动放大,只影响显示",
|
||
"reset_defaults": "恢复默认",
|
||
"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": "取消",
|
||
"close": "关闭"
|
||
},
|
||
"toolbar": {
|
||
"search_cameras": "搜索",
|
||
"cam_id": "摄像机",
|
||
"use_camera": "使用摄像机",
|
||
"use_camera_tip": "回到摄像机采集(当前的数据源是视频文件)",
|
||
"choose_video": "选择录制视频…",
|
||
"choose_video_tip": "打开一段录制的视频:2D 面板放视频,曲线读同目录的 forces.csv(原始记录值)",
|
||
"recompute": "由视频重算…",
|
||
"recompute_tip": "对这段录像重新跑一遍算法:2D 面板显示处理后的图像(录像本身只存了原始相机图像),曲线与三维也改用重算结果。可以随时「停止」。",
|
||
"replay_view_only": "请在「历史回放」视图里打开录像",
|
||
"preview": "预览",
|
||
"preview_stop": "停止预览",
|
||
"run": "运行",
|
||
"stop": "停止",
|
||
"run_label": "▶ 运行",
|
||
"stop_label": "■ 停止",
|
||
"cancel_label": "■ 取消连接",
|
||
"cancel_tip": "中断连接(连接卡住时随时可用,快捷键 Esc)",
|
||
"run_unavailable": "当前不可运行",
|
||
"run_disabled_video": "请先选择一个视频文件",
|
||
"run_disabled_sensor": "此传感器类型暂不支持运行",
|
||
"playback": "▶ 播放",
|
||
"playback_pause": "⏸ 暂停",
|
||
"playback_tip": "按 1× 播放这段录制(空格键同效);拖动游标即暂停",
|
||
"playback_pause_tip": "暂停播放(拖动游标、框选或滚轮也会暂停)",
|
||
"playback_disabled": "先打开一段录制视频(左上「选择录制视频…」)",
|
||
"playback_needs_recording": "这段视频旁边没有记录(缺 forces.csv):回放需要一条记录;只想看视频请用 视图 ▸ 从视频重算力值",
|
||
"playback_video_only": "播放这段视频(没有配套记录:可以看画面,力曲线为空)",
|
||
"reset": "重置",
|
||
"reset_tip": "把设备追踪器归零(清零)。只影响零点,不动界面;想恢复视图请用「视图 → 复位视图」。",
|
||
"pause": "⏸ 暂停",
|
||
"pause_resume": "▶",
|
||
"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": "产品型号"
|
||
},
|
||
"panels": {
|
||
"arrow": "2D 图像",
|
||
"view_arrows_pure": "箭头",
|
||
"view_arrows_stitched": "箭头/采集图像",
|
||
"view_depth": "深度图",
|
||
"view_recorded": "原始图像",
|
||
"view_mode_tip": "运行时的图像显示模式",
|
||
"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请选择视频或摄像机后点击「运行」",
|
||
"arrow_empty_tip": "运行或预览后在此显示形变箭头图",
|
||
"depth_unavailable": "本帧没有深度数据\n(不是深度为零,也未回退显示普通形变图)",
|
||
"depth_scale": "深度色标 {low} – {high}",
|
||
"arrow_scale": "箭头按位移放大 ×{factor}",
|
||
"arrow_scale_tip": "相对位移的显示放大倍率:箭头由原始采集图像经算法输出,长度按测量位移放大后绘制,上限为网格间距的 0.8 倍;触顶的箭头不再呈现真实倍率。",
|
||
"arrow_pipeline": "原始图像 → 算法输出",
|
||
"arrow_pipeline_tip": "箭头画在算法输出上,不是相机原始帧:阈值以下的区域不画箭头",
|
||
"arrow_area_masked": "有效区域",
|
||
"arrow_area_full": "全画幅",
|
||
"depth_scale_tip": "本会话固定色标:色标范围锁定在首个有效深度帧,便于跨帧比较;灰色区域表示无深度数据",
|
||
"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": "复位视角:回到场景自带的取景"
|
||
},
|
||
"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": "曲线读的是打开的录制;回放期间采集与记录继续",
|
||
"return_latest": "返回最新",
|
||
"return_latest_tip": "退出历史浏览,恢复跟随最新数据",
|
||
"overview": "全程总览",
|
||
"overview_tip": "把整个会话缩放到一屏;拖动下方总览条可移动视窗",
|
||
"box_zoom": "框选",
|
||
"box_zoom_tip": "切换为框选放大(拖动图表框选区域)",
|
||
"settings": "曲线图设置",
|
||
"settings_tip": "时间窗口、纵轴量程,以及采集端滤波(界面与记录用同一份数据)",
|
||
"selection": "选区 {duration}s / {samples} 点 — {detail}",
|
||
"selection_summary": "选区 {duration}s / {samples} 点",
|
||
"selection_detail": "均 {mean} · σ {std}",
|
||
"selection_peak_tip": "上方大号数字是选区的峰值;均值为选区均值",
|
||
"selection_empty": "选区无有效样本",
|
||
"value_unavailable": "不可用",
|
||
"value_unavailable_tip": "{channel} 轴未加载标定曲线,因此没有该单位的数值(不会用原始值冒充)",
|
||
"zero_zone": "零区",
|
||
"zero_zone_tip": "展示归零后的死区内读数;曲线、统计与 CSV 仍为原始测量值",
|
||
"unit_toggle": "切换单位",
|
||
"unit_toggle_tip": "点击在「牛顿」与「原始单位」之间切换三轴曲线与读数",
|
||
"browse_only_tip": "拖动或滚轮即可进入历史浏览"
|
||
},
|
||
"playback": {
|
||
"title": "录制回放",
|
||
"open": "打开录制视频…",
|
||
"video_filter": "录制的视频 (*.mp4 *.avi *.mov *.mkv);;所有文件 (*)",
|
||
"no_video": "这段录制没有可用的视频分段",
|
||
"open_failed": "无法打开该录制: {error}",
|
||
"not_a_recording": "「{name}」不是一条记录:同目录没有 forces.csv(一条记录 = 录像 + forces.csv + session.json)。回放需要记录;只想看这段视频请用「从视频重算力值」。",
|
||
"video_only_opened": "「{name}」没有配套记录(无 forces.csv),已按视频播放:可以看画面与拖时间轴,力曲线为空。要得助力值/形变请用 视图 ▸ 从视频重算力值。",
|
||
"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": "该录制由旧版本写入,行序不是时间序;回放已按时间重排,区间边界可能与当时不同"
|
||
},
|
||
"record": {
|
||
"label": "记录",
|
||
"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": "正在关闭记录文件…",
|
||
"failed_state": "记录已失败(详见摘要与日志)",
|
||
"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": "状态",
|
||
"col_raw": "原始均值",
|
||
"col_n": "n",
|
||
"col_std": "σ",
|
||
"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": "拟合残差",
|
||
"col_actions": "",
|
||
"recording": "正在采集标定样本…",
|
||
"recording_stop_tip": "点击可取消本次标定采集(随时可用)",
|
||
"record_ok": "已记录 weight={weight} raw={raw}",
|
||
"record_failed_few": "采集失败 — 样本过少",
|
||
"export_ok": "已导出 {path}",
|
||
"export_local": "同时写入 {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}",
|
||
"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}。记录会按实际帧率保存。这是采集端(摄像头/驱动)的问题,软件改不了:换一颗真能交付 30 fps 的摄像头,或先确认线材/端口没有把它降速,然后再测。",
|
||
"video_ended": "视频已结束",
|
||
"camera_disconnected": "摄像机已断开",
|
||
"reset_ok": "追踪器已重置",
|
||
"reset_pending": "已请求归零,等待采集线程确认…",
|
||
"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": "当前场景包没有 UV→三维 表面映射,无法绘制光流箭头。",
|
||
"contact_arrow": "接触法向箭头",
|
||
"contact_arrow_tip": "在接触中心沿局部法向绘制黄色示意箭头(长度由法向响应限幅,不是标定合力)。",
|
||
"contact_arrow_unavailable": "当前场景包没有 UV→三维 表面映射,无法绘制接触法向箭头。",
|
||
"quantity_flow_magnitude": "光流幅值",
|
||
"quantity_depth_response": "深度响应",
|
||
"mode_surface": "曲面着色",
|
||
"preset_default": "默认视角",
|
||
"legend_effective": "{quantity} [{unit}] · {mode}色标 {lower} – {upper} · {quality}",
|
||
"legend_auto": "自动",
|
||
"legend_fixed": "固定",
|
||
"scale": "色标",
|
||
"scale_range": "范围",
|
||
"scale_range_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"
|
||
}
|
||
}
|