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} 个）',
    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: '默认' },

    // ===== 连接管理面板 =====
    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 消耗',

    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}」？',
  },
}
