export declare const locales: {
    readonly en: {
        readonly common: {
            readonly apply: "Apply";
            readonly cancel: "Cancel";
            readonly close: "Close";
            readonly copy: "Copy";
            readonly confirm: "Confirm";
            readonly refresh: "Refresh";
            readonly yes: "Yes";
            readonly no: "No";
            readonly exit: "Exit";
            readonly back: "Back";
            readonly next: "Next";
            readonly save: "Save";
            readonly empty: "—";
            readonly unknownError: "Unknown error";
            readonly inputClearTip: "Ctrl+C clear";
        };
        readonly configDialog: {
            readonly title: "Settings";
            readonly hint: "Tab/Shift+Tab switch field  •  Enter Apply  •  Esc Cancel";
            readonly modelsTitle: "Models (custom)";
            readonly modelsPlaceholder: "model-a, model-b";
            readonly contextWindowTitle: "Context Window";
            readonly contextWindowLocked: "Context Window (model-defined)";
            readonly contextWindowPlaceholder: "128000";
            readonly temperatureTitle: "Temperature";
            readonly temperaturePlaceholder: "0.7";
            readonly temperatureValidationError: "Temperature: only numbers and \".\"";
            readonly maxTokensTitle: "Max Output Tokens";
            readonly maxTokensPlaceholder: "8192";
            readonly baseUrlTitle: "Base URL (OpenAI-compatible)";
            readonly baseUrlPlaceholder: "https://api.openai.com/v1";
            readonly apiKeyCurrentPrefix: "Current:";
            readonly apiKeyNotSet: "(not set)";
            readonly apiKeyTitle: "API Key";
            readonly apiKeyPlaceholder: "Paste a new key to update (leave empty to keep)";
            readonly interleavedThinkingTitle: "Interleaved Thinking (Press Space toggle)";
            readonly interleavedThinkingLocked: "Interleaved Thinking (model-defined)";
            readonly interleavedThinkingOpen: "Open";
            readonly interleavedThinkingClose: "Close";
            readonly tipIntensityTitle: "Tip Intensity";
            readonly tipIntensityOff: "Off";
            readonly tipIntensityLow: "Low";
            readonly tipIntensityStandard: "Standard";
            readonly shortcutsTitle: "Shortcuts";
            readonly shortcutCommandsLabel: "Commands";
            readonly shortcutTimelineLabel: "Timeline";
            readonly shortcutNewSessionLabel: "New session";
            readonly shortcutsPlaceholder: "e.g. mod+p";
            readonly shortcutsHint: "Use mod/ctrl/alt/shift + key (a-z, 0-9, F1-F12).";
        };
        readonly languageDialog: {
            readonly title: "Language";
            readonly hint: "Enter Apply  •  Esc Cancel";
            readonly languageTitle: "Language";
            readonly languageEnglish: "English";
            readonly languageChinese: "简体中文";
        };
        readonly toolSettingsDialog: {
            readonly title: "Tool Settings";
            readonly hint: "Enter Apply  •  Esc Cancel";
            readonly websearchTitle: "WebSearch API Key";
            readonly apiKeyCurrentPrefix: "Current:";
            readonly apiKeyNotSet: "(not set)";
            readonly apiKeyPlaceholder: "Paste Serper API key";
        };
        readonly pluginsDialog: {
            readonly title: "Plugins";
            readonly hint: "Select a plugin to configure  •  Esc Close";
            readonly serperSearch: "Serper Search";
            readonly serperSearchDetail: "Web search via Serper API";
            readonly configured: "Configured";
            readonly notConfigured: "Not configured";
            readonly serperConfigTitle: "Serper Search Settings";
            readonly serperConfigHint: "Enter Apply  •  Esc Cancel";
        };
        readonly mcpSettingsDialog: {
            readonly title: "MCP";
            readonly hint: "Edit the mcp.json file to configure MCP servers  •  Esc Close";
            readonly configFileLabel: "Config file:";
            readonly noServersHint: "No MCP servers configured yet.";
            readonly serverCount: "{count} server(s) configured";
            readonly guideText: "Edit the file above to add or modify MCP servers.";
            readonly openFile: "Open File";
            readonly reload: "Reload";
            readonly close: "Close";
            readonly reloaded: "MCP config reloaded.";
            readonly reloadFailed: "Failed to reload: {error}";
            readonly status: "Status";
            readonly toolCount: "Tools";
            readonly disabled: "disabled";
            readonly testConnection: "Test";
            readonly testing: "Testing connections...";
            readonly testComplete: "Test complete.";
            readonly testPartial: "Test complete with errors.";
            readonly testFailed: "Connection failed: {error}";
            readonly invalidJson: "Invalid JSON: {error}";
            readonly invalidShape: "Invalid MCP JSON: expected \"mcpServers\".";
            readonly invalidServer: "Invalid MCP server: {name}";
            readonly noServers: "No MCP servers found.";
            readonly lintOk: "JSON syntax OK";
            readonly lintAt: "{error} (line {line}, col {column})";
            readonly lintUnclosed: "Unclosed {char} (line {line}, col {column})";
            readonly lintInvalid: "{error}";
            readonly exampleFormat: "Example format:";
        };
        readonly toolApprovalsDialog: {
            readonly title: "Tool Approvals";
            readonly useAuto: "Auto";
            readonly useNormal: "Normal";
            readonly useStrict: "Strict";
            readonly close: "Close";
            readonly focusedTitleAuto: "AUTO";
            readonly focusedTitleNormal: "NORMAL";
            readonly focusedTitleStrict: "STRICT";
            readonly focusedTitleClose: "CLOSE";
            readonly focusedDescAuto: "Auto-approve all tool calls. No approval prompts (fastest, least safe).";
            readonly focusedDescNormal: "Auto-approve read-only tools. Prompt before write/execute tools.";
            readonly focusedDescStrict: "Require confirmation for every tool call (safest, slowest).";
            readonly focusedDescClose: "Close this dialog without changing the current setting.";
            readonly currentPrefix: "Current: {mode}";
            readonly tip: "Tip: use ←/→ to move between buttons, Enter to confirm, Esc to close.";
        };
        readonly settingsDialog: {
            readonly pendingApproval: "Resolve the pending approval before changing settings.";
            readonly invalidShortcut: "Invalid shortcut for {label}: {value}";
            readonly shortcutCommands: "Commands shortcut";
            readonly shortcutTimeline: "Timeline shortcut";
            readonly shortcutNewSession: "New session shortcut";
            readonly toolApprovalsApplied: "Tool approvals: {mode}";
            readonly applied: "Settings applied.";
        };
        readonly exitAppDialog: {
            readonly title: "Exit DimCode";
            readonly confirm: "Exit now?";
            readonly warning: "An agent response is still in progress. Exiting will interrupt it.";
            readonly reasonPrefix: "Reason: {reason}";
        };
        readonly approvalDialog: {
            readonly title: "Approve Tool Permission";
            readonly toolLabel: "Tool: {tool}{suffix}";
            readonly toolLabelSuffix: " ({description})";
            readonly permissionLabel: "Permission: {permission} ({risk})";
            readonly descriptionLabel: "Description: {description}";
            readonly commandLabel: "Command:";
            readonly inlineActionHint: "↑/← Prev  ↓/→ Next  Enter Confirm  1/2/3 Choose";
            readonly inlineActionHintCompact: "←/→ Move  Enter Confirm  1/2/3 Choose";
            readonly buttons: {
                readonly approve: "Approve";
                readonly alwaysApprove: "Always approve";
                readonly deny: "Deny";
                readonly always: "Always";
                readonly ok: "OK";
                readonly no: "No";
                readonly y: "Y";
                readonly all: "All";
                readonly n: "N";
            };
        };
        readonly askUserDialog: {
            readonly noQuestionsTitle: "No Questions";
            readonly noQuestionsBody: "No questions to answer.";
            readonly title: "Question {index}/{total}: {header}";
            readonly defaultHeader: "Question";
            readonly prev: "Prev";
            readonly next: "Next";
            readonly submit: "Submit";
            readonly otherOption: "Other";
            readonly otherDetail: "Provide a custom answer";
            readonly inlineHintOptions: "Keys: ↑↓ to move, ←→ to switch questions, Enter to select.";
            readonly inlineHintMulti: "Multi-select: Space toggles checked state.";
            readonly inlineHintButtons: "Tab to buttons, ←→ to switch, Enter to activate, ↑ returns to options.";
            readonly inlineHintNav: "Ctrl+Left / Ctrl+Right (or Ctrl+A / Ctrl+E) to switch questions.";
            readonly inlineHintSubmit: "Ctrl+Enter submits, Esc cancels.";
            readonly inlineButtonPrev: "[Prev]";
            readonly inlineButtonNext: "[Next]";
            readonly inlineButtonSubmit: "[Submit]";
            readonly inlineButtonCancel: "[Cancel]";
            readonly inlineActionHint: "Space Select  ← Prev  → Next  Enter Next/Submit  Esc Cancel";
            readonly inlineActionHintCompact: "Space Select  ←/→ Prev/Next  Enter Next/Submit  Esc Cancel";
            readonly optionsSummaryAll: "{count} options";
            readonly optionsSummaryVisibleMore: "{count} options ({start}-{end}) ↓ more";
            readonly multiSelectHint: "[Multi-select] Space to toggle, Enter to confirm";
            readonly singleSelectHint: "[Single-select] Use arrows, Enter to confirm";
            readonly customAnswerLabel: "Custom answer:";
            readonly customAnswerPlaceholder: "Type your answer...";
            readonly otherPlaceholder: "Other selected — type your answer and press Enter to fill.";
        };
        readonly nextApiOAuthDialog: {
            readonly title: "Next API OAuth Login";
            readonly copyUrl: "Copy URL";
            readonly login: "Login";
            readonly logout: "Logout";
            readonly statusTitle: "Status";
            readonly statusAuthenticated: "✓ Logged in as {email}";
            readonly statusLoading: "⏳ Authenticating...";
            readonly statusNotLoggedIn: "✗ Not logged in";
            readonly instructionAuthenticated: "Use ↑↓ to navigate, Enter to select, or numbers 1-9";
            readonly instructionLoading: "Press C to copy the URL below if browser did not open";
            readonly instructionNeedsSetup: "Check the Next API OAuth client redirect_uri, scopes, and enabled state, then try again";
            readonly instructionWithUrl: "Press C to copy the OAuth URL below, or press Enter to open browser";
            readonly instructionUnauthed: "Press Enter to login with Next API OAuth, or Esc to close";
            readonly oauthUrlTitleLoading: "OAuth URL (copy if browser did not open)";
            readonly oauthUrlTitleReady: "OAuth URL (ready to use)";
            readonly scrollIndicator: " [{start}-{end} of {total}]";
            readonly selectModelTitle: "Select Model (↑↓/1-9, Enter to select){indicator}";
            readonly aboutTitle: "About Next API OAuth";
            readonly setupTitle: "OAuth login error";
            readonly aboutBulletOne: "• Uses the built-in FAZHI Tech Next API OAuth client";
            readonly aboutBulletTwo: "• Fetches relay models after login and stores provider config";
            readonly aboutBulletThree: "• Uses OAuth refresh tokens instead of a long-lived API key";
            readonly viewAllPlans: "View All Plans →";
            readonly defaultAccount: "Next API Account";
            readonly toast: {
                readonly generatingUrl: "Generating OAuth URL...";
                readonly urlReady: "OAuth URL ready! Copy it or press Enter to open browser.";
                readonly generateUrlFailed: "Failed to generate OAuth URL: {error}";
                readonly startingLogin: "Starting OAuth login...";
                readonly browserOpened: "Browser opened. If not, copy the URL from the dialog.";
                readonly copyUrlToLogin: "Copy the OAuth URL from the dialog to login.";
                readonly urlCopied: "OAuth URL copied to clipboard.";
                readonly urlCopyFailed: "Failed to copy OAuth URL.";
                readonly authSuccess: "Successfully authenticated with Next API OAuth!";
                readonly loginFailed: "OAuth login failed: {error}";
                readonly loggedOut: "Logged out from Next API OAuth";
                readonly loggedOutWithRemoteWarning: "Logged out from Next API OAuth, but remote revoke failed: {error}";
                readonly logoutFailed: "Logout failed: {error}";
                readonly initFailed: "Dialog initialization error: {error}";
                readonly modelSwitched: "Model switched to {model}";
                readonly selectModelFailed: "Failed to select model: {error}";
            };
        };
        readonly debugTryDialog: {
            readonly titleDebug: "Debug";
            readonly titleDebugging: "Debugging";
            readonly copy: "copy";
            readonly proceed: "proceed";
            readonly fixed: "fixed";
            readonly body: "I’ve added debug logs (and possibly a fix). Please try to reproduce the issue now, then choose an outcome.";
        };
        readonly exitSessionDialog: {
            readonly title: "Exit Session";
            readonly confirm: "Exit the current session and return to Home?";
            readonly note: "Next message will start a new session.";
        };
        readonly messageActionsDialog: {
            readonly title: "Message Actions";
            readonly revert: "Revert messages";
            readonly revertWithFiles: "Revert messages and file changes";
            readonly revertKeepFiles: "Revert messages (keep file changes)";
            readonly revertFilesOnly: "Revert file changes only";
            readonly copy: "Copy message text to clipboard";
            readonly fork: "Fork create a new session";
            readonly pin: "Pin message";
            readonly unpin: "Unpin message";
        };
        readonly pathPickerDialog: {
            readonly hint: "↑/↓ select • Tab complete • Enter confirm • Esc close";
        };
        readonly providerConnectDialog: {
            readonly title: "Connect {provider}";
            readonly providerFallback: "Provider";
            readonly hint: "Tab switch • Ctrl+C clear • Enter Apply";
            readonly hintOpenAI: "Tab switch • Ctrl+C clear • Enter Apply";
            readonly hintGemini: "Tab switch • Ctrl+C clear • Enter Apply";
            readonly hintAnthropic: "Tab switch • Ctrl+C clear • Enter Apply";
            readonly hintGeneric: "Tab switch • Ctrl+C clear • Enter Apply";
            readonly applyingHint: "Testing connection, please wait...";
            readonly applyingButton: "Applying...";
            readonly testConnection: "Test connection";
            readonly baseUrlStatusAutoFix: "Auto-fix: {value}";
            readonly baseUrlStatusInvalid: "Base URL must be http(s)";
            readonly baseUrlTitle: "Base URL";
            readonly baseUrlPlaceholder: "https://api.example.com/v1";
            readonly apiKeyTitle: "API Key";
            readonly apiKeyPlaceholder: "Paste a new key to update (leave empty to keep)";
            readonly apiKeyCurrent: "Current: {value}";
            readonly apiKeyNotSet: "Current: (not set)";
            readonly clearKey: "Delete";
            readonly useDetectedKey: "Use {name}";
        };
        readonly redoConfirmDialog: {
            readonly title: "Confirm Redo";
            readonly body: "Are you sure you want to restore the reverted messages?";
        };
        readonly renameSessionDialog: {
            readonly title: "Rename session";
            readonly label: "Session name";
            readonly placeholder: "e.g. Planning notes";
        };
        readonly sessionsDialog: {
            readonly timeNow: "now";
            readonly timeMinutes: "{count} min";
            readonly timeHours: "{count} hr";
            readonly timeDays: "{count} d";
            readonly newSession: "New session";
            readonly title: "Sessions ({count})";
            readonly titleScoped: "Sessions ({count}/{total})";
            readonly scope: "Scope: {cwd}";
            readonly loading: "Loading…";
            readonly confirmDelete: "Confirm delete: press Delete again";
            readonly header: "{count} sessions • Arrow keys to navigate • Enter selects{range}{activity}";
            readonly headerRange: " • Showing {start}-{end}";
            readonly runningCount: "{count} running";
            readonly pausedCount: "{count} waiting confirmation";
            readonly hint: "Type to jump • ←/→ buttons • Enter confirm • Esc close";
            readonly focusPrefix: "Focus: {focus}";
            readonly focusList: "List";
            readonly focusButtons: "Buttons";
            readonly noSessionsCwd: "No sessions in this cwd";
            readonly noSessions: "No saved sessions yet";
            readonly nodeOnly: "Sessions are only available in Node/CLI mode.";
            readonly newSessionTitle: "New Session";
            readonly newSessionTarget: "a new session";
            readonly busy: {
                readonly agentResponding: "Agent is still responding";
                readonly awaitingAskUser: "Awaiting AskUser answers";
                readonly awaitingToolApproval: "Awaiting tool approval";
                readonly pendingApproval: "Pending approval";
            };
            readonly buttons: {
                readonly open: "Open";
                readonly delete: "Delete";
                readonly deleteConfirm: "Delete (confirm)";
                readonly scope: "Scope: {scope}";
                readonly scopeCwd: "CWD";
                readonly scopeAll: "All";
                readonly refresh: "Refresh";
            };
        };
        readonly switchSessionDialog: {
            readonly title: "Switch Session";
            readonly confirm: "Switch & Interrupt";
            readonly target: "Switch to {target}?";
            readonly fallback: "Switch sessions now?";
            readonly warning: "This will interrupt the current response/flow in the active session.";
            readonly reason: "Reason: {reason}";
        };
        readonly themeDialog: {
            readonly title: "Theme";
            readonly hint: "Enter Apply  •  Esc Cancel";
            readonly mode: "Mode";
            readonly light: "Light";
            readonly dark: "Dark";
            readonly tip: "Tip: default follows system theme.";
        };
        readonly commandPalette: {
            readonly searchPlaceholder: "Search…";
            readonly noMatches: "No matches";
            readonly hint: "Type to filter • Enter: open • Esc: close";
            readonly title: "Commands";
        };
        readonly help: {
            readonly title: "Help";
            readonly modeLabel: "Mode: {mode}";
            readonly modeDetail: "Current assistant mode.";
            readonly shortcutsLabel: "Shortcuts";
            readonly onboarding: "Welcome! Quick start:\n1) /connect: connect a provider\n2) /models: pick a model\n3) send \"hello\" to start chatting\nTip: {commandsKey} opens command palette.";
            readonly items: {
                readonly help: "Help and shortcuts (F1)";
                readonly commands: "Command palette (Ctrl+P)";
                readonly back: "Back to the previous jump";
                readonly status: "Toggle status details";
            };
        };
        readonly commands: {
            readonly help: {
                readonly label: "Help";
                readonly detail: "Shortcuts + common commands (F1)";
            };
            readonly sessions: {
                readonly label: "Sessions";
                readonly detail: "Pick or create a session (/sessions)";
            };
            readonly timeline: {
                readonly label: "Timeline";
                readonly detail: "Jump to a user message (/timeline)";
            };
            readonly trace: {
                readonly label: "Request Trace";
                readonly detail: "Inspect the current session request trace (/trace)";
            };
            readonly newSession: {
                readonly label: "New Session";
                readonly detail: "Start a new session (/new)";
            };
            readonly connectProvider: {
                readonly label: "Connect Provider";
                readonly detail: "Connect a provider (/connect)";
            };
            readonly models: {
                readonly label: "Models";
                readonly detail: "Select a model (/models)";
            };
            readonly toolApprovals: {
                readonly label: "Tool Approvals";
                readonly detail: "Configure approvals (/approvals)";
            };
            readonly toolSettings: {
                readonly label: "Tool Settings";
                readonly detail: "Configure tool-specific settings (/tool-settings)";
            };
            readonly mcpHub: {
                readonly label: "MCP";
                readonly detail: "Manage MCP connectors and settings (/mcp)";
            };
            readonly plugins: {
                readonly label: "Plugins";
                readonly detail: "Manage plugins (/plugins)";
            };
            readonly mcpSettings: {
                readonly label: "MCP (Advanced JSON)";
                readonly detail: "Configure raw MCP server JSON (/mcp-settings)";
            };
            readonly language: {
                readonly label: "Language";
                readonly detail: "Switch UI language (/language)";
            };
            readonly settings: {
                readonly label: "Settings";
                readonly detail: "Custom provider settings (/settings, Ctrl+K)";
            };
        };
        readonly homePage: {
            readonly multilineTitle: "Multiline Text";
            readonly multilineTitleWithCount: "Multiline Text ({count} lines)";
            readonly providerCustom: "Custom";
            readonly reviewPrompt: "help me review the code changes";
            readonly footerCwd: "cwd {cwd}";
            readonly hints: {
                readonly switchMode: "switch mode";
                readonly commands: "commands";
            };
            readonly tips: {
                readonly greeting: "Welcome back! Try {commandsKey} or {init} to get started.";
                readonly commandsAlias: "Tip: {key} opens the command palette.";
            };
            readonly prompts: {
                readonly help: "Help & shortcuts (F1)";
                readonly sessions: "List/pick sessions";
                readonly connect: "Connect a provider";
                readonly models: "Select a model";
                readonly newSession: "Start a new session";
                readonly approvals: "Configure tool approvals (auto/normal/strict)";
                readonly commands: "Open command palette";
                readonly toolSettings: "Configure tool-specific settings";
                readonly mcpSettings: "Open MCP";
                readonly plugins: "Manage plugins";
                readonly language: "Switch UI language";
                readonly theme: "Select a theme";
                readonly status: "Toggle status details";
                readonly review: "Review code changes";
                readonly init: "Initialize/improve AGENTS.md";
                readonly skills: "List loaded skills";
                readonly exit: "Exit the application";
                readonly debug: "Debug dialog (chat)";
                readonly settings: "Custom provider settings";
            };
            readonly commandPalette: {
                readonly connect: "Connect a provider";
                readonly models: "Select a model";
            };
            readonly commands: {
                readonly debugLabel: "Debug";
                readonly debugDetail: "Runtime stats (/debug)";
            };
            readonly toast: {
                readonly approvalsUsage: "Use /approvals (no on/off).";
                readonly customProviderOnly: "Settings only for custom providers.";
                readonly redoChatOnly: "Redo is only available in the chat view.";
                readonly retryChatOnly: "Retry is only available in the chat view.";
                readonly pinsChatOnly: "Pins are only available in the chat view.";
                readonly renameChatOnly: "Rename is only available in the chat view (/rename <title>).";
                readonly commandRemoved: "This command is no longer available: {command}";
                readonly helpAliasRemoved: "Press F1 for help.";
                readonly deleteConfirm: "Press Delete again to confirm.";
                readonly themeToggled: "Theme: {mode}";
                readonly pasteImagePending: "Image is still processing. Please wait.";
            };
        };
        readonly chatPage: {
            readonly placeholder: "Ask anything... (newline: Shift+Enter or Ctrl+J)";
            readonly placeholderAwaitingApproval: "Blocked by approval: select Approve / Deny to continue.";
            readonly reviewPrompt: "help me review the code changes";
            readonly notification: {
                readonly approvalTitle: "[Approval Required] Tool Permission";
                readonly approvalMessage: "DimCode is waiting for tool approval: {tool}.";
                readonly doneTitle: "[Task Complete]";
                readonly doneMessage: "DimCode finished this task.";
                readonly doneMessageWithDuration: "DimCode finished this task in {duration}.";
                readonly doneMessageWithTools: "DimCode finished this task after {tools} tool call(s).";
                readonly doneMessageWithToolsAndDuration: "DimCode finished this task in {duration} with {tools} tool call(s).";
            };
            readonly headerStats: "{messages} msgs · {tokens} tok";
            readonly contextChip: "≈{pct}% / {tokens} tok";
            readonly contextChipCompact: "{pct}%";
            readonly thinkingWords: "Coalescing,Thinking,Reasoning,Planning,Analyzing,Synthesizing,Refining,Composing";
            readonly modelFallback: "model";
            readonly mode: {
                readonly plan: "plan";
                readonly agent: "agent";
                readonly debug: "debug";
            };
            readonly status: {
                readonly approvalsAuto: "AUTO";
                readonly approvalsAll: "ALL";
                readonly blockedByApproval: "Blocked by approval";
                readonly awaitingApprovalAction: "Waiting for your approval: choose Approve / Deny to continue.";
            };
            readonly footer: {
                readonly dragSelect: "drag to select";
                readonly openLink: "Ctrl+Click to open files or links";
                readonly esc: "esc";
                readonly interrupt: "interrupt";
                readonly approvalPaused: "⏸ Paused";
                readonly approvalPausedHint: "Waiting for approval (Enter to choose).";
                readonly shortcuts: "Ctrl+K: config    Ctrl+O: expand/collapse tools & thinking    Cmd+Delete/Ctrl+W: clear input    Tab: switch mode    {commandsKey}: commands";
                readonly shortcutsCompact: "Ctrl+K: config    Ctrl+O: tools/thinking    Cmd+Delete/Ctrl+W: clear    Tab: switch mode    {commandsKey}: commands";
                readonly shortcutsMicro: "Ctrl+O: tools    {commandsKey}: commands";
                readonly shortcutsMini: "{commandsKey}: commands";
            };
            readonly session: {
                readonly new: "new";
            };
            readonly timeline: {
                readonly title: "Timeline";
                readonly empty: "(empty)";
                readonly filterAll: "All messages";
                readonly filterUser: "User messages";
                readonly filterTool: "Tool calls";
            };
            readonly pins: {
                readonly title: "Pinned";
                readonly empty: "(empty)";
            };
            readonly jumpToBottom: {
                readonly button: "↓";
            };
            readonly prompts: {
                readonly help: "Help & shortcuts (F1)";
                readonly newSession: "Start a new session";
                readonly resume: "Resume the paused queue";
                readonly sessions: "List/pick sessions";
                readonly timeline: "Jump to a user message";
                readonly trace: "Inspect the current session request/event trace";
                readonly pins: "Open pinned messages";
                readonly pin: "Pin the last message";
                readonly back: "Back to previous jump";
                readonly connect: "Connect a provider";
                readonly models: "Select a model";
                readonly theme: "Switch UI theme";
                readonly approvals: "Configure tool approvals (auto/normal/strict)";
                readonly commands: "Open command palette";
                readonly toolSettings: "Configure tool-specific settings";
                readonly mcpSettings: "Open MCP";
                readonly plugins: "Manage plugins";
                readonly language: "Switch UI language";
                readonly status: "Toggle status details";
                readonly review: "Review code changes";
                readonly retry: "Retry the last user message";
                readonly compact: "Compact session context";
                readonly init: "Initialize/improve AGENTS.md";
                readonly rename: "Rename current session";
                readonly skills: "List loaded skills";
                readonly exit: "Exit the application";
                readonly debug: "Debug dialog";
                readonly settings: "Custom provider settings";
            };
            readonly commands: {
                readonly pinsLabel: "Pins";
                readonly pinsDetail: "Open pinned messages";
                readonly backLabel: "Back";
                readonly backDetail: "Return to the previous jump";
                readonly debugLabel: "Debug";
                readonly debugDetail: "Runtime stats (/debug)";
                readonly statusLabel: "Status";
                readonly statusDetail: "Toggle status details";
                readonly themeLabel: "Theme";
                readonly themeDetail: "Switch color theme";
            };
            readonly tips: {
                readonly contextWarn: "Tip: Context is getting full. Consider /compact or /new to keep replies sharp.";
                readonly contextCritical: "Tip: You are near the context limit. Start a new session with /new (or /compact first).";
                readonly timeline: "Tip: Long chat? Use /tl to jump back to a specific user message.";
                readonly timelineAlias: "Tip: /tl is a short alias for /timeline.";
                readonly commandsAlias: "Tip: {key} opens the command palette.";
                readonly errorRecovery: "Tip: If something failed, try /compact or /new.";
                readonly greeting: "Welcome back! Try {commandsKey} or {init} to get started.";
                readonly compactDelight: "Nice! Keeping context lean helps.";
                readonly addTests: "All set! Want me to add tests? Reply “yes” or “ok”.";
            };
            readonly trace: {
                readonly title: "Session Trace";
                readonly loading: "Loading session trace...";
                readonly empty: "No request trace is available for this session yet.";
                readonly error: "Failed to load session trace.";
                readonly summary: "{requests} requests · {events} events";
                readonly hint: "Arrow keys switch requests · Refresh reloads · Esc closes";
                readonly sessionEvents: "Session-level events";
                readonly requestFallback: "(empty prompt)";
                readonly counts: "{events} events · {runs} runs · {tools} tools · {children} child tasks · {compactions} compactions";
                readonly moreEvents: "… {count} more events";
            };
            readonly confirm: {
                readonly addTests: "Please add tests for the changes we just made.";
            };
            readonly toast: {
                readonly customProviderOnly: "Settings only for custom providers.";
                readonly renameNodeOnly: "Rename is only available in Node/CLI mode.";
                readonly noActiveSession: "No active session to rename.";
                readonly sessionNameEmpty: "Session name cannot be empty.";
                readonly sessionRenamed: "Renamed session to: {title}";
                readonly renameFailed: "Failed to rename session.";
                readonly linkOpenHint: "Tip: Ctrl+Click to open files or links.";
                readonly copySuccess: "Copied";
                readonly copyFailed: "Copy failed";
                readonly forkFailed: "Failed to fork session.";
                readonly backEmpty: "No previous jump to return to.";
                readonly pinsEmpty: "No pinned messages yet.";
                readonly pinEmpty: "No message to pin yet.";
                readonly pinned: "Pinned message.";
                readonly unpinned: "Unpinned message.";
                readonly debugUnavailable: "Debug server is unavailable.";
                readonly approvalsUsage: "Use /approvals (no on/off).";
                readonly debugDialogOpened: "Debug dialog opened.";
                readonly debugDialogClosed: "Debug dialog closed.";
                readonly traceUnavailable: "Session trace is unavailable in this runtime.";
                readonly renameUsage: "Usage: /rename <title>";
                readonly themeToggled: "Theme: {mode}";
                readonly statusCompactOn: "Status: compact";
                readonly statusCompactOff: "Status: detailed";
                readonly compactingSession: "Compacting session...";
                readonly compactSuccess: "Session compacted: {message}";
                readonly compactWarning: "Session compacted with limited gain: {message}";
                readonly compactSuccessDetailWithTokens: "Folded the first {count} history messages into a summary. Estimated input {before} -> {after} tokens, saving about {saved} tokens.";
                readonly compactSuccessDetailNotReduced: "Folded the first {count} history messages into a summary, but the estimated input changed from {before} to {after} tokens, so this did not reduce request size.";
                readonly compactSuccessDetailCountOnly: "Folded the first {count} history messages into a summary.";
                readonly compactSuccessDetailSummaryOnly: "Generated a fresh conversation summary.";
                readonly compactFailed: "Failed to compact session: {error}";
                readonly compactFailedTokenLimit: "Compaction failed due to insufficient context budget. Set DIMCODE_CONTEXT_WINDOW correctly, switch to a larger-context model, or use /new. Detail: {error}";
                readonly retryEmpty: "No previous user message to retry.";
                readonly commandRemoved: "This command is no longer available: {command}";
                readonly helpAliasRemoved: "Press F1 for help.";
                readonly waitForResponse: "Please wait for the current response to complete, or press Esc to interrupt.";
                readonly pasteImagePending: "Image is still processing. Please wait.";
                readonly pendingApproval: "Please handle tool_approve first.";
                readonly awaitingApprovalAction: "Paused: action needed. Choose Approve / Always approve / Deny in the permission card.";
                readonly awaitingApprovalStillWaiting: "Still waiting for approval ({seconds}s). The model will not continue until you approve or deny.";
                readonly pendingAskUser: "Please handle ask_user first.";
                readonly sessionBusyElsewhere: "Another window is still running this session. Wait for it to finish before sending here.";
                readonly notificationSessionBusy: "This notification belongs to another busy session. Finish that work or switch sessions manually first.";
                readonly notificationSessionUnavailable: "Cannot open the session for this notification here.";
                readonly notificationSessionSwitchFailed: "Failed to open the session for this notification.";
                readonly approvalNotActive: "This approval is queued. Resolve the active one first.";
                readonly askUserNotActive: "This ask_user request is no longer active.";
            };
        };
        readonly chatQueue: {
            readonly label: "Queue ({count})";
            readonly labelCompact: "Queue {count}";
            readonly more: "+{count} more…";
            readonly resumeToken: "/resume";
            readonly resumePlainToken: "resume";
            readonly resumeLegacyToken: "resume queue";
            readonly state: {
                readonly idle: "Pending";
                readonly running: "Running";
                readonly paused: "Paused";
                readonly error: "Error";
            };
            readonly item: {
                readonly steerAction: "Steer";
                readonly steerReady: "First";
                readonly steerPending: "Next";
                readonly steerPaused: "Paused";
            };
            readonly toast: {
                readonly enqueued: "Added to queue (#{count}).";
                readonly full: "Queue is full (max 5). Delete one or start /new.";
                readonly cleared: "Cleared {count} queued item(s).";
                readonly deleted: "Deleted {count} queued item(s). Ctrl+Z to undo.";
                readonly steerPromoted: "Upgraded to steer. It will run first when the queue resumes.";
                readonly steerQueued: "Steer cannot be injected immediately. It was promoted and will run first on the next round.";
                readonly steerSent: "Steer accepted. It will be injected before the next model call in this round.";
                readonly undo: "Queue delete undone.";
                readonly pausedTip: "Queue paused. Use {resume} or {resumeText} to continue, or send a new message to choose what to do.";
                readonly stale: "Queue paused: request looks stuck.";
            };
            readonly confirm: {
                readonly title: "Continue queued messages?";
                readonly description: "Previous request did not finish. {count} queued message(s) waiting.";
                readonly hint: "Continue to send the next item, or pause the queue.";
                readonly continue: "Continue";
                readonly pause: "Pause";
                readonly reason: "Reason: {reason}";
            };
            readonly reason: {
                readonly network_error: "Network error.";
                readonly timeout: "Request timed out.";
                readonly canceled_by_user: "Canceled by user.";
                readonly rate_limited: "Rate limited.";
                readonly config_unavailable: "Saved config unavailable.";
                readonly unknown: "Request failed.";
            };
            readonly draftDecision: {
                readonly title: "Queue is paused";
                readonly description: "{count} queued message(s) are still waiting. Decide what to do with your new input.";
                readonly previewLabel: "New input:";
                readonly continue: "Continue queue";
                readonly append: "Append to queue";
                readonly replace: "Discard queue & send";
            };
        };
        readonly chatStatus: {
            readonly done: "Done.";
            readonly error: "Error.";
            readonly interrupted: "Interrupted.";
            readonly permissionDenied: "Permission denied.";
            readonly planning: "Planning…";
            readonly drafting: "Drafting…";
            readonly runningTool: "Running {tool}…";
            readonly runningTools: "Running {count} tools…";
            readonly approvalPendingOther: "Another approval is pending ({permission})…";
            readonly awaitingApproval: "Awaiting approval…";
            readonly awaitingApprovalWithPerm: "Awaiting approval ({permission})…";
            readonly awaitingApprovalWithRisk: "Awaiting approval ({risk})…";
            readonly awaitingAnswers: "Awaiting answers…";
            readonly resumingApproved: "Approved. Resuming…";
            readonly resumingDenied: "Denied. Resuming…";
            readonly resuming: "Resuming…";
            readonly autoApprovingWithRisk: "Auto-approving ({risk})…";
            readonly riskFallback: "risk";
            readonly toolFallback: "tool";
            readonly thinking: "Thinking…";
            readonly autoCompactionRequired: "Context is near the limit. Compaction is required first.";
            readonly autoCompactionRequiredDetailed: "Context is near the limit · the next request is estimated at {estimated} tokens, and auto-compaction starts at {threshold} tokens, so compaction is required first.";
            readonly compressed: "Context compacted · folded {removed} older messages into a summary, saving an estimated {saved} input tokens ({elapsed}ms)";
            readonly autoCompactedDetailed: "Auto-compaction completed · folded {removed} older messages into a summary, estimated input {before} -> {after} tokens, saving about {saved} tokens";
            readonly autoCompactedNotReduced: "Auto-compaction completed · folded {removed} older messages into a summary, but the estimated input changed from {before} to {after} tokens, so this did not reduce request size";
            readonly autoCompactedSaved: "Auto-compaction completed · folded {removed} older messages into a summary, saving about {saved} tokens";
            readonly autoCompactedCountOnly: "Auto-compaction completed · folded {removed} older messages into a summary";
            readonly interruptedMarkdown: "> **Interrupted** · Response canceled by user (`Esc`).";
            readonly awaitingApprovalPrefix: "Awaiting approval";
            readonly awaitingAnswersPrefix: "Awaiting answers";
            readonly approvalPendingPrefix: "Another approval is pending";
            readonly autoApprovingPrefix: "Auto-approving";
        };
        readonly chatParts: {
            readonly thinking: "Thinking";
            readonly plan: "Plan";
            readonly todo: "Todo";
        };
        readonly chatRender: {
            readonly userLabel: "user";
            readonly outputLabel: "↳ output";
            readonly outputLabelShort: "out:";
            readonly canceled: "canceled";
            readonly inputLabel: "in:";
            readonly collapse: "... (collapse)";
            readonly moreLines: "... ({count} more lines)";
            readonly moreLinesOmitted: "... ({count} more lines omitted; set {envVar} to increase)";
            readonly streamingTail: "… (streaming: showing last {shown} chars; {omitted} omitted)";
            readonly copy: "Copy";
            readonly userResponses: "User responses:";
            readonly approvalQueued: "Waiting for earlier approval...";
            readonly proposedPlan: {
                readonly title: "Proposed Plan";
            };
            readonly llmMeta: {
                readonly changedFiles: "Changed {count} file(s): {files}";
                readonly changedFilesMore: "+{count} more";
                readonly revertHint: "Tip: Click this message -> Revert messages to undo this turn.";
                readonly changedFilesCardTitle: "changed {count} files:";
                readonly revertButton: "Revert";
            };
            readonly toolName: {
                readonly explore: "Explore";
                readonly subagent: "Subagent";
            };
            readonly toolSuffix: {
                readonly offset: "offset {value}";
                readonly limit: "limit {value}";
                readonly matches: "{count} matches";
                readonly todos: "{count} todos";
                readonly results: "{count} results";
                readonly results_one: "{count} result";
            };
            readonly toolGroup: {
                readonly readFiles: "Read {count} files";
                readonly writeFiles: "Write {count} files";
                readonly editFiles: "Edit {count} files";
                readonly globPatterns: "Glob {count} patterns";
                readonly globSingle: "Glob {pattern}";
                readonly grepPatterns: "Grep {count} patterns";
                readonly bashCommands: "Run {count} commands";
                readonly searchQueries: "Search {count} queries";
                readonly taskCount: "{name} x{count}";
                readonly generic: "{name} x{count}";
            };
        };
        readonly toolApproval: {
            readonly reason: {
                readonly search: "Search may access the network.";
                readonly bash: "Bash can execute commands.";
                readonly edit: "File changes can modify local files.";
                readonly grep: "Grep may read local files.";
            };
            readonly inlineHint: "Keys: ↑↓←→ to move, Enter to select.";
            readonly awaitingUserAction: "Waiting for your action: choose Approve / Always approve / Deny.";
            readonly decision: {
                readonly userDenied: "User denied approval";
            };
            readonly denied: {
                readonly title: "# Tool permission denied";
                readonly toolLine: "- tool: `{tool}`";
                readonly permissionLine: "- permission: `{permission}`";
                readonly hint: "You can re-select the tool_call and try again.";
            };
            readonly summary: {
                readonly title: "# Approved + executed tool";
                readonly permissionLine: "Permission `{permission}` approved for `{tool}`.";
            };
            readonly required: "Approval required ({risk}).";
            readonly args: {
                readonly commandWithDescription: "Command: {command} - {description}";
                readonly command: "Command: {command}";
                readonly description: "Description: {description}";
                readonly raw: "Args: {args}";
            };
        };
        readonly pathPicker: {
            readonly titleWorkspace: "Select Workspace";
            readonly titleFile: "Select File";
            readonly placeholderWorkspace: "Type a path (../ etc). Tab to complete. Enter selects a directory.";
            readonly placeholderFile: "Type a path (../ etc). Tab to complete. Enter selects a file.";
        };
        readonly providerDialogs: {
            readonly customLabel: "Custom";
            readonly customDetail: "custom";
            readonly nextApiOAuthLabel: "Next API Provider (OAuth)";
            readonly nextApiOAuthDetail: "Login with Next API OAuth";
            readonly addCustomLabel: "Add custom provider";
            readonly addCustomDetail: "add custom provider";
            readonly providerFallback: "Provider";
            readonly adapter: {
                readonly openai: "OpenAI";
                readonly openaiOpenRouter: "OpenAI-compatible (OpenRouter)";
                readonly openaiLocal: "OpenAI-compatible (Local endpoint)";
                readonly openaiResponses: "OpenAI Responses";
                readonly gemini: "Gemini";
                readonly anthropic: "Anthropic";
            };
            readonly status: {
                readonly configured: "Configured";
                readonly notConfigured: "Not configured";
            };
            readonly manage: {
                readonly title: "Custom provider: {provider}";
                readonly connect: "Connect";
                readonly connectDetail: "Edit API key / Base URL";
                readonly rename: "Rename";
                readonly renameDetail: "Edit provider name";
                readonly models: "Edit models";
                readonly modelsDetail: "Update available model IDs";
                readonly delete: "Delete";
                readonly deleteDetail: "Remove this provider";
            };
            readonly deleteConfirm: {
                readonly title: "Delete {provider}?";
                readonly confirm: "Delete (confirm)";
                readonly confirmDetail: "This cannot be undone";
                readonly cancelDetail: "Keep provider";
            };
            readonly nameDialog: {
                readonly title: "Name custom provider";
                readonly label: "Provider name";
                readonly placeholder: "e.g. DeepSeek (Proxy)";
            };
            readonly modelsDialog: {
                readonly title: "Custom provider models";
                readonly modelsTitle: "Models";
                readonly modelsPlaceholder: "Model IDs (, or new lines)";
                readonly hint: ", / newline • Shift+Enter newline • Enter Apply";
                readonly fetch: "Fetch models";
                readonly fetching: "Fetching models…";
            };
            readonly modelsFetchDialog: {
                readonly title: "Select models";
                readonly searchPlaceholder: "Filter models";
                readonly hint: "Space toggle  •  Enter confirm  •  Esc cancel";
            };
            readonly toast: {
                readonly modelSet: "Model set to {provider} / {model}.";
                readonly noModels: "No models available yet. Connect a provider first (/connect).";
                readonly connectFirst: "Please connect a provider first (/connect) before sending your first message.";
                readonly apiKeyRequired: "API key is required.";
                readonly baseUrlRequired: "Base URL is required.";
                readonly baseUrlInvalid: "Base URL must start with http:// or https://";
                readonly connected: "Connected to {provider}.";
                readonly connectedSelectModel: "Connected to {provider}. Choose a model.";
                readonly connectedCheckFailed: "Connected to {provider}, but self-check failed: {reason}";
                readonly connectionTestPassed: "Connection test passed: {provider}.";
                readonly connectionTestFailed: "Connection test failed: {provider} - {reason}";
                readonly connectionActionUpdateKey: "Action: reopen Connect and update API key, then test again.";
                readonly connectionActionFixBaseUrl: "Action: check Base URL path (usually ends with /v1), then test again.";
                readonly connectionActionSwitchKey: "Action: wait a moment or switch to another key/provider.";
                readonly connectionActionRetryTest: "Action: check network/proxy and run Test connection again.";
                readonly noModelsFetching: "No models yet. Fetching model list…";
                readonly firstUseGuide: "Quick start: 1) /connect  2) /models  3) send \"hello\"";
                readonly firstUseSendHello: "Next step: send your first message (for example: \"hello\").";
                readonly connectionCheckUnauthorized: "401 Unauthorized: check API key and provider type.";
                readonly connectionCheckForbidden: "403 Forbidden: your key may not have access to this provider/model.";
                readonly connectionCheckNotFound: "404 Not Found: check Base URL path (OpenAI-compatible usually ends with /v1).";
                readonly connectionCheckRateLimited: "429 Rate limited: wait and retry, or switch to another key/provider.";
                readonly connectionCheckTimeout: "Connection timed out: check network/proxy and retry.";
                readonly connectionCheckNetwork: "Network connection failed: check DNS/proxy/Base URL.";
                readonly connectionCheckFailed: "Connection check failed: {error}";
                readonly apiKeyCleared: "API key cleared for {provider}.";
                readonly customAdded: "Custom provider added: {provider}.";
                readonly customRenamed: "Custom provider renamed: {provider}.";
                readonly customModelsUpdated: "Custom provider models updated: {provider}.";
                readonly customDeleted: "Custom provider deleted: {provider}.";
                readonly modelsRequired: "Add at least one model.";
                readonly modelsEmpty: "No models found.";
                readonly modelsFetchFailed: "Failed to fetch models: {error}";
                readonly modelsFetchChatCompletions: "Model list not supported for /chat/completions or /responses base URL.";
                readonly manualModelsRequired: "This endpoint doesn't support automatic model discovery. Please manually enter model names in the models configuration.";
                readonly nameRequired: "Provider name is required.";
                readonly nameConflict: "Provider name already exists.";
            };
        };
        readonly copyToast: {
            readonly copiedToClipboard: "Copied to clipboard";
        };
    };
    readonly 'zh-CN': {
        readonly common: {
            readonly apply: "应用";
            readonly cancel: "取消";
            readonly close: "关闭";
            readonly copy: "复制";
            readonly confirm: "确认";
            readonly refresh: "刷新";
            readonly yes: "是";
            readonly no: "否";
            readonly exit: "退出";
            readonly back: "返回";
            readonly next: "下一步";
            readonly save: "保存";
            readonly empty: "—";
            readonly unknownError: "未知错误";
            readonly inputClearTip: "Ctrl+C 清空";
        };
        readonly configDialog: {
            readonly title: "设置";
            readonly hint: "Tab/Shift+Tab 切换字段  •  Enter 应用  •  Esc 取消";
            readonly modelsTitle: "模型（自定义）";
            readonly modelsPlaceholder: "model-a, model-b";
            readonly contextWindowTitle: "上下文窗口";
            readonly contextWindowLocked: "上下文窗口（模型定义）";
            readonly contextWindowPlaceholder: "128000";
            readonly temperatureTitle: "温度";
            readonly temperaturePlaceholder: "0.7";
            readonly temperatureValidationError: "温度：只能输入数字和”.”";
            readonly maxTokensTitle: "最大输出 Token 数";
            readonly maxTokensPlaceholder: "8192";
            readonly baseUrlTitle: "Base URL（OpenAI 兼容）";
            readonly baseUrlPlaceholder: "https://api.openai.com/v1";
            readonly apiKeyCurrentPrefix: "当前：";
            readonly apiKeyNotSet: "（未设置）";
            readonly apiKeyTitle: "API Key";
            readonly apiKeyPlaceholder: "粘贴新 Key 以更新（留空保持不变）";
            readonly interleavedThinkingTitle: "交错思考（空格切换）";
            readonly interleavedThinkingLocked: "交错思考（模型定义）";
            readonly interleavedThinkingOpen: "开启";
            readonly interleavedThinkingClose: "关闭";
            readonly tipIntensityTitle: "提示强度";
            readonly tipIntensityOff: "关闭";
            readonly tipIntensityLow: "低";
            readonly tipIntensityStandard: "标准";
            readonly shortcutsTitle: "快捷键";
            readonly shortcutCommandsLabel: "命令面板";
            readonly shortcutTimelineLabel: "时间线";
            readonly shortcutNewSessionLabel: "新会话";
            readonly shortcutsPlaceholder: "如 mod+p";
            readonly shortcutsHint: "使用 mod/ctrl/alt/shift + 键（a-z, 0-9, F1-F12）。";
        };
        readonly languageDialog: {
            readonly title: "语言";
            readonly hint: "Enter 应用  •  Esc 取消";
            readonly languageTitle: "语言";
            readonly languageEnglish: "English";
            readonly languageChinese: "简体中文";
        };
        readonly toolSettingsDialog: {
            readonly title: "工具设置";
            readonly hint: "Enter 应用  •  Esc 取消";
            readonly websearchTitle: "WebSearch API Key";
            readonly apiKeyCurrentPrefix: "当前：";
            readonly apiKeyNotSet: "（未设置）";
            readonly apiKeyPlaceholder: "粘贴 Serper API Key";
        };
        readonly pluginsDialog: {
            readonly title: "插件";
            readonly hint: "选择一个插件进行配置  •  Esc 关闭";
            readonly serperSearch: "Serper Search";
            readonly serperSearchDetail: "通过 Serper API 进行网络搜索";
            readonly configured: "已配置";
            readonly notConfigured: "未配置";
            readonly serperConfigTitle: "Serper Search 设置";
            readonly serperConfigHint: "Enter 应用  •  Esc 取消";
        };
        readonly mcpSettingsDialog: {
            readonly title: "MCP";
            readonly hint: "编辑 mcp.json 文件以配置 MCP 服务器  •  Esc 关闭";
            readonly configFileLabel: "配置文件：";
            readonly noServersHint: "尚未配置 MCP 服务器。";
            readonly serverCount: "已配置 {count} 个服务器";
            readonly guideText: "编辑上方文件以添加或修改 MCP 服务器。";
            readonly openFile: "打开文件";
            readonly reload: "重新加载";
            readonly close: "关闭";
            readonly reloaded: "MCP 配置已重新加载。";
            readonly reloadFailed: "重新加载失败：{error}";
            readonly status: "状态";
            readonly toolCount: "工具数";
            readonly disabled: "禁用";
            readonly testConnection: "测试";
            readonly testing: "正在测试连接...";
            readonly testComplete: "测试完成。";
            readonly testPartial: "测试完成（有错误）。";
            readonly testFailed: "连接失败：{error}";
            readonly invalidJson: "JSON 无效：{error}";
            readonly invalidShape: "MCP JSON 无效：需要 \"mcpServers\"。";
            readonly invalidServer: "MCP 服务器配置无效：{name}";
            readonly noServers: "没有找到 MCP 服务器。";
            readonly lintOk: "JSON 语法正确";
            readonly lintAt: "{error}（第 {line} 行，第 {column} 列）";
            readonly lintUnclosed: "未闭合的 {char}（第 {line} 行，第 {column} 列）";
            readonly lintInvalid: "{error}";
            readonly exampleFormat: "示例格式：";
        };
        readonly toolApprovalsDialog: {
            readonly title: "工具审批";
            readonly useAuto: "Auto";
            readonly useNormal: "Normal";
            readonly useStrict: "Strict";
            readonly close: "关闭";
            readonly focusedTitleAuto: "AUTO";
            readonly focusedTitleNormal: "NORMAL";
            readonly focusedTitleStrict: "STRICT";
            readonly focusedTitleClose: "CLOSE";
            readonly focusedDescAuto: "所有工具自动执行，不再提示（最快，最不安全）。";
            readonly focusedDescNormal: "读取类自动通过，写入类需确认。";
            readonly focusedDescStrict: "所有工具均须确认（最安全，最慢）。";
            readonly focusedDescClose: "关闭此对话框，不更改当前设置。";
            readonly currentPrefix: "当前：{mode}";
            readonly tip: "提示：用 ←/→ 在按钮间移动，Enter 确认，Esc 关闭。";
        };
        readonly settingsDialog: {
            readonly pendingApproval: "请先处理待审批请求再更改设置。";
            readonly invalidShortcut: "快捷键无效：{label}（{value}）";
            readonly shortcutCommands: "命令面板快捷键";
            readonly shortcutTimeline: "时间线快捷键";
            readonly shortcutNewSession: "新会话快捷键";
            readonly toolApprovalsApplied: "工具审批：{mode}";
            readonly applied: "设置已应用。";
        };
        readonly exitAppDialog: {
            readonly title: "退出 DimCode";
            readonly confirm: "现在退出？";
            readonly warning: "仍有响应在进行中，退出将中断它。";
            readonly reasonPrefix: "原因：{reason}";
        };
        readonly approvalDialog: {
            readonly title: "工具权限审批";
            readonly toolLabel: "工具：{tool}{suffix}";
            readonly toolLabelSuffix: "（{description}）";
            readonly permissionLabel: "权限：{permission}（{risk}）";
            readonly descriptionLabel: "说明：{description}";
            readonly commandLabel: "命令：";
            readonly inlineActionHint: "↑/← 上一个  ↓/→ 下一个  Enter 确认  1/2/3 选择";
            readonly inlineActionHintCompact: "←/→ 移动  Enter 确认  1/2/3 选择";
            readonly buttons: {
                readonly approve: "允许";
                readonly alwaysApprove: "总是允许";
                readonly deny: "拒绝";
                readonly always: "总是";
                readonly ok: "确定";
                readonly no: "否";
                readonly y: "Y";
                readonly all: "全";
                readonly n: "N";
            };
        };
        readonly askUserDialog: {
            readonly noQuestionsTitle: "没有问题";
            readonly noQuestionsBody: "没有需要回答的问题。";
            readonly title: "问题 {index}/{total}：{header}";
            readonly defaultHeader: "问题";
            readonly prev: "上一题";
            readonly next: "下一题";
            readonly submit: "提交";
            readonly otherOption: "其他";
            readonly otherDetail: "填写自定义答案";
            readonly inlineHintOptions: "按 ↑↓ 移动，按 ←→ 切题，按 Enter 选择。";
            readonly inlineHintMulti: "多选：按 Space 勾选或取消勾选。";
            readonly inlineHintButtons: "按 Tab 切到按钮，按 ←→ 切换，按 Enter 触发，按 ↑ 回到选项。";
            readonly inlineHintNav: "Ctrl+Left / Ctrl+Right（或 Ctrl+A / Ctrl+E）切换问题。";
            readonly inlineHintSubmit: "Ctrl+Enter 提交，Esc 取消。";
            readonly inlineButtonPrev: "[上一题]";
            readonly inlineButtonNext: "[下一题]";
            readonly inlineButtonSubmit: "[提交]";
            readonly inlineButtonCancel: "[取消]";
            readonly inlineActionHint: "Space 选择  ← 上一题  → 下一题  Enter 下一题/提交  Esc 取消";
            readonly inlineActionHintCompact: "Space 选择  ←/→ 切题  Enter 下一题/提交  Esc 取消";
            readonly optionsSummaryAll: "共 {count} 个选项";
            readonly optionsSummaryVisibleMore: "共 {count} 个选项（{start}-{end}）↓ 更多";
            readonly multiSelectHint: "[多选] 空格切换，Enter 确认";
            readonly singleSelectHint: "[单选] 方向键移动，Enter 确认";
            readonly customAnswerLabel: "自定义答案：";
            readonly customAnswerPlaceholder: "请输入答案…";
            readonly otherPlaceholder: "已选“其他”：输入自定义答案，回车填入。";
        };
        readonly nextApiOAuthDialog: {
            readonly title: "Next API OAuth 登录";
            readonly copyUrl: "复制链接";
            readonly login: "登录";
            readonly logout: "退出登录";
            readonly statusTitle: "状态";
            readonly statusAuthenticated: "✓ 已登录：{email}";
            readonly statusLoading: "⏳ 正在认证…";
            readonly statusNotLoggedIn: "✗ 未登录";
            readonly instructionAuthenticated: "使用 ↑↓ 导航，Enter 选择，或按 1-9";
            readonly instructionLoading: "若浏览器未打开，按 C 复制下方链接";
            readonly instructionNeedsSetup: "请检查 Next API 端 OAuth client 的 redirect_uri、scope 和启用状态后重试";
            readonly instructionWithUrl: "按 C 复制下方 OAuth 链接，或按 Enter 打开浏览器";
            readonly instructionUnauthed: "按 Enter 使用 Next API OAuth 登录，或按 Esc 关闭";
            readonly oauthUrlTitleLoading: "OAuth 链接（浏览器未打开时复制）";
            readonly oauthUrlTitleReady: "OAuth 链接（可直接使用）";
            readonly scrollIndicator: " [{start}-{end} / 共 {total}]";
            readonly selectModelTitle: "选择模型（↑↓/1-9，Enter 选择）{indicator}";
            readonly aboutTitle: "关于 Next API OAuth";
            readonly setupTitle: "OAuth 登录异常";
            readonly aboutBulletOne: "• 内置使用 FAZHI Tech 的 Next API OAuth client";
            readonly aboutBulletTwo: "• 登录后会拉取 relay 模型并保存 provider 配置";
            readonly aboutBulletThree: "• 使用 OAuth refresh token，而不是长期 API Key";
            readonly viewAllPlans: "查看所有方案 →";
            readonly defaultAccount: "Next API 账号";
            readonly toast: {
                readonly generatingUrl: "正在生成 OAuth 链接…";
                readonly urlReady: "OAuth 链接已就绪！复制或按 Enter 打开浏览器。";
                readonly generateUrlFailed: "生成 OAuth 链接失败：{error}";
                readonly startingLogin: "正在开始 OAuth 登录…";
                readonly browserOpened: "已打开浏览器，如未打开请从对话框复制链接。";
                readonly copyUrlToLogin: "请从对话框复制 OAuth 链接登录。";
                readonly urlCopied: "OAuth 链接已复制到剪贴板。";
                readonly urlCopyFailed: "复制 OAuth 链接失败。";
                readonly authSuccess: "已成功通过 Next API OAuth 认证！";
                readonly loginFailed: "OAuth 登录失败：{error}";
                readonly loggedOut: "已退出 Next API OAuth 登录";
                readonly loggedOutWithRemoteWarning: "已退出 Next API OAuth 登录，但服务端撤销失败：{error}";
                readonly logoutFailed: "退出登录失败：{error}";
                readonly initFailed: "初始化对话框失败：{error}";
                readonly modelSwitched: "已切换模型：{model}";
                readonly selectModelFailed: "选择模型失败：{error}";
            };
        };
        readonly debugTryDialog: {
            readonly titleDebug: "调试";
            readonly titleDebugging: "正在调试";
            readonly copy: "复制";
            readonly proceed: "继续";
            readonly fixed: "已修复";
            readonly body: "我已添加调试日志（并可能修复了问题）。请现在尝试复现，然后选择结果。";
        };
        readonly exitSessionDialog: {
            readonly title: "退出会话";
            readonly confirm: "退出当前会话并返回首页？";
            readonly note: "下一条消息将开启新会话。";
        };
        readonly messageActionsDialog: {
            readonly title: "消息操作";
            readonly revert: "撤回消息";
            readonly revertWithFiles: "撤回消息及文件改动";
            readonly revertKeepFiles: "撤回消息（保留文件更改）";
            readonly revertFilesOnly: "只回滚文件改动";
            readonly copy: "复制消息文本到剪贴板";
            readonly fork: "分叉创建新会话";
            readonly pin: "置顶消息";
            readonly unpin: "取消置顶";
        };
        readonly pathPickerDialog: {
            readonly hint: "↑/↓ 选择 • Tab 补全 • Enter 确认 • Esc 关闭";
        };
        readonly providerConnectDialog: {
            readonly title: "连接 {provider}";
            readonly providerFallback: "提供方";
            readonly hint: "Tab 切换 • Ctrl+C 清空 • Enter 应用";
            readonly hintOpenAI: "Tab 切换 • Ctrl+C 清空 • Enter 应用";
            readonly hintGemini: "Tab 切换 • Ctrl+C 清空 • Enter 应用";
            readonly hintAnthropic: "Tab 切换 • Ctrl+C 清空 • Enter 应用";
            readonly hintGeneric: "Tab 切换 • Ctrl+C 清空 • Enter 应用";
            readonly applyingHint: "正在测试连接，请稍候...";
            readonly applyingButton: "应用中...";
            readonly testConnection: "测试连接";
            readonly baseUrlStatusAutoFix: "自动修正：{value}";
            readonly baseUrlStatusInvalid: "Base URL 必须是 http(s)";
            readonly baseUrlTitle: "Base URL";
            readonly baseUrlPlaceholder: "https://api.example.com/v1";
            readonly apiKeyTitle: "API Key";
            readonly apiKeyPlaceholder: "粘贴新 Key 以更新（留空保持不变）";
            readonly apiKeyCurrent: "当前：{value}";
            readonly apiKeyNotSet: "当前：（未设置）";
            readonly clearKey: "清除 Key";
            readonly useDetectedKey: "使用 {name}";
        };
        readonly redoConfirmDialog: {
            readonly title: "确认重做";
            readonly body: "确定要恢复已撤回的消息吗？";
        };
        readonly renameSessionDialog: {
            readonly title: "重命名会话";
            readonly label: "会话名称";
            readonly placeholder: "例如：规划笔记";
        };
        readonly sessionsDialog: {
            readonly timeNow: "刚刚";
            readonly timeMinutes: "{count} 分钟";
            readonly timeHours: "{count} 小时";
            readonly timeDays: "{count} 天";
            readonly newSession: "新会话";
            readonly title: "会话（{count}）";
            readonly titleScoped: "会话（{count}/{total}）";
            readonly scope: "范围：{cwd}";
            readonly loading: "加载中…";
            readonly confirmDelete: "确认删除：再次按 Delete";
            readonly header: "{count} 个会话 • 方向键导航 • Enter 选择{range}{activity}";
            readonly headerRange: " • 显示 {start}-{end}";
            readonly runningCount: "运行中 {count} 个";
            readonly pausedCount: "等待确认 {count} 个";
            readonly hint: "输入以跳转 • ←/→ 按钮 • Enter 确认 • Esc 关闭";
            readonly focusPrefix: "焦点：{focus}";
            readonly focusList: "列表";
            readonly focusButtons: "按钮";
            readonly noSessionsCwd: "当前目录没有会话";
            readonly noSessions: "暂无已保存会话";
            readonly nodeOnly: "会话仅在 Node/CLI 模式可用。";
            readonly newSessionTitle: "新会话";
            readonly newSessionTarget: "一个新会话";
            readonly busy: {
                readonly agentResponding: "助手仍在响应";
                readonly awaitingAskUser: "等待 AskUser 回复";
                readonly awaitingToolApproval: "等待工具审批";
                readonly pendingApproval: "等待审批";
            };
            readonly buttons: {
                readonly open: "打开";
                readonly delete: "删除";
                readonly deleteConfirm: "删除（确认）";
                readonly scope: "范围：{scope}";
                readonly scopeCwd: "当前目录";
                readonly scopeAll: "全部";
                readonly refresh: "刷新";
            };
        };
        readonly switchSessionDialog: {
            readonly title: "切换会话";
            readonly confirm: "切换并中断";
            readonly target: "切换到 {target}？";
            readonly fallback: "现在切换会话？";
            readonly warning: "这将中断当前会话的响应/流程。";
            readonly reason: "原因：{reason}";
        };
        readonly themeDialog: {
            readonly title: "主题";
            readonly hint: "Enter 应用  •  Esc 取消";
            readonly mode: "模式";
            readonly light: "浅色";
            readonly dark: "深色";
            readonly tip: "提示：默认跟随系统主题。";
        };
        readonly commandPalette: {
            readonly searchPlaceholder: "搜索…";
            readonly noMatches: "无匹配项";
            readonly hint: "输入筛选 • Enter: 打开 • Esc: 关闭";
            readonly title: "命令";
        };
        readonly help: {
            readonly title: "帮助";
            readonly modeLabel: "模式：{mode}";
            readonly modeDetail: "当前助理模式。";
            readonly shortcutsLabel: "快捷键";
            readonly onboarding: "欢迎使用！快速上手：\n1) /connect：连接提供方\n2) /models：选择模型\n3) 发送「hello」开始对话\n提示：{commandsKey} 可打开命令面板。";
            readonly items: {
                readonly help: "帮助与快捷键（F1）";
                readonly commands: "命令面板（Ctrl+P）";
                readonly back: "返回上一跳";
                readonly status: "切换状态详情";
            };
        };
        readonly commands: {
            readonly help: {
                readonly label: "帮助";
                readonly detail: "快捷键与常用命令（F1）";
            };
            readonly sessions: {
                readonly label: "会话";
                readonly detail: "选择或创建会话（/sessions）";
            };
            readonly timeline: {
                readonly label: "时间线";
                readonly detail: "跳转到用户消息（/timeline）";
            };
            readonly trace: {
                readonly label: "请求追踪";
                readonly detail: "查看当前会话请求链路（/trace）";
            };
            readonly newSession: {
                readonly label: "新会话";
                readonly detail: "开始新会话（/new）";
            };
            readonly connectProvider: {
                readonly label: "连接提供方";
                readonly detail: "连接提供方（/connect）";
            };
            readonly models: {
                readonly label: "模型";
                readonly detail: "选择模型（/models）";
            };
            readonly toolApprovals: {
                readonly label: "工具审批";
                readonly detail: "配置审批（/approvals）";
            };
            readonly toolSettings: {
                readonly label: "工具设置";
                readonly detail: "配置工具设置（/tool-settings）";
            };
            readonly mcpHub: {
                readonly label: "MCP";
                readonly detail: "管理 MCP 连接器与设置（/mcp）";
            };
            readonly plugins: {
                readonly label: "插件";
                readonly detail: "管理插件（/plugins）";
            };
            readonly mcpSettings: {
                readonly label: "MCP（高级 JSON）";
                readonly detail: "配置原始 MCP 服务器 JSON（/mcp-settings）";
            };
            readonly language: {
                readonly label: "语言";
                readonly detail: "切换界面语言（/language）";
            };
            readonly settings: {
                readonly label: "设置";
                readonly detail: "自定义提供方（/settings, Ctrl+K）";
            };
        };
        readonly homePage: {
            readonly multilineTitle: "多行文本";
            readonly multilineTitleWithCount: "多行文本（{count} 行）";
            readonly providerCustom: "自定义";
            readonly reviewPrompt: "帮我审查代码变更";
            readonly footerCwd: "cwd {cwd}";
            readonly hints: {
                readonly switchMode: "切换模式";
                readonly commands: "命令";
            };
            readonly tips: {
                readonly greeting: "欢迎回来！可以试试 {commandsKey} 或 {init}。";
                readonly commandsAlias: "小贴士：{key} 可打开命令面板。";
            };
            readonly prompts: {
                readonly help: "帮助与快捷键（F1）";
                readonly sessions: "列出/选择会话";
                readonly connect: "连接提供方";
                readonly models: "选择模型";
                readonly newSession: "开始新会话";
                readonly approvals: "配置工具审批（auto/normal/strict）";
                readonly commands: "打开命令面板";
                readonly toolSettings: "配置工具设置";
                readonly mcpSettings: "打开 MCP";
                readonly plugins: "管理插件";
                readonly language: "切换界面语言";
                readonly theme: "选择主题";
                readonly status: "切换状态详情";
                readonly review: "审查代码变更";
                readonly init: "初始化/改进 AGENTS.md";
                readonly skills: "查看已加载的 Skills";
                readonly exit: "退出应用";
                readonly debug: "调试对话框（聊天）";
                readonly settings: "自定义提供方设置";
            };
            readonly commandPalette: {
                readonly connect: "连接提供方";
                readonly models: "选择模型";
            };
            readonly commands: {
                readonly debugLabel: "调试";
                readonly debugDetail: "运行时状态（/debug）";
            };
            readonly toast: {
                readonly approvalsUsage: "使用 /approvals（无需 on/off）。";
                readonly customProviderOnly: "设置仅适用于自定义提供方。";
                readonly redoChatOnly: "重做仅在聊天视图可用。";
                readonly retryChatOnly: "重试仅在聊天视图可用。";
                readonly pinsChatOnly: "置顶仅在聊天视图可用。";
                readonly renameChatOnly: "重命名仅在聊天视图可用（/rename <title>）。";
                readonly commandRemoved: "该指令已移除：{command}";
                readonly helpAliasRemoved: "查看帮助请按 F1。";
                readonly deleteConfirm: "再次按 Delete 确认删除。";
                readonly themeToggled: "主题：{mode}";
                readonly pasteImagePending: "图片处理中，请稍候再发送。";
            };
        };
        readonly chatPage: {
            readonly placeholder: "随便问点什么…（换行：Shift+Enter 或 Ctrl+J）";
            readonly placeholderAwaitingApproval: "审批阻塞中：请选择 允许 / 拒绝 后继续。";
            readonly reviewPrompt: "帮我审查代码变更";
            readonly notification: {
                readonly approvalTitle: "[需要审批] 工具权限";
                readonly approvalMessage: "DimCode 正在等待工具审批：{tool}。";
                readonly doneTitle: "[任务完成]";
                readonly doneMessage: "DimCode 已完成本次任务。";
                readonly doneMessageWithDuration: "DimCode 已完成本次任务，耗时 {duration}。";
                readonly doneMessageWithTools: "DimCode 已完成本次任务，共调用 {tools} 次工具。";
                readonly doneMessageWithToolsAndDuration: "DimCode 已完成本次任务，耗时 {duration}，共调用 {tools} 次工具。";
            };
            readonly headerStats: "{messages} 条消息 · {tokens} 令牌";
            readonly contextChip: "≈{pct}% / {tokens} 令牌";
            readonly contextChipCompact: "{pct}%";
            readonly thinkingWords: "Coalescing,Thinking,Reasoning,Planning,Analyzing,Synthesizing,Refining,Composing";
            readonly modelFallback: "模型";
            readonly mode: {
                readonly plan: "计划";
                readonly agent: "助手";
                readonly debug: "调试";
            };
            readonly status: {
                readonly approvalsAuto: "AUTO";
                readonly approvalsAll: "ALL";
                readonly blockedByApproval: "等待审批中";
                readonly awaitingApprovalAction: "等待你的审批：请选择允许 / 拒绝后继续。";
            };
            readonly footer: {
                readonly dragSelect: "拖拽选择";
                readonly openLink: "Ctrl+点击打开文件或链接";
                readonly esc: "esc";
                readonly interrupt: "中断";
                readonly approvalPaused: "⏸ 已暂停";
                readonly approvalPausedHint: "等待审批中（按 Enter 选择）。";
                readonly shortcuts: "Ctrl+K：配置    Ctrl+O：展开/收起工具/思考    Cmd+Delete/Ctrl+W：清空输入    Tab：切换模式    {commandsKey}：命令";
                readonly shortcutsCompact: "Ctrl+K：配置    Ctrl+O：工具/思考    Cmd+Delete/Ctrl+W：清空    Tab：切换模式    {commandsKey}：命令";
                readonly shortcutsMicro: "Ctrl+O：工具    {commandsKey}：命令";
                readonly shortcutsMini: "{commandsKey}：命令";
            };
            readonly session: {
                readonly new: "新建";
            };
            readonly timeline: {
                readonly title: "时间线";
                readonly empty: "（空）";
                readonly filterAll: "全部消息";
                readonly filterUser: "用户消息";
                readonly filterTool: "工具调用";
            };
            readonly pins: {
                readonly title: "置顶";
                readonly empty: "（空）";
            };
            readonly jumpToBottom: {
                readonly button: "↓";
            };
            readonly prompts: {
                readonly help: "帮助与快捷键（F1）";
                readonly newSession: "开始新会话";
                readonly resume: "恢复已暂停的队列";
                readonly sessions: "列出/选择会话";
                readonly timeline: "跳转到用户消息";
                readonly trace: "查看当前会话请求/事件追踪";
                readonly pins: "打开置顶消息";
                readonly pin: "置顶上一条消息";
                readonly back: "返回上一跳";
                readonly connect: "连接提供方";
                readonly models: "选择模型";
                readonly theme: "切换界面主题";
                readonly approvals: "配置工具审批（auto/normal/strict）";
                readonly commands: "打开命令面板";
                readonly toolSettings: "配置工具设置";
                readonly mcpSettings: "打开 MCP";
                readonly plugins: "管理插件";
                readonly language: "切换界面语言";
                readonly status: "切换状态详情";
                readonly review: "审查代码变更";
                readonly retry: "重试上一条用户消息";
                readonly compact: "压缩会话上下文";
                readonly init: "初始化/改进 AGENTS.md";
                readonly rename: "重命名当前会话";
                readonly skills: "查看已加载的 Skills";
                readonly exit: "退出应用";
                readonly debug: "调试对话框";
                readonly settings: "自定义提供方设置";
            };
            readonly commands: {
                readonly pinsLabel: "置顶";
                readonly pinsDetail: "打开置顶消息";
                readonly backLabel: "返回";
                readonly backDetail: "回到上一跳";
                readonly debugLabel: "调试";
                readonly debugDetail: "运行时状态（/debug）";
                readonly statusLabel: "状态";
                readonly statusDetail: "切换状态详情";
                readonly themeLabel: "主题";
                readonly themeDetail: "切换颜色主题";
            };
            readonly tips: {
                readonly contextWarn: "小贴士：上下文快满了，可以用 /compact 压缩或 /new 新开会话。";
                readonly contextCritical: "小贴士：已接近上下文上限，建议 /new 新开会话（或先 /compact）。";
                readonly timeline: "小贴士：对话变长时，用 /tl 打开时间线快速跳回某条消息。";
                readonly timelineAlias: "小贴士：/tl 是 /timeline 的快捷别名。";
                readonly commandsAlias: "小贴士：{key} 可打开命令面板。";
                readonly errorRecovery: "小贴士：出错时可试试 /compact 或 /new。";
                readonly greeting: "欢迎回来！可以试试 {commandsKey} 或 {init}。";
                readonly compactDelight: "不错！保持上下文精简很有帮助。";
                readonly addTests: "搞定了！要不要我顺手写测试？回复「是/要」。";
            };
            readonly trace: {
                readonly title: "会话追踪";
                readonly loading: "正在加载会话追踪...";
                readonly empty: "当前会话还没有可显示的请求追踪。";
                readonly error: "加载会话追踪失败。";
                readonly summary: "{requests} 个请求 · {events} 个事件";
                readonly hint: "上下键切换请求 · 刷新重新拉取 · Esc 关闭";
                readonly sessionEvents: "会话级事件";
                readonly requestFallback: "（空提示词）";
                readonly counts: "{events} 个事件 · {runs} 个 run · {tools} 个工具 · {children} 个子任务 · {compactions} 次压缩";
                readonly moreEvents: "… 还有 {count} 个事件";
            };
            readonly confirm: {
                readonly addTests: "请为刚才的修改补充测试。";
            };
            readonly toast: {
                readonly customProviderOnly: "设置仅适用于自定义提供方。";
                readonly renameNodeOnly: "重命名仅在 Node/CLI 模式可用。";
                readonly noActiveSession: "没有可重命名的会话。";
                readonly sessionNameEmpty: "会话名称不能为空。";
                readonly sessionRenamed: "会话已重命名为：{title}";
                readonly renameFailed: "重命名会话失败。";
                readonly linkOpenHint: "提示：Ctrl+点击可打开文件或链接。";
                readonly copySuccess: "已复制";
                readonly copyFailed: "复制失败";
                readonly forkFailed: "分叉会话失败。";
                readonly backEmpty: "没有可返回的上一跳。";
                readonly pinsEmpty: "还没有置顶消息。";
                readonly pinEmpty: "暂无可置顶的消息。";
                readonly pinned: "已置顶消息。";
                readonly unpinned: "已取消置顶。";
                readonly debugUnavailable: "调试服务器不可用。";
                readonly approvalsUsage: "使用 /approvals（无需 on/off）。";
                readonly debugDialogOpened: "调试对话框已打开。";
                readonly debugDialogClosed: "调试对话框已关闭。";
                readonly traceUnavailable: "当前运行时不支持会话追踪。";
                readonly renameUsage: "用法：/rename <title>";
                readonly themeToggled: "主题：{mode}";
                readonly statusCompactOn: "状态：精简";
                readonly statusCompactOff: "状态：详细";
                readonly compactingSession: "正在压缩会话...";
                readonly compactSuccess: "会话已压缩：{message}";
                readonly compactWarning: "会话已压缩，但收益有限：{message}";
                readonly compactSuccessDetailWithTokens: "前 {count} 条历史消息已折叠为摘要，预估输入 {before} -> {after} tokens，约省 {saved} tokens。";
                readonly compactSuccessDetailNotReduced: "前 {count} 条历史消息已折叠为摘要，但预估输入变成了 {before} -> {after} tokens，这次没有变小。";
                readonly compactSuccessDetailCountOnly: "前 {count} 条历史消息已折叠为摘要。";
                readonly compactSuccessDetailSummaryOnly: "已生成新的历史摘要。";
                readonly compactFailed: "会话压缩失败：{error}";
                readonly compactFailedTokenLimit: "压缩失败：上下文预算不足。请正确设置 DIMCODE_CONTEXT_WINDOW，或切换更大上下文模型，或使用 /new。详情：{error}";
                readonly retryEmpty: "没有可重试的上一条消息。";
                readonly commandRemoved: "该指令已移除：{command}";
                readonly helpAliasRemoved: "查看帮助请按 F1。";
                readonly waitForResponse: "请等待当前响应完成，或按 Esc 中断。";
                readonly pasteImagePending: "图片处理中，请稍候再发送。";
                readonly pendingApproval: "请先处理 tool_approve。";
                readonly awaitingApprovalAction: "已暂停：需要你的操作。请在权限卡中选择允许 / 始终允许 / 拒绝。";
                readonly awaitingApprovalStillWaiting: "仍在等待审批（{seconds} 秒）。在你允许或拒绝前，模型不会继续。";
                readonly pendingAskUser: "请先处理 ask_user。";
                readonly sessionBusyElsewhere: "另一个窗口还在处理当前会话。请等它结束后再在这里发送。";
                readonly notificationSessionBusy: "这条通知属于另一个忙碌中的会话。请先完成当前工作，或手动切换过去。";
                readonly notificationSessionUnavailable: "当前环境无法打开这条通知对应的会话。";
                readonly notificationSessionSwitchFailed: "打开这条通知对应的会话失败。";
                readonly approvalNotActive: "该审批在排队，请先处理当前审批。";
                readonly askUserNotActive: "该 ask_user 已失效。";
            };
        };
        readonly chatQueue: {
            readonly label: "队列（{count}）";
            readonly labelCompact: "队列 {count}";
            readonly more: "还有 {count} 条…";
            readonly resumeToken: "/resume";
            readonly resumePlainToken: "resume";
            readonly resumeLegacyToken: "继续队列";
            readonly state: {
                readonly idle: "待发送";
                readonly running: "运行中";
                readonly paused: "等待继续";
                readonly error: "错误";
            };
            readonly item: {
                readonly steerAction: "Steer";
                readonly steerReady: "优先";
                readonly steerPending: "下一次";
                readonly steerPaused: "暂停";
            };
            readonly toast: {
                readonly enqueued: "已加入队列（第 {count} 条）。";
                readonly full: "队列已满（最多 5 条），请先删除或 /new 新建会话。";
                readonly cleared: "已清空 {count} 条队列消息。";
                readonly deleted: "已删除 {count} 条队列消息，按 Ctrl+Z 可撤销。";
                readonly steerPromoted: "已升级为 steer；恢复队列后会优先生效。";
                readonly steerQueued: "steer 当前不能立刻注入；已排到最前，会在下一轮优先生效。";
                readonly steerSent: "steer 已提交；会在当前轮下一次模型调用前注入。";
                readonly undo: "已撤销队列删除。";
                readonly pausedTip: "队列已暂停，输入 {resume} 或 {resumeText} 可继续，或发送新消息后选择如何处理。";
                readonly stale: "队列已暂停：请求疑似卡住。";
            };
            readonly confirm: {
                readonly title: "继续发送队列吗？";
                readonly description: "上一条请求未完成，队列中还有 {count} 条等待发送。";
                readonly hint: "继续发送下一条，或暂停队列。";
                readonly continue: "继续发送";
                readonly pause: "暂停队列";
                readonly reason: "原因：{reason}";
            };
            readonly reason: {
                readonly network_error: "网络异常。";
                readonly timeout: "请求超时。";
                readonly canceled_by_user: "已由用户取消。";
                readonly rate_limited: "触发限流。";
                readonly config_unavailable: "保存的配置不可用。";
                readonly unknown: "请求失败。";
            };
            readonly draftDecision: {
                readonly title: "队列已暂停";
                readonly description: "还有 {count} 条队列消息等待发送。请选择如何处理这次新输入。";
                readonly previewLabel: "新输入：";
                readonly continue: "继续队列";
                readonly append: "追加到队列";
                readonly replace: "丢弃旧队列并发送";
            };
        };
        readonly chatStatus: {
            readonly done: "完成。";
            readonly error: "错误。";
            readonly interrupted: "已中断。";
            readonly permissionDenied: "权限被拒绝。";
            readonly planning: "规划中…";
            readonly drafting: "起草中…";
            readonly runningTool: "正在运行 {tool}…";
            readonly runningTools: "正在运行 {count} 个工具…";
            readonly approvalPendingOther: "已有其他审批在等待（{permission}）…";
            readonly awaitingApproval: "等待批准…";
            readonly awaitingApprovalWithPerm: "等待批准（{permission}）…";
            readonly awaitingApprovalWithRisk: "等待批准（{risk}）…";
            readonly awaitingAnswers: "等待回答…";
            readonly resumingApproved: "已批准，继续…";
            readonly resumingDenied: "已拒绝，继续…";
            readonly resuming: "继续…";
            readonly autoApprovingWithRisk: "自动批准中（{risk}）…";
            readonly riskFallback: "风险";
            readonly toolFallback: "工具";
            readonly thinking: "思考中…";
            readonly autoCompactionRequired: "上下文接近上限，需要先压缩。";
            readonly autoCompactionRequiredDetailed: "上下文接近上限 · 下一次请求预计占用 {estimated} tokens，自动压缩阈值为 {threshold} tokens，因此需要先压缩。";
            readonly compressed: "上下文已压缩 · 已将 {removed} 条旧消息折叠为摘要，本轮请求预估少占用 {saved} tokens（耗时 {elapsed}ms）";
            readonly autoCompactedDetailed: "自动压缩完成 · 已将 {removed} 条旧消息折叠为摘要，预估输入 {before} -> {after} tokens，约省 {saved} tokens";
            readonly autoCompactedNotReduced: "自动压缩完成 · 已将 {removed} 条旧消息折叠为摘要，但预估输入变成了 {before} -> {after} tokens，这次没有变小";
            readonly autoCompactedSaved: "自动压缩完成 · 已将 {removed} 条旧消息折叠为摘要，约省 {saved} tokens";
            readonly autoCompactedCountOnly: "自动压缩完成 · 已将 {removed} 条旧消息折叠为摘要";
            readonly interruptedMarkdown: "> **已中断** · 用户已取消响应（`Esc`）。";
            readonly awaitingApprovalPrefix: "等待批准";
            readonly awaitingAnswersPrefix: "等待回答";
            readonly approvalPendingPrefix: "已有其他审批在等待";
            readonly autoApprovingPrefix: "自动批准中";
        };
        readonly chatParts: {
            readonly thinking: "思考";
            readonly plan: "计划";
            readonly todo: "待办";
        };
        readonly chatRender: {
            readonly userLabel: "用户";
            readonly outputLabel: "↳ 输出";
            readonly outputLabelShort: "输出:";
            readonly canceled: "已取消";
            readonly inputLabel: "输入:";
            readonly collapse: "...（收起）";
            readonly moreLines: "...（还有 {count} 行）";
            readonly moreLinesOmitted: "...（已省略 {count} 行；设置 {envVar} 可增加）";
            readonly streamingTail: "…（流式：仅显示最后 {shown} 个字符；已省略 {omitted} 个）";
            readonly copy: "复制";
            readonly userResponses: "用户回复：";
            readonly approvalQueued: "等待前一个审批完成…";
            readonly proposedPlan: {
                readonly title: "实施计划";
            };
            readonly llmMeta: {
                readonly changedFiles: "本轮改动 {count} 个文件：{files}";
                readonly changedFilesMore: "另 {count} 个";
                readonly revertHint: "提示：点击这条消息并选择“撤回消息”可回退本轮改动与消息。";
                readonly changedFilesCardTitle: "本轮改动 {count} 个文件：";
                readonly revertButton: "撤回";
            };
            readonly toolName: {
                readonly explore: "Explore";
                readonly subagent: "Subagent";
            };
            readonly toolSuffix: {
                readonly offset: "偏移 {value}";
                readonly limit: "限制 {value}";
                readonly matches: "{count} 个匹配";
                readonly todos: "{count} 项待办";
                readonly results: "{count} 条结果";
                readonly results_one: "{count} 条结果";
            };
            readonly toolGroup: {
                readonly readFiles: "读取 {count} 个文件";
                readonly writeFiles: "写入 {count} 个文件";
                readonly editFiles: "编辑 {count} 个文件";
                readonly globPatterns: "Glob {count} 个模式";
                readonly globSingle: "Glob {pattern}";
                readonly grepPatterns: "Grep {count} 个模式";
                readonly bashCommands: "执行 {count} 条命令";
                readonly searchQueries: "搜索 {count} 个查询";
                readonly taskCount: "{name} x{count}";
                readonly generic: "{name} x{count}";
            };
        };
        readonly toolApproval: {
            readonly reason: {
                readonly search: "搜索可能访问网络。";
                readonly bash: "Bash 可执行命令。";
                readonly edit: "文件变更可能修改本地文件。";
                readonly grep: "Grep 可能读取本地文件。";
            };
            readonly inlineHint: "按 ↑↓←→ 移动，按 Enter 选择。";
            readonly awaitingUserAction: "等待你的操作：请选择允许 / 始终允许 / 拒绝。";
            readonly decision: {
                readonly userDenied: "用户拒绝了审批";
            };
            readonly denied: {
                readonly title: "# 工具权限被拒绝";
                readonly toolLine: "- 工具：`{tool}`";
                readonly permissionLine: "- 权限：`{permission}`";
                readonly hint: "你可以重新选择该 tool_call 并重试。";
            };
            readonly summary: {
                readonly title: "# 已批准并执行工具";
                readonly permissionLine: "已批准 `{permission}` 权限以执行 `{tool}`。";
            };
            readonly required: "需要审批（{risk}）。";
            readonly args: {
                readonly commandWithDescription: "命令：{command} - {description}";
                readonly command: "命令：{command}";
                readonly description: "说明：{description}";
                readonly raw: "参数：{args}";
            };
        };
        readonly pathPicker: {
            readonly titleWorkspace: "选择工作区";
            readonly titleFile: "选择文件";
            readonly placeholderWorkspace: "输入路径（../ 等）。Tab 补全，Enter 选择目录。";
            readonly placeholderFile: "输入路径（../ 等）。Tab 补全，Enter 选择文件。";
        };
        readonly providerDialogs: {
            readonly customLabel: "自定义";
            readonly customDetail: "自定义";
            readonly nextApiOAuthLabel: "Next API 提供方（OAuth）";
            readonly nextApiOAuthDetail: "通过 Next API OAuth 登录";
            readonly addCustomLabel: "添加自定义提供方";
            readonly addCustomDetail: "添加自定义提供方";
            readonly providerFallback: "提供方";
            readonly adapter: {
                readonly openai: "OpenAI";
                readonly openaiOpenRouter: "OpenAI 兼容（OpenRouter）";
                readonly openaiLocal: "OpenAI 兼容（本地端点）";
                readonly openaiResponses: "OpenAI Responses";
                readonly gemini: "Gemini";
                readonly anthropic: "Anthropic";
            };
            readonly status: {
                readonly configured: "已配置";
                readonly notConfigured: "未配置";
            };
            readonly manage: {
                readonly title: "自定义提供方：{provider}";
                readonly connect: "连接";
                readonly connectDetail: "编辑 API Key / Base URL";
                readonly rename: "重命名";
                readonly renameDetail: "编辑提供方名称";
                readonly models: "编辑模型";
                readonly modelsDetail: "更新可用模型 ID";
                readonly delete: "删除";
                readonly deleteDetail: "移除此提供方";
            };
            readonly deleteConfirm: {
                readonly title: "删除 {provider}？";
                readonly confirm: "删除（确认）";
                readonly confirmDetail: "此操作无法撤销";
                readonly cancelDetail: "保留提供方";
            };
            readonly nameDialog: {
                readonly title: "命名自定义提供方";
                readonly label: "提供方名称";
                readonly placeholder: "例如：DeepSeek（代理）";
            };
            readonly modelsDialog: {
                readonly title: "自定义提供方模型";
                readonly modelsTitle: "模型";
                readonly modelsPlaceholder: "模型 ID（, 或换行分隔）";
                readonly hint: ", / 换行分隔 • Shift+Enter 换行 • Enter 应用";
                readonly fetch: "拉取模型";
                readonly fetching: "正在拉取模型…";
            };
            readonly modelsFetchDialog: {
                readonly title: "选择模型";
                readonly searchPlaceholder: "筛选模型";
                readonly hint: "Space 勾选  •  Enter 确认  •  Esc 取消";
            };
            readonly toast: {
                readonly modelSet: "模型已设置为 {provider} / {model}。";
                readonly noModels: "你目前还没有可用模型，请先连接一个提供方（/connect）。";
                readonly connectFirst: "首次发送前请先连接提供方（/connect）。";
                readonly apiKeyRequired: "需要 API Key。";
                readonly baseUrlRequired: "需要 Base URL。";
                readonly baseUrlInvalid: "Base URL 必须以 http:// 或 https:// 开头。";
                readonly connected: "已连接 {provider}。";
                readonly connectedSelectModel: "已连接 {provider}，请选择模型。";
                readonly connectedCheckFailed: "已连接 {provider}，但自检失败：{reason}";
                readonly connectionTestPassed: "连接测试通过：{provider}。";
                readonly connectionTestFailed: "连接测试失败：{provider} - {reason}";
                readonly connectionActionUpdateKey: "操作建议：重新打开连接，更新 API Key 后再次测试。";
                readonly connectionActionFixBaseUrl: "操作建议：检查 Base URL 路径（通常以 /v1 结尾）后再次测试。";
                readonly connectionActionSwitchKey: "操作建议：稍后重试，或切换其他 Key/提供方。";
                readonly connectionActionRetryTest: "操作建议：检查网络/代理后再次执行测试连接。";
                readonly noModelsFetching: "暂无模型，正在拉取模型列表…";
                readonly firstUseGuide: "快速上手：1) /connect  2) /models  3) 发送「hello」";
                readonly firstUseSendHello: "下一步：发送第一条消息（例如：「hello」）。";
                readonly connectionCheckUnauthorized: "401 未授权：请检查 API Key 与提供方是否匹配。";
                readonly connectionCheckForbidden: "403 禁止访问：当前 Key 可能无此提供方/模型权限。";
                readonly connectionCheckNotFound: "404 未找到：请检查 Base URL 路径（OpenAI 兼容通常以 /v1 结尾）。";
                readonly connectionCheckRateLimited: "429 限流：请稍后重试，或切换其他 Key/提供方。";
                readonly connectionCheckTimeout: "连接超时：请检查网络/代理后重试。";
                readonly connectionCheckNetwork: "网络连接失败：请检查 DNS/代理/Base URL。";
                readonly connectionCheckFailed: "连接自检失败：{error}";
                readonly apiKeyCleared: "已清除 {provider} 的 API Key。";
                readonly customAdded: "已添加自定义提供方：{provider}。";
                readonly customRenamed: "已重命名自定义提供方：{provider}。";
                readonly customModelsUpdated: "已更新自定义提供方模型：{provider}。";
                readonly customDeleted: "已删除自定义提供方：{provider}。";
                readonly modelsRequired: "至少需要一个模型。";
                readonly modelsEmpty: "未获取到模型。";
                readonly modelsFetchFailed: "模型拉取失败：{error}";
                readonly modelsFetchChatCompletions: "当 Base URL 为 /chat/completions 或 /responses 时不支持拉取模型。";
                readonly manualModelsRequired: "此端点不支持自动发现模型。请在模型配置中手动输入模型名称。";
                readonly nameRequired: "提供方名称不能为空。";
                readonly nameConflict: "提供方名称已存在。";
            };
        };
        readonly copyToast: {
            readonly copiedToClipboard: "已复制到剪贴板";
        };
    };
};
export declare const defaultLocale = "en";
//# sourceMappingURL=index.d.ts.map