export default { settings: { // ===== 页面标题 ===== title: '⚙️ 设置', // ===== 左导航分类(阶段3 master-detail) ===== navAppearance: '外观', navAiModel: 'AI 模型', navKnowledge: '知识库', navPerformance: '性能', navSecurity: '安全', navAdvanced: '高级', // ===== 设置搜索(阶段4) ===== searchPlaceholder: '搜索设置项…', searchNoResult: '无结果', // ===== 即时生效反馈(阶段5 SettingRow) ===== savedHint: '✓ 已保存', nextRoundBadge: '下次对话生效', // ===== 连接管理(阶段7:实验功能 badge 明示暂未接入 AI) ===== experimentalBadge: '实验功能·暂未接入 AI 工具', // ===== AI 模型配置面板 ===== panelAiProvider: '🤖 AI 模型配置', addProvider: '+ 添加 Provider', editProviderTitle: '编辑 Provider', addProviderTitle: '添加 Provider', emptyProvider: '暂无 AI 提供商,点击上方按钮添加', badgeDefault: '默认', actionSetDefault: '设为默认', detailBaseUrl: 'Base URL', detailModel: '模型', detailApiKey: 'API Key', detailPoolEnabled: '入负载均衡池', detailPoolWeight: '池选择权重', badgePoolDisabled: '已停用', descPoolEnabled: '开启后参与主链路由/选池;关闭后仅保留配置,不被选中', descPoolWeight: '0-100,高权重优先被选为主;同权重近似轮询(后端 clamp [0,100])', toastPoolUpdateOk: '负载均衡池配置已更新', toastPoolUpdateFail: '更新负载均衡池配置失败:{msg}', // Provider 表单 labelName: '名称', labelProviderType: '协议类型', labelBaseUrl: 'Base URL', labelApiKey: 'API Key', labelDefaultModel: '默认模型', phProviderName: '如 DeepSeek、GLM-4', phBaseUrl: 'https://api.deepseek.com', phApiKey: 'sk-...', phDefaultModel: 'deepseek-chat', providerTypeOpenaiCompat: 'OpenAI 兼容(DeepSeek / GLM v4 / OpenAI)', providerTypeAnthropic: 'Anthropic 兼容(GLM 订阅 / Claude)', saving: '保存中...', // 模型拉取(F-01 阶段6) testConnection: '测试连接并拉取模型', fetchingModels: '拉取中...', fetchHintSaveFirst: '请先保存 Provider 后再拉取模型', labelWeight: '权重', modelListTitle: '已拉取模型({count} 个)', modelListHint: '已启用 / 权重为本次会话内调整,下次「测试连接」会以最新探测结果覆盖', saveModels: '保存模型配置', toastFetchOk: '已拉取 {count} 个模型', toastFetchFail: '拉取模型失败:{msg}', fetchFailedTimeout: '拉取超时,请检查 Base URL 是否可达:{msg}', fetchFailedAuth: '鉴权失败,请检查 API Key:{msg}', fetchFailedNotFound: '端点不存在,该厂商可能不支持模型列表拉取:{msg}', toastModelEditLocalOnly: '已启用 / 权重为本地编辑,下次拉取时覆盖', // 模型特征标签(模态 + 能力 + 探测来源;cost/intel 去除见 UX-260618-04) tagModality: { text: '文本', vision: '视觉', audio: '音频', video: '视频' }, tagCapability: { tool_use: '工具调用', embedding: '向量', code_gen: '代码' }, tagSource: { user_set: '手动', preset_table: '预设', heuristic: '推断', default: '默认' }, // ===== 连接管理面板 ===== panelConnection: '🔗 连接管理', addConnection: '+ 添加连接', editConnectionTitle: '编辑连接', addConnectionTitle: '添加连接', emptyConnection: '暂无连接,点击上方按钮添加', labelType: '类型', labelHost: 'Host', labelPort: 'Port', labelUser: '用户名', phConnName: 'flux_dev', phHost: '127.0.0.1', phPort: '3306', phUser: 'root', // ===== 通用设置面板 ===== panelGeneral: '🎨 通用设置', // 阶段2 UX 重构:GeneralPanel 拆 3 Section 后各 Section 标题 sectionAppearance: '🎨 外观', sectionPerformance: '⚡ 性能', sectionAdvanced: '⚙️ 高级', labelTheme: '主题', descTheme: '深色 / 浅色模式', themeDark: '🌙 深色模式', themeLight: '☀️ 浅色模式', themeSystem: '💻 跟随系统', labelLanguage: '语言', descLanguage: '界面显示语言', labelAiLanguage: 'AI 对话语言', descAiLanguage: 'AI 回复使用的默认语言', aiLanguageAuto: '🔄 跟随界面语言', aiLanguageZh: '🇨🇳 简体中文', aiLanguageEn: '🇺🇸 English', labelDataDir: '应用数据目录', descDataDir: 'DevFlow 存储 .trash(回收站)、数据库、日志等内部数据的目录路径', labelAutoExecute: 'AI 自动执行范围', descAutoExecute: '控制 AI 自动执行操作的风险等级(低/中/全部接管)', autoModeLow: '低风险(默认)', autoModeMedium: '含中风险', autoModeAll: '全部接管(无审批)', autoModeAllConfirmTitle: '确认完全 AI 接管?', autoModeAllConfirmContent: '所有操作(含高危)将自动执行,无审批。AI 可能直接执行危险操作(删文件/执行任意命令等),请确认你信任当前对话的 AI。', labelLogLevel: '日志级别', descLogLevel: '工作流日志详细程度', // ===== 审批超时 ===== labelApprovalTimeout: '审批超时', descApprovalTimeout: '用户未处理审批弹窗时的自动拒绝阅值(只影响下一笔发起的审批)', approvalTimeoutUnlimited: '不限时', approvalTimeout5m: '5 分钟', approvalTimeout15m: '15 分钟(默认)', approvalTimeout30m: '30 分钟', approvalTimeout60m: '60 分钟', labelShowTokenUsage: '显示 Token 用量', descShowTokenUsage: '在对话中展示每次回复的 token 消耗', labelStreamingMd: '流式 Markdown 渲染', descStreamingMd: '流式生成过程中渲染代码块/列表/标题格式(未闭合代码块降级纯文本防闪烁);关闭后流式期间仅显纯文本,生成完成后才渲染完整格式', labelGlobalConcurrency: '全局最大并发', descGlobalConcurrency: '所有对话共享的 LLM 同时请求数上限', labelPerConvConcurrency: '单对话并发上限', descPerConvConcurrency: '单个对话内同时进行的 LLM 调用数(主循环 / 标题 / 提炼共享)', labelAgentMaxIterations: 'Agent 最大轮次', descAgentMaxIterations: 'Agentic 循环(流式→工具→回传)的最大轮次(0=不限,1-50,默认 10);热改下次发消息生效', labelUnlimited: '不限', labelAgentMaxRetries: '流式失败重试次数', descAgentMaxRetries: '流式对话失败时自动重试次数(0-10,默认 3);只重试未输出任何 token 的流前失败,已输出文本的失败直接放弃', // ===== F-260619-03 Phase A: AI 工具授权目录面板 ===== panelAllowedDirs: '📁 AI 工具授权目录', descAllowedDirs: 'AI 文件工具(读/写/列/改/搜等)仅可访问以下授权目录。项目根目录(devflow 自身)始终隐式授权,无需在此添加。未在列表内的目录访问将被拒绝。', allowedDirsLoading: '加载中…', allowedDirsEmpty: '暂无额外授权目录(仅项目根目录默认授权)', allowedDirsInputPlaceholder: '输入授权目录绝对路径,如 E:/wk-lab/u-abc', allowedDirsSelectDir: '选择目录', allowedDirsAdd: '添加', allowedDirsSave: '保存', allowedDirsReload: '重载', allowedDirsLoadFail: '加载授权目录失败', allowedDirsDup: '该目录已在授权列表中', allowedDirsAddFail: '添加授权目录失败', allowedDirsRemoveFail: '删除授权目录失败', // ===== ScriptNode 命令执行安全 ===== panelScriptSafety: '🛡️ 命令执行安全', descScriptSafety: '配置 ScriptNode 命令白/黑名单。命令名取首词(如 `rm -rf /` 取 `rm`),按 trim + 小写比较。黑名单优先于白名单。', labelScriptWhitelist: '命令白名单', descScriptWhitelist: '逗号分隔命令名(如 git,npm,cargo);留空表示不限制。非空时仅允许名单内命令执行。', labelScriptBlacklist: '命令黑名单', descScriptBlacklist: '逗号分隔命令名(如 rm,format,shutdown);命中任一项即拒绝执行。', placeholderScriptWhitelist: '留空不限制,或输入:git,npm,cargo', placeholderScriptBlacklist: '留空表示无黑名单,或输入:rm,format', noteScriptSafety: '注:后端 ScriptNode 当前从环境变量 DF_SCRIPT_WHITELIST / DF_SCRIPT_BLACKLIST 读取,与同语义逗号分隔。此处配置仅前端持久化,与后端打通待后续版本。', // ===== 知识库面板 ===== panelKnowledge: '📚 知识库', labelAutoExtract: '自动提炼知识', descAutoExtract: '对话完成后自动从内容中提炼可复用知识(AI 提炼产候选,需人工审核)', labelTriggerMode: '提炼触发方式', descTriggerMode: '自动提炼的触发时机', triggerOnComplete: '对话完成后', triggerManualOnly: '仅手动', labelMinMessages: '最少消息数', descMinMessages: '对话达到此消息数才触发提炼(防闲聊噪音)', labelAutoInject: '自动注入相关知识', descAutoInject: '聊天时自动检索相关知识注入对话上下文', labelVectorEnabled: '语义检索(向量)', descVectorEnabled: '用 Embedding 向量做语义匹配,意思相近用词不同也能搜到;关闭时纯关键词匹配,零外部调用', labelEmbeddingProvider: 'Embedding Provider', descEmbeddingProvider: '向量化用的 AI 提供商(仅 OpenAI 兼容类型;选定后更换需重新嵌入全部知识)', labelEmbeddingModel: 'Embedding 模型', descEmbeddingModel: '如 embedding-3(智谱) / text-embedding-v4(阿里) / text-embedding-3-small(OpenAI)', embeddingProviderNone: '未选择', phEmbeddingModel: 'embedding-3', // ===== Toast 提示 ===== toastLoadProviderFail: '加载提供商失败', toastSaveIncomplete: '请填写完整(名称 / Base URL / API Key / 模型)', toastSaved: '已保存', toastSaveFail: '保存失败:{msg}', toastDeleted: '已删除', toastDeleteFail: '删除失败:{msg}', toastSetDefaultOk: '已设为默认', toastSetDefaultFail: '设置默认失败:{msg}', toastConnIncomplete: '请填写名称和 Host', // ===== 导入 / 导出(阶段6) ===== export: '导出', import: '导入', exportHint: '导出全部偏好(appSettings + 知识库配置)为 JSON 文件', importHint: '从 JSON 文件导入并覆盖当前偏好', importConfirm: '导入将覆盖当前的全部偏好设置(外观 / 性能 / 知识库等),确定继续?', importSuccess: '导入成功(部分项如并发 / 轮次需重启或下次对话生效)', importFail: '导入失败:{msg}', exportFail: '导出失败:{msg}', importInvalidJson: '文件不是有效的 DevFlow 设置备份(格式不符)', importScopeNote: '范围:appSettings + 知识库配置(不含 Provider 密钥)', // ===== 确认弹层 ===== confirmDeleteProvider: '确定删除提供商「{name}」?该操作不可恢复。', confirmDeleteConn: '确定删除连接「{name}」?', }, }