import { useState, useEffect } from 'react';

const dict = {
  "zh-CN": {
    "闪电直连": "闪电直连",
    "服务器别名（选填）": "服务器别名（选填）",
    "例如：我的测试服": "例如：我的测试服",
    "主机地址 *": "主机地址 *",
    "用户名": "用户名",
    "认证方式": "认证方式",
    "密码认证": "密码认证",
    "私钥认证": "私钥认证",
    "密码": "密码",
    "请输入密码": "请输入密码",
    "私钥内容": "私钥内容",
    "浏览": "浏览",
    "私钥密码短语 (可选)": "私钥密码短语 (可选)",
    "立即闪连": "立即闪连",
    "系统状态": "系统状态",
    "服务器总数": "服务器总数",
    "在线节点": "在线节点",
    "离线节点": "离线节点",
    "快捷操作": "快捷操作",
    "密钥": "密钥",
    "日志": "日志",
    "主机": "主机",
    "搜索服务器...": "搜索服务器...",
    "添加": "添加",
    "添加并链接": "添加并链接",
    "添加后清空": "添加后清空",
    "添加成功后清空表单，方便连续添加多台服务器": "添加成功后清空表单，方便连续添加多台服务器",
    "终端": "终端",
    "文件管理": "文件管理",
    "历史指令": "历史指令",
    "返回主页": "返回主页",
    "关闭全部": "关闭全部",
    "服务器列表": "服务器列表",
    "搜索服务器": "搜索服务器",
    "无匹配结果": "无匹配结果",
    "确定关闭全部": "确定关闭全部",
    "个连接": "个连接",
    
    "暂无服务器": "暂无服务器",
    "连接": "连接",
    "编辑配置": "编辑配置",
    "克隆": "克隆",
    "删除": "删除",
    "分组": "分组",
    "未分组": "未分组",
    "移动到分组": "移动到分组",
    "移出分组": "移出分组",
    "已移动到分组": "已移动到分组",
    "默认（不填则不分组）": "默认（不填则不分组）",
    
    "会话输入历史": "会话输入历史",
    "清空列表": "清空列表",
    "您还没有手工输入任何命令": "您还没有手工输入任何命令",
    "在此连接的终端中手工输入并回车执行的指令将自动留存，方便您在此浏览与重复运行。": "在此连接的终端中手工输入并回车执行的指令将自动留存，方便您在此浏览与重复运行。",
    "复制": "复制",
    "再次运行": "再次运行",

    "名称": "名称",
    "大小": "大小",
    "修改时间": "修改时间",
    "新建文件夹": "新建文件夹",
    "上传文件": "上传文件",
    "上传文件或右键上传文件夹": "上传文件或右键上传文件夹",
    "刷新": "刷新",
    "返回上级": "返回上级",
    "加载中...": "加载中...",
    "目录为空": "目录为空",
    "编辑": "编辑",
    "下载到本地": "下载到本地",
    "压缩 (tar.gz)": "压缩 (tar.gz)",
    "解压": "解压",
    "重命名": "重命名",
    "权限": "权限",
    "修改权限": "修改权限",
    "包含子目录": "包含子目录",
    "所有者": "所有者",
    "用户": "用户",
    "组": "组",
    "其他": "其他",
    "读取": "读取",
    "写入": "写入",
    "执行": "执行",
    "新建文件": "新建文件",
    "目录根": "目录根",
    "上传失败": "上传失败",
    "无法打开文件": "无法打开文件",
    "文件保存成功": "文件保存成功",
    "保存失败": "保存失败",
    "文件夹创建成功": "文件夹创建成功",
    "创建失败": "创建失败",
    "文件创建成功": "文件创建成功",
    "解压成功": "解压成功",
    "重命名成功": "重命名成功",
    "重命名失败": "重命名失败",
    "权限不足": "权限不足",
    "仍以": "仍以",
    "原用户": "原用户",
    "身份运行，终端内 sudo 不影响文件管理器": "身份运行，终端内 sudo 不影响文件管理器",
    "释放以上传文件/文件夹": "释放以上传文件/文件夹",
    "上传中": "上传中",
    "下载中": "下载中",
    "八进制:": "八进制:",

    "请填写主机地址": "请填写主机地址",
    "请填写用户名": "请填写用户名",
    "保存中...": "保存中...",
    "保存配置": "保存配置",
    "取消": "取消",

    "连接失败": "连接失败",
    "上传成功": "上传成功",
    "下载成功": "下载成功",
    "下载文件夹到本地": "下载文件夹到本地",
    "当前环境不支持下载文件夹": "当前环境不支持下载文件夹",
    "确定删除服务器": "确定删除服务器",
    "会话": "会话",
    "已连接": "已连接",
    "已断开": "已断开",
    "连接中...": "连接中...",
    "错误": "错误",
    "离线": "离线",
    "SSH": "SSH",
    "<1毫秒": "<1毫秒",
    "毫秒": "毫秒",
    "文本": "文本",

    "确定": "确定",
    "我知道了": "我知道了",
    "粘贴": "粘贴",
    "隐藏密码": "隐藏密码",
    "显示密码": "显示密码",

    "系统监控": "系统监控",
    "实时查看服务器 CPU、内存、网络和磁盘使用情况": "实时查看服务器 CPU、内存、网络和磁盘使用情况",
    "CPU 每核心实时占用": "CPU 每核心实时占用",
    "内存甜甜圈图分析": "内存甜甜圈图分析",
    "网络速率折线图": "网络速率折线图",
    "磁盘分区挂载表": "磁盘分区挂载表",
    "进程热点排行": "进程热点排行",
    "开启监控": "开启监控",
    "注入监控脚本": "注入监控脚本",
    "将在服务器写入": "将在服务器写入",
    "，轻量监控脚本。": "，轻量监控脚本。",
    "纯 Shell，读取 /proc 文件系统": "纯 Shell，读取 /proc 文件系统",
    "无需安装任何软件或依赖": "无需安装任何软件或依赖",
    "不修改系统配置，不常驻后台": "不修改系统配置，不常驻后台",
    "断开连接后自动停止采集": "断开连接后自动停止采集",
    "注入中...": "注入中...",
    "确认开启": "确认开启",
    "正在采集系统信息...": "正在采集系统信息...",
    "写入失败，请重试": "写入失败，请重试",
    "重试": "重试",
    "监控脚本写入服务器失败，请检查连接或权限": "监控脚本写入服务器失败，请检查连接或权限",
    "系统": "系统",
    "已复制": "已复制",
    "复制路径": "复制路径",
    "打开所在目录": "打开所在目录",
    "打开所在目录失败": "打开所在目录失败",
    "复制失败": "复制失败",
    "复制 IP": "复制 IP",
    "显示 IP": "显示 IP",
    "隐藏 IP": "隐藏 IP",
    "时区": "时区",
    "运行": "运行",
    "天": "天",
    "小时": "小时",
    "分钟": "分钟",
    "0 小时": "0 小时",
    "分": "分",
    "核": "核",
    "收起": "收起",
    "收起 AI 助手面板": "收起 AI 助手面板",
    "打开 AI 助手面板": "打开 AI 助手面板",
    "展开全部": "展开全部",
    "内存": "内存",
    "已用": "已用",
    "缓存": "缓存",
    "空闲": "空闲",
    "使用率": "使用率",
    "网络": "网络",
    "网络监控": "网络监控",
    "查看详情": "查看详情",
    "上传速度": "上传速度",
    "下载速度": "下载速度",
    "总上传": "总上传",
    "总下载": "总下载",
    "网卡": "网卡",
    "暂无网络接口数据": "暂无网络接口数据",
    "暂无网络连接数据": "暂无网络连接数据",
    "连接端口": "连接端口",
    "显示全部监听端口": "显示全部监听端口",
    "已隐藏空闲监听端口": "已隐藏空闲监听端口",
    "空闲监听端口已隐藏": "空闲监听端口已隐藏",
    "网络监控默认使用 /proc 和 iproute2/ss 采集数据，通常无需安装；lsof 与 net-tools 仅作为旧系统兼容补充。": "网络监控默认使用 /proc 和 iproute2/ss 采集数据，通常无需安装；lsof 与 net-tools 仅作为旧系统兼容补充。",
    "安装以下工具包后，可提升旧系统兼容性，并让 PID、进程名、端口、连接和网卡统计更完整准确": "安装以下工具包后，可提升旧系统兼容性，并让 PID、进程名、端口、连接和网卡统计更完整准确",
    "可选安装命令": "可选安装命令",
    "连接明细": "连接明细",
    "暂无连接明细": "暂无连接明细",
    "位置": "位置",
    "保留地址": "保留地址",
    "点击查看连接明细": "点击查看连接明细",
    "无连接可展开": "无连接可展开",
    "监听IP": "监听IP",
    "IP数": "IP数",
    "连接数": "连接数",
    "通用": "通用",
    "速度": "速度",
    "已用流量": "已用流量",
    "上传": "上传",
    "下载": "下载",
    "磁盘": "磁盘",
    "类型": "类型",
    "读/s": "读/s",
    "写/s": "写/s",
    "挂载": "挂载",
    "可用": "可用",
    "已用%": "已用%",
    "进程管理": "进程管理",
    "终止选中": "终止选中",
    "正在加载进程列表...": "正在加载进程列表...",
    "加载失败": "加载失败",
    "无法终止进程，请检查权限": "无法终止进程，请检查权限",
    "确定要终止选中的 ": "确定要终止选中的 ",
    " 个进程吗？": " 个进程吗？",
    "已终止 ": "已终止 ",
    " 个进程": " 个进程",
    "进程": "进程",
    "暂无热点进程": "暂无热点进程",
    "查看全部": "查看全部",
    "全部进程": "全部进程",
    "暂无进程数据": "暂无进程数据",
    "个": "个",
    "位置": "位置",
    "进程名": "进程名",
    "线程数": "线程数",
    "运行时间": "运行时间",
    "完整命令行": "完整命令行",
    "名称/命令行": "名称/命令行",
    "没有可显示的进程": "没有可显示的进程",
    "未找到匹配的进程": "未找到匹配的进程",
    "搜索 PID / 进程名 / 用户...": "搜索 PID / 进程名 / 用户...",
    "环境变量": "环境变量",
    "加载环境变量...": "加载环境变量...",
    "无环境变量": "无环境变量",

    "命令已复制到剪贴板": "命令已复制到剪贴板",
    "已发送指令到终端": "已发送指令到终端",
    "确定要清空该服务器的历史指令吗？": "确定要清空该服务器的历史指令吗？",
    "搜索命令...": "搜索命令...",
    "当前服务器": "当前服务器",
    "全部服务器": "全部服务器",
    "未找到匹配的命令": "未找到匹配的命令",
    "尝试其他搜索词": "尝试其他搜索词",
    "您还没有执行过任何命令": "您还没有执行过任何命令",
    "在此服务器中执行过的命令会自动留存，方便您浏览与重复运行。": "在此服务器中执行过的命令会自动留存，方便您浏览与重复运行。",

    // Settings Modal
    "WebDAV 配置": "WebDAV 配置",
    "配置 WebDAV 端点用于加密同步服务器列表": "配置 WebDAV 端点用于加密同步服务器列表",
    "已成功绑定 WebDAV 服务": "已成功绑定 WebDAV 服务",
    "绑定账号": "绑定账号",
    "备份目录": "备份目录",
    "保留份数": "保留份数",
    "不限": "不限",
    "服务器地址": "服务器地址",
    "修改配置": "修改配置",
    "测试中...": "测试中...",
    "测试连接": "测试连接",
    "从终端复制": "从终端复制",
    "粘贴到终端": "粘贴到终端",
    "清空终端缓冲区": "清空终端缓冲区",
    "新建本地标签页": "新建本地标签页",
    "打断当前指令 (SIGINT)": "打断当前指令 (SIGINT)",
    "结束终端会话 (EOF)": "结束终端会话 (EOF)",
    "后台挂起进程 (SIGTSTP)": "后台挂起进程 (SIGTSTP)",
    "清空当前输入行": "清空当前输入行",
    "发现新版本: v": "发现新版本: v",
    "当前已是最新版本": "当前已是最新版本",
    "检查更新失败: ": "检查更新失败: ",
    "更新失败: ": "更新失败: ",
    "终端壁纸已更新": "终端壁纸已更新",
    "图片过大，无法保存，请使用较小的图片": "图片过大，无法保存，请使用较小的图片",
    "读取图片失败": "读取图片失败",
    "已恢复默认壁纸": "已恢复默认壁纸",
    "窗口大小已恢复默认": "窗口大小已恢复默认",
    "终端快捷键已修改为": "终端快捷键已修改为",
    "连接测试成功": "连接测试成功",
    "连接测试成功 ✓": "连接测试成功 ✓",
    "连接测试失败": "连接测试失败",
    "同步成功！本地": "同步成功！本地",
    "个 + 云端": "个 + 云端",
    "个 =": "个 =",
    "个": "个",
    "配置已保存，已上传": "配置已保存，已上传",
    "个服务器": "个服务器",
    "配置已保存，但同步失败，可稍后手动上传": "配置已保存，但同步失败，可稍后手动上传",
    "配置已保存": "配置已保存",
    "恢复成功": "恢复成功",
    "恢复失败": "恢复失败",
    "提示：": "提示：",
    "检查中...": "检查中...",
    "检查更新": "检查更新",
    "立即更新": "立即更新",
    "简体中文": "简体中文",
    "终端快捷键": "终端快捷键",
    "终端颜色主题": "终端颜色主题",
    "选择终端的配色风格，即时生效": "选择终端的配色风格，即时生效",
    "注：部分快捷键行为受终端内的 Shell 设置影响。": "注：部分快捷键行为受终端内的 Shell 设置影响。",
    "云端同步": "云端同步",
    "同步所有配置，全程 AES-256 高强加密": "同步所有配置，全程 AES-256 高强加密",
    "自动同步": "自动同步",
    "开启后，添加、编辑、删除服务器或修改配置时自动同步到云端": "开启后，添加、编辑、删除服务器或修改配置时自动同步到云端",
    "已开启": "已开启",
    "已关闭": "已关闭",
    "自动同步模式": "自动同步模式",
    "全部同步": "全部同步",
    "上次同步": "上次同步",
    "同步中...": "同步中...",
    "合并同步": "合并同步",
    "加载备份列表中...": "加载备份列表中...",
    "从云端恢复": "从云端恢复",
    "已开启自动云端备份：": "已开启自动云端备份：",
    "当您添加、编辑、删除服务器或修改配置时，后台将静默保存至云端。": "当您添加、编辑、删除服务器或修改配置时，后台将静默保存至云端。",
    "恢复中...": "恢复中...",
    "确定恢复": "确定恢复",
    "端点地址 (URL)": "端点地址 (URL)",
    "密码 / 授权码": "密码 / 授权码",
    "远程保存目录": "远程保存目录",
    "保留份数 (0=不限)": "保留份数 (0=不限)",
    "访问密钥 ID (Access Key ID)": "访问密钥 ID (Access Key ID)",
    "秘密访问密钥 (Secret Access Key)": "秘密访问密钥 (Secret Access Key)",
    "存储桶 (Bucket)": "存储桶 (Bucket)",
    "端点地址 (Endpoint)": "端点地址 (Endpoint)",
    "区域 (Region)": "区域 (Region)",
    "前缀 (Prefix)": "前缀 (Prefix)",
    "主机地址": "主机地址",
    "端口": "端口",
    "密钥认证": "密钥认证",
    "语言已切换至 简体中文": "语言已切换至 简体中文",
    "已启用自定义强调色": "已启用自定义强调色",
    "已恢复默认强调色": "已恢复默认强调色",
    "请按下快捷键...": "请按下快捷键...",
    "系统默认": "系统默认",
    "选择要恢复的云端备份": "选择要恢复的云端备份",
    "此操作将覆盖当前所有的本地服务器配置，且无法撤销。请选择要恢复的备份时间：": "此操作将覆盖当前所有的本地服务器配置，且无法撤销。请选择要恢复的备份时间：",
    "读取私钥文件失败": "读取私钥文件失败",
    "从文件加载私钥": "从文件加载私钥",
    "云端未找到任何备份文件": "云端未找到任何备份文件",
    "获取备份列表失败": "获取备份列表失败",
    "选择恢复来源": "选择恢复来源",
    "请重新选择": "请重新选择",
    "没有可用的云端来源": "没有可用的云端来源",
    "同步失败": "同步失败",
    "合并同步失败": "合并同步失败",
    "合并同步成功！本地": "合并同步成功！本地",
    "重试": "重试",
    "基本信息": "基本信息",
    "高级选项": "高级选项",
    "终端默认 cd 目录": "终端默认 cd 目录",
    "文件管理器初始目录": "文件管理器初始目录",
    "代理服务器": "代理服务器",
    "代理模式": "代理模式",
    "直连": "直连",
    "选择代理节点": "选择代理节点",
    "自定义代理": "自定义代理",
    "代理节点": "代理节点",
    "请选择代理节点": "请选择代理节点",
    "代理主机": "代理主机",
    "代理端口": "代理端口",
    "代理用户名": "代理用户名",
    "代理密码": "代理密码",
    "暂无代理节点，请先到设置中创建": "暂无代理节点，请先到设置中创建",
    "错误": "错误",
    "别名": "别名",
    "状态": "状态",
    "操作": "操作",
    "剪切": "剪切",
    "重新连接": "重新连接",
    "输入命令": "输入命令",
    "历史": "历史",
    "快捷命令": "快捷命令",
    "命令": "命令",
    "全选": "全选",
    "清空屏幕": "清空屏幕",
    "历史命令": "历史命令",
    "快速命令": "快速命令",
    "暂无历史记录": "暂无历史记录",
    "无匹配结果": "无匹配结果",
    "192.168.1.1 或 example.com": "192.168.1.1 或 example.com",
    "新密码（留空则不修改）": "新密码（留空则不修改）",
    "关闭": "关闭",
    "新建终端": "新建终端",
    "文件管理器布局": "文件管理器布局",
    "文件管理器分栏位置": "文件管理器分栏位置",
    "分栏布局": "分栏布局",
    "发现新版本": "发现新版本",
    "为了给您提供更极致的体验，建议您立即升级。": "为了给您提供更极致的体验，建议您立即升级。",
    "稍等": "稍等",
    "最大化": "最大化",
    "系统托盘": "系统托盘",
    "关闭窗口": "关闭窗口",
    "退出": "退出",
    "用户取消连接": "用户取消连接",
    "连接成功": "连接成功",
    "密码已保存，连接成功": "密码已保存，连接成功",
    "只接受本次": "只接受本次",
    "接受并保存": "接受并保存",
    "卡片视图": "卡片视图",
    "列表视图": "列表视图",
    "调整监控边栏宽度": "调整监控边栏宽度",
    "关闭当前文件": "关闭当前文件",
    "服务器离线或不可达": "服务器离线或不可达",
    "编辑服务器": "编辑服务器",
    "行": "行",
    "字节": "字节",

    // App.jsx
    "自动更新失败": "自动更新失败",
    "加载服务器配置失败": "加载服务器配置失败",
    "重新连接成功": "重新连接成功",
    "重新连接失败": "重新连接失败",
    "SSH 连接已意外断开": "SSH 连接已意外断开",
    "首次连接到此主机，请确认密钥指纹：": "首次连接到此主机，请确认密钥指纹：",
    "主机:": "主机:",
    "密钥指纹:": "密钥指纹:",
    "如果指纹与服务器管理员提供的匹配，点击\"接受并保存\"。": "如果指纹与服务器管理员提供的匹配，点击\"接受并保存\"。",
    "远程主机密钥已变更，可能存在中间人攻击！": "远程主机密钥已变更，可能存在中间人攻击！",
    "新密钥指纹:": "新密钥指纹:",
    "旧密钥指纹:": "旧密钥指纹:",
    "如果确认这是预期的变更（如服务器重装），点击\"接受并保存\"。": "如果确认这是预期的变更（如服务器重装），点击\"接受并保存\"。",
    "主机密钥确认": "主机密钥确认",
    "主机密钥已变更": "主机密钥已变更",
    "主机密钥已保存，连接成功": "主机密钥已保存，连接成功",
    "本次已接受，连接成功": "本次已接受，连接成功",
    "认证失败，请输入正确的密码重试：": "认证失败，请输入正确的密码重试：",
    "认证失败": "认证失败",
    "记住密码": "记住密码",
    "更新凭据密码": "更新凭据密码",
    "服务器配置已更新": "服务器配置已更新",
    "服务器添加成功": "服务器添加成功",
    "标签页": "标签页",
    "左侧分屏": "左侧分屏",
    "底部分屏": "底部分屏",
    "监控面板位置": "监控面板位置",
    "展开监控面板": "展开监控面板",
    "收起监控面板": "收起监控面板",
    "右侧": "右侧",
    "左侧": "左侧",
    "底部": "底部",
    "调整监控边栏宽度": "调整监控边栏宽度",
    "主机密钥已变更": "主机密钥已变更",
    "正在建立 SSH 连接，请稍候...": "正在建立 SSH 连接，请稍候...",

    // FileManager.jsx
    "文件过大": "文件过大",
    "最大支持": "最大支持",
    "最大支持 5MB 编辑": "最大支持 5MB 编辑",
    "读取目录失败": "读取目录失败",
    "正在选择文件...": "正在选择文件...",
    "确定删除": "确定删除",
    "此操作不可撤销": "此操作不可撤销",
    "已删除": "已删除",
    "新文件夹名称:": "新文件夹名称:",
    "新文件名称:": "新文件名称:",
    "正在压缩": "正在压缩",
    "压缩成功": "压缩成功",
    "正在解压": "正在解压",
    "权限修改成功": "权限修改成功",
    "正在上传...": "正在上传...",
    "上传完成": "上传完成",
    "项成功": "项成功",
    "项失败": "项失败",
    "下载失败": "下载失败",
    "删除失败": "删除失败",

    // FileEditor.jsx
    "全屏弹窗": "全屏弹窗",
    "浮动面板": "浮动面板",
    "分栏编辑": "分栏编辑",
    "左侧分栏": "左侧分栏",
    "右侧分栏": "右侧分栏",
    "底部分栏": "底部分栏",
    "有文件未保存，确定全部关闭？": "有文件未保存，确定全部关闭？",
    "编辑器": "编辑器",
    "未保存": "未保存",
    "保存": "保存",

    // GlobalDialog.jsx
    "提示": "提示",
    "操作确认": "操作确认",
    "输入信息": "输入信息",
    "不再询问": "不再询问",
    "记住选择": "记住选择",
    "关闭连接时确认": "关闭连接时确认",
    "关闭单个 SSH 连接前弹出确认弹窗": "关闭单个 SSH 连接前弹出确认弹窗",
    "关闭全部时确认": "关闭全部时确认",
    "批量关闭所有连接前弹出确认弹窗": "批量关闭所有连接前弹出确认弹窗",
    "文件管理器删除时确认": "文件管理器删除时确认",
    "删除文件或文件夹前弹出确认弹窗": "删除文件或文件夹前弹出确认弹窗",
    "关闭窗口时选择": "关闭窗口时选择",
    "关闭窗口前弹出退出或最小化选择": "关闭窗口前弹出退出或最小化选择",
    "关闭窗口时": "关闭窗口时",
    "选择关闭窗口时的默认行为": "选择关闭窗口时的默认行为",
    "每次询问": "每次询问",
    "直接退出": "直接退出",
    "最小化到托盘": "最小化到托盘",
    "工作区": "工作区",
    "记忆工作区": "记忆工作区",
    "重新启动后自动恢复上次的连接、终端标签和分屏布局": "重新启动后自动恢复上次的连接、终端标签和分屏布局",

    // main.jsx
    "界面渲染出错": "界面渲染出错",
    "重新加载": "重新加载",

    // QuickCommands.jsx
    "参数": "参数",
    "参数 ": "参数 ",
    "搜索历史...": "搜索历史...",
    "上移": "上移",
    "下移": "下移",
    "(空分组，右键添加命令)": "(空分组，右键添加命令)",
    "已发送到 ": "已发送到 ",
    " 个会话": " 个会话",
    "已发送": "已发送",
    "＋ 添加命令": "＋ 添加命令",
    "Ctrl+S 保存": "Ctrl+S 保存",
    "点击上方按钮添加命令": "点击上方按钮添加命令",
    "分组名称": "分组名称",
    "保存名称": "保存名称",
    "个命令/子分组": "个命令/子分组",
    "末尾添加回车符CR": "末尾添加回车符CR",
    "如：系统监控": "如：系统监控",
    "如：查看内存": "如：查看内存",
    "如：free -m": "如：free -m",
    "添加分组": "添加分组",
    "重命名分组": "重命名分组",
    "添加命令": "添加命令",
    "编辑命令": "编辑命令",
    "保存": "保存",
    "已保存": "已保存",
    "不保存": "不保存",
    "未保存的修改": "未保存的修改",
    "当前命令有未保存的修改，是否保存？": "当前命令有未保存的修改，是否保存？",
    "根目录": "根目录",
    "输入临时命令直接发送（不保存）...": "输入临时命令直接发送（不保存）...",
    "添加到:": "添加到:",
    "插入参数 p#": "插入参数 p#",
    "含": "含",
    "个动态参数：": "个动态参数：",
    "暂无历史": "暂无历史",
    "发送到": "发送到",
    "当前会话": "当前会话",
    "全部会话": "全部会话",
    "发送": "发送",
    "选择左侧命令或添加新命令": "选择左侧命令或添加新命令",
    "回车": "回车",
    "当前": "当前",
    "全部": "全部",
    "添加子分组": "添加子分组",
    "删除分组": "删除分组",
    "暂无分组": "暂无分组",

    // Missing keys
    "新建终端失败": "新建终端失败",
    "FTP 配置": "FTP 配置",
    "配置 FTP 服务器用于加密同步服务器列表": "配置 FTP 服务器用于加密同步服务器列表",
    "已成功绑定 FTP 服务器": "已成功绑定 FTP 服务器",
    "R2 (S3 兼容) 配置": "R2 (S3 兼容) 配置",
    "配置 Cloudflare R2 或任意 S3 兼容对象存储用于加密同步": "配置 Cloudflare R2 或任意 S3 兼容对象存储用于加密同步",
    "SFTP (SSH) 配置": "SFTP (SSH) 配置",
    "配置 SFTP 服务器用于加密同步服务器列表": "配置 SFTP 服务器用于加密同步服务器列表",
    "已成功绑定 SFTP 服务器": "已成功绑定 SFTP 服务器",
    "已成功绑定 R2 对象存储": "已成功绑定 R2 对象存储",
    "前缀目录": "前缀目录",
    "远程目录": "远程目录",
    "压缩失败": "压缩失败",
    "解压失败": "解压失败",
    "权限修改失败": "权限修改失败",
    "服务器已删除": "服务器已删除",
    "已存在相同主机、端口和用户名的服务器": "已存在相同主机、端口和用户名的服务器",
    "请选择操作": "请选择操作",
    "设置": "设置",
    "最小化": "最小化",
    "显示敏感信息": "显示敏感信息",
    "隐藏敏感信息": "隐藏敏感信息",
    "文件有未保存的修改，确定关闭？": "文件有未保存的修改，确定关闭？",
    "调整大小": "调整大小",

    // SettingsModal tabs & about
    "外观": "外观",
    "基本": "基本",
    "AI 集成": "AI 集成",
    "快捷键": "快捷键",
    "凭据": "凭据",
    "凭据管理": "凭据管理",
    "管理可复用的认证配置，修改后自动生效于所有引用的服务器": "管理可复用的认证配置，修改后自动生效于所有引用的服务器",
    "凭据名称": "凭据名称",
    "新增凭据": "新增凭据",
    "编辑凭据": "编辑凭据",
    "删除凭据": "删除凭据",
    "确定删除此凭据？": "确定删除此凭据？",
    "凭据已保存": "凭据已保存",
    "凭据已删除": "凭据已删除",
    "暂无凭据": "暂无凭据",
    "暂无凭据，请先创建": "暂无凭据，请先创建",
    "使用凭据": "使用凭据",
    "选择凭据": "选择凭据",
    "请选择凭据": "请选择凭据",
    "自定义": "自定义",
    "同步与云": "同步与云",
    "关于": "关于",
    "版本": "版本",
    "反馈问题": "反馈问题",
    "生成预填的 GitHub issue": "生成预填的 GitHub issue",
    "社区": "社区",
    "参与 GitHub Discussions 讨论": "参与 GitHub Discussions 讨论",
    "源代码": "源代码",
    "更新内容": "更新内容",
    "查看发布说明": "查看发布说明",
    "GitHub": "GitHub",
    // SettingsModal network
    "延迟检测协议": "延迟检测协议",
    "选择如何测量服务器网络延迟，不同协议适用于不同的网络环境。": "选择如何测量服务器网络延迟，不同协议适用于不同的网络环境。",
    "SSH Banner RTT": "SSH Banner RTT",
    "通过读取 SSH 握手包测速，穿透 TUN 代理测出真实网络延迟，推荐": "通过读取 SSH 握手包测速，穿透 TUN 代理测出真实网络延迟，推荐",
    "推荐": "推荐",
    "TCP Dial": "TCP Dial",
    "通过 TCP 连接建立测速，适用于局域网/私有网络或未开代理的环境": "通过 TCP 连接建立测速，适用于局域网/私有网络或未开代理的环境",
    "如果您使用 TUN 模式代理（Clash/V2Ray），推荐使用 SSH Banner RTT 模式，可以穿透代理测出真实延迟。": "如果您使用 TUN 模式代理（Clash/V2Ray），推荐使用 SSH Banner RTT 模式，可以穿透代理测出真实延迟。",
    "监控刷新频率": "监控刷新频率",
    "设置探针数据和延迟测试的自动刷新间隔。越高的频率越实时，但资源占用越大。": "设置探针数据和延迟测试的自动刷新间隔。越高的频率越实时，但资源占用越大。",
    "探针刷新间隔": "探针刷新间隔",
    "延迟检测间隔": "延迟检测间隔",
    "代理节点管理": "代理节点管理",
    "添加并管理本地代理节点，当前仅用于保存，不接入 SSH/SFTP 连接。": "添加并管理本地代理节点，当前仅用于保存，不接入 SSH/SFTP 连接。",
    "添加并管理本地代理节点，可供 AI 请求与服务器 SSH/SFTP 连接复用。": "添加并管理本地代理节点，可供 AI 请求与服务器 SSH/SFTP 连接复用。",
    "暂无代理节点": "暂无代理节点",
    "创建第一个代理节点后会显示在这里。": "创建第一个代理节点后会显示在这里。",
    "代理名称（备注）": "代理名称（备注）",
    "仅用于区分代理节点，不参与连接逻辑": "仅用于区分代理节点，不参与连接逻辑",
    "协议类型": "协议类型",
    "SOCKS5 代理": "SOCKS5 代理",
    "HTTP 代理": "HTTP 代理",
    "请输入代理主机地址": "请输入代理主机地址",
    "请输入有效端口": "请输入有效端口",
    "未命名节点": "未命名节点",
    "取消编辑": "取消编辑",
    "AI 请求代理": "AI 请求代理",
    "选择 AI 请求使用的代理节点，首项为不使用。": "选择 AI 请求使用的代理节点，首项为不使用。",
    "不使用": "不使用",
    "专属代理服务器": "专属代理服务器",
    "开启后为当前供应商单独指定代理；关闭后跟随全局 AI 请求代理。": "开启后为当前供应商单独指定代理；关闭后跟随全局 AI 请求代理。",
    // SettingsModal appearance
    "语言": "语言",
    "选择界面语言": "选择界面语言",
    "界面语言": "界面语言",
    "选择界面显示语言": "选择界面显示语言",
    "终端显示": "终端显示",
    "终端字体大小": "终端字体大小",
    "调节终端的字符显示大小": "调节终端的字符显示大小",
    "终端输入回显": "终端输入回显",
    "关闭后输入密码等敏感内容时不会显示字符": "关闭后输入密码等敏感内容时不会显示字符",
    "界面主题": "界面主题",
    "主题": "主题",
    "选择浅色、深色或跟随系统设置": "选择浅色、深色或跟随系统设置",
    "浅色": "浅色",
    "深色": "深色",
    "强调色": "强调色",
    "使用自定义强调色": "使用自定义强调色",
    "覆盖主题自带的强调色": "覆盖主题自带的强调色",
    "终端背景": "终端背景",
    "自定义终端壁纸": "自定义终端壁纸",
    "设置终端底部的自定义背景图片": "设置终端底部的自定义背景图片",
    "壁纸可见度": "壁纸可见度",
    "上传图片": "上传图片",
    "恢复默认": "恢复默认",
    "窗口大小": "窗口大小",
    "记住窗口大小": "记住窗口大小",
    "下次启动时恢复上次调整的窗口尺寸": "下次启动时恢复上次调整的窗口尺寸",
    "恢复默认大小": "恢复默认大小",
    "AI 代理面板": "AI 代理面板",
    "显示 AI 代理面板": "显示 AI 代理面板",
    "控制会话页是否显示 AI 代理面板": "控制会话页是否显示 AI 代理面板",
    "终端隔离": "终端隔离",
    "为每个终端创建独立的 AI 面板与运行期会话。修改后将在下次启动应用时生效。": "为每个终端创建独立的 AI 面板与运行期会话。修改后将在下次启动应用时生效。",
    "删除前需要二次确认": "删除前需要二次确认",
    "删除 AI 对话或消息前先弹出确认提示": "删除 AI 对话或消息前先弹出确认提示",
    "确定删除供应商": "确定删除供应商",
    "终端输出行数上限": "终端输出行数上限",
    "控制 MCP 终端输出保留的最大行数": "控制 MCP 终端输出保留的最大行数",
    "终端输出字符上限": "终端输出字符上限",
    "控制 MCP 终端输出保留的最大字符数": "控制 MCP 终端输出保留的最大字符数",
    "AI 面板接入方式": "AI 面板接入方式",
    "MCP集成": "MCP集成",
    "接入方式": "接入方式",
    "启用 MCP 服务": "启用 MCP 服务",
    "控制本地 MCP 服务是否监听本机回环地址并提供工具能力": "控制本地 MCP 服务是否监听本机回环地址并提供工具能力",
    "允许浏览器调用": "允许浏览器调用",
    "允许带 Origin 的浏览器请求访问本地 MCP 服务。关闭后仅允许无 Origin 的本机客户端调用": "允许带 Origin 的浏览器请求访问本地 MCP 服务。关闭后仅允许无 Origin 的本机客户端调用",
    "自动备份": "自动备份",
    "自动备份对话": "自动备份对话",
    "每次在发起新的 AI 请求前，都会自动备份当前对话。": "每次在发起新的 AI 请求前，都会自动备份当前对话。",
    "关闭后不再创建新备份，已有备份仍可查看和恢复。": "关闭后不再创建新备份，已有备份仍可查看和恢复。",
    "查看和恢复当前对话的自动备份记录。": "查看和恢复当前对话的自动备份记录。",
    "暂无自动备份": "暂无自动备份",
    "对话历史": "对话历史",
    "暂无消息": "暂无消息",
    "新建对话": "新建对话",
    "新对话": "新对话",
    "首字": "首字",
    "当前还没有对话.点击下方发送消息后,将自动创建一条新对话.": "当前还没有对话.点击下方发送消息后,将自动创建一条新对话.",
    "消息": "消息",
    "编辑消息后将从该消息起重建后续对话": "编辑消息后将从该消息起重建后续对话",
    "确定删除这条对话吗？此操作不可撤销。": "确定删除这条对话吗？此操作不可撤销。",
    "确定删除这条消息及其后续对话吗？此操作不可撤销。": "确定删除这条消息及其后续对话吗？此操作不可撤销。",
    "请求失败": "请求失败",
    "已拒绝执行工具调用": "已拒绝执行工具调用",
    "文件": "文件",
    "文件夹": "文件夹",
    "插入当前会话终端输出": "插入当前会话终端输出",
    "搜索 {path} 下的远端文件": "搜索 {path} 下的远端文件",
    "搜索 {path} 下的远端文件夹": "搜索 {path} 下的远端文件夹",
    "未找到文件": "未找到文件",
    "未找到文件夹": "未找到文件夹",
    "未找到结果": "未找到结果",
    "尝试其他关键词或输入绝对路径": "尝试其他关键词或输入绝对路径",
    "尝试其他关键词": "尝试其他关键词",
    "批准": "批准",
    "拒绝": "拒绝",
    "强制继续": "强制继续",
    "终止工具": "终止工具",
    "已排队编辑": "已排队编辑",
    "已排队重试": "已排队重试",
    "已排队发送": "已排队发送",
    "再次点击取消": "再次点击取消",
    "取消跳过下一次自动请求": "取消跳过下一次自动请求",
    "跳过下一次自动请求": "跳过下一次自动请求",
    "未找到斜杠命令": "未找到斜杠命令",
    "前往设置中心新增命令": "前往设置中心新增命令",
    "斜杠命令": "斜杠命令",
    "上下文": "上下文",
    "正在搜索...": "正在搜索...",
    "返回": "返回",
    "正在搜索远端路径...": "正在搜索远端路径...",
    "正在刷新结果...": "正在刷新结果...",
    "在此处输入您的消息...": "在此处输入您的消息...",
    "支持远端文件,远端文件夹,当前终端输出;右键图片按钮粘贴远端绝对路径;支持粘贴/拖拽本地图片": "支持远端文件,远端文件夹,当前终端输出;右键图片按钮粘贴远端绝对路径;支持粘贴/拖拽本地图片",
    "添加图片": "添加图片",
    "停止生成": "停止生成",
    "自动批准": "自动批准",
    "当前阶段仅展示并生效读取,写入,执行.": "当前阶段仅展示并生效读取、写入、执行。",
    "命令白名单": "命令白名单",
    "当前启用时可以自动执行的命令前缀,添加 * 以允许所有命令.": "当前启用时可以自动执行的命令前缀，添加 * 以允许所有命令。",
    "输入命令前缀(例如 'git')": "输入命令前缀(例如 'git')",
    "拒绝的命令": "拒绝的命令",
    "将自动拒绝的命令前缀,无需用户批准;与许可命令冲突时,最长前缀匹配优先.": "将自动拒绝的命令前缀，无需用户批准；与许可命令冲突时，最长前缀匹配优先。",
    "输入要拒绝的命令前缀(例如 'rm -rf')": "输入要拒绝的命令前缀(例如 'rm -rf')",
    "变更块": "变更块",
    "队列": "队列",
    "ai.files.count": "{count} 个文件",
    "ai.file.index": "文件 #{count}",
    "ai.assistant.title": "Ai助手",
    "ai.change_review.title": "变更审阅台",
    "ai.conversation_diff.title": "当前对话文件变更",
    "ai.restore.unsupported": "当前状态不支持还原",
    "ai.reapply.unsupported": "当前状态不支持重新应用",
    "ai.reapply.unavailable": "重新应用能力未就绪",
    "ai.reapply.success": "重新应用成功",
    "ai.preview.unsupported": "当前状态不支持预览",
    "ai.conversation.missing_conversation_id": "当前会话缺少 conversation_id",
    "ai.tool.apply_diff.missing_session_id": "apply_diff 缺少 session_id",
    "ai.tool.apply_diff.missing_path": "apply_diff 缺少 path",
    "ai.tool.apply_diff.missing_diff": "apply_diff 缺少 diff",
    "ai.tool.write_to_file.missing_session_id": "write_to_file 缺少 session_id",
    "ai.tool.write_to_file.missing_path": "write_to_file 缺少 path",
    "ai.tool.search_replace.missing_session_id": "search_replace 缺少 session_id",
    "ai.tool.search_replace.missing_path": "search_replace 缺少 path",
    "ai.tool.search_replace.missing_operations": "search_replace 缺少 operations",
    "ai.tool.search_replace.invalid_operations_json": "search_replace operations 不是合法 JSON",
    "ai.tool.search_replace.empty_operations": "search_replace operations 不能为空",
    "ai.tool.edit_file.missing_session_id": "edit_file 缺少 session_id",
    "ai.tool.edit_file.missing_path": "edit_file 缺少 path",
    "ai.tool.edit_file.invalid_expected_replacements": "edit_file expected_replacements 非法",
    "ai.tool.apply_patch.missing_session_id": "apply_patch 缺少 session_id",
    "ai.tool.apply_patch.missing_patch": "apply_patch 缺少 patch",
    "ai.status.pending_approval": "待批准",
    "ai.status.pending_review": "待审阅",
    "ai.status.running": "执行中",
    "ai.status.executed": "已执行",
    "ai.status.completed": "已完成",
    "ai.status.terminated": "已终止",
    "ai.status.error": "错误",
    "ai.status.rejected": "已拒绝",
    "ai.status.awaiting_action": "等待处理",
    "ai.status.background": "后台继续",
    "ai.status.queued_waiting_terminal": "排队中, 等待终端空闲",
    "ai.conversation.new": "新对话",
    "ai.request.failed": "请求失败",
    "ai.command.execution_rejected": "已拒绝执行工具调用",
    "ai.change_review.preview_unavailable": "无法生成变更审阅预览",
    "ai.change_review.waiting_for_write_approval": "等待在变更审阅台中批准后写入",
    "ai.preview.full_file_search_replace": "整文件预览（共 {count} 个 SEARCH/REPLACE）",
    "ai.preview.full_file_overwrite": "整文件覆盖",
    "ai.preview.create_file": "创建文件",
    "ai.preview.full_file_search_replace_ops": "整文件预览（共 {count} 个 Search/Replace）",
    "ai.preview.full_file_replacements": "整文件预览（共 {count} 处替换）",
    "ai.change_review.unsupported_tool": "该工具当前不支持变更审阅台",
    "ai.followup.empty": "follow_up 不能为空",
    "ai.followup.invalid_xml": "follow_up XML 非法",
    "ai.followup.invalid_suggestion_count": "follow_up 必须包含 2 到 4 个建议",
    "ai.followup.missing_question": "ask_followup_question 缺少 question",
    "ai.followup.awaiting_reply": "等待回复",
    "ai.command_assignment.no_assignable_instance": "没有可指派的命令实例",
    "ai.command_assignment.unsupported_tool": "当前工具不支持指派终端",
    "ai.command_assignment.missing_target_terminal": "当前工具缺少目标终端",
    "ai.command_assignment.empty_target_terminal": "目标终端不能为空",
    "ai.command_assignment.not_assignable": "当前工具未处于可指派状态",
    "ai.command_assignment.target_unavailable": "目标终端不可用",
    "ai.command_assignment.cannot_switch_target": "当前工具无法切换目标终端",
    "ai.command.waiting_for_approval": "等待批准后执行",
    "ai.completion.pending": "待完成",
    "ai.command.auto_denied_by_rule": "命令匹配拒绝规则，已自动拒绝执行工具调用",
    "ai.completion.done": "任务已完成",
    "ai.tool.terminated": "工具已终止",
    "ai.live_search.missing_query": "缺少联网搜索 query",
    "ai.live_search.terminated": "联网搜索已终止",
    "ai.tool.no_content": "未返回内容",
    "ai.command.continues_in_background": "命令仍在后台继续运行",
    "ai.command.aborted": "命令已终止",
    "ai.command.finished_without_output": "命令执行完成且没有输出",
    "ai.followup.no_pending_reply": "没有待回复的追问",
    "ai.followup.invalid_batch_state": "追问批次状态无效",
    "ai.followup.unexpected_pending_tool": "当前待处理工具不是 ask_followup_question",
    "ai.tool_continue.no_instance": "没有可继续的工具实例",
    "ai.tool_continue.unsupported": "当前工具不支持强制继续",
    "ai.tool_continue.not_waiting": "当前工具未处于等待继续状态",
    "ai.tool_terminate.no_instance": "没有可终止的工具实例",
    "ai.tool_terminate.unsupported": "当前工具不支持终止",
    "AI 对话能力未就绪": "AI 对话能力未就绪",
    "工具批准能力未就绪": "工具批准能力未就绪",
    "工具拒绝能力未就绪": "工具拒绝能力未就绪",
    "队列打断工具能力未就绪": "队列打断工具能力未就绪",
    "追问回复能力未就绪": "追问回复能力未就绪",
    "跳过下一次自动请求能力未就绪": "跳过下一次自动请求能力未就绪",
    "工具继续能力未就绪": "工具继续能力未就绪",
    "工具终止能力未就绪": "工具终止能力未就绪",
    "没有可指派的命令实例": "没有可指派的命令实例",
    "当前工具不支持指派终端": "当前工具不支持指派终端",
    "当前工具缺少目标终端": "当前工具缺少目标终端",
    "目标终端不能为空": "目标终端不能为空",
    "当前工具未处于可指派状态": "当前工具未处于可指派状态",
    "目标终端不可用": "目标终端不可用",
    "当前工具无法切换目标终端": "当前工具无法切换目标终端",
    "ssh manager unavailable": "SSH 管理器不可用",
    "session not found": "未找到终端会话",
    "布局切换": "布局切换",
    "打开设置面板": "打开设置面板",
    "关闭设置面板": "关闭设置面板",
    "打开 AI 助手面板": "打开 AI 助手面板",
    "收起 AI 助手面板": "收起 AI 助手面板",
    "传输方式": "传输方式",
    "MCP 地址": "MCP 地址",
    "推荐接入步骤": "推荐接入步骤",
    "服务说明": "服务说明",
    "MCP 配置片段": "MCP 配置片段",
    "该面板可在设置中关闭, 仅影响前端展示层, 不影响 MCP 服务的启动, 监听绑定或生命周期管理.": "该面板可在设置中关闭, 仅影响前端展示层, 不影响 MCP 服务的启动, 监听绑定或生命周期管理.",
    "所有工具和用途": "所有工具和用途",
    "暂无工具信息": "暂无工具信息",
    "可直接粘贴到支持 streamable-http 的 MCP 客户端配置中": "可直接粘贴到支持 streamable-http 的 MCP 客户端配置中",
    "使用 MCP 客户端连接该地址": "使用 MCP 客户端连接该地址",
    "先调用 list_connected_sessions": "先调用 list_connected_sessions",
    "再使用返回的 session_id 调用其他工具": "再使用返回的 session_id 调用其他工具",
    "AI 助手": "AI 助手",
    "正在智能压缩上下文": "正在智能压缩上下文",
    "当前对话上下文 Token,点击智能压缩": "当前对话上下文 Token，点击智能压缩",
    "当前对话文件变更": "当前对话文件变更",
    "会话 · {label}": "会话 · {label}",
    "左键应用/右键还原": "左键应用/右键还原",
    "应用": "应用",
    "暂无可预览差异": "暂无可预览差异",
    "起始行: {count}": "起始行: {count}",
    "匹配次数: {count}": "匹配次数: {count}",
    "相似度: {similarity}% / 需要 {required}%": "相似度: {similarity}% / 需要 {required}%",
    "最佳匹配片段:": "最佳匹配片段:",
    "当前状态不支持预览": "当前状态不支持预览",
    "等待在变更审阅台中批准后写入": "等待在变更审阅台中批准后写入",
    "变更审阅台": "变更审阅台",
    "文件 #{count}": "文件 #{count}",
    "{count} 个文件": "{count} 个文件",
    "工具已终止": "工具已终止",
    "差异预览能力未就绪": "差异预览能力未就绪",
    "当前状态不支持还原": "当前状态不支持还原",
    "还原成功": "还原成功",
    "差异预览失败": "差异预览失败",
    "文件 #{count}": "文件 #{count}",
    "{path} 等 {count} 个文件": "{path} 等 {count} 个文件",
    "交换位置": "交换位置",
    "外观": "外观",
    "控制底部审批与命令处理按钮的左右位置。": "控制底部审批与命令处理按钮的左右位置。",
    "工具审批按钮位置": "工具审批按钮位置",
    "左侧为预览区,右侧点击交换\"拒绝 / 批准\"的左右顺序.": "左侧为预览区，右侧点击交换“拒绝 / 批准”的左右顺序。",
    "命令处理按钮位置": "命令处理按钮位置",
    "左侧为预览区,右侧点击交换\"强制继续 / 终止工具\"的左右顺序.": "左侧为预览区，右侧点击交换“强制继续 / 终止工具”的左右顺序。",
    "消息操作条置底": "消息操作条置底",
    "启用后,用户消息与Ai消息的操作条显示在每轮消息主体底部;关闭后显示在顶部.": "启用后，用户消息与Ai消息的操作条显示在每轮消息主体底部；关闭后显示在顶部。",
    "未命名供应商": "未命名供应商",
    "未选择模型": "未选择模型",
    "创建对话能力未就绪": "创建对话能力未就绪",
    "读取对话能力未就绪": "读取对话能力未就绪",
    "图片加载失败": "图片加载失败",
    "无法获取 Canvas 上下文": "无法获取 Canvas 上下文",
    "远端文件": "远端文件",
    "远端文件夹": "远端文件夹",
    "未填写提示词内容": "未填写提示词内容",
    "刚刚": "刚刚",
    "取消置顶": "取消置顶",
    "置顶": "置顶",
    "编辑供应商": "编辑供应商",
    "基于模型能力": "基于模型能力",
    "强制关闭": "强制关闭",
    "5分钟": "5分钟",
    "1小时": "1小时",
    "无": "无",
    "最少": "最少",
    "低": "低",
    "中": "中",
    "高": "高",
    "超高": "超高",
    "新增供应商": "新增供应商",
    "创建供应商配置...": "创建供应商配置...",
    "编辑...": "编辑...",
    "当前环境不支持刷新模型": "当前环境不支持刷新模型",
    "未获取到任何模型": "未获取到任何模型",
    "刷新模型失败": "刷新模型失败",
    "请先填写基础 URL": "请先填写基础 URL",
    "请先填写 API 密钥": "请先填写 API 密钥",
    "当前环境不支持验证": "当前环境不支持验证",
    "验证通过": "验证通过",
    "验证失败": "验证失败",
    "支持": "支持",
    "不支持": "不支持",
    "启用推理": "启用推理",
    "最大输出 Token": "最大输出 Token",
    "思考 Token 预算": "思考 Token 预算",
    "思考深度": "思考深度",
    "配置文件": "配置文件",
    "API提供商": "API提供商",
    "供应商": "供应商",
    "缓存策略": "缓存策略",
    "API兼容方式": "API兼容方式",
    "密钥状态": "密钥状态",
    "已配置": "已配置",
    "未配置": "未配置",
    "基础 URL": "基础 URL",
    "API 密钥": "API 密钥",
    "联网搜索": "联网搜索",
    "启用当前供应商的联网搜索能力": "启用当前供应商的联网搜索能力",
    "验证中...": "验证中...",
    "验证": "验证",
    "联网搜索专用供应商": "联网搜索专用供应商",
    "选择供应商": "选择供应商",
    "搜索全局配置": "搜索全局配置",
    "没有匹配的供应商": "没有匹配的供应商",
    "输入配置名": "输入配置名",
    "输入 API Key": "输入 API Key",
    "模型": "模型",
    "刷新中...": "刷新中...",
    "刷新模型": "刷新模型",
    "筛选模型": "筛选模型",
    "暂无可用模型": "暂无可用模型",
    "供应商列表": "供应商列表",
    "添加供应商": "添加供应商",
    "搜索...": "搜索...",
    "斜杠命令": "斜杠命令",
    "输入框与用户消息只显示": "输入框与用户消息只显示",
    "真正发送给 AI 时,会在后台注入命令完整提示词内容.": "。真正发送给 AI 时，会在后台注入命令完整提示词内容。",
    "新增命令": "新增命令",
    "当前还没有斜杠命令.新增后即可在输入框中通过": "当前还没有斜杠命令。新增后即可在输入框中通过",
    "进行选择.": "进行选择。",
    "未命名命令": "未命名命令",
    "命令名": "命令名",
    "斜杠命令占位符": "/命令名",
    "例如 summarize": "例如 summarize",
    "仅允许字母,数字,点,下划线和中横线.输入时显示为": "仅允许字母、数字、点、下划线和中横线。输入时显示为",
    "提示词内容": "提示词内容",
    "填写实际注入给 AI 的提示词内容": "填写实际注入给 AI 的提示词内容",
    "保存时会忽略名称非法,名称重复或提示词为空的条目.": "保存时会忽略名称非法、名称重复或提示词为空的条目。",
    "保存修改": "保存修改",
    "MCP集成": "MCP集成",
    "Ai助手": "Ai助手",
    "选择供应商并发送消息后，Ai助手会在这里按真实流式顺序输出内容。": "选择供应商并发送消息后，Ai助手会在这里按真实流式顺序输出内容。",
    "上下文已智能压缩": "上下文已智能压缩",
    "上下文智能压缩摘要": "已压缩 {toolResults} 个工具调用结果，移除 {emptyAssistantMessages} 个空白 assistant 消息，替换 {images} 个图片，移除 {environmentDetails} 个 environment_details，压缩 {fileContent} 个 file_content，压缩 {terminalOutput} 个 terminal_output，压缩 {systemNotices} 个系统提示消息",
    "环境上下文": "环境上下文",
    "追问建议": "追问建议",
    "思考链": "思考链",
    "warning": "警告",
    "danger": "高危",
    "只读": "只读",
    "修改": "修改",
    "还原": "还原",
    "左键预览/右键还原": "左键预览/右键还原",
    "只读批准": "只读批准",
    "arguments": "参数",
    "response": "响应",
    "result": "结果",
    "completed": "已完成",
    "任务完成": "任务完成",
    "任务已完成": "任务已完成",

    // Sync failure dialog
    "云端同步失败": "云端同步失败",
    "数据未能上传到云端，本地数据不受影响。": "数据未能上传到云端，本地数据不受影响。",
    "忽略": "忽略",
    "同步成功": "同步成功",
    "连接与错误日志": "连接与错误日志",
    "mcp.tool.list_connected_sessions": "列出当前已连接的 SSH 终端会话, 并返回后续工具调用所需的 session_id.",
    "mcp.tool.list_files": "列出指定 SSH 会话下的文件和目录, 所有操作都严格限定在提供的 session_id 范围内.",
    "mcp.tool.read_file": "读取一个或多个远程文件, 支持 args XML, files 数组, 以及可选的 1 基行范围.",
    "mcp.tool.write_to_file": "将完整文件内容写入指定远程路径.",
    "mcp.tool.execute_command": "在真实连接的 SSH 终端中执行命令, 同时保留用户可见与可交互特性, 并捕获输出及退出码.",
    "mcp.tool.search_replace": "按顺序对远程文件执行一个或多个精确搜索替换操作. 每一步都必须恰好命中一处.",
    "mcp.tool.apply_diff": "对远程文件应用一个或多个精确的 SEARCH/REPLACE diff 块.",
    "mcp.tool.edit_file": "使用 old_string/new_string 精确替换远程文件内容, 并可通过 expected_replacements 校验替换次数.",
    "mcp.tool.apply_patch": "对指定 SSH 会话应用多文件 patch, 支持新增, 删除和更新文件.",
    "云端同步未完成，确定退出吗？": "云端同步未完成，确定退出吗？",
    "同步未完成": "同步未完成",
    "仍然退出": "仍然退出",
    "重试同步": "重试同步",
    "同步完成": "同步完成",
    "云端": "云端",
    "合并": "合并",
    "已上传": "已上传",
    "数据一致，无需变更": "数据一致，无需变更",
    "本地数据已同步到云端": "本地数据已同步到云端",
    "偏好设置": "偏好设置",
    "文件管理器": "文件管理器",
    "文件管理器跟随终端目录": "文件管理器跟随终端目录",
    "终端 cd 切换目录时自动同步文件管理器路径": "终端 cd 切换目录时自动同步文件管理器路径",
    "压缩传输": "压缩传输",
    "多文件或文件夹上传时先在本机打包为 tar.gz，上传后远端自动解压": "多文件或文件夹上传时先在本机打包为 tar.gz，上传后远端自动解压",
    "下载保存": "下载保存",
    "每次下载都询问": "每次下载都询问",
    "开启后，每次下载文件或文件夹前都先询问保存位置；关闭后直接保存到默认位置": "开启后，每次下载文件或文件夹前都先询问保存位置；关闭后直接保存到默认位置",
    "下载遇到同名时": "下载遇到同名时",
    "差异覆盖": "差异覆盖",
    "目录下载时逐文件比较，大小或修改时间任一不同即覆盖，相同则跳过": "目录下载时逐文件比较，大小或修改时间任一不同即覆盖，相同则跳过",
    "强制覆盖": "强制覆盖",
    "文件直接覆盖；文件夹保留多余本地文件，仅覆盖远端存在的同名内容": "文件直接覆盖；文件夹保留多余本地文件，仅覆盖远端存在的同名内容",
    "每次都询问我": "每次都询问我",
    "首次遇到冲突时询问，并可应用到本次剩余冲突": "首次遇到冲突时询问，并可应用到本次剩余冲突",
    "自动重命名": "自动重命名",
    "保留已有文件，下载结果自动追加后缀": "保留已有文件，下载结果自动追加后缀",
    "比较文件大小": "比较文件大小",
    "大小不同即判定为差异": "大小不同即判定为差异",
    "比较修改时间": "比较修改时间",
    "修改时间不同即判定为差异": "修改时间不同即判定为差异",
    "自动重命名后缀": "自动重命名后缀",
    "高精度时间戳": "高精度时间戳",
    "格式：name_yyyymmdd_hhmmss_nnnnnnnnn.ext": "格式：name_yyyymmdd_hhmmss_nnnnnnnnn.ext",
    "随机数": "随机数",
    "格式：name_ab12cd34.ext": "格式：name_ab12cd34.ext",
    "顺序号 +1": "顺序号 +1",
    "格式：name_1.ext、name_2.ext，自动在已有最大序号上加 1": "格式：name_1.ext、name_2.ext，自动在已有最大序号上加 1",
    "下载默认保存位置": "下载默认保存位置",
    "支持变量：{value}（程序所在目录）": "支持变量：{value}（程序所在目录）",
    "预保存：{path}": "预保存：{path}",
    "上传并发": "上传并发",
    "传输队列": "传输队列",
    "当前会话中的所有路径传输任务都会显示在这里": "当前会话中的所有路径传输任务都会显示在这里",
    "当前会话暂无传输任务": "当前会话暂无传输任务",
    "准备下载": "准备下载",
    "远端压缩中": "远端压缩中",
    "下载压缩包": "下载压缩包",
    "本地解压中": "本地解压中",
    "正在远端打包压缩包": "正在远端打包压缩包",
    "正在下载压缩包到本地": "正在下载压缩包到本地",
    "正在解压到本地目录": "正在解压到本地目录",
    "下载传输已完成": "下载传输已完成",
    "下载传输失败": "下载传输失败",
    "冲突项": "冲突项",
    "本地路径": "本地路径",
    "本地类型": "本地类型",
    "远端类型": "远端类型",
    "本地大小": "本地大小",
    "远端大小": "远端大小",
    "本地修改时间": "本地修改时间",
    "远端修改时间": "远端修改时间",
    "请选择本次冲突的处理方式": "请选择本次冲突的处理方式",
    "下载同名冲突": "下载同名冲突",
    "应用到本次剩余冲突": "应用到本次剩余冲突",
    "当前环境不支持下载冲突处理": "当前环境不支持下载冲突处理",
    "强制终止": "强制终止",
    "从列表中移除": "从列表中移除",
    "已折叠显示，避免传输队列卡片总数超过 {count}": "已折叠显示，避免传输队列卡片总数超过 {count}",
    "当前有 {count} 项活跃任务被折叠隐藏，仅保留最基本的阶段与终止操作。": "当前有 {count} 项活跃任务被折叠隐藏，仅保留最基本的阶段与终止操作。",
    "这些折叠项均已结束，仅保留从列表中移除操作。": "这些折叠项均已结束，仅保留从列表中移除操作。",
    "单文件分块大小 (KiB)": "单文件分块大小 (KiB)",
    "控制单个文件上传时的默认分块大小": "控制单个文件上传时的默认分块大小",
    "多文件并发上传最大数量": "多文件并发上传最大数量",
    "控制同一时间允许并发上传的文件数量": "控制同一时间允许并发上传的文件数量",
    "单文件分块传输最大数量": "单文件分块传输最大数量",
    "控制单个文件在同一时间允许并发传输的分块数量": "控制单个文件在同一时间允许并发传输的分块数量",
    "全局在途块上限": "全局在途块上限",
    "控制所有上传任务共享的在途分块总数": "控制所有上传任务共享的在途分块总数",
    "默认值：{value}，仅影响下一次上传任务": "默认值：{value}，仅影响下一次上传任务",
    "上传队列": "上传队列",
    "当前会话中的所有路径上传任务都会显示在这里": "当前会话中的所有路径上传任务都会显示在这里",
    "当前会话暂无上传任务": "当前会话暂无上传任务",
    "排队中": "排队中",
    "读取中": "读取中",
    "重试中": "重试中",
    "分块进度": "分块进度",
    "分块": "分块",
    "重试": "重试",
    "块": "块",
    "块并发": "块并发",
    "总进度": "总进度",
    "压缩传输累计进度": "压缩传输累计进度",
    "当前阶段字节": "当前阶段字节",
    "当前阶段进度": "当前阶段进度",
    "阶段": "阶段",
    "当前阶段": "当前阶段",
    "状态": "状态",
    "当前文件": "当前文件",
    "准备上传": "准备上传",
    "准备中": "准备中",
    "扫描中": "扫描中",
    "压缩中": "压缩中",
    "上传压缩包": "上传压缩包",
    "清理中": "清理中",
    "远端解压中": "远端解压中",
    "当前阶段无字节指标": "当前阶段无字节指标",
    "正在扫描待压缩项目": "正在扫描待压缩项目",
    "正在构建本机 tar.gz 压缩包": "正在构建本机 tar.gz 压缩包",
    "正在上传压缩包到远端": "正在上传压缩包到远端",
    "正在删除本机临时压缩包": "正在删除本机临时压缩包",
    "正在远端解压压缩包": "正在远端解压压缩包",
    "正在清理远端压缩包": "正在清理远端压缩包",
    "压缩传输已完成": "压缩传输已完成",
    "压缩传输失败": "压缩传输失败",
    "清理本机": "清理本机",
    "清理远端": "清理远端",
    "清空": "清空",
    "已完成": "已完成",
    "失败": "失败",
    "更新下载": "更新下载",
    "优先使用镜像下载": "优先使用镜像下载",
    "优先通过多个镜像地址下载 GitHub 更新,失败后自动回退为官方直连下载": "优先通过多个镜像地址下载 GitHub 更新,失败后自动回退为官方直连下载",
    "渲染": "渲染",
    "禁用硬件加速": "禁用硬件加速",
    "关闭 WebView GPU 加速，重启应用后生效": "关闭 WebView GPU 加速，重启应用后生效",
    "设置已保存，重启后生效": "设置已保存，重启后生效",
    "硬件加速设置保存失败": "硬件加速设置保存失败",
  },
  "en-US": {
    "闪电直连": "Quick Connect",
    "服务器别名（选填）": "Server Alias (Optional)",
    "例如：我的测试服": "e.g. Test Server",
    "主机地址 *": "Host Address *",
    "用户名": "Username",
    "用户": "User",
    "认证方式": "Auth Method",
    "密码认证": "Password Auth",
    "私钥认证": "Private Key Auth",
    "密码": "Password",
    "请输入密码": "Enter your password",
    "私钥内容": "Private Key Content",
    "浏览": "Browse",
    "私钥密码短语 (可选)": "Passphrase (Optional)",
    "立即闪连": "Connect Now",
    "系统状态": "System Status",
    "服务器总数": "Total Servers",
    "在线节点": "Online Nodes",
    "离线节点": "Offline Nodes",
    "快捷操作": "Quick Actions",
    "密钥": "Keys",
    "日志": "Logs",
    "主机": "Hosts",
    "搜索服务器...": "Search servers...",
    "添加": "Add",
    "添加并链接": "Add & Connect",
    "添加后清空": "Clear after add",
    "添加成功后清空表单，方便连续添加多台服务器": "Clear the form after adding, for adding multiple servers in a row",
    "终端": "Terminal",
    "文件管理": "Files",
    "历史指令": "History",
    "返回主页": "Home",
    "关闭全部": "Close All",
    "服务器列表": "Server List",
    "搜索服务器": "Search servers",
    "无匹配结果": "No matching results",
    "确定关闭全部": "Close all",
    "个连接": "connections",
    
    "暂无服务器": "No Servers Yet",
    "连接": "Connect",
    "编辑配置": "Edit Config",
    "克隆": "Clone",
    "删除": "Delete",
    "分组": "Group",
    "未分组": "Ungrouped",
    "移动到分组": "Move to Group",
    "移出分组": "Remove from Group",
    "已移动到分组": "Moved to group",
    "默认（不填则不分组）": "Default (leave empty for no group)",
    
    "会话输入历史": "Command History",
    "清空列表": "Clear List",
    "您还没有手工输入任何命令": "No commands entered manually yet",
    "在此连接的终端中手工输入并回车执行的指令将自动留存，方便您在此浏览与重复运行。": "Commands manually executed in this terminal will be saved automatically, allowing you to browse and run them again.",
    "复制": "Copy",
    "再次运行": "Run Again",

    "名称": "Name",
    "大小": "Size",
    "修改时间": "Modified Time",
    "新建文件夹": "New Folder",
    "上传文件": "Upload File",
    "上传文件或右键上传文件夹": "Upload file or right-click to upload folder",
    "刷新": "Refresh",
    "返回上级": "Go Back",
    "加载中...": "Loading...",
    "目录为空": "Directory is empty",
    "编辑": "Edit",
    "下载到本地": "Download",
    "压缩 (tar.gz)": "Compress (tar.gz)",
    "解压": "Extract",
    "重命名": "Rename",
    "权限": "Permissions",
    "修改权限": "Change Permissions",
    "包含子目录": "Include subdirectories",
    "所有者": "Owner",
    "用户": "User",
    "组": "Group",
    "其他": "Others",
    "读取": "Read",
    "写入": "Write",
    "执行": "Execute",
    "新建文件": "New File",
    "目录根": "Root",
    "上传失败": "Upload failed",
    "无法打开文件": "Unable to open file",
    "文件保存成功": "File saved successfully",
    "保存失败": "Save failed",
    "文件夹创建成功": "Folder created successfully",
    "创建失败": "Create failed",
    "文件创建成功": "File created successfully",
    "解压成功": "Extract successful",
    "重命名成功": "Rename successful",
    "重命名失败": "Rename failed",
    "权限不足": "Permission denied",
    "仍以": "still running as",
    "原用户": "original user",
    "身份运行，终端内 sudo 不影响文件管理器": "identity. sudo in terminal does not affect file manager",
    "释放以上传文件/文件夹": "Release to upload files/folders",
    "上传中": "Uploading",
    "下载中": "Downloading",
    "八进制:": "Octal:",

    "请填写主机地址": "Please enter host address",
    "请填写用户名": "Please enter username",
    "保存中...": "Saving...",
    "保存配置": "Save Config",
    "取消": "Cancel",

    "连接失败": "Connection Failed",
    "上传成功": "Upload Success",
    "下载成功": "Download Success",
    "下载文件夹到本地": "Download Folder",
    "当前环境不支持下载文件夹": "Folder download is unavailable in the current environment",
    "确定删除服务器": "Are you sure to delete",
    "会话": "SESSIONS",
    "已连接": "Connected",
    "已断开": "Disconnected",
    "连接中...": "Connecting...",
    "错误": "Error",
    "离线": "Offline",
    "SSH": "SSH",
    "<1毫秒": "<1ms",
    "毫秒": "ms",
    "文本": "Text",

    "确定": "OK",
    "我知道了": "Got it",
    "粘贴": "Paste",
    "隐藏密码": "Hide password",
    "显示密码": "Show password",

    "系统监控": "System Monitor",
    "实时查看服务器 CPU、内存、网络和磁盘使用情况": "Real-time view of server CPU, memory, network and disk usage",
    "CPU 每核心实时占用": "Real-time per-core CPU usage",
    "内存甜甜圈图分析": "Memory donut chart analysis",
    "网络速率折线图": "Network rate line chart",
    "磁盘分区挂载表": "Disk partition mount table",
    "进程热点排行": "Top processes ranking",
    "开启监控": "Enable Monitor",
    "注入监控脚本": "Inject Monitor Script",
    "将在服务器写入": "Will write to server",
    "，轻量监控脚本。": ", a lightweight monitoring script.",
    "纯 Shell，读取 /proc 文件系统": "Pure Shell, reads /proc filesystem",
    "无需安装任何软件或依赖": "No software or dependencies needed",
    "不修改系统配置，不常驻后台": "No system config changes, no daemon",
    "断开连接后自动停止采集": "Auto-stops collection on disconnect",
    "注入中...": "Injecting...",
    "确认开启": "Confirm Enable",
    "正在采集系统信息...": "Collecting system info...",
    "写入失败，请重试": "Write failed, please retry",
    "重试": "Retry",
    "监控脚本写入服务器失败，请检查连接或权限": "Failed to write probe script, check connection or permissions",
    "系统": "System",
    "已复制": "Copied",
    "复制路径": "Copy Path",
    "打开所在目录": "Open Containing Folder",
    "打开所在目录失败": "Failed to open containing folder",
    "复制失败": "Copy failed",
    "复制 IP": "Copy IP",
    "显示 IP": "Show IP",
    "隐藏 IP": "Hide IP",
    "时区": "Timezone",
    "运行": "Uptime",
    "天": "d ",
    "小时": "h ",
    "分钟": "min",
    "0 小时": "0h",
    "分": "m",
    "核": " cores",
    "收起": "Collapse",
    "收起 AI 助手面板": "Collapse AI Assistant Panel",
    "打开设置面板": "Open Settings Panel",
    "关闭设置面板": "Close Settings Panel",
    "打开 AI 助手面板": "Open AI Assistant Panel",
    "展开全部": "Show all",
    "内存": "Memory",
    "已用": "Used",
    "缓存": "Cache",
    "空闲": "Free",
    "使用率": "Usage",
    "网络": "Network",
    "网络监控": "Network Monitor",
    "查看详情": "Details",
    "上传速度": "Upload Speed",
    "下载速度": "Download Speed",
    "总上传": "Total Upload",
    "总下载": "Total Download",
    "网卡": "Interface",
    "暂无网络接口数据": "No network interface data",
    "暂无网络连接数据": "No network connection data",
    "连接端口": "Connection Ports",
    "显示全部监听端口": "Show all listening ports",
    "已隐藏空闲监听端口": "Hidden idle listening ports",
    "空闲监听端口已隐藏": "Idle listening ports are hidden",
    "网络监控默认使用 /proc 和 iproute2/ss 采集数据，通常无需安装；lsof 与 net-tools 仅作为旧系统兼容补充。": "Network monitoring uses /proc and iproute2/ss by default, usually without installation; lsof and net-tools are only compatibility supplements for older systems.",
    "安装以下工具包后，可提升旧系统兼容性，并让 PID、进程名、端口、连接和网卡统计更完整准确": "Installing these packages improves compatibility on older systems and makes PID, process name, port, connection, and interface statistics more complete and accurate",
    "可选安装命令": "Optional install commands",
    "连接明细": "Connection Details",
    "暂无连接明细": "No connection details",
    "位置": "Location",
    "保留地址": "Reserved Address",
    "点击查看连接明细": "Click to view connection details",
    "无连接可展开": "No connections to expand",
    "监听IP": "Listen IP",
    "IP数": "IPs",
    "连接数": "Connections",
    "通用": "General",
    "速度": "Speed",
    "已用流量": "Total",
    "上传": "Upload",
    "下载": "Download",
    "磁盘": "Disk",
    "类型": "Type",
    "读/s": "Read/s",
    "写/s": "Write/s",
    "挂载": "Mount",
    "可用": "Avail",
    "已用%": "Used%",
    "进程管理": "Processes",
    "终止选中": "Kill Selected",
    "正在加载进程列表...": "Loading process list...",
    "加载失败": "Failed to load",
    "无法终止进程，请检查权限": "Unable to terminate process, please check permissions",
    "确定要终止选中的 ": "Are you sure you want to terminate ",
    " 个进程吗？": " processes?",
    "已终止 ": "Terminated ",
    " 个进程": " processes",
    "进程": "Process",
    "暂无热点进程": "No top processes",
    "查看全部": "View All",
    "全部进程": "All Processes",
    "暂无进程数据": "No process data",
    "位置": "Location",
    "进程名": "Process Name",
    "线程数": "Threads",
    "运行时间": "Uptime",
    "完整命令行": "Full Command",
    "名称/命令行": "Name / Command",
    "没有可显示的进程": "No processes to display",
    "未找到匹配的进程": "No matching processes",
    "搜索 PID / 进程名 / 用户...": "Search PID / Name / User...",
    "环境变量": "Environment",
    "加载环境变量...": "Loading environment...",
    "无环境变量": "No environment variables",

    "命令已复制到剪贴板": "Command copied to clipboard",
    "已发送指令到终端": "Command sent to terminal",
    "确定要清空该服务器的历史指令吗？": "Are you sure to clear this server's command history?",
    "搜索命令...": "Search commands...",
    "当前服务器": "Current Server",
    "全部服务器": "All Servers",
    "未找到匹配的命令": "No matching commands found",
    "尝试其他搜索词": "Try other keywords",
    "您还没有执行过任何命令": "You haven't run any commands yet",
    "在此服务器中执行过的命令会自动留存，方便您浏览与重复运行。": "Commands executed on this server will be saved automatically for browsing and re-running.",

    // Settings Modal
    "修改配置": "Modify Config",
    "测试中...": "Testing...",
    "测试连接": "Test Connection",
    "WebDAV 配置": "WebDAV Config",
    "配置 WebDAV 端点用于加密同步服务器列表": "Configure WebDAV endpoint for encrypted server list sync",
    "已成功绑定 WebDAV 服务": "Successfully bound to WebDAV",
    "绑定账号": "Account",
    "备份目录": "Backup Dir",
    "保留份数": "Max Backups",
    "不限": "Unlimited",
    "服务器地址": "Server Address",
    "从终端复制": "Copy from Terminal",
    "粘贴到终端": "Paste to Terminal",
    "清空终端缓冲区": "Clear Buffer",
    "新建本地标签页": "New Local Tab",
    "打断当前指令 (SIGINT)": "Interrupt (SIGINT)",
    "结束终端会话 (EOF)": "End Session (EOF)",
    "后台挂起进程 (SIGTSTP)": "Suspend (SIGTSTP)",
    "清空当前输入行": "Clear Input Line",
    "发现新版本: v": "New version found: v",
    "当前已是最新版本": "Up to date",
    "检查更新失败: ": "Check failed: ",
    "更新失败: ": "Update failed: ",
    "终端壁纸已更新": "Wallpaper updated",
    "图片过大，无法保存，请使用较小的图片": "Image too large, please use a smaller image",
    "读取图片失败": "Failed to read image",
    "已恢复默认壁纸": "Default wallpaper restored",
    "窗口大小已恢复默认": "Window size reset to default",
    "终端快捷键已修改为": "Shortcut changed to: ",
    "连接测试成功": "Connection test successful",
    "连接测试成功 ✓": "Connection test successful ✓",
    "连接测试失败": "Connection test failed",
    "同步成功！本地": "Sync successful! Local",
    "个 + 云端": " + Cloud",
    "个 =": " = ",
    "个": "",
    "配置已保存，已上传": "Config saved and uploaded",
    "个服务器": " servers",
    "配置已保存，但同步失败，可稍后手动上传": "Config saved, but sync failed. Upload manually later.",
    "配置已保存": "Config saved",
    "恢复成功": "Restore successful",
    "恢复失败": "Restore failed",
    "提示：": "Tip: ",
    "检查中...": "Checking...",
    "检查更新": "Check for Updates",
    "立即更新": "Update Now",
    "简体中文": "简体中文",
    "终端快捷键": "Terminal Shortcuts",
    "终端颜色主题": "Terminal Color Theme",
    "选择终端的配色风格，即时生效": "Choose terminal color scheme, takes effect immediately",
    "注：部分快捷键行为受终端内的 Shell 设置影响。": "Note: Some shortcut behaviors are affected by the terminal Shell settings.",
    "云端同步": "Cloud Sync",
    "同步所有配置，全程 AES-256 高强加密": "Sync all configurations with AES-256 encryption",
    "自动同步": "Auto Sync",
    "开启后，添加、编辑、删除服务器或修改配置时自动同步到云端": "When enabled, adding, editing, deleting servers or changing configuration will sync to cloud automatically",
    "已开启": "Enabled",
    "已关闭": "Disabled",
    "自动同步模式": "Auto Sync Mode",
    "全部同步": "Sync All",
    "上次同步": "Last Sync",
    "同步中...": "Syncing...",
    "合并同步": "Merge Sync",
    "加载备份列表中...": "Loading backup list...",
    "从云端恢复": "Restore from Cloud",
    "已开启自动云端备份：": "Auto cloud backup enabled: ",
    "当您添加、编辑、删除服务器或修改配置时，后台将静默保存至云端。": "When you add, edit, or delete servers, changes are silently saved to the cloud.",
    "恢复中...": "Restoring...",
    "确定恢复": "Confirm Restore",
    "端点地址 (URL)": "Endpoint URL",
    "密码 / 授权码": "Password / Auth Code",
    "远程保存目录": "Remote Directory",
    "保留份数 (0=不限)": "Backups (0=unlimited)",
    "访问密钥 ID (Access Key ID)": "Access Key ID",
    "秘密访问密钥 (Secret Access Key)": "Secret Access Key",
    "存储桶 (Bucket)": "Bucket",
    "端点地址 (Endpoint)": "Endpoint",
    "区域 (Region)": "Region",
    "前缀 (Prefix)": "Prefix",
    "FTP 配置": "FTP Config",
    "配置 FTP 服务器用于加密同步服务器列表": "Configure FTP server for encrypted server list sync",
    "已成功绑定 FTP 服务器": "Successfully bound to FTP server",
    "SFTP (SSH) 配置": "SFTP (SSH) Config",
    "配置 SFTP 服务器用于加密同步服务器列表": "Configure SFTP server for encrypted server list sync",
    "已成功绑定 SFTP 服务器": "Successfully bound to SFTP server",
    "R2 (S3 兼容) 配置": "R2 (S3 Compatible) Config",
    "配置 Cloudflare R2 或任意 S3 兼容对象存储用于加密同步": "Configure Cloudflare R2 or any S3-compatible storage for encrypted sync",
    "已成功绑定 R2 对象存储": "Successfully bound to R2 storage",
    "前缀目录": "Prefix Dir",
    "远程目录": "Remote Dir",
    "主机地址": "Host",
    "端口": "Port",
    "密钥认证": "Private Key Auth",
    "语言已切换至 简体中文": "Language switched to Simplified Chinese",
    "已启用自定义强调色": "Custom accent color enabled",
    "已恢复默认强调色": "Default accent color restored",
    "请按下快捷键...": "Press shortcut keys...",
    "系统默认": "System Default",
    "选择要恢复的云端备份": "Select a cloud backup to restore",
    "此操作将覆盖当前所有的本地服务器配置，且无法撤销。请选择要恢复的备份时间：": "This will overwrite all local server configurations and cannot be undone. Please select a backup time to restore:",
    "读取私钥文件失败": "Failed to read private key file",
    "从文件加载私钥": "Load private key from file",
    "云端未找到任何备份文件": "No backup files found on cloud",
    "获取备份列表失败": "Failed to get backup list",
    "选择恢复来源": "Select restore source",
    "请重新选择": "please choose again",
    "没有可用的云端来源": "No available cloud source",
    "同步失败": "Sync failed",
    "合并同步失败": "Merge sync failed",
    "合并同步成功！本地": "Merge sync successful! Local",
    "重新连接": "Reconnect",
    "输入命令": "Enter command",
    "历史": "History",
    "快捷命令": "Quick Commands",
    "命令": "Command",
    "全选": "Select All",
    "清空屏幕": "Clear Screen",
    "历史命令": "Command History",
    "快速命令": "Quick Commands",
    "暂无历史记录": "No history yet",
    "无匹配结果": "No matches",
    "重试": "Retry",
    "基本信息": "Basic Info",
    "高级选项": "Advanced",
    "终端默认 cd 目录": "Terminal Default cd Directory",
    "文件管理器初始目录": "File Manager Initial Directory",
    "代理服务器": "Proxy Server",
    "代理模式": "Proxy Mode",
    "直连": "Direct",
    "选择代理节点": "Select Proxy Node",
    "自定义代理": "Custom Proxy",
    "代理节点": "Proxy Node",
    "请选择代理节点": "Please select a proxy node",
    "代理主机": "Proxy Host",
    "代理端口": "Proxy Port",
    "代理用户名": "Proxy Username",
    "代理密码": "Proxy Password",
    "暂无代理节点，请先到设置中创建": "No proxy nodes yet. Please create one in Settings first.",
    "错误": "Error",
    "别名": "Alias",
    "状态": "Status",
    "操作": "Actions",
    "剪切": "Cut",
    "192.168.1.1 或 example.com": "192.168.1.1 or example.com",
    "新密码（留空则不修改）": "New password (leave blank to keep)",
    "关闭": "Close",
    "新建终端": "New Terminal",
    "文件管理器布局": "File Manager Layout",
    "文件管理器分栏位置": "File Manager Split Position",
    "分栏布局": "Split Layout",
    "发现新版本": "New Version Available",
    "为了给您提供更极致的体验，建议您立即升级。": "A new version is available. Upgrade now for the best experience.",
    "稍等": "Later",
    "最大化": "Maximize",
    "系统托盘": "System Tray",
    "关闭窗口": "Close Window",
    "退出": "Quit",
    "用户取消连接": "Connection cancelled by user",
    "连接成功": "Connection successful",
    "密码已保存，连接成功": "Password saved, connection successful",
    "新建终端失败": "New terminal failed",
    "只接受本次": "Accept Once",
    "接受并保存": "Accept and Save",
    "卡片视图": "Grid View",
    "列表视图": "Table View",
    "调整监控边栏宽度": "Adjust monitor panel width",
    "关闭当前文件": "Close Current File",
    "服务器离线或不可达": "Server offline or unreachable",
    "编辑服务器": "Edit Server",
    "行": " lines",
    "字节": " bytes",

    // App.jsx
    "自动更新失败": "Auto-update failed",
    "加载服务器配置失败": "Failed to load server config",
    "重新连接成功": "Reconnection successful",
    "重新连接失败": "Reconnection failed",
    "SSH 连接已意外断开": "SSH connection disconnected unexpectedly",
    "首次连接到此主机，请确认密钥指纹：": "First time connecting to this host, please verify the key fingerprint:",
    "主机:": "Host:",
    "密钥指纹:": "Key fingerprint:",
    "如果指纹与服务器管理员提供的匹配，点击\"接受并保存\"。": "If the fingerprint matches the one provided by the server admin, click \"Accept and Save\".",
    "远程主机密钥已变更，可能存在中间人攻击！": "Remote host key has changed, possible man-in-the-middle attack!",
    "新密钥指纹:": "New key fingerprint:",
    "旧密钥指纹:": "Old key fingerprint:",
    "如果确认这是预期的变更（如服务器重装），点击\"接受并保存\"。": "If you confirm this is an expected change (e.g., server reinstalled), click \"Accept and Save\".",
    "主机密钥确认": "Host Key Verification",
    "主机密钥已变更": "Host Key Changed",
    "主机密钥已保存，连接成功": "Host key saved, connection successful",
    "本次已接受，连接成功": "Accepted, connection successful",
    "认证失败，请输入正确的密码重试：": "Authentication failed, please enter the correct password and retry:",
    "认证失败": "Authentication Failed",
    "记住密码": "Remember password",
    "更新凭据密码": "Update credential password",
    "服务器配置已更新": "Server config updated",
    "服务器添加成功": "Server added successfully",
    "标签页": "Tabs",
    "左侧分屏": "Left Split",
    "底部分屏": "Bottom Split",
    "监控面板位置": "Probe Panel Position",
    "展开监控面板": "Expand Probe Panel",
    "收起监控面板": "Collapse Probe Panel",
    "右侧": "Right",
    "左侧": "Left",
    "底部": "Bottom",
    "调整监控边栏宽度": "Adjust probe panel width",
    "主机密钥已变更": "Host key changed",
    "正在建立 SSH 连接，请稍候...": "Establishing SSH connection, please wait...",

    // FileManager.jsx
    "文件过大": "File too large",
    "最大支持": "max supported",
    "最大支持 5MB 编辑": "Max 5MB for editing",
    "读取目录失败": "Failed to read directory",
    "正在选择文件...": "Selecting files...",
    "确定删除": "Are you sure to delete",
    "此操作不可撤销": "This cannot be undone",
    "已删除": "Deleted",
    "新文件夹名称:": "New folder name:",
    "新文件名称:": "New file name:",
    "正在压缩": "Compressing",
    "压缩成功": "Compression successful",
    "正在解压": "Extracting",
    "权限修改成功": "Permissions updated",
    "正在上传...": "Uploading...",
    "上传完成": "Upload complete",
    "项成功": " succeeded",
    "项失败": " failed",
    "下载失败": "Download failed",
    "删除失败": "Delete failed",
    "压缩失败": "Compression failed",
    "解压失败": "Extraction failed",
    "权限修改失败": "Permission update failed",
    "项": "",

    // FileEditor.jsx
    "全屏弹窗": "Fullscreen Popup",
    "浮动面板": "Floating Panel",
    "分栏编辑": "Split Editor",
    "左侧分栏": "Left Split",
    "右侧分栏": "Right Split",
    "底部分栏": "Bottom Split",
    "有文件未保存，确定全部关闭？": "Unsaved files exist. Close all?",
    "编辑器": "Editor",
    "未保存": "Unsaved",
    "保存": "Save",

    // GlobalDialog.jsx
    "提示": "Prompt",
    "操作确认": "Confirm",
    "输入信息": "Input",
    "不再询问": "Don't ask again",
    "记住选择": "Remember choice",
    "关闭连接时确认": "Confirm on close connection",
    "关闭单个 SSH 连接前弹出确认弹窗": "Show confirmation dialog before closing a single SSH connection",
    "关闭全部时确认": "Confirm on close all",
    "批量关闭所有连接前弹出确认弹窗": "Show confirmation dialog before closing all connections",
    "文件管理器删除时确认": "Confirm before deleting in file manager",
    "删除文件或文件夹前弹出确认弹窗": "Show a confirmation dialog before deleting files or folders",
    "关闭窗口时选择": "Choose on close window",
    "关闭窗口前弹出退出或最小化选择": "Show exit or minimize choice before closing window",
    "关闭窗口时": "On close window",
    "选择关闭窗口时的默认行为": "Choose default behavior when closing window",
    "每次询问": "Ask every time",
    "直接退出": "Quit directly",
    "最小化到托盘": "Minimize to tray",
    "工作区": "Workspace",
    "记忆工作区": "Remember Workspace",
    "重新启动后自动恢复上次的连接、终端标签和分屏布局": "Automatically restore last connections, terminal tabs and split layout after restart",

    // main.jsx
    "界面渲染出错": "Rendering Error",
    "重新加载": "Reload",

    // QuickCommands.jsx
    "参数": "Parameter",
    "参数 ": "Parameter ",
    "搜索历史...": "Search history...",
    "上移": "Move Up",
    "下移": "Move Down",
    "(空分组，右键添加命令)": "(Empty group, right-click to add)",
    "已发送到 ": "Sent to ",
    " 个会话": " sessions",
    "已发送": "Sent",
    "＋ 添加命令": "＋ Add Command",
    "添加分组": "Add Group",
    "Ctrl+S 保存": "Ctrl+S Save",
    "点击上方按钮添加命令": "Click button above to add command",
    "分组名称": "Group name",
    "保存名称": "Save Name",
    "个命令/子分组": " commands/subgroups",
    "末尾添加回车符CR": "Append CR at end",
    "如：系统监控": "e.g. System Monitor",
    "如：查看内存": "e.g. Check Memory",
    "如：free -m": "e.g. free -m",
    "添加分组": "Add Group",
    "重命名分组": "Rename Group",
    "添加命令": "Add Command",
    "编辑命令": "Edit Command",
    "保存": "Save",
    "已保存": "Saved",
    "不保存": "Don't Save",
    "未保存的修改": "Unsaved Changes",
    "当前命令有未保存的修改，是否保存？": "Current command has unsaved changes. Save?",
    "根目录": "Root",
    "输入临时命令直接发送（不保存）...": "Enter temp command to send (not saved)...",
    "添加到:": "Add to:",
    "插入参数 p#": "Insert param p#",
    "含": "Contains",
    "个动态参数：": " dynamic params:",
    "暂无历史": "No history",
    "发送到": "Send to",
    "当前会话": "Current session",
    "全部会话": "All sessions",
    "发送": "Send",
    "选择左侧命令或添加新命令": "Select a command or add new",
    "回车": "CR",
    "当前": "Current",
    "全部": "All",
    "添加子分组": "Add Subgroup",
    "删除分组": "Delete Group",
    "暂无分组": "No groups",

    // Missing keys
    "服务器已删除": "Server deleted",
    "已存在相同主机、端口和用户名的服务器": "Duplicate server with same host, port and username",
    "请选择操作": "Choose Action",
    "设置": "Settings",
    "最小化": "Minimize",
    "显示敏感信息": "Show sensitive info",
    "隐藏敏感信息": "Hide sensitive info",
    "文件有未保存的修改，确定关闭？": "File has unsaved changes. Close?",
    "调整大小": "Resize",

    // SettingsModal tabs & about
    "外观": "Appearance",
    "基本": "Basic",
    "AI 集成": "AI Integration",
    "快捷键": "Shortcuts",
    "凭据": "Credentials",
    "凭据管理": "Credential Manager",
    "管理可复用的认证配置，修改后自动生效于所有引用的服务器": "Manage reusable auth profiles. Changes propagate to all servers using them.",
    "凭据名称": "Credential Name",
    "新增凭据": "Add Credential",
    "编辑凭据": "Edit Credential",
    "删除凭据": "Delete Credential",
    "确定删除此凭据？": "Delete this credential?",
    "凭据已保存": "Credential saved",
    "凭据已删除": "Credential deleted",
    "暂无凭据": "No Credentials",
    "暂无凭据，请先创建": "No credentials yet. Please create one first.",
    "使用凭据": "Use Credential",
    "选择凭据": "Select Credential",
    "请选择凭据": "Please select a credential",
    "自定义": "Custom",
    "同步与云": "Sync & Cloud",
    "关于": "About",
    "版本": "Version",
    "反馈问题": "Report an Issue",
    "生成预填的 GitHub issue": "Generate a pre-filled GitHub issue",
    "社区": "Community",
    "参与 GitHub Discussions 讨论": "Join GitHub Discussions",
    "源代码": "Source code",
    "更新内容": "Changelog",
    "查看发布说明": "View release notes",
    "GitHub": "GitHub",
    "刚刚": "Just now",
    "读取文件": "Read File",
    "写入文件": "Write File",
    "应用差异": "Apply Diff",
    "列出文件": "List Files",
    "列出已连接会话": "List Connected Sessions",
    "联网搜索": "Live Search",
    "执行命令": "Run Command",
    "待批准": "Pending Approval",
    "待审阅": "Pending Review",
    "等待处理": "Awaiting Action",
    "后台继续": "Continue in Background",
    "已终止": "Terminated",
    "排队中, 等待终端空闲": "Queued, waiting for terminal to become idle",
    "推荐终端": "Recommended Terminal",
    "其他终端": "Other Terminals",
    "指派终端": "Assign Terminal",
    "正在加载终端...": "Loading terminals...",
    "没有可指派的终端": "No terminal available for assignment",
    "正在切换终端...": "Switching terminal...",
    "终端指派失败": "Terminal assignment failed",
    "终端候选能力未就绪": "Terminal candidate capability unavailable",
    "终端指派能力未就绪": "Terminal assignment capability unavailable",
    "没有可指派的命令实例": "No assignable command instance",
    "当前工具不支持指派终端": "The current tool does not support terminal assignment",
    "当前工具缺少目标终端": "The current tool is missing a target terminal",
    "目标终端不能为空": "The target terminal cannot be empty",
    "当前工具未处于可指派状态": "The current tool is not in an assignable state",
    "目标终端不可用": "The target terminal is unavailable",
    "当前工具无法切换目标终端": "The current tool cannot switch the target terminal",
    "ssh manager unavailable": "SSH manager unavailable",
    "session not found": "Terminal session not found",
    "空闲": "Idle",
    "忙碌": "Busy",
    "运行中": "Running",
    "执行中": "Executing",
    "已执行": "Executed",
    "已解析": "Parsed",
    "已拒绝": "Rejected",
    "解析工具": "Parse Tool",
    "等待流式完成后解析出的目标工具": "Tool parsed after streaming completes",
    "审批工具": "Approve Tool",
    "已识别出工具调用,请批准继续执行该工具.": "A tool call has been identified. Approve it to continue execution.",
    "执行工具": "Execute Tool",
    "我会先流式输出分析结论,待流式完成后再解析成工具调用,然后进入审批,再开始执行工具.": "I will first stream the analysis, then parse it into a tool call after streaming completes, move into approval, and start executing the tool.",
    "正在执行...\n已读取目标文件内容.\n下一步可进入结构化编辑.": "Executing...\nTarget file contents have been read.\nNext step can move into structured editing.",
    "预计剩余 {count} 个编辑文件": "Estimated {count} files remaining",
    // SettingsModal network
    "延迟检测协议": "Ping Protocol",
    "选择如何测量服务器网络延迟，不同协议适用于不同的网络环境。": "Choose how to measure server latency. Different protocols suit different networks.",
    "SSH Banner RTT": "SSH Banner RTT",
    "通过读取 SSH 握手包测速，穿透 TUN 代理测出真实网络延迟，推荐": "Test via SSH handshake. Can penetrate TUN proxies to show real latency. Recommended.",
    "推荐": "Recommended",
    "TCP Dial": "TCP Dial",
    "通过 TCP 连接建立测速，适用于局域网/私有网络或未开代理的环境": "Test via TCP connection. Best for LAN or non-proxied environments.",
    "如果您使用 TUN 模式代理（Clash/V2Ray），推荐使用 SSH Banner RTT 模式，可以穿透代理测出真实延迟。": "If using a TUN proxy (Clash/V2Ray), SSH Banner RTT is recommended to bypass the proxy and measure true latency.",
    "监控刷新频率": "Refresh Frequency",
    "设置探针数据和延迟测试的自动刷新间隔。越高的频率越实时，但资源占用越大。": "Set auto-refresh intervals for probe data and latency testing. Higher means more real-time, but uses more resources.",
    "探针刷新间隔": "Probe Refresh Interval",
    "延迟检测间隔": "Ping Interval",
    "代理节点管理": "Proxy Nodes",
    "添加并管理本地代理节点，当前仅用于保存，不接入 SSH/SFTP 连接。": "Add and manage local proxy nodes. They are stored locally only and are not used for SSH/SFTP connections yet.",
    "添加并管理本地代理节点，可供 AI 请求与服务器 SSH/SFTP 连接复用。": "Add and manage local proxy nodes for reuse by AI requests and server SSH/SFTP connections.",
    "暂无代理节点": "No proxy nodes",
    "创建第一个代理节点后会显示在这里。": "Create your first proxy node and it will appear here.",
    "代理名称（备注）": "Proxy Name (Note)",
    "仅用于区分代理节点，不参与连接逻辑": "Used only to distinguish proxy nodes. It does not affect connection behavior.",
    "协议类型": "Protocol Type",
    "SOCKS5 代理": "SOCKS5 Proxy",
    "HTTP 代理": "HTTP Proxy",
    "请输入代理主机地址": "Please enter a proxy host",
    "请输入有效端口": "Please enter a valid port",
    "未命名节点": "Unnamed Node",
    "取消编辑": "Cancel Editing",
    "AI 请求代理": "AI Request Proxy",
    "选择 AI 请求使用的代理节点，首项为不使用。": "Choose the proxy node used for AI requests. The first option means no proxy.",
    "不使用": "Do Not Use",
    "专属代理服务器": "Dedicated Proxy Server",
    "开启后为当前供应商单独指定代理；关闭后跟随全局 AI 请求代理。": "When enabled, this provider uses its own proxy setting. When disabled, it follows the global AI request proxy.",
    // SettingsModal appearance
    "语言": "Language",
    "选择界面语言": "Choose interface language",
    "界面语言": "Interface language",
    "选择界面显示语言": "Choose interface display language",
    "终端显示": "Terminal Display",
    "终端字体大小": "Terminal Font Size",
    "调节终端的字符显示大小": "Adjust terminal font size",
    "终端输入回显": "Terminal Input Echo",
    "关闭后输入密码等敏感内容时不会显示字符": "When disabled, sensitive input like passwords will not be displayed",
    "界面主题": "Interface Theme",
    "主题": "Theme",
    "选择浅色、深色或跟随系统设置": "Choose Light, Dark or System",
    "浅色": "Light",
    "深色": "Dark",
    "强调色": "Accent Color",
    "使用自定义强调色": "Use Custom Accent",
    "覆盖主题自带的强调色": "Override default accent color",
    "终端背景": "Terminal Background",
    "自定义终端壁纸": "Custom Wallpaper",
    "设置终端底部的自定义背景图片": "Set custom background image for terminals",
    "壁纸可见度": "Wallpaper Visibility",
    "上传图片": "Upload Image",
    "恢复默认": "Reset Default",
    "窗口大小": "Window Size",
    "记住窗口大小": "Remember Window Size",
    "下次启动时恢复上次调整的窗口尺寸": "Restore last window size on startup",
    "恢复默认大小": "Reset to Default",
    "AI 代理面板": "AI Agent Panel",
    "显示 AI 代理面板": "Show AI Agent Panel",
    "控制会话页是否显示 AI 代理面板": "Control whether the AI agent panel is shown in session view",
    "终端隔离": "Terminal Isolation",
    "为每个终端创建独立的 AI 面板与运行期会话。修改后将在下次启动应用时生效。": "Create an independent AI panel and runtime session for each terminal. Changes take effect the next time the app starts.",
    "删除前需要二次确认": "Require Confirmation Before Delete",
    "删除 AI 对话或消息前先弹出确认提示": "Show a confirmation dialog before deleting AI conversations or messages",
    "确定删除供应商": "Delete provider",
    "终端输出行数上限": "Terminal Output Line Limit",
    "控制 MCP 终端输出保留的最大行数": "Control the maximum number of MCP terminal output lines to keep",
    "终端输出字符上限": "Terminal Output Character Limit",
    "控制 MCP 终端输出保留的最大字符数": "Control the maximum number of MCP terminal output characters to keep",
    "AI 面板接入方式": "AI Panel Integration",
    "MCP集成": "MCP Integration",
    "接入方式": "Integration Method",
    "启用 MCP 服务": "Enable MCP Service",
    "控制本地 MCP 服务是否监听本机回环地址并提供工具能力": "Control whether the local MCP service listens on the loopback address and provides tool capabilities",
    "允许浏览器调用": "Allow Browser Calls",
    "允许带 Origin 的浏览器请求访问本地 MCP 服务。关闭后仅允许无 Origin 的本机客户端调用": "Allow browser requests with an Origin header to access the local MCP service. When disabled, only local clients without an Origin header are allowed.",
    "自动备份": "Automatic Backups",
    "自动备份对话": "Automatic Conversation Backup",
    "每次在发起新的 AI 请求前，都会自动备份当前对话。": "A backup is created automatically before each new AI request starts.",
    "关闭后不再创建新备份，已有备份仍可查看和恢复。": "When disabled, no new backups are created, but existing backups remain available to view and restore.",
    "查看和恢复当前对话的自动备份记录。": "View and restore automatic backups for the current conversation.",
    "暂无自动备份": "No automatic backups yet",
    "对话历史": "Conversation History",
    "暂无消息": "No messages",
    "新对话": "New Conversation",
    "首字": "First token",
    "当前还没有对话.点击下方发送消息后,将自动创建一条新对话.": "No conversations yet. Send a message below to create one automatically.",
    "消息": "messages",
    "编辑消息后将从该消息起重建后续对话": "Editing this message will rebuild the conversation from this point.",
    "确定删除这条对话吗？此操作不可撤销。": "Delete this conversation? This action cannot be undone.",
    "确定删除这条消息及其后续对话吗？此操作不可撤销。": "Delete this message and all following conversation content? This action cannot be undone.",
    "请求失败": "Request failed",
    "已拒绝执行工具调用": "Tool execution was rejected",
    "文件": "File",
    "文件夹": "Folder",
    "插入当前会话终端输出": "Insert current session terminal output",
    "搜索 {path} 下的远端文件": "Search remote files under {path}",
    "搜索 {path} 下的远端文件夹": "Search remote folders under {path}",
    "未找到文件": "No files found",
    "未找到文件夹": "No folders found",
    "未找到结果": "No results found",
    "尝试其他关键词或输入绝对路径": "Try another keyword or enter an absolute path",
    "尝试其他关键词": "Try another keyword",
    "批准": "Approve",
    "拒绝": "Reject",
    "强制继续": "Force Continue",
    "终止工具": "Terminate Tool",
    "已排队编辑": "Edit queued",
    "已排队重试": "Retry queued",
    "已排队发送": "Send queued",
    "再次点击取消": "Click again to cancel",
    "取消跳过下一次自动请求": "Cancel skip next automatic request",
    "跳过下一次自动请求": "Skip next automatic request",
    "未找到斜杠命令": "No slash commands found",
    "前往设置中心新增命令": "Add a command in Settings",
    "斜杠命令": "Slash Commands",
    "上下文": "Context",
    "正在搜索...": "Searching...",
    "返回": "Back",
    "正在搜索远端路径...": "Searching remote paths...",
    "正在刷新结果...": "Refreshing results...",
    "在此处输入您的消息...": "Type your message here...",
    "支持远端文件,远端文件夹,当前终端输出;右键图片按钮粘贴远端绝对路径;支持粘贴/拖拽本地图片": "Supports remote files, remote folders, and current terminal output; right-click the image button to paste an absolute remote path; supports pasting or dragging local images.",
    "添加图片": "Add Image",
    "停止生成": "Stop Generating",
    "自动批准": "Auto Approve",
    "当前阶段仅展示并生效读取,写入,执行.": "At this stage, only read, write, and execute are shown and applied.",
    "命令白名单": "Command Allowlist",
    "当前启用时可以自动执行的命令前缀,添加 * 以允许所有命令.": "Command prefixes that can run automatically when enabled. Add * to allow all commands.",
    "输入命令前缀(例如 'git')": "Enter a command prefix (for example 'git')",
    "拒绝的命令": "Denied Commands",
    "将自动拒绝的命令前缀,无需用户批准;与许可命令冲突时,最长前缀匹配优先.": "Command prefixes that will be rejected automatically without user approval; when they conflict with allowed commands, the longest prefix match wins.",
    "输入要拒绝的命令前缀(例如 'rm -rf')": "Enter a denied command prefix (for example 'rm -rf')",
    "变更块": "Change Block",
    "队列": "Queue",
    "ai.files.count": "{count} files",
    "ai.file.index": "File #{count}",
    "ai.assistant.title": "AI Assistant",
    "ai.change_review.title": "Change Review Workbench",
    "ai.conversation_diff.title": "Current Conversation File Changes",
    "ai.restore.unsupported": "The current state does not support revert",
    "ai.reapply.unsupported": "The current state does not support reapply",
    "ai.reapply.unavailable": "Reapply capability is unavailable",
    "ai.reapply.success": "Reapply successful",
    "ai.preview.unsupported": "The current state does not support preview",
    "ai.conversation.missing_conversation_id": "The current conversation is missing conversation_id",
    "ai.tool.apply_diff.missing_session_id": "apply_diff is missing session_id",
    "ai.tool.apply_diff.missing_path": "apply_diff is missing path",
    "ai.tool.apply_diff.missing_diff": "apply_diff is missing diff",
    "ai.tool.write_to_file.missing_session_id": "write_to_file is missing session_id",
    "ai.tool.write_to_file.missing_path": "write_to_file is missing path",
    "ai.tool.search_replace.missing_session_id": "search_replace is missing session_id",
    "ai.tool.search_replace.missing_path": "search_replace is missing path",
    "ai.tool.search_replace.missing_operations": "search_replace is missing operations",
    "ai.tool.search_replace.invalid_operations_json": "search_replace operations is not valid JSON",
    "ai.tool.search_replace.empty_operations": "search_replace operations cannot be empty",
    "ai.tool.edit_file.missing_session_id": "edit_file is missing session_id",
    "ai.tool.edit_file.missing_path": "edit_file is missing path",
    "ai.tool.edit_file.invalid_expected_replacements": "edit_file expected_replacements is invalid",
    "ai.tool.apply_patch.missing_session_id": "apply_patch is missing session_id",
    "ai.tool.apply_patch.missing_patch": "apply_patch is missing patch",
    "ai.status.pending_approval": "Pending Approval",
    "ai.status.pending_review": "Pending Review",
    "ai.status.running": "Running",
    "ai.status.executed": "Executed",
    "ai.status.completed": "Completed",
    "ai.status.terminated": "Terminated",
    "ai.status.error": "Error",
    "ai.status.rejected": "Rejected",
    "ai.status.awaiting_action": "Awaiting Action",
    "ai.status.background": "Continue in Background",
    "ai.status.queued_waiting_terminal": "Queued, waiting for terminal to become idle",
    "ai.conversation.new": "New Conversation",
    "ai.request.failed": "Request failed",
    "ai.command.execution_rejected": "Tool execution was rejected",
    "ai.change_review.preview_unavailable": "Unable to generate change review preview",
    "ai.change_review.waiting_for_write_approval": "Waiting for approval in the change review workbench before writing",
    "ai.preview.full_file_search_replace": "Whole-file preview ({count} SEARCH/REPLACE blocks)",
    "ai.preview.full_file_overwrite": "Overwrite whole file",
    "ai.preview.create_file": "Create file",
    "ai.preview.full_file_search_replace_ops": "Whole-file preview ({count} Search/Replace operations)",
    "ai.preview.full_file_replacements": "Whole-file preview ({count} replacements)",
    "ai.change_review.unsupported_tool": "This tool does not currently support the change review workbench",
    "ai.followup.empty": "follow_up cannot be empty",
    "ai.followup.invalid_xml": "follow_up XML is invalid",
    "ai.followup.invalid_suggestion_count": "follow_up must contain 2 to 4 suggestions",
    "ai.followup.missing_question": "ask_followup_question is missing question",
    "ai.followup.awaiting_reply": "Awaiting reply",
    "ai.command_assignment.no_assignable_instance": "No assignable command instance",
    "ai.command_assignment.unsupported_tool": "The current tool does not support terminal assignment",
    "ai.command_assignment.missing_target_terminal": "The current tool is missing a target terminal",
    "ai.command_assignment.empty_target_terminal": "The target terminal cannot be empty",
    "ai.command_assignment.not_assignable": "The current tool is not in an assignable state",
    "ai.command_assignment.target_unavailable": "The target terminal is unavailable",
    "ai.command_assignment.cannot_switch_target": "The current tool cannot switch the target terminal",
    "ai.command.waiting_for_approval": "Waiting for approval before execution",
    "ai.completion.pending": "Pending completion",
    "ai.command.auto_denied_by_rule": "Command matched a deny rule and the tool call was automatically rejected",
    "ai.completion.done": "Task completed",
    "ai.tool.terminated": "Tool terminated",
    "ai.live_search.missing_query": "Missing live search query",
    "ai.live_search.terminated": "Live search terminated",
    "ai.tool.no_content": "No content returned",
    "ai.command.continues_in_background": "Command continues to run in the background",
    "ai.command.aborted": "Command aborted",
    "ai.command.finished_without_output": "Command finished without output",
    "ai.followup.no_pending_reply": "No follow-up is waiting for a reply",
    "ai.followup.invalid_batch_state": "Invalid follow-up batch state",
    "ai.followup.unexpected_pending_tool": "The current pending tool is not ask_followup_question",
    "ai.tool_continue.no_instance": "No tool instance can be continued",
    "ai.tool_continue.unsupported": "The current tool does not support force continue",
    "ai.tool_continue.not_waiting": "The current tool is not waiting to continue",
    "ai.tool_terminate.no_instance": "No tool instance can be terminated",
    "ai.tool_terminate.unsupported": "The current tool does not support termination",
    "AI 对话能力未就绪": "AI chat is unavailable",
    "工具批准能力未就绪": "Tool approval is unavailable",
    "工具拒绝能力未就绪": "Tool rejection is unavailable",
    "队列打断工具能力未就绪": "Queued submission interruption is unavailable",
    "追问回复能力未就绪": "Follow-up reply is unavailable",
    "跳过下一次自动请求能力未就绪": "Skip-next-automatic-request is unavailable",
    "工具继续能力未就绪": "Tool continue is unavailable",
    "工具终止能力未就绪": "Tool termination is unavailable",
    "传输方式": "Transport",
    "MCP 地址": "MCP URL",
    "打开 AI 助手面板": "Open AI Assistant Panel",
    "收起 AI 助手面板": "Collapse AI Assistant Panel",
    "推荐接入步骤": "Recommended Steps",
    "服务说明": "Service Instructions",
    "MCP 配置片段": "MCP Config Snippet",
    "该面板可在设置中关闭, 仅影响前端展示层, 不影响 MCP 服务的启动, 监听绑定或生命周期管理.": "This panel can be disabled in Settings, and the visibility toggle only affects the frontend presentation layer. It does not affect MCP service startup, listener binding, or lifecycle management.",
    "所有工具和用途": "All Tools and Purposes",
    "暂无工具信息": "No tool information available",
    "可直接粘贴到支持 streamable-http 的 MCP 客户端配置中": "Paste directly into an MCP client configuration that supports streamable-http",
    "使用 MCP 客户端连接该地址": "Connect to this URL with your MCP client",
    "先调用 list_connected_sessions": "Call list_connected_sessions first",
    "再使用返回的 session_id 调用其他工具": "Then use the returned session_id for subsequent tools",
    "AI 助手": "AI Assistant",
    "正在智能压缩上下文": "Compressing context...",
    "当前对话上下文 Token,点击智能压缩": "Current conversation context tokens. Click to smart-compress.",
    "当前对话文件变更": "Current Conversation File Changes",
    "会话 · {label}": "Session · {label}",
    "左键应用/右键还原": "Left Click: Apply / Right Click: Revert",
    "应用": "Apply",
    "暂无可预览差异": "No previewable diff available",
    "起始行: {count}": "Start line: {count}",
    "匹配次数: {count}": "Match count: {count}",
    "相似度: {similarity}% / 需要 {required}%": "Similarity: {similarity}% / Required: {required}%",
    "最佳匹配片段:": "Best matching snippet:",
    "当前状态不支持预览": "The current state does not support preview",
    "变更审阅台": "Change Review Workbench",
    "文件 #{count}": "File #{count}",
    "{count} 个文件": "{count} files",
    "工具已终止": "Tool terminated",
    "差异预览能力未就绪": "Diff preview capability is unavailable",
    "当前状态不支持还原": "The current state does not support revert",
    "还原成功": "Revert successful",
    "差异预览失败": "Diff preview failed",
    "{path} 等 {count} 个文件": "{path} and {count} files total",
    "等待批准后执行": "Waiting for approval before execution",
    "待完成": "Pending completion",
    "无法生成变更审阅预览": "Unable to generate change review preview",
    "等待在变更审阅台中批准后写入": "Waiting for approval in the change review workbench before writing",
    "整文件预览（共 {count} 个 SEARCH/REPLACE）": "Whole-file preview ({count} SEARCH/REPLACE blocks)",
    "整文件覆盖": "Overwrite whole file",
    "创建文件": "Create file",
    "整文件预览（共 {count} 个 Search/Replace）": "Whole-file preview ({count} Search/Replace operations)",
    "整文件预览（共 {count} 处替换）": "Whole-file preview ({count} replacements)",
    "该工具当前不支持变更审阅台": "This tool does not currently support the change review workbench",
    "命令匹配拒绝规则，已自动拒绝执行工具调用": "Command matched a deny rule and the tool call was automatically rejected",
    "缺少联网搜索 query": "Missing live search query",
    "联网搜索已终止": "Live search terminated",
    "未返回内容": "No content returned",
    "没有待回复的追问": "No follow-up is waiting for a reply",
    "追问批次状态无效": "Invalid follow-up batch state",
    "当前待处理工具不是 ask_followup_question": "The current pending tool is not ask_followup_question",
    "没有可继续的工具实例": "No tool instance can be continued",
    "当前工具不支持强制继续": "The current tool does not support force continue",
    "当前工具未处于等待继续状态": "The current tool is not waiting to continue",
    "没有可终止的工具实例": "No tool instance can be terminated",
    "当前工具不支持终止": "The current tool does not support termination",
    "交换位置": "Swap Positions",
    "控制底部审批与命令处理按钮的左右位置。": "Control the left-right order of the approval and command action buttons at the bottom.",
    "工具审批按钮位置": "Tool Approval Button Position",
    "左侧为预览区,右侧点击交换\"拒绝 / 批准\"的左右顺序.": "Preview on the left. Click the button on the right to swap the order of Reject / Approve.",
    "命令处理按钮位置": "Command Action Button Position",
    "左侧为预览区,右侧点击交换\"强制继续 / 终止工具\"的左右顺序.": "Preview on the left. Click the button on the right to swap the order of Force Continue / Terminate Tool.",
    "消息操作条置底": "Bottom Message Action Bar",
    "启用后,用户消息与Ai消息的操作条显示在每轮消息主体底部;关闭后显示在顶部.": "When enabled, the action bar for user and AI messages is shown at the bottom of each message turn; when disabled, it remains at the top.",
    "未命名供应商": "Unnamed Provider",
    "未选择模型": "No Model Selected",
    "创建对话能力未就绪": "Conversation creation is unavailable",
    "读取对话能力未就绪": "Conversation loading is unavailable",
    "图片加载失败": "Failed to load image",
    "无法获取 Canvas 上下文": "Unable to get canvas context",
    "远端文件": "Remote File",
    "远端文件夹": "Remote Folder",
    "未填写提示词内容": "Prompt content is empty",
    "取消置顶": "Unpin",
    "置顶": "Pin",
    "编辑供应商": "Edit Provider",
    "基于模型能力": "Based on Model Capability",
    "强制关闭": "Force Off",
    "5分钟": "5 Minutes",
    "1小时": "1 Hour",
    "无": "None",
    "最少": "Minimal",
    "低": "Low",
    "中": "Medium",
    "高": "High",
    "超高": "Very High",
    "新增供应商": "Add Provider",
    "创建供应商配置...": "Create provider configuration...",
    "编辑...": "Editing...",
    "当前环境不支持刷新模型": "Model refresh is unavailable in the current environment",
    "未获取到任何模型": "No models were returned",
    "刷新模型失败": "Failed to refresh models",
    "请先填写基础 URL": "Please enter the base URL first",
    "请先填写 API 密钥": "Please enter the API key first",
    "当前环境不支持验证": "Validation is unavailable in the current environment",
    "验证通过": "Validation passed",
    "验证失败": "Validation failed",
    "支持": "Supported",
    "不支持": "Unsupported",
    "启用推理": "Enable Reasoning",
    "最大输出 Token": "Max Output Tokens",
    "思考 Token 预算": "Thinking Token Budget",
    "思考深度": "Reasoning Depth",
    "配置文件": "Profile Name",
    "API提供商": "API Provider",
    "供应商": "Provider",
    "缓存策略": "Cache Strategy",
    "API兼容方式": "API Compatibility",
    "密钥状态": "Key Status",
    "已配置": "Configured",
    "未配置": "Not Configured",
    "基础 URL": "Base URL",
    "API 密钥": "API Key",
    "联网搜索": "Web Search",
    "启用当前供应商的联网搜索能力": "Enable web search for the current provider",
    "验证中...": "Validating...",
    "验证": "Validate",
    "联网搜索专用供应商": "Dedicated Web Search Provider",
    "选择供应商": "Select Provider",
    "搜索全局配置": "Search global profiles",
    "没有匹配的供应商": "No matching providers",
    "输入配置名": "Enter profile name",
    "输入 API Key": "Enter API key",
    "模型": "Model",
    "刷新中...": "Refreshing...",
    "刷新模型": "Refresh Models",
    "筛选模型": "Filter models",
    "暂无可用模型": "No available models",
    "供应商列表": "Provider List",
    "添加供应商": "Add Provider",
    "搜索...": "Search...",
    "输入框与用户消息只显示": "The input box and user message only display",
    "真正发送给 AI 时,会在后台注入命令完整提示词内容.": "When sent to the AI, the full command prompt is injected in the background.",
    "新增命令": "Add Command",
    "当前还没有斜杠命令.新增后即可在输入框中通过": "There are no slash commands yet. After adding one, you can use",
    "进行选择.": "to choose it in the input box.",
    "未命名命令": "Unnamed Command",
    "命令名": "Command Name",
    "斜杠命令占位符": "/command-name",
    "例如 summarize": "For example summarize",
    "仅允许字母,数字,点,下划线和中横线.输入时显示为": "Only letters, numbers, dots, underscores and hyphens are allowed. It is shown as",
    "提示词内容": "Prompt Content",
    "填写实际注入给 AI 的提示词内容": "Enter the prompt content that will actually be injected into the AI",
    "保存时会忽略名称非法,名称重复或提示词为空的条目.": "Entries with invalid names, duplicate names, or empty prompts will be ignored when saving.",
    "保存修改": "Save Changes",
    "Ai助手": "AI Assistant",
    "选择供应商并发送消息后，Ai助手会在这里按真实流式顺序输出内容。": "Select a provider and send a message. The AI assistant will stream responses here in real time.",
    "上下文已智能压缩": "Context Smart-Compressed",
    "上下文智能压缩摘要": "Compressed {toolResults} tool call results, removed {emptyAssistantMessages} empty assistant messages, replaced {images} images, removed {environmentDetails} environment_details, compressed {fileContent} file_content blocks, compressed {terminalOutput} terminal_output blocks, compressed {systemNotices} system notice messages",
    "环境上下文": "Environment Context",
    "追问建议": "Follow-up Suggestions",
    "思考链": "Reasoning Chain",
    "warning": "warning",
    "danger": "danger",
    "只读": "Read Only",
    "修改": "Mutating",
    "还原": "Revert",
    "左键预览/右键还原": "Left Click: Preview / Right Click: Revert",
    "只读批准": "Read-only Approval",
    "arguments": "arguments",
    "response": "response",
    "result": "result",
    "completed": "completed",
    "任务完成": "Task Completed",
    "任务已完成": "Task Completed",
    // Sync failure dialog
    "云端同步失败": "Cloud Sync Failed",
    "数据未能上传到云端，本地数据不受影响。": "Data was not uploaded to cloud. Local data is not affected.",
    "忽略": "Dismiss",
    "同步成功": "Sync Successful",
    "连接与错误日志": "Connection and Error Logs",
    "mcp.tool.list_connected_sessions": "List currently connected SSH terminal sessions and return the session_id required by subsequent tools.",
    "mcp.tool.list_files": "List files and directories for the connected SSH session scoped by the provided session_id.",
    "mcp.tool.read_file": "Read one or more remote files, supporting task-scoped args XML, files arrays, and optional 1-based line ranges.",
    "mcp.tool.write_to_file": "Write complete file content to the target remote path.",
    "mcp.tool.execute_command": "Execute a command inside the real connected SSH terminal while keeping it visible and interactive, and capture output plus exit code.",
    "mcp.tool.search_replace": "Apply one or more exact search/replace operations in order; each operation must match exactly one location.",
    "mcp.tool.apply_diff": "Apply one or more exact SEARCH/REPLACE diff blocks to a remote file.",
    "mcp.tool.edit_file": "Edit a remote file using exact old_string/new_string replacement with optional expected_replacements validation.",
    "mcp.tool.apply_patch": "Apply a multi-file patch for the connected SSH session, supporting add, delete, and update operations.",
    "云端同步未完成，确定退出吗？": "Cloud sync incomplete. Are you sure you want to quit?",
    "同步未完成": "Sync Incomplete",
    "仍然退出": "Quit Anyway",
    "重试同步": "Retry Sync",
    "同步完成": "Sync Complete",
    "云端": "cloud",
    "合并": "merged",
    "已上传": "uploaded",
    "数据一致，无需变更": "Data is in sync, no changes needed",
    "本地数据已同步到云端": "Local data synced to cloud",
    "偏好设置": "Preferences",
    "文件管理器": "File Manager",
    "文件管理器跟随终端目录": "File Manager Follows Terminal Directory",
    "终端 cd 切换目录时自动同步文件管理器路径": "Automatically sync the file manager path when cd changes the terminal directory",
    "压缩传输": "Compressed Transfer",
    "多文件或文件夹上传时先在本机打包为 tar.gz，上传后远端自动解压": "Package multiple files or folders locally as tar.gz before upload, then auto-extract on the remote server",
    "下载保存": "Download Destination",
    "每次下载都询问": "Ask Before Every Download",
    "开启后，每次下载文件或文件夹前都先询问保存位置；关闭后直接保存到默认位置": "When enabled, ask for the save location before each file or folder download. When disabled, save directly to the default location.",
    "下载遇到同名时": "When Download Conflicts Occur",
    "差异覆盖": "Overwrite If Different",
    "目录下载时逐文件比较，大小或修改时间任一不同即覆盖，相同则跳过": "For folder downloads, compare file-by-file. Overwrite when size or modified time differs, otherwise skip.",
    "强制覆盖": "Force Overwrite",
    "文件直接覆盖；文件夹保留多余本地文件，仅覆盖远端存在的同名内容": "Overwrite files directly. For folders, keep extra local files and only overwrite names that also exist remotely.",
    "每次都询问我": "Ask Me Every Time",
    "首次遇到冲突时询问，并可应用到本次剩余冲突": "Ask on the first conflict and optionally apply the decision to the remaining conflicts in this download.",
    "自动重命名": "Auto Rename",
    "保留已有文件，下载结果自动追加后缀": "Keep existing files and append a suffix to the downloaded result automatically.",
    "比较文件大小": "Compare File Size",
    "大小不同即判定为差异": "Treat a size difference as a conflict difference.",
    "比较修改时间": "Compare Modified Time",
    "修改时间不同即判定为差异": "Treat a modified-time difference as a conflict difference.",
    "自动重命名后缀": "Auto Rename Suffix",
    "高精度时间戳": "High-Precision Timestamp",
    "格式：name_yyyymmdd_hhmmss_nnnnnnnnn.ext": "Format: name_yyyymmdd_hhmmss_nnnnnnnnn.ext",
    "随机数": "Random Value",
    "格式：name_ab12cd34.ext": "Format: name_ab12cd34.ext",
    "顺序号 +1": "Sequence +1",
    "格式：name_1.ext、name_2.ext，自动在已有最大序号上加 1": "Format: name_1.ext, name_2.ext. Automatically increments from the largest existing suffix.",
    "下载默认保存位置": "Default Download Location",
    "支持变量：{value}（程序所在目录）": "Supports variable: {value} (program directory)",
    "预保存：{path}": "Resolved path: {path}",
    "上传并发": "Upload Concurrency",
    "传输队列": "Transfer Queue",
    "当前会话中的所有路径传输任务都会显示在这里": "All transfer tasks from every path in the current session are shown here",
    "当前会话暂无传输任务": "No transfer tasks in the current session",
    "准备下载": "Preparing download",
    "远端压缩中": "Compressing on remote",
    "下载压缩包": "Downloading archive",
    "本地解压中": "Extracting locally",
    "正在远端打包压缩包": "Building archive on the remote server",
    "正在下载压缩包到本地": "Downloading archive to local device",
    "正在解压到本地目录": "Extracting into the local directory",
    "下载传输已完成": "Download transfer completed",
    "下载传输失败": "Download transfer failed",
    "冲突项": "Conflict Item",
    "本地路径": "Local Path",
    "本地类型": "Local Type",
    "远端类型": "Remote Type",
    "本地大小": "Local Size",
    "远端大小": "Remote Size",
    "本地修改时间": "Local Modified Time",
    "远端修改时间": "Remote Modified Time",
    "请选择本次冲突的处理方式": "Choose how to handle this conflict",
    "下载同名冲突": "Download Name Conflict",
    "应用到本次剩余冲突": "Apply to Remaining Conflicts in This Download",
    "当前环境不支持下载冲突处理": "Download conflict handling is unavailable in the current environment",
    "强制终止": "Force Abort",
    "从列表中移除": "Remove from List",
    "已折叠显示，避免传输队列卡片总数超过 {count}": "Collapsed to avoid rendering more than {count} transfer cards",
    "当前有 {count} 项活跃任务被折叠隐藏，仅保留最基本的阶段与终止操作。": "{count} active tasks are collapsed. Only the basic phase and abort action are kept.",
    "这些折叠项均已结束，仅保留从列表中移除操作。": "These collapsed items have all finished. Only remove-from-list is kept.",
    "单文件分块大小 (KiB)": "Single File Chunk Size (KiB)",
    "控制单个文件上传时的默认分块大小": "Control the default chunk size used when uploading a single file",
    "多文件并发上传最大数量": "Maximum Concurrent File Uploads",
    "控制同一时间允许并发上传的文件数量": "Control how many files may upload at the same time",
    "单文件分块传输最大数量": "Maximum Concurrent Chunks Per File",
    "控制单个文件在同一时间允许并发传输的分块数量": "Control how many chunks from one file may transfer at the same time",
    "全局在途块上限": "Global In-Flight Chunk Limit",
    "控制所有上传任务共享的在途分块总数": "Control the total number of in-flight chunks shared by all upload tasks",
    "默认值：{value}，仅影响下一次上传任务": "Default: {value}. Applies to the next upload task only.",
    "上传队列": "Upload Queue",
    "当前会话中的所有路径上传任务都会显示在这里": "All upload tasks from every path in the current session are shown here",
    "当前会话暂无上传任务": "No upload tasks in the current session",
    "排队中": "Queued",
    "读取中": "Reading",
    "重试中": "Retrying",
    "分块进度": "Chunk Progress",
    "分块": "Chunk",
    "重试": "Retry",
    "块": "chunk",
    "块并发": "Chunk concurrency",
    "总进度": "Total progress",
    "压缩传输累计进度": "Compressed transfer cumulative progress",
    "当前阶段字节": "Current phase bytes",
    "当前阶段进度": "Current phase progress",
    "阶段": "Phase",
    "当前阶段": "Current phase",
    "状态": "Status",
    "当前文件": "Current file",
    "准备上传": "Preparing upload",
    "准备中": "Preparing",
    "扫描中": "Scanning",
    "压缩中": "Compressing",
    "上传压缩包": "Uploading archive",
    "清理中": "Cleaning",
    "远端解压中": "Extracting on remote",
    "当前阶段无字节指标": "No byte metric for the current phase",
    "正在扫描待压缩项目": "Scanning items to compress",
    "正在构建本机 tar.gz 压缩包": "Building local tar.gz archive",
    "正在上传压缩包到远端": "Uploading archive to remote",
    "正在删除本机临时压缩包": "Removing local temporary archive",
    "正在远端解压压缩包": "Extracting archive on the remote server",
    "正在清理远端压缩包": "Removing remote archive",
    "压缩传输已完成": "Compressed transfer completed",
    "压缩传输失败": "Compressed transfer failed",
    "清理本机": "Cleaning local",
    "清理远端": "Cleaning remote",
    "清空": "Clear",
    "已完成": "Completed",
    "失败": "Failed",
    "更新下载": "Update Download",
    "优先使用镜像下载": "Prefer Mirror Download",
    "优先通过多个镜像地址下载 GitHub 更新,失败后自动回退为官方直连下载": "Prefer downloading GitHub updates through multiple mirror URLs, and fall back to the official direct download on failure",
    "渲染": "Rendering",
    "禁用硬件加速": "Disable Hardware Acceleration",
    "关闭 WebView GPU 加速，重启应用后生效": "Disable WebView GPU acceleration. Takes effect after restarting the app",
    "设置已保存，重启后生效": "Setting saved. Restart the app to apply it",
    "硬件加速设置保存失败": "Failed to save hardware acceleration setting",
  }
};

let currentLang = localStorage.getItem('appLanguage') || 'zh-CN';
const listeners = new Set();

export function setLanguage(lang) {
  currentLang = lang;
  localStorage.setItem('appLanguage', lang);
  listeners.forEach(fn => fn(lang));
}

export function getLanguage() {
  return currentLang;
}

function interpolateText(text, params) {
  if (!params || typeof text !== 'string') return text;
  return text.replace(/\{(\w+)\}/g, (_, name) => params[name] ?? `{${name}}`);
}

function translateDynamicText(text, table) {
  if (typeof text !== 'string' || !text) {
    return text;
  }
  let next = text;
  next = next.replace(/\nai\.change_review\.start_line:(\d+)/g, (_, count) => `\n${interpolateText(table["起始行: {count}"] ?? "起始行: {count}", { count })}`);
  next = next.replace(/\nai\.change_review\.match_count:(\d+)/g, (_, count) => `\n${interpolateText(table["匹配次数: {count}"] ?? "匹配次数: {count}", { count })}`);
  next = next.replace(/\nai\.change_review\.similarity:([\d.]+):([\d.]+)/g, (_, similarity, required) => `\n${interpolateText(table["相似度: {similarity}% / 需要 {required}%"] ?? "相似度: {similarity}% / 需要 {required}%", { similarity, required })}`);
  next = next.replace(/\n\nai\.change_review\.best_match:\n/g, `\n\n${table["最佳匹配片段:"] ?? "最佳匹配片段:"}\n`);
  return next;
}

export function t(key, params) {
  const table = dict[currentLang] || dict['zh-CN'];
  const rawText = table[key] !== undefined ? table[key] : key;
  const translatedText = table[key] !== undefined ? rawText : translateDynamicText(rawText, table);
  return interpolateText(translatedText, params);
}

export function useTranslation() {
  const [lang, setLang] = useState(currentLang);
  useEffect(() => {
    const handler = (l) => setLang(l);
    listeners.add(handler);
    return () => listeners.delete(handler);
  }, []);
  return { t, lang };
}
