Files
DevFlow/src/i18n/zh-CN/aiChat.ts
绝尘 24c3fa08f1 新增: 路径授权三档化 once/session/always
Phase B 弹窗 once/always → once/session/always 三档(本次单次执行后清/当前会话切会话清/始终落KV)。修 once 原写 session 致本次实为本会话名实不符。AllowedDirs 加 once 层 + ai_authorize_dir decision 改 match 四分支 + 执行后 clear_once。
2026-06-25 00:23:07 +08:00

203 lines
8.7 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 {
aiChat: {
// ── 对话侧栏 ──
sidebarTitle: '对话',
newConversation: '新对话',
doubleClickToRename: '双击重命名',
generating: '生成中…',
archive: '归档',
unarchive: '取消归档',
pinConversation: '置顶',
unpinConversation: '取消置顶',
moreActions: '更多操作',
archived: '已归档',
archivedCount: '已归档 ({n})',
emptyConversation: '暂无对话',
// UX-06 §3.1:对话搜索(实时过滤标题,Ctrl+K 聚焦)
searchPlaceholder: '搜索对话…',
searchEmpty: '无匹配对话',
searchShortcutHint: 'Ctrl+K',
// ── 时间分组(侧栏) ──
today: '今天',
yesterday: '昨天',
earlier: '更早',
groupEmpty: '暂无',
// ── Header 按钮 ──
conversationList: '对话列表',
maximize: '最大化',
pendingApprovalCount: '{n} 项待审批',
pendingApprovalHint: '点击跳转到第一个待审批项',
restoreSidebar: '还原侧栏',
sidebarResizeHint: '拖拽调整侧栏宽度',
detachWindow: '分离窗口',
closePanel: '关闭面板',
dockRight: '吸附到主窗口右侧',
undock: '取消吸附',
pinOnTop: '置顶',
unpin: '取消置顶',
closeWindow: '关闭窗口',
// ── Provider 状态 ──
clickToSwitchProvider: '点击切换 Provider',
providerNotConfigured: '未配置 AI 提供商,请在设置中添加',
notConfigured: '未配置',
// ── F-01 阶段6: 模型选择器(自动/指定 toggle + 下拉) ──
autoMode: '自动',
specifyMode: '指定',
autoModeHint: '自动模式:路由器按场景自动选最优模型',
specifyModeHint: '指定模式:使用下拉所选模型覆盖路由(仅主对话)',
selectModel: '选择模型',
noModels: '无可用模型,请在设置中拉取',
// ── 空状态(UX-2025-20:示例问题卡片 + 无 provider 引导) ──
emptyNoProvider: '未配置 AI 提供商',
emptyNoProviderHint: '请在设置中添加 Provider 后开始对话',
emptyTitle: '与 AI 助手对话',
emptyHint: '可以说"帮我创建一个项目"或"列出所有任务"',
// 示例问题卡片:点击自动填入并发送(4 条,DevFlow 场景相关)
examplePrompt1: '分析这个项目的依赖关系',
examplePrompt2: '帮我写一个工作流节点',
examplePrompt3: '列出当前所有任务',
examplePrompt4: '生成一个项目灵感',
goToSettings: '去设置',
goToSettingsHint: '分离窗口无法直接打开设置,请在主窗口的设置页配置 AI 提供商',
// ── Provider 切换反馈(UX-2025-14) ──
providerSwitched: '已切换到 {model}',
providerSwitchHint: '当前模型:{model}',
// ── 回到底部 ──
backToBottom: '回到底部',
// ── 待发送队列 ──
queueTitle: '待发送 {n}/10',
clearQueue: '清空',
// UX-260616-06/07:队列项编辑 + 立即发送
queueEdit: '编辑',
queueSave: '保存',
queueCancel: '取消',
queueSendNow: '立即发送',
// ── 技能 ──
clearSkill: '取消技能',
placeholderWithSkill: '已选技能,输入参数后回车',
placeholderDefault: "输入消息.../ 触发技能,{'@'} 引用实体)",
skillNoMatch: '无匹配技能',
skillNotLoaded: '未读取到本机技能',
// ── UX-10: @ 实体引用(@ 触发 popover,选中插入 [类型:名] 标记) ──
mentionHint: "{'@'} 引用项目/任务",
mentionGroupProject: '项目',
mentionGroupTask: '任务',
mentionGroupIdea: '灵感',
mentionNoMatch: '无匹配实体',
mentionEmpty: '暂无可引用的项目/任务',
// ── 发送 ──
stopGenerating: '停止生成',
// L2 状态机停止按钮三态(ConvState 派生)
stopping: '停止中',
stopFailedRetry: '停止失败,点击重试',
// ── 输入提示 ──
inputHint: 'Enter 发送 · Shift+Enter 换行',
// ── F-260614-05 Phase 2b: 图片输入(粘贴/拖拽) ──
// 粘贴/拖拽图片到输入框,发送时构造多模态 ContentPart[] 渲染到用户气泡
removeImage: '移除图片',
imagePreviewAlt: '待发送图片',
imageTooLarge: '图片过大(上限 10MB已跳过',
imageLimit: '最多 {n} 张图片,已忽略多余的',
imageReadFailed: '图片读取失败',
// ── 确认弹层 ──
confirmDeleteConversation: '确定删除对话「{title}」?该操作不可恢复。',
// UX-260617-24:删除当前活跃对话的醒目提示(活跃对话误删会清空当前视图,影响更大)
confirmDeleteActiveConversation: '「{title}」是当前正在查看的对话,删除后将清空当前视图且不可恢复,确定继续?',
clearChat: '清空',
confirmClearChat: '确定清空当前对话的所有消息?此操作不可恢复。',
toastSendFail: '发送失败:{msg}',
// ── 消息拷贝(F-260615-13) ──
copyMsg: '复制消息',
copied: '已复制',
copyFailed: '复制失败',
// ── 消息操作栏(UX-02) ──
regenerate: '重新生成',
regenerateFailed: '重新生成失败:{msg}',
regenerateUnavailable: '没有可重新生成的回复',
// ── UX-09: 编辑末条 user 消息并重新生成 ──
editMessage: '编辑',
editMessageFailed: '编辑失败:{msg}',
editNotLastUser: '只能编辑最后一条用户消息',
placeholderEditing: '编辑消息后回车重新生成Esc 取消)',
// ── 错误气泡操作入口(UX-03 / UX-260616-01) ──
retry: '重试',
goToSettingsAction: '去设置',
// ── F-260616-03: 达 max_iterations 暂停态操作卡 ──
maxRoundsReached: '已达最大轮次,是否继续?',
maxRoundsHint: '继续将再跑一轮上限;停止则按当前结果收尾',
continueLoop: '继续',
stopLoop: '停止',
continueLoopFailed: '继续失败:{msg}',
stopLoopFailed: '停止失败:{msg}',
// ── L1 求助协议(aichat 体验与 agent 能力系统化重构 §2.3,2026-06-21):断路器熔断求助卡 ──
helpRequiredAck: '已记录选择,请重新描述需求以换思路/继续',
// ── F-260619-03 Phase B: 路径授权弹窗(LLM 访问白名单外目录挂起) ──
dirAuthRequired: '需要路径授权',
dirAuthHint: '{tool} 想访问:{path}',
dirAuthOnce: '本次',
dirAuthSession: '当前会话',
dirAuthAlways: '始终放行',
dirAuthDeny: '拒绝',
dirAuthFailed: '授权失败:{msg}',
// ── Input Augmentation 层: mention/skill 注入反馈 ──
// search_files 盲搜被白名单兜底拒绝(不应弹授权窗,直接友好提示用户改用 @引用或绝对路径)
searchFilesBlocked: 'search_files 仅在已授权目录可用,请用 @[项目] 引用或提供绝对路径',
// /技能 热重载(ai_reload_skills IPC)成功后提示
skillReloaded: '技能已重新加载',
// @引用 实体 resolve 失败(id 指向的项目/任务/灵感/技能已被删除或不可用)
mentionUnresolved: '引用的 {kind} 已删除或不可用',
// 同名技能冲突(scan_skills 返回 conflicts,前端提示,注入按 skills>commands>plugins 优先级取首份)
skillConflict: '技能 {name} 存在多份定义,已采用 skills 优先级',
// ── F-15 阶段2: 手动上下文管理(清空 / 压缩) ──
// 按钮(Header 操作区:垃圾桶 + 压缩图标)
clearContext: '清空上下文',
compressContext: '压缩上下文',
// 二次确认(清空不可逆语义,防误触;历史归档保留不删)
// 标题「清空上下文」融入正文首句;强调不可逆 + 归档分段 + AI 不再看到历史
clearContextConfirm: '清空上下文?此操作不可逆,当前对话上下文将被归档为分段(AI 将不再看到这些历史消息)。新对话不受影响。',
// 二次确认弹窗的危险按钮文案(ConfirmDialog dangerLabel);不传则回退 common.confirm
clearContextDangerLabel: '清空',
// 折叠分隔条(连续同 status 合并一条;{n}=合并的消息条数)
contextArchived: '已归档 {n} 条消息',
compressed: '已压缩上下文',
compressing: '压缩中…',
clearSuccess: '上下文已清空',
compressSuccess: '上下文已压缩',
compressError: '压缩失败:{msg}',
clearError: '清空失败:{msg}',
// 折叠条展开 / 收起
expand: '展开',
collapse: '收起',
// 压缩摘要块标题(展开后 system 摘要消息前的标签)
compressedSummaryLabel: '上下文摘要',
// ── AE-2025-04 会话级信任(Session Trust) ──
// 自动放行 toast(同会话已批准过同类操作:同工具+同目录,轻量 info 非审批气泡)
autoApprovedToast: '已自动放行: {tool}({dir})',
},
}