{
  "app.title": "BrainCo多自由度灵巧手调试工具",
  "app.language": "语言",

  "common.connect": "连接",
  "common.connected": "已连接",
  "common.disconnect": "断开连接",
  "common.protocol_type": "协议",
  "common.connection": "连接状态",
  "common.device_information": "设备信息",
  "common.settings": "设置",
  "common.e_stop": "急停",
  "common.restore": "恢复",
  "common.confirm": "确定",
  "common.cancel": "取消",
  "common.got_it": "知道了",
  "common.apply": "应用",
  "common.refresh": "刷新",
  "common.read": "读取",
  "common.clear": "清零",

  "connect.title": "连接",
  "connect.protocol": "协议",
  "connect.modbus.slave_id": "从站地址",
  "connect.modbus.port": "端口号",
  "connect.modbus.baudrate": "波特率",
  "connect.mock.desc": "模拟设备模式\n无需硬件即可测试 UI 功能",
  "connect.btn_connect": "连接",
  "connect.btn_cancel": "取消",

  "tab.finger_control": "手指控制",
  "tab.tactile_display": "触觉显示",
  "tab.action_sequence": "动作序列",
  "tab.settings": "设置",
  "tab.teaching_mode": "示教模式",

  "estop.enter_success": "进入急停模式成功",
  "estop.exit_success": "解除急停模式成功",
  "estop.failed": "操作失败: {error}",

  "finger.thumb": "拇指",
  "finger.index": "食指",
  "finger.middle": "中指",
  "finger.ring": "无名指",
  "finger.little": "小指",
  "finger.open_hand": "张开",
  "finger.apply_params": "应用参数",
  "finger.not_recording": "未录制",
  "finger.start_record": "⏺ 开始录制",
  "finger.stop_record": "⏹ 停止录制",
  "finger.view_data": "📊 数据可视化",
  "finger.recording": "🔴 录制中 {elapsed} | 已采集 {frames} 帧 | 分片 {part}",
  "finger.record_done": "录制完成 | {frames} 帧 | {parts} 个分片 | 时长 {elapsed}",
  "finger.no_data_warning": "暂无电机数据，请等待设备连接并获取数据。",
  "finger.select_save_dir": "选择录制数据保存目录",
  "finger.warning_title": "提示",

  "card.sn": "SN",
  "card.firmware": "固件",
  "card.error": "错误",
  "card.error_none": "无",
  "card.position": "位置",
  "card.speed": "速度",
  "card.current": "电流",
  "card.temperature": "温度",
  "card.mode": "模式",
  "card.min_position": "最小位置",
  "card.max_position": "最大位置",
  "card.max_speed": "最大速度",
  "card.protect_current": "持续电流",

  "mode.position": "位置",
  "mode.speed": "速度",
  "mode.current": "电流",
  "mode.impedance": "阻抗",
  "mode.damping": "阻尼",
  "mode.mit": "MIT",
  "mode.move_joint": "位置(轨迹)",
  "mode.move_joint_gains": "增益轨迹",
  "mode.move_joint_speed": "速度运动",
  "mode.move_joint_speed_gains": "速度增益",
  "mode.servo_joint_with_gains": "伺服增益",
  "move_joint.duration": "时长",
  "move_joint.dt": "周期",
  "move_joint.freq": "频率",

  "joint.thumb_dip": "拇指 DIP关节",
  "joint.thumb_pip": "拇指 PIP关节",
  "joint.thumb_mcp_flex": "拇指 MCP弯曲",
  "joint.thumb_cmp": "拇指 CMP关节",
  "joint.thumb_cmr": "拇指 CMR关节",
  "joint.index_dip": "食指 DIP关节",
  "joint.index_pip": "食指 PIP关节",
  "joint.index_mcp_flex": "食指 MCP弯曲",
  "joint.index_mcp_lateral": "食指 MCP侧摆",
  "joint.middle_dip": "中指 DIP关节",
  "joint.middle_pip": "中指 PIP关节",
  "joint.middle_mcp_flex": "中指 MCP弯曲",
  "joint.middle_mcp_lateral": "中指 MCP侧摆",
  "joint.ring_dip": "无名指 DIP关节",
  "joint.ring_pip": "无名指 PIP关节",
  "joint.ring_mcp_flex": "无名指 MCP弯曲",
  "joint.ring_mcp_lateral": "无名指 MCP侧摆",
  "joint.little_dip": "小指 DIP关节",
  "joint.little_pip": "小指 PIP关节",
  "joint.little_mcp_flex": "小指 MCP弯曲",
  "joint.little_mcp_lateral": "小指 MCP侧摆",

  "error_bit.overcurrent": "过流",
  "error_bit.overvoltage": "过压",
  "error_bit.undervoltage": "欠压",
  "error_bit.overtemp": "过温",
  "error_bit.current_spike": "电流突增",
  "error_bit.stall": "堵转",
  "error_bit.running": "运行中",

  "seq.title": "📋 动作序列",
  "seq.name_placeholder": "序列名称",
  "seq.btn_new": "📄 新建",
  "seq.btn_save": "💾 保存",
  "seq.btn_load": "📂 加载",
  "seq.btn_execute": "▶  执行",
  "seq.btn_pause": "⏸  暂停",
  "seq.btn_resume": "▶  继续",
  "seq.btn_stop": "⏹  停止",
  "seq.loop": "循环",
  "seq.loop_count": "次数:",
  "seq.ready": "就绪",
  "seq.saved": "已保存",
  "seq.loaded": "已加载 {count} 步",
  "seq.executing": "执行中  {current}/{total}  (循环 {loop})",
  "seq.finished": "✅ 执行完毕",
  "seq.stopped": "已停止",
  "seq.paused": "已暂停",
  "seq.running": "执行中...",
  "seq.confirm_new": "确认",
  "seq.confirm_new_msg": "当前序列未保存，是否新建？",
  "seq.empty_warning": "序列为空，请先添加步骤。",
  "seq.save_title": "保存动作序列",
  "seq.load_title": "加载动作序列",
  "seq.save_failed": "保存失败",
  "seq.save_failed_msg": "写入文件失败：{error}",
  "seq.load_failed": "加载失败",
  "seq.load_failed_msg": "读取文件失败：{error}",

  "editor.step_name": "步骤名称",
  "editor.step_name_hint": "可选，如\"张开\"、\"握紧\"",
  "editor.control_mode": "控制模式",
  "editor.delay": "延迟",
  "editor.duration": "运动时间",
  "editor.joint_params": "关节参数",

  "step.btn_add": "＋ 添加",
  "step.btn_copy": "📋 复制",
  "step.copy_suffix": "(副本)",

  "log.system": "系统日志",
  "log.operation": "操作日志",

  "viewer.title": "电机数据可视化",
  "viewer.open_file": "📂 打开文件",
  "viewer.open_dir": "📁 打开目录",
  "viewer.no_file": "未选择文件",
  "viewer.select_motor": "选择电机:",
  "viewer.loading": "加载中: {name}",
  "viewer.load_failed": "加载失败",
  "viewer.format_error": "格式错误",
  "viewer.format_error_msg": "无法识别电机数据列，请确认文件格式正确。",
  "viewer.load_error_title": "加载失败",
  "viewer.load_error_msg": "读取 CSV 失败：{error}",
  "viewer.file_info": "{name}  ({frames} 帧, {motors} 电机{parts})",
  "viewer.parts_info": ", {count} 个分片",
  "viewer.no_csv": "目录中没有找到 CSV 文件: {path}",
  "viewer.x_axis": "采样帧",
  "viewer.y_axis": "数值",
  "viewer.motor_title": "电机 M{id} 数据",
  "viewer.label_speed": "速度",
  "viewer.label_position": "位置",
  "viewer.label_current": "电流",
  "viewer.label_temperature": "温度",
  "viewer.label_error_code": "错误码",
  "viewer.label_online": "在线",
  "viewer.select_file_title": "选择电机数据文件",
  "viewer.select_dir_title": "选择录制数据目录",

  "hand_status.urdf_placeholder": "URDF 模型",

  "sys_params.title": "⚡ 系统",
  "sys_params.status": "状态",
  "sys_params.current": "电流",
  "sys_params.voltage": "电压",
  "sys_params.power": "功率",
  "sys_params.temp": "温度",
  "sys_params.status_normal": "正常",
  "sys_params.status_fault": "设备故障",
  "sys_params.error_normal": "正常",
  "sys_params.error_comm": "通信异常",
  "sys_params.error_no_cal": "没有位置校准",
  "sys_params.error_over_temp": "温度异常",

  "tactile.control.title": "触觉控制",
  "tactile.control.modules": "模块",
  "tactile.control.read_enable": "读取使能",
  "tactile.control.apply_enable": "下发使能",
  "tactile.control.clear_all": "全部清零",
  "tactile.control.clear_selected": "清零所选",
  "tactile.control.data_type": "数据类型",
  "tactile.control.read_type": "读取类型",
  "tactile.control.apply_type": "下发类型",
  "tactile.control.data_type.ad": "AD值",
  "tactile.control.data_type.calibrated": "标定值",
  "tactile.summary.title": "汇总数据",
  "tactile.summary.palm": "手掌合力",
  "tactile.summary.thumb_tip": "拇指尖合力",
  "tactile.summary.thumb_upper": "拇指上指腹合力",
  "tactile.summary.thumb_lower": "拇指下指腹合力",
  "tactile.summary.index_tip": "食指指尖合力",
  "tactile.summary.index_upper": "食指上指腹合力",
  "tactile.summary.index_lower": "食指下指腹合力",
  "tactile.summary.middle_tip": "中指指尖合力",
  "tactile.summary.middle_upper": "中指上指腹合力",
  "tactile.summary.middle_lower": "中指下指腹合力",
  "tactile.summary.ring_tip": "无名指指尖合力",
  "tactile.summary.ring_upper": "无名指上指腹合力",
  "tactile.summary.ring_lower": "无名指下指腹合力",
  "tactile.summary.little_tip": "小指指尖合力",
  "tactile.summary.little_upper": "小指上指腹合力",
  "tactile.summary.little_lower": "小指下指腹合力",
  "tactile.refresh": "刷新",
  "tactile.auto_refresh": "自动刷新",
  "tactile.refresh_interval": "间隔(ms)",
  "tactile.array.title": "阵列数据",
  "tactile.array.module": "模块",
  "tactile.array.points": "点数",
  "tactile.array.index": "序号",
  "tactile.array.value": "数值",
  "tactile.module.palm": "手掌",
  "tactile.module.thumb_tip": "拇指尖",
  "tactile.module.thumb_pad": "拇指指腹",
  "tactile.module.index_tip": "食指指尖",
  "tactile.module.index_pad": "食指指腹",
  "tactile.module.middle_tip": "中指指尖",
  "tactile.module.middle_pad": "中指指腹",
  "tactile.module.ring_tip": "无名指指尖",
  "tactile.module.ring_pad": "无名指指腹",
  "tactile.module.little_tip": "小指指尖",
  "tactile.module.little_pad": "小指指腹",

  "settings.device_info": "设备信息",
  "settings.hand_type": "手型:",
  "settings.left_hand": "左手",
  "settings.right_hand": "右手",
  "settings.unknown_hand": "未知",
  "settings.device_id": "设备ID:",
  "settings.apply": "应用",
  "settings.refresh": "刷新",
  "settings.switches": "开关控制",
  "settings.led": "背光LED",
  "settings.buzzer": "蜂鸣器",
  "settings.vibration": "振动马达",
  "settings.touchscreen": "触屏功能",
  "settings.auto_cal": "开机自动校准",
  "settings.teaching": "示教模式",
  "settings.comm_config": "通信配置",
  "settings.actions": "操作指令",
  "settings.finger_reset": "手指恢复默认",
  "settings.finger_pos_cal": "手动位置校准",
  "settings.current_cal": "校准电流",
  "settings.clear_error": "清除电机错误码",
  "settings.factory_reset": "恢复出厂设置",
  "settings.software_restart": "软件重启",
  "settings.ota_update": "固件升级 (OTA)",
  "settings.confirm_title": "确认操作",
  "settings.confirm_content": "确定要执行「{action}」吗？此操作不可撤销。",
  "settings.global_current": "全局电流配置",
  "settings.global_protect_current": "保护电流:",
  "settings.continuous_current": "持续电流:",
  "settings.read": "读取",
  "settings.reconnecting": "正在重连...",
  "settings.reconnect_ok_title": "重连成功",
  "settings.reconnect_ok_msg": "通信参数已更新",
  "settings.reconnect_fail_title": "重连失败",
  "settings.reconnect_fail_msg": "请检查设备状态: {error}",
  "settings.sn_setting": "SN设置",
  "settings.broadcast_id": "广播ID",
  "settings.zero_position": "零位与偏移设置",
  "settings.zero_position_title": "零位与偏移设置",
  "settings.set_zero_btn": "设置0位",
  "settings.set_offset_btn": "设置偏移",
  "settings.get_zero_btn": "读取偏置",
  "settings.close_btn": "关闭",
  "settings.motor_id": "电机ID",
  "settings.offset_deg": "偏移量 (度°)",
  "settings.zero_pos_desc": "提示：若不输入偏移值直接“设置0位”，则设备会将当前反馈位置作为零位。若要“设置偏移”，则表格中所有21个电机的偏移值都将生效（单位为度）。",
  "finger.waveform": "实时波形",
  "finger.capture_to_seq": "捕获到序列",
  "settings.motor_error_auto_clear": "自动清除电机错误码",
  "settings.set_zero_confirm_title": "确认设置零位",
  "settings.set_zero_confirm_content": "在设置零位之前，请先确认以下操作已完成：\n\n1. 禁用电机，以便手指能够自由手动运动。\n2. 手动将手部摆成期望的零位参考姿态。\n3. 启用电机以锁定该姿态。\n\n确定要设置当前位置为零位吗？",
  "finger.monitor_freq": "监听频率:",
  "finger.batch_mode": "批量模式:",
  "finger.batch_mode_placeholder": "-- 批量模式 --",
  "finger.link_fast": "⚡ 极速整指链路已激活",
  "finger.link_consistent_fallback": "ℹ️ 一致模式 (单关节链路)",
  "finger.link_mixed": "ℹ️ 混合模式 (单关节链路)",

  "teaching.start_teach": "⏺ 开始示教",
  "teaching.stop_teach": "⏹ 停止录制",
  "teaching.frequency": "频率:",
  "teaching.rate": "倍速:",
  "teaching.loop": "循环",
  "teaching.import": "📥 导入",
  "teaching.export": "📤 导出",
  "teaching.play": "▶ 回放",
  "teaching.stop_replay": "⏹ 停止回放",
  "teaching.status_idle": "● 待机",
  "teaching.status_recording": "⏺ 录制中...",
  "teaching.status_replaying": "▶ 回放中...",
  "teaching.import_title": "导入轨迹",
  "teaching.export_title": "导出轨迹",

  "canfd.default_suffix": "(默认)",

  "ota.dialog_title": "固件升级 (OTA)",
  "ota.file_label": "固件文件:",
  "ota.select_file": "浏览",
  "ota.select_file_title": "选择固件文件",
  "ota.file_filter": "固件文件 (*.bin *.hex);;所有文件 (*.*)",
  "ota.start": "开始升级",
  "ota.cancel": "取消",
  "ota.status_ready": "就绪",
  "ota.status_preparing": "准备中...",
  "ota.status_entering": "正在进入 OTA 模式...",
  "ota.status_transferring": "传输中...",
  "ota.status_success": "升级成功！",
  "ota.status_failed": "升级失败",
  "ota.status_error": "错误",
  "tactile.show_sensors": "显示点位",
  "tactile.simulate_data": "数据仿真",
  "tactile.reset_view": "恢复视图",
  "tactile.save_rois": "保存点位",
  "tactile.tune_specs": "参数微调",
  "tactile.tune_specs_title": "触觉传感器参数微调",
  "tactile.select_region": "选择触觉物理区域:",
  "tactile.param.max_value": "最大量程 (量程上限):",
  "tactile.param.influence": "影响半径 (受力半径):",
  "tactile.param.threshold": "滤波阈值 (防噪门限):",
  "tactile.param.gain": "增益倍数 (渲染增益):",
  "tactile.param.blur": "平滑滤波 (模糊半径):",
  "tactile.param.extrapolate": "外推距离 (扩散步长):",
  "tactile.param.guide_title": "参数调整指南 (调参参考说明):",
  "tactile.save_specs_success": "🔓 触觉传感器微调参数保存成功"
}
