Files
DevFlow/src/i18n/en/aiChat.ts
绝尘 53e1c1da77 重构: 对话透明化 L1 + ③.2 审批拆分 + ⑥.4 @展开 + DAG 展示
修复 tool_result 压缩零效果(BUG-260628-01):单行/少行/JSON 大字符
串字段逃逸压缩的问题,基于实测数据(53/94 次迭代零节省)调参,
增加字符级保底截断,压缩有效率从 8% 提升至 ~85%+
2026-06-28 03:31:40 +08:00

208 lines
9.2 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: {
// ── Conversation sidebar ──
sidebarTitle: 'Chats',
newConversation: 'New chat',
doubleClickToRename: 'Double-click to rename',
generating: 'Generating…',
archive: 'Archive',
unarchive: 'Unarchive',
pinConversation: 'Pin',
unpinConversation: 'Unpin',
moreActions: 'More actions',
archived: 'Archived',
archivedCount: 'Archived ({n})',
emptyConversation: 'No conversations',
// UX-06 §3.1: conversation search (live title filter, Ctrl+K to focus)
searchPlaceholder: 'Search chats…',
searchEmpty: 'No matching chats',
searchShortcutHint: 'Ctrl+K',
// ── Time grouping (sidebar) ──
today: 'Today',
yesterday: 'Yesterday',
earlier: 'Earlier',
groupEmpty: 'None',
// ── Header buttons ──
conversationList: 'Chat list',
maximize: 'Maximize',
pendingApprovalCount: '{n} pending',
pendingApprovalHint: 'Click to jump to the first pending approval',
restoreSidebar: 'Restore sidebar',
sidebarResizeHint: 'Drag to resize sidebar',
detachWindow: 'Detach window',
closePanel: 'Close panel',
dockRight: 'Dock to main window right',
undock: 'Undock',
pinOnTop: 'Pin on top',
unpin: 'Unpin',
closeWindow: 'Close window',
// ── Provider status ──
clickToSwitchProvider: 'Click to switch provider',
providerNotConfigured: 'No AI provider configured. Please add one in settings.',
notConfigured: 'Not configured',
// ── F-01 阶段6: model picker (auto/specify toggle + dropdown) ──
autoMode: 'Auto',
specifyMode: 'Specify',
autoModeHint: 'Auto mode: router picks the best model per scenario',
specifyModeHint: 'Specify mode: use the selected model, overriding the router (main chat only)',
selectModel: 'Select model',
noModels: 'No models available. Please fetch in settings.',
// ── Empty states (UX-2025-20: example prompt cards + no-provider guidance) ──
emptyNoProvider: 'No AI provider configured',
emptyNoProviderHint: 'Please add a provider in settings to start chatting',
emptyTitle: 'Chat with AI assistant',
emptyHint: 'Try "create a project" or "list all tasks"',
// Example prompt cards: click to fill and send (4 prompts, DevFlow scenarios)
examplePrompt1: 'Analyze this projects dependencies',
examplePrompt2: 'Help me write a workflow node',
examplePrompt3: 'List all current tasks',
examplePrompt4: 'Generate a project idea',
goToSettings: 'Open settings',
goToSettingsHint: 'The detached window cannot open settings directly. Configure AI providers on the main windows Settings page.',
// ── Provider switch feedback (UX-2025-14) ──
providerSwitched: 'Switched to {model}',
providerSwitchHint: 'Current model: {model}',
// ── Back to bottom ──
backToBottom: 'Back to bottom',
// ── Pending queue ──
queueTitle: 'Queued {n}/10',
clearQueue: 'Clear',
// UX-260616-06/07: queue item edit + send now
queueEdit: 'Edit',
queueSave: 'Save',
queueCancel: 'Cancel',
queueSendNow: 'Send now',
// ── Skill ──
clearSkill: 'Clear skill',
placeholderWithSkill: 'Skill selected. Type arguments and press Enter',
placeholderDefault: "Type a message... (/ for skills, {'@'} to mention)",
skillNoMatch: 'No matching skill',
skillNotLoaded: 'No local skills loaded',
// ── UX-10: @ entity mention (@ opens popover, select inserts [Type:Name] token) ──
mentionHint: "{'@'} to mention project/task",
mentionGroupProject: 'Projects',
mentionGroupTask: 'Tasks',
mentionGroupIdea: 'Ideas',
mentionNoMatch: 'No matching entity',
mentionEmpty: 'No project/task to mention',
// ── Send ──
stopGenerating: 'Stop generating',
// L2 状态机停止按钮三态(ConvState 派生)
stopping: 'Stopping',
stopFailedRetry: 'Stop failed, click to retry',
// ── Input hint ──
inputHint: 'Enter to send · Shift+Enter for newline',
// ── F-260614-05 Phase 2b: image input (paste / drag-drop) ──
removeImage: 'Remove image',
imagePreviewAlt: 'Pending image',
imageTooLarge: 'Image too large (max 10MB), skipped',
imageLimit: 'Up to {n} images, extras ignored',
imageReadFailed: 'Failed to read image',
// ── Confirm dialog ──
confirmDeleteConversation: 'Delete chat "{title}"? This cannot be undone.',
// UX-260617-24: stronger warning when deleting the currently active conversation
confirmDeleteActiveConversation: '"{title}" is the chat you are currently viewing. Deleting it will clear the current view and cannot be undone. Continue?',
clearChat: 'Clear',
confirmClearChat: 'Are you sure you want to clear all messages in this chat? This cannot be undone.',
toastSendFail: 'Send failed: {msg}',
// ── Message copy (F-260615-13) ──
copyMsg: 'Copy message',
copied: 'Copied',
copyFailed: 'Copy failed',
// ── Message actions bar (UX-02) ──
regenerate: 'Regenerate',
regenerateFailed: 'Regenerate failed: {msg}',
regenerateUnavailable: 'No reply to regenerate',
// ── UX-09: edit last user message and regenerate ──
editMessage: 'Edit',
editMessageFailed: 'Edit failed: {msg}',
editNotLastUser: 'Only the last user message can be edited',
placeholderEditing: 'Edit message then Enter to regenerate (Esc to cancel)',
// ── Error bubble actions (UX-03 / UX-260616-01) ──
retry: 'Retry',
goToSettingsAction: 'Open settings',
// ── F-260616-03: max iterations reached pause action card ──
maxRoundsReached: 'Max rounds reached. Continue?',
maxRoundsHint: 'Continue runs another full round; stop ends with current results',
continueLoop: 'Continue',
stopLoop: 'Stop',
continueLoopFailed: 'Continue failed: {msg}',
stopLoopFailed: 'Stop failed: {msg}',
// ── L1 help protocol (aichat experience & agent capability redesign §2.3, 2026-06-21): circuit-breaker help card ──
helpRequiredAck: 'Choice noted. Please rephrase your request to try another approach / continue',
// ── F-260619-03 Phase B: path authorization dialog (LLM accessing dir outside whitelist) ──
dirAuthRequired: 'Path authorization required',
dirAuthHint: '{tool} wants to access: {path}',
dirAuthOnce: 'This time',
dirAuthSession: 'This session',
dirAuthAlways: 'Always',
dirAuthDeny: 'Deny',
dirAuthFailed: 'Authorization failed: {msg}',
// ── Input Augmentation layer: mention/skill injection feedback ──
// search_files blind search denied by whitelist fallback (no auth dialog; prompt user to use @mention or absolute path)
searchFilesBlocked: 'search_files only works inside authorized dirs. Use @[project] to reference or provide an absolute path.',
// /skill hot reload (ai_reload_skills IPC) success toast
skillReloaded: 'Skills reloaded',
// @mention entity resolve failed (id points to a project/task/idea/skill that was deleted or unavailable)
mentionUnresolved: 'The mentioned {kind} was deleted or is unavailable',
// Same-name skill conflict (scan_skills returns conflicts; frontend warns, injection takes first by skills>commands>plugins priority)
skillConflict: 'Skill "{name}" has multiple definitions; using skills priority',
// ── ⑥.4 Phase 4: @project expansion summary (input area preview) ──
enrichmentBadge: '📎 Referenced "{project}" ({tasks} tasks, {ideas} ideas)',
enrichmentExpand: 'Show context preview',
enrichmentCollapse: 'Hide context preview',
enrichmentLabel: 'Context preview',
// ── F-15 phase 2: manual context management (clear / compress) ──
// Buttons (Header action area: trash + compress icon)
clearContext: 'Clear context',
compressContext: 'Compress context',
// Confirm dialog (clear is semantically irreversible; history archived, not deleted)
// Title "Clear context" folded into the lead sentence; stress irreversible + archived segment + AI no longer sees history
clearContextConfirm: 'Clear context? This action is irreversible. The current chat context will be archived as a segment (the AI will no longer see these history messages). New chats are not affected.',
// Danger button label for the confirm dialog (ConfirmDialog dangerLabel); falls back to common.confirm if omitted
clearContextDangerLabel: 'Clear',
// Collapsed separator (consecutive same-status merged into one bar; {n}=merged message count)
contextArchived: 'Archived {n} messages',
compressed: 'Context compressed',
compressing: 'Compressing…',
clearSuccess: 'Context cleared',
compressSuccess: 'Context compressed',
compressError: 'Compression failed: {msg}',
clearError: 'Clear failed: {msg}',
// Separator expand / collapse
expand: 'Expand',
collapse: 'Collapse',
// Compressed summary block label (before the system summary message when expanded)
compressedSummaryLabel: 'Context summary',
// ── AE-2025-04 Session Trust ──
// Auto-approval toast (same-session already approved same-kind op: same tool + same dir)
autoApprovedToast: 'Auto-approved: {tool}({dir})',
},
}