Files
DevFlow/src/i18n/zh-CN/settings.ts
T

261 lines
13 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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: '名称',
labelPreset: '厂商预设',
presetCustom: '自定义(手填)',
labelProviderType: '协议类型',
labelBaseUrl: 'Base URL',
labelApiKey: 'API Key',
labelDefaultModel: '默认模型',
phProviderName: '如 DeepSeek、GLM-4',
phBaseUrl: 'https://api.deepseek.com',
phApiKey: 'sk-...',
phDefaultModel: 'deepseek-chat',
// 方向 A(轻量):defaultModel 仅作"建议起点",引导用户点「测试连接」拉真实模型列表覆盖,
// 避免预设 model id 过时(DeepSeek chat 停用 / Gemini 2.5→3.5 等)误导。
defaultModelHint: '建议起点 — 点「测试连接」拉取厂商真实模型列表覆盖',
providerTypeOpenaiCompat: 'OpenAI 兼容(DeepSeek / GLM v4 / OpenAI',
providerTypeAnthropic: 'Anthropic 兼容(GLM 订阅 / Claude',
saving: '保存中...',
// 模型拉取(F-01 阶段6)
testConnection: '测试连接并拉取模型',
fetchingModels: '拉取中...',
fetchHintSaveFirst: '请先保存 Provider 后再拉取模型',
labelWeight: '权重',
modelListTitle: '已拉取模型({count} 个)',
colEnabled: '启用',
colModel: '模型',
colAbility: '能力',
modelListHint: '勾选 / 权重调整后,请点下方「保存」一并写入 Provider 配置;下次「测试连接」会以最新探测结果覆盖',
saveModels: '保存模型配置',
modelListUnsavedHint: '模型列表有未保存的调整(启用 / 权重),关闭或切走将丢弃',
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: '默认' },
// 标签 tooltip:说明含义与来源可信度(手动标注 = 用户改过,优先级最高)
tagTooltipModality: '模态:模型能接收的输入类型(视觉=可看图)。来自预设表/按名推断,可手动修改',
tagTooltipCapability: '能力:模型能做什么(工具调用=可调用 AI 工具执行操作)。来自预设表/按名推断,可手动修改',
tagTooltipSource: '来源:预设=命中内置模型表(较可靠);推断=按模型名猜测(仅供参考);手动=你自定义(优先)',
// 表格内手动标注能力(点×删、点+加)
addTagTitle: '添加能力/模态',
addTagNone: '已含全部可选能力',
// ===== 连接管理面板 =====
panelConnection: '🔗 连接管理',
addConnection: '+ 添加连接',
editConnectionTitle: '编辑连接',
addConnectionTitle: '添加连接',
emptyConnection: '暂无连接,点击上方按钮添加',
labelType: '类型',
labelHost: 'Host',
labelPort: 'Port',
labelUser: '用户名',
labelPassword: '密码',
phConnName: 'flux_dev',
phHost: '127.0.0.1',
phPort: '3306',
phUser: 'root',
phPassword: '••••••••',
// ===== 通用设置面板 =====
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 消耗',
labelCustomPrompt: '自定义提示词',
descCustomPrompt: '追加到 AI 系统提示词末尾,可自定义 AI 行为偏好',
placeholderCustomPrompt: '例如:你擅长回答 Rust 开发问题...',
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 / 模型)',
// L19: 表单有改动时取消/关闭的二次确认
confirmDiscardUnsaved: '表单有未保存的改动,确定放弃吗?',
toastSaved: '已保存',
toastSaveFail: '保存失败:{msg}',
// P0-2: 保存失败分类建议(常驻错误横幅,非裸 Err 文本)
saveErrKeyringTitle: '密钥写入系统钥匙串失败',
saveErrKeyringDetail: '已保留原配置未改动。后端原因:{msg}\n建议:检查操作系统钥匙串/凭据管理器权限(Windows 凭据管理器 / macOS 钥匙串 / Linux secret-service 守护进程),确认后再次点击「保存」重试。',
saveErrGenericTitle: '保存提供商配置失败',
saveErrGenericDetail: '后端原因:{msg}\n建议:核对表单字段(名称 / Base URL / 模型)后再次点击「保存」重试;若持续失败请查看日志。',
toastDeleted: '已删除',
toastDeleteFail: '删除失败:{msg}',
toastSetDefaultOk: '已设为默认',
toastSetDefaultFail: '设置默认失败:{msg}',
toastConnIncomplete: '请填写名称和 Host',
toastConnPortInvalid: '端口必须在 1-65535 范围内',
// ===== 导入 / 导出(阶段6) =====
export: '导出',
import: '导入',
exportHint: '导出全部偏好(appSettings + 知识库配置)为 JSON 文件',
importHint: '从 JSON 文件导入并覆盖当前偏好',
importConfirm: '导入将覆盖当前的全部偏好设置(外观 / 性能 / 知识库等),确定继续?',
importSuccess: '导入成功(部分项如并发 / 轮次需重启或下次对话生效)',
importFail: '导入失败:{msg}',
exportFail: '导出失败:{msg}',
importInvalidJson: '文件不是有效的 DevFlow 设置备份(格式不符)',
importScopeNote: '范围:appSettings + 知识库配置(不含 Provider 密钥)',
// ===== 确认弹层 =====
confirmDeleteProvider: '确定删除提供商「{name}」?该操作不可恢复。',
confirmDeleteConn: '确定删除连接「{name}」?',
},
}