export default {
    common: {
        apply: '应用',
        cancel: '取消',
        close: '关闭',
        copy: '复制',
        confirm: '确认',
        refresh: '刷新',
        yes: '是',
        no: '否',
        exit: '退出',
        back: '返回',
        next: '下一步',
        save: '保存',
        empty: '—',
        unknownError: '未知错误',
        inputClearTip: 'Ctrl+C 清空',
    },
    configDialog: {
        title: '设置',
        hint: 'Tab/Shift+Tab 切换字段  •  Enter 应用  •  Esc 取消',
        modelsTitle: '模型（自定义）',
        modelsPlaceholder: 'model-a, model-b',
        contextWindowTitle: '上下文窗口',
        contextWindowLocked: '上下文窗口（模型定义）',
        contextWindowPlaceholder: '128000',
        temperatureTitle: '温度',
        temperaturePlaceholder: '0.7',
        temperatureValidationError: '温度：只能输入数字和”.”',
        maxTokensTitle: '最大输出 Token 数',
        maxTokensPlaceholder: '8192',
        baseUrlTitle: 'Base URL（OpenAI 兼容）',
        baseUrlPlaceholder: 'https://api.openai.com/v1',
        apiKeyCurrentPrefix: '当前：',
        apiKeyNotSet: '（未设置）',
        apiKeyTitle: 'API Key',
        apiKeyPlaceholder: '粘贴新 Key 以更新（留空保持不变）',
        interleavedThinkingTitle: '交错思考（空格切换）',
        interleavedThinkingLocked: '交错思考（模型定义）',
        interleavedThinkingOpen: '开启',
        interleavedThinkingClose: '关闭',
        tipIntensityTitle: '提示强度',
        tipIntensityOff: '关闭',
        tipIntensityLow: '低',
        tipIntensityStandard: '标准',
        shortcutsTitle: '快捷键',
        shortcutCommandsLabel: '命令面板',
        shortcutTimelineLabel: '时间线',
        shortcutNewSessionLabel: '新会话',
        shortcutsPlaceholder: '如 mod+p',
        shortcutsHint: '使用 mod/ctrl/alt/shift + 键（a-z, 0-9, F1-F12）。',
    },
    languageDialog: {
        title: '语言',
        hint: 'Enter 应用  •  Esc 取消',
        languageTitle: '语言',
        languageEnglish: 'English',
        languageChinese: '简体中文',
    },
    toolSettingsDialog: {
        title: '工具设置',
        hint: 'Enter 应用  •  Esc 取消',
        websearchTitle: 'WebSearch API Key',
        apiKeyCurrentPrefix: '当前：',
        apiKeyNotSet: '（未设置）',
        apiKeyPlaceholder: '粘贴 Serper API Key',
    },
    pluginsDialog: {
        title: '插件',
        hint: '选择一个插件进行配置  •  Esc 关闭',
        serperSearch: 'Serper Search',
        serperSearchDetail: '通过 Serper API 进行网络搜索',
        configured: '已配置',
        notConfigured: '未配置',
        serperConfigTitle: 'Serper Search 设置',
        serperConfigHint: 'Enter 应用  •  Esc 取消',
    },
    mcpSettingsDialog: {
        title: 'MCP',
        hint: '编辑 mcp.json 文件以配置 MCP 服务器  •  Esc 关闭',
        configFileLabel: '配置文件：',
        noServersHint: '尚未配置 MCP 服务器。',
        serverCount: '已配置 {count} 个服务器',
        guideText: '编辑上方文件以添加或修改 MCP 服务器。',
        openFile: '打开文件',
        reload: '重新加载',
        close: '关闭',
        reloaded: 'MCP 配置已重新加载。',
        reloadFailed: '重新加载失败：{error}',
        status: '状态',
        toolCount: '工具数',
        disabled: '禁用',
        testConnection: '测试',
        testing: '正在测试连接...',
        testComplete: '测试完成。',
        testPartial: '测试完成（有错误）。',
        testFailed: '连接失败：{error}',
        invalidJson: 'JSON 无效：{error}',
        invalidShape: 'MCP JSON 无效：需要 "mcpServers"。',
        invalidServer: 'MCP 服务器配置无效：{name}',
        noServers: '没有找到 MCP 服务器。',
        lintOk: 'JSON 语法正确',
        lintAt: '{error}（第 {line} 行，第 {column} 列）',
        lintUnclosed: '未闭合的 {char}（第 {line} 行，第 {column} 列）',
        lintInvalid: '{error}',
        exampleFormat: '示例格式：',
    },
    toolApprovalsDialog: {
        title: '工具审批',
        useAuto: 'Auto',
        useNormal: 'Normal',
        useStrict: 'Strict',
        close: '关闭',
        focusedTitleAuto: 'AUTO',
        focusedTitleNormal: 'NORMAL',
        focusedTitleStrict: 'STRICT',
        focusedTitleClose: 'CLOSE',
        focusedDescAuto: '所有工具自动执行，不再提示（最快，最不安全）。',
        focusedDescNormal: '读取类自动通过，写入类需确认。',
        focusedDescStrict: '所有工具均须确认（最安全，最慢）。',
        focusedDescClose: '关闭此对话框，不更改当前设置。',
        currentPrefix: '当前：{mode}',
        tip: '提示：用 ←/→ 在按钮间移动，Enter 确认，Esc 关闭。',
    },
    settingsDialog: {
        pendingApproval: '请先处理待审批请求再更改设置。',
        invalidShortcut: '快捷键无效：{label}（{value}）',
        shortcutCommands: '命令面板快捷键',
        shortcutTimeline: '时间线快捷键',
        shortcutNewSession: '新会话快捷键',
        toolApprovalsApplied: '工具审批：{mode}',
        applied: '设置已应用。',
    },
    exitAppDialog: {
        title: '退出 DimCode',
        confirm: '现在退出？',
        warning: '仍有响应在进行中，退出将中断它。',
        reasonPrefix: '原因：{reason}',
    },
    approvalDialog: {
        title: '工具权限审批',
        toolLabel: '工具：{tool}{suffix}',
        toolLabelSuffix: '（{description}）',
        permissionLabel: '权限：{permission}（{risk}）',
        descriptionLabel: '说明：{description}',
        commandLabel: '命令：',
        inlineActionHint: '↑/← 上一个  ↓/→ 下一个  Enter 确认  1/2/3 选择',
        inlineActionHintCompact: '←/→ 移动  Enter 确认  1/2/3 选择',
        buttons: {
            approve: '允许',
            alwaysApprove: '总是允许',
            deny: '拒绝',
            always: '总是',
            ok: '确定',
            no: '否',
            y: 'Y',
            all: '全',
            n: 'N',
        },
    },
    askUserDialog: {
        noQuestionsTitle: '没有问题',
        noQuestionsBody: '没有需要回答的问题。',
        title: '问题 {index}/{total}：{header}',
        defaultHeader: '问题',
        prev: '上一题',
        next: '下一题',
        submit: '提交',
        otherOption: '其他',
        otherDetail: '填写自定义答案',
        inlineHintOptions: '按 ↑↓ 移动，按 ←→ 切题，按 Enter 选择。',
        inlineHintMulti: '多选：按 Space 勾选或取消勾选。',
        inlineHintButtons: '按 Tab 切到按钮，按 ←→ 切换，按 Enter 触发，按 ↑ 回到选项。',
        inlineHintNav: 'Ctrl+Left / Ctrl+Right（或 Ctrl+A / Ctrl+E）切换问题。',
        inlineHintSubmit: 'Ctrl+Enter 提交，Esc 取消。',
        inlineButtonPrev: '[上一题]',
        inlineButtonNext: '[下一题]',
        inlineButtonSubmit: '[提交]',
        inlineButtonCancel: '[取消]',
        inlineActionHint: 'Space 选择  ← 上一题  → 下一题  Enter 下一题/提交  Esc 取消',
        inlineActionHintCompact: 'Space 选择  ←/→ 切题  Enter 下一题/提交  Esc 取消',
        optionsSummaryAll: '共 {count} 个选项',
        optionsSummaryVisibleMore: '共 {count} 个选项（{start}-{end}）↓ 更多',
        multiSelectHint: '[多选] 空格切换，Enter 确认',
        singleSelectHint: '[单选] 方向键移动，Enter 确认',
        customAnswerLabel: '自定义答案：',
        customAnswerPlaceholder: '请输入答案…',
        otherPlaceholder: '已选“其他”：输入自定义答案，回车填入。',
    },
    nextApiOAuthDialog: {
        title: 'Next API OAuth 登录',
        copyUrl: '复制链接',
        login: '登录',
        logout: '退出登录',
        statusTitle: '状态',
        statusAuthenticated: '✓ 已登录：{email}',
        statusLoading: '⏳ 正在认证…',
        statusNotLoggedIn: '✗ 未登录',
        instructionAuthenticated: '使用 ↑↓ 导航，Enter 选择，或按 1-9',
        instructionLoading: '若浏览器未打开，按 C 复制下方链接',
        instructionNeedsSetup: '请检查 Next API 端 OAuth client 的 redirect_uri、scope 和启用状态后重试',
        instructionWithUrl: '按 C 复制下方 OAuth 链接，或按 Enter 打开浏览器',
        instructionUnauthed: '按 Enter 使用 Next API OAuth 登录，或按 Esc 关闭',
        oauthUrlTitleLoading: 'OAuth 链接（浏览器未打开时复制）',
        oauthUrlTitleReady: 'OAuth 链接（可直接使用）',
        scrollIndicator: ' [{start}-{end} / 共 {total}]',
        selectModelTitle: '选择模型（↑↓/1-9，Enter 选择）{indicator}',
        aboutTitle: '关于 Next API OAuth',
        setupTitle: 'OAuth 登录异常',
        aboutBulletOne: '• 内置使用 FAZHI Tech 的 Next API OAuth client',
        aboutBulletTwo: '• 登录后会拉取 relay 模型并保存 provider 配置',
        aboutBulletThree: '• 使用 OAuth refresh token，而不是长期 API Key',
        viewAllPlans: '查看所有方案 →',
        defaultAccount: 'Next API 账号',
        toast: {
            generatingUrl: '正在生成 OAuth 链接…',
            urlReady: 'OAuth 链接已就绪！复制或按 Enter 打开浏览器。',
            generateUrlFailed: '生成 OAuth 链接失败：{error}',
            startingLogin: '正在开始 OAuth 登录…',
            browserOpened: '已打开浏览器，如未打开请从对话框复制链接。',
            copyUrlToLogin: '请从对话框复制 OAuth 链接登录。',
            urlCopied: 'OAuth 链接已复制到剪贴板。',
            urlCopyFailed: '复制 OAuth 链接失败。',
            authSuccess: '已成功通过 Next API OAuth 认证！',
            loginFailed: 'OAuth 登录失败：{error}',
            loggedOut: '已退出 Next API OAuth 登录',
            loggedOutWithRemoteWarning: '已退出 Next API OAuth 登录，但服务端撤销失败：{error}',
            logoutFailed: '退出登录失败：{error}',
            initFailed: '初始化对话框失败：{error}',
            modelSwitched: '已切换模型：{model}',
            selectModelFailed: '选择模型失败：{error}',
        },
    },
    debugTryDialog: {
        titleDebug: '调试',
        titleDebugging: '正在调试',
        copy: '复制',
        proceed: '继续',
        fixed: '已修复',
        body: '我已添加调试日志（并可能修复了问题）。请现在尝试复现，然后选择结果。',
    },
    exitSessionDialog: {
        title: '退出会话',
        confirm: '退出当前会话并返回首页？',
        note: '下一条消息将开启新会话。',
    },
    messageActionsDialog: {
        title: '消息操作',
        revert: '撤回消息',
        revertWithFiles: '撤回消息及文件改动',
        revertKeepFiles: '撤回消息（保留文件更改）',
        revertFilesOnly: '只回滚文件改动',
        copy: '复制消息文本到剪贴板',
        fork: '分叉创建新会话',
        pin: '置顶消息',
        unpin: '取消置顶',
    },
    pathPickerDialog: {
        hint: '↑/↓ 选择 • Tab 补全 • Enter 确认 • Esc 关闭',
    },
    providerConnectDialog: {
        title: '连接 {provider}',
        providerFallback: '提供方',
        hint: 'Tab 切换 • Ctrl+C 清空 • Enter 应用',
        hintOpenAI: 'Tab 切换 • Ctrl+C 清空 • Enter 应用',
        hintGemini: 'Tab 切换 • Ctrl+C 清空 • Enter 应用',
        hintAnthropic: 'Tab 切换 • Ctrl+C 清空 • Enter 应用',
        hintGeneric: 'Tab 切换 • Ctrl+C 清空 • Enter 应用',
        applyingHint: '正在测试连接，请稍候...',
        applyingButton: '应用中...',
        testConnection: '测试连接',
        baseUrlStatusAutoFix: '自动修正：{value}',
        baseUrlStatusInvalid: 'Base URL 必须是 http(s)',
        baseUrlTitle: 'Base URL',
        baseUrlPlaceholder: 'https://api.example.com/v1',
        apiKeyTitle: 'API Key',
        apiKeyPlaceholder: '粘贴新 Key 以更新（留空保持不变）',
        apiKeyCurrent: '当前：{value}',
        apiKeyNotSet: '当前：（未设置）',
        clearKey: '清除 Key',
        useDetectedKey: '使用 {name}',
    },
    redoConfirmDialog: {
        title: '确认重做',
        body: '确定要恢复已撤回的消息吗？',
    },
    renameSessionDialog: {
        title: '重命名会话',
        label: '会话名称',
        placeholder: '例如：规划笔记',
    },
    sessionsDialog: {
        timeNow: '刚刚',
        timeMinutes: '{count} 分钟',
        timeHours: '{count} 小时',
        timeDays: '{count} 天',
        newSession: '新会话',
        title: '会话（{count}）',
        titleScoped: '会话（{count}/{total}）',
        scope: '范围：{cwd}',
        loading: '加载中…',
        confirmDelete: '确认删除：再次按 Delete',
        header: '{count} 个会话 • 方向键导航 • Enter 选择{range}{activity}',
        headerRange: ' • 显示 {start}-{end}',
        runningCount: '运行中 {count} 个',
        pausedCount: '等待确认 {count} 个',
        hint: '输入以跳转 • ←/→ 按钮 • Enter 确认 • Esc 关闭',
        focusPrefix: '焦点：{focus}',
        focusList: '列表',
        focusButtons: '按钮',
        noSessionsCwd: '当前目录没有会话',
        noSessions: '暂无已保存会话',
        nodeOnly: '会话仅在 Node/CLI 模式可用。',
        newSessionTitle: '新会话',
        newSessionTarget: '一个新会话',
        busy: {
            agentResponding: '助手仍在响应',
            awaitingAskUser: '等待 AskUser 回复',
            awaitingToolApproval: '等待工具审批',
            pendingApproval: '等待审批',
        },
        buttons: {
            open: '打开',
            delete: '删除',
            deleteConfirm: '删除（确认）',
            scope: '范围：{scope}',
            scopeCwd: '当前目录',
            scopeAll: '全部',
            refresh: '刷新',
        },
    },
    switchSessionDialog: {
        title: '切换会话',
        confirm: '切换并中断',
        target: '切换到 {target}？',
        fallback: '现在切换会话？',
        warning: '这将中断当前会话的响应/流程。',
        reason: '原因：{reason}',
    },
    themeDialog: {
        title: '主题',
        hint: 'Enter 应用  •  Esc 取消',
        mode: '模式',
        light: '浅色',
        dark: '深色',
        tip: '提示：默认跟随系统主题。',
    },
    commandPalette: {
        searchPlaceholder: '搜索…',
        noMatches: '无匹配项',
        hint: '输入筛选 • Enter: 打开 • Esc: 关闭',
        title: '命令',
    },
    help: {
        title: '帮助',
        modeLabel: '模式：{mode}',
        modeDetail: '当前助理模式。',
        shortcutsLabel: '快捷键',
        onboarding: '欢迎使用！快速上手：\n1) /connect：连接提供方\n2) /models：选择模型\n3) 发送「hello」开始对话\n提示：{commandsKey} 可打开命令面板。',
        items: {
            help: '帮助与快捷键（F1）',
            commands: '命令面板（Ctrl+P）',
            back: '返回上一跳',
            status: '切换状态详情',
        },
    },
    commands: {
        help: {
            label: '帮助',
            detail: '快捷键与常用命令（F1）',
        },
        sessions: {
            label: '会话',
            detail: '选择或创建会话（/sessions）',
        },
        timeline: {
            label: '时间线',
            detail: '跳转到用户消息（/timeline）',
        },
        trace: {
            label: '请求追踪',
            detail: '查看当前会话请求链路（/trace）',
        },
        newSession: {
            label: '新会话',
            detail: '开始新会话（/new）',
        },
        connectProvider: {
            label: '连接提供方',
            detail: '连接提供方（/connect）',
        },
        models: {
            label: '模型',
            detail: '选择模型（/models）',
        },
        toolApprovals: {
            label: '工具审批',
            detail: '配置审批（/approvals）',
        },
        toolSettings: {
            label: '工具设置',
            detail: '配置工具设置（/tool-settings）',
        },
        mcpHub: {
            label: 'MCP',
            detail: '管理 MCP 连接器与设置（/mcp）',
        },
        plugins: {
            label: '插件',
            detail: '管理插件（/plugins）',
        },
        mcpSettings: {
            label: 'MCP（高级 JSON）',
            detail: '配置原始 MCP 服务器 JSON（/mcp-settings）',
        },
        language: {
            label: '语言',
            detail: '切换界面语言（/language）',
        },
        settings: {
            label: '设置',
            detail: '自定义提供方（/settings, Ctrl+K）',
        },
    },
    homePage: {
        multilineTitle: '多行文本',
        multilineTitleWithCount: '多行文本（{count} 行）',
        providerCustom: '自定义',
        reviewPrompt: '帮我审查代码变更',
        footerCwd: 'cwd {cwd}',
        hints: {
            switchMode: '切换模式',
            commands: '命令',
        },
        tips: {
            greeting: '欢迎回来！可以试试 {commandsKey} 或 {init}。',
            commandsAlias: '小贴士：{key} 可打开命令面板。',
        },
        prompts: {
            help: '帮助与快捷键（F1）',
            sessions: '列出/选择会话',
            connect: '连接提供方',
            models: '选择模型',
            newSession: '开始新会话',
            approvals: '配置工具审批（auto/normal/strict）',
            commands: '打开命令面板',
            toolSettings: '配置工具设置',
            mcpSettings: '打开 MCP',
            plugins: '管理插件',
            language: '切换界面语言',
            theme: '选择主题',
            status: '切换状态详情',
            review: '审查代码变更',
            init: '初始化/改进 AGENTS.md',
            skills: '查看已加载的 Skills',
            exit: '退出应用',
            debug: '调试对话框（聊天）',
            settings: '自定义提供方设置',
        },
        commandPalette: {
            connect: '连接提供方',
            models: '选择模型',
        },
        commands: {
            debugLabel: '调试',
            debugDetail: '运行时状态（/debug）',
        },
        toast: {
            approvalsUsage: '使用 /approvals（无需 on/off）。',
            customProviderOnly: '设置仅适用于自定义提供方。',
            redoChatOnly: '重做仅在聊天视图可用。',
            retryChatOnly: '重试仅在聊天视图可用。',
            pinsChatOnly: '置顶仅在聊天视图可用。',
            renameChatOnly: '重命名仅在聊天视图可用（/rename <title>）。',
            commandRemoved: '该指令已移除：{command}',
            helpAliasRemoved: '查看帮助请按 F1。',
            deleteConfirm: '再次按 Delete 确认删除。',
            themeToggled: '主题：{mode}',
            pasteImagePending: '图片处理中，请稍候再发送。',
        },
    },
    chatPage: {
        placeholder: '随便问点什么…（换行：Shift+Enter 或 Ctrl+J）',
        placeholderAwaitingApproval: '审批阻塞中：请选择 允许 / 拒绝 后继续。',
        reviewPrompt: '帮我审查代码变更',
        notification: {
            approvalTitle: '[需要审批] 工具权限',
            approvalMessage: 'DimCode 正在等待工具审批：{tool}。',
            doneTitle: '[任务完成]',
            doneMessage: 'DimCode 已完成本次任务。',
            doneMessageWithDuration: 'DimCode 已完成本次任务，耗时 {duration}。',
            doneMessageWithTools: 'DimCode 已完成本次任务，共调用 {tools} 次工具。',
            doneMessageWithToolsAndDuration: 'DimCode 已完成本次任务，耗时 {duration}，共调用 {tools} 次工具。',
        },
        headerStats: '{messages} 条消息 · {tokens} 令牌',
        contextChip: '≈{pct}% / {tokens} 令牌',
        contextChipCompact: '{pct}%',
        thinkingWords: 'Coalescing,Thinking,Reasoning,Planning,Analyzing,Synthesizing,Refining,Composing',
        modelFallback: '模型',
        mode: {
            plan: '计划',
            agent: '助手',
            debug: '调试',
        },
        status: {
            approvalsAuto: 'AUTO',
            approvalsAll: 'ALL',
            blockedByApproval: '等待审批中',
            awaitingApprovalAction: '等待你的审批：请选择允许 / 拒绝后继续。',
        },
        footer: {
            dragSelect: '拖拽选择',
            openLink: 'Ctrl+点击打开文件或链接',
            esc: 'esc',
            interrupt: '中断',
            approvalPaused: '⏸ 已暂停',
            approvalPausedHint: '等待审批中（按 Enter 选择）。',
            shortcuts: 'Ctrl+K：配置    Ctrl+O：展开/收起工具/思考    Cmd+Delete/Ctrl+W：清空输入    Tab：切换模式    {commandsKey}：命令',
            shortcutsCompact: 'Ctrl+K：配置    Ctrl+O：工具/思考    Cmd+Delete/Ctrl+W：清空    Tab：切换模式    {commandsKey}：命令',
            shortcutsMicro: 'Ctrl+O：工具    {commandsKey}：命令',
            shortcutsMini: '{commandsKey}：命令',
        },
        session: {
            new: '新建',
        },
        timeline: {
            title: '时间线',
            empty: '（空）',
            filterAll: '全部消息',
            filterUser: '用户消息',
            filterTool: '工具调用',
        },
        pins: {
            title: '置顶',
            empty: '（空）',
        },
        jumpToBottom: {
            button: '↓',
        },
        prompts: {
            help: '帮助与快捷键（F1）',
            newSession: '开始新会话',
            resume: '恢复已暂停的队列',
            sessions: '列出/选择会话',
            timeline: '跳转到用户消息',
            trace: '查看当前会话请求/事件追踪',
            pins: '打开置顶消息',
            pin: '置顶上一条消息',
            back: '返回上一跳',
            connect: '连接提供方',
            models: '选择模型',
            theme: '切换界面主题',
            approvals: '配置工具审批（auto/normal/strict）',
            commands: '打开命令面板',
            toolSettings: '配置工具设置',
            mcpSettings: '打开 MCP',
            plugins: '管理插件',
            language: '切换界面语言',
            status: '切换状态详情',
            review: '审查代码变更',
            retry: '重试上一条用户消息',
            compact: '压缩会话上下文',
            init: '初始化/改进 AGENTS.md',
            rename: '重命名当前会话',
            skills: '查看已加载的 Skills',
            exit: '退出应用',
            debug: '调试对话框',
            settings: '自定义提供方设置',
        },
        commands: {
            pinsLabel: '置顶',
            pinsDetail: '打开置顶消息',
            backLabel: '返回',
            backDetail: '回到上一跳',
            debugLabel: '调试',
            debugDetail: '运行时状态（/debug）',
            statusLabel: '状态',
            statusDetail: '切换状态详情',
            themeLabel: '主题',
            themeDetail: '切换颜色主题',
        },
        tips: {
            contextWarn: '小贴士：上下文快满了，可以用 /compact 压缩或 /new 新开会话。',
            contextCritical: '小贴士：已接近上下文上限，建议 /new 新开会话（或先 /compact）。',
            timeline: '小贴士：对话变长时，用 /tl 打开时间线快速跳回某条消息。',
            timelineAlias: '小贴士：/tl 是 /timeline 的快捷别名。',
            commandsAlias: '小贴士：{key} 可打开命令面板。',
            errorRecovery: '小贴士：出错时可试试 /compact 或 /new。',
            greeting: '欢迎回来！可以试试 {commandsKey} 或 {init}。',
            compactDelight: '不错！保持上下文精简很有帮助。',
            addTests: '搞定了！要不要我顺手写测试？回复「是/要」。',
        },
        trace: {
            title: '会话追踪',
            loading: '正在加载会话追踪...',
            empty: '当前会话还没有可显示的请求追踪。',
            error: '加载会话追踪失败。',
            summary: '{requests} 个请求 · {events} 个事件',
            hint: '上下键切换请求 · 刷新重新拉取 · Esc 关闭',
            sessionEvents: '会话级事件',
            requestFallback: '（空提示词）',
            counts: '{events} 个事件 · {runs} 个 run · {tools} 个工具 · {children} 个子任务 · {compactions} 次压缩',
            moreEvents: '… 还有 {count} 个事件',
        },
        confirm: {
            addTests: '请为刚才的修改补充测试。',
        },
        toast: {
            customProviderOnly: '设置仅适用于自定义提供方。',
            renameNodeOnly: '重命名仅在 Node/CLI 模式可用。',
            noActiveSession: '没有可重命名的会话。',
            sessionNameEmpty: '会话名称不能为空。',
            sessionRenamed: '会话已重命名为：{title}',
            renameFailed: '重命名会话失败。',
            linkOpenHint: '提示：Ctrl+点击可打开文件或链接。',
            copySuccess: '已复制',
            copyFailed: '复制失败',
            forkFailed: '分叉会话失败。',
            backEmpty: '没有可返回的上一跳。',
            pinsEmpty: '还没有置顶消息。',
            pinEmpty: '暂无可置顶的消息。',
            pinned: '已置顶消息。',
            unpinned: '已取消置顶。',
            debugUnavailable: '调试服务器不可用。',
            approvalsUsage: '使用 /approvals（无需 on/off）。',
            debugDialogOpened: '调试对话框已打开。',
            debugDialogClosed: '调试对话框已关闭。',
            traceUnavailable: '当前运行时不支持会话追踪。',
            renameUsage: '用法：/rename <title>',
            themeToggled: '主题：{mode}',
            statusCompactOn: '状态：精简',
            statusCompactOff: '状态：详细',
            compactingSession: '正在压缩会话...',
            compactSuccess: '会话已压缩：{message}',
            compactWarning: '会话已压缩，但收益有限：{message}',
            compactSuccessDetailWithTokens: '前 {count} 条历史消息已折叠为摘要，预估输入 {before} -> {after} tokens，约省 {saved} tokens。',
            compactSuccessDetailNotReduced: '前 {count} 条历史消息已折叠为摘要，但预估输入变成了 {before} -> {after} tokens，这次没有变小。',
            compactSuccessDetailCountOnly: '前 {count} 条历史消息已折叠为摘要。',
            compactSuccessDetailSummaryOnly: '已生成新的历史摘要。',
            compactFailed: '会话压缩失败：{error}',
            compactFailedTokenLimit: '压缩失败：上下文预算不足。请正确设置 DIMCODE_CONTEXT_WINDOW，或切换更大上下文模型，或使用 /new。详情：{error}',
            retryEmpty: '没有可重试的上一条消息。',
            commandRemoved: '该指令已移除：{command}',
            helpAliasRemoved: '查看帮助请按 F1。',
            waitForResponse: '请等待当前响应完成，或按 Esc 中断。',
            pasteImagePending: '图片处理中，请稍候再发送。',
            pendingApproval: '请先处理 tool_approve。',
            awaitingApprovalAction: '已暂停：需要你的操作。请在权限卡中选择允许 / 始终允许 / 拒绝。',
            awaitingApprovalStillWaiting: '仍在等待审批（{seconds} 秒）。在你允许或拒绝前，模型不会继续。',
            pendingAskUser: '请先处理 ask_user。',
            sessionBusyElsewhere: '另一个窗口还在处理当前会话。请等它结束后再在这里发送。',
            notificationSessionBusy: '这条通知属于另一个忙碌中的会话。请先完成当前工作，或手动切换过去。',
            notificationSessionUnavailable: '当前环境无法打开这条通知对应的会话。',
            notificationSessionSwitchFailed: '打开这条通知对应的会话失败。',
            approvalNotActive: '该审批在排队，请先处理当前审批。',
            askUserNotActive: '该 ask_user 已失效。',
        },
    },
    chatQueue: {
        label: '队列（{count}）',
        labelCompact: '队列 {count}',
        more: '还有 {count} 条…',
        resumeToken: '/resume',
        resumePlainToken: 'resume',
        resumeLegacyToken: '继续队列',
        state: {
            idle: '待发送',
            running: '运行中',
            paused: '等待继续',
            error: '错误',
        },
        item: {
            steerAction: 'Steer',
            steerReady: '优先',
            steerPending: '下一次',
            steerPaused: '暂停',
        },
        toast: {
            enqueued: '已加入队列（第 {count} 条）。',
            full: '队列已满（最多 5 条），请先删除或 /new 新建会话。',
            cleared: '已清空 {count} 条队列消息。',
            deleted: '已删除 {count} 条队列消息，按 Ctrl+Z 可撤销。',
            steerPromoted: '已升级为 steer；恢复队列后会优先生效。',
            steerQueued: 'steer 当前不能立刻注入；已排到最前，会在下一轮优先生效。',
            steerSent: 'steer 已提交；会在当前轮下一次模型调用前注入。',
            undo: '已撤销队列删除。',
            pausedTip: '队列已暂停，输入 {resume} 或 {resumeText} 可继续，或发送新消息后选择如何处理。',
            stale: '队列已暂停：请求疑似卡住。',
        },
        confirm: {
            title: '继续发送队列吗？',
            description: '上一条请求未完成，队列中还有 {count} 条等待发送。',
            hint: '继续发送下一条，或暂停队列。',
            continue: '继续发送',
            pause: '暂停队列',
            reason: '原因：{reason}',
        },
        reason: {
            network_error: '网络异常。',
            timeout: '请求超时。',
            canceled_by_user: '已由用户取消。',
            rate_limited: '触发限流。',
            config_unavailable: '保存的配置不可用。',
            unknown: '请求失败。',
        },
        draftDecision: {
            title: '队列已暂停',
            description: '还有 {count} 条队列消息等待发送。请选择如何处理这次新输入。',
            previewLabel: '新输入：',
            continue: '继续队列',
            append: '追加到队列',
            replace: '丢弃旧队列并发送',
        },
    },
    chatStatus: {
        done: '完成。',
        error: '错误。',
        interrupted: '已中断。',
        permissionDenied: '权限被拒绝。',
        planning: '规划中…',
        drafting: '起草中…',
        runningTool: '正在运行 {tool}…',
        runningTools: '正在运行 {count} 个工具…',
        approvalPendingOther: '已有其他审批在等待（{permission}）…',
        awaitingApproval: '等待批准…',
        awaitingApprovalWithPerm: '等待批准（{permission}）…',
        awaitingApprovalWithRisk: '等待批准（{risk}）…',
        awaitingAnswers: '等待回答…',
        resumingApproved: '已批准，继续…',
        resumingDenied: '已拒绝，继续…',
        resuming: '继续…',
        autoApprovingWithRisk: '自动批准中（{risk}）…',
        riskFallback: '风险',
        toolFallback: '工具',
        thinking: '思考中…',
        autoCompactionRequired: '上下文接近上限，需要先压缩。',
        autoCompactionRequiredDetailed: '上下文接近上限 · 下一次请求预计占用 {estimated} tokens，自动压缩阈值为 {threshold} tokens，因此需要先压缩。',
        compressed: '上下文已压缩 · 已将 {removed} 条旧消息折叠为摘要，本轮请求预估少占用 {saved} tokens（耗时 {elapsed}ms）',
        autoCompactedDetailed: '自动压缩完成 · 已将 {removed} 条旧消息折叠为摘要，预估输入 {before} -> {after} tokens，约省 {saved} tokens',
        autoCompactedNotReduced: '自动压缩完成 · 已将 {removed} 条旧消息折叠为摘要，但预估输入变成了 {before} -> {after} tokens，这次没有变小',
        autoCompactedSaved: '自动压缩完成 · 已将 {removed} 条旧消息折叠为摘要，约省 {saved} tokens',
        autoCompactedCountOnly: '自动压缩完成 · 已将 {removed} 条旧消息折叠为摘要',
        interruptedMarkdown: '> **已中断** · 用户已取消响应（`Esc`）。',
        awaitingApprovalPrefix: '等待批准',
        awaitingAnswersPrefix: '等待回答',
        approvalPendingPrefix: '已有其他审批在等待',
        autoApprovingPrefix: '自动批准中',
    },
    chatParts: {
        thinking: '思考',
        plan: '计划',
        todo: '待办',
    },
    chatRender: {
        userLabel: '用户',
        outputLabel: '↳ 输出',
        outputLabelShort: '输出:',
        canceled: '已取消',
        inputLabel: '输入:',
        collapse: '...（收起）',
        moreLines: '...（还有 {count} 行）',
        moreLinesOmitted: '...（已省略 {count} 行；设置 {envVar} 可增加）',
        streamingTail: '…（流式：仅显示最后 {shown} 个字符；已省略 {omitted} 个）',
        copy: '复制',
        userResponses: '用户回复：',
        approvalQueued: '等待前一个审批完成…',
        proposedPlan: {
            title: '实施计划',
        },
        llmMeta: {
            changedFiles: '本轮改动 {count} 个文件：{files}',
            changedFilesMore: '另 {count} 个',
            revertHint: '提示：点击这条消息并选择“撤回消息”可回退本轮改动与消息。',
            changedFilesCardTitle: '本轮改动 {count} 个文件：',
            revertButton: '撤回',
        },
        toolName: {
            explore: 'Explore',
            subagent: 'Subagent',
        },
        toolSuffix: {
            offset: '偏移 {value}',
            limit: '限制 {value}',
            matches: '{count} 个匹配',
            todos: '{count} 项待办',
            results: '{count} 条结果',
            results_one: '{count} 条结果',
        },
        toolGroup: {
            readFiles: '读取 {count} 个文件',
            writeFiles: '写入 {count} 个文件',
            editFiles: '编辑 {count} 个文件',
            globPatterns: 'Glob {count} 个模式',
            globSingle: 'Glob {pattern}',
            grepPatterns: 'Grep {count} 个模式',
            bashCommands: '执行 {count} 条命令',
            searchQueries: '搜索 {count} 个查询',
            taskCount: '{name} x{count}',
            generic: '{name} x{count}',
        },
    },
    toolApproval: {
        reason: {
            search: '搜索可能访问网络。',
            bash: 'Bash 可执行命令。',
            edit: '文件变更可能修改本地文件。',
            grep: 'Grep 可能读取本地文件。',
        },
        inlineHint: '按 ↑↓←→ 移动，按 Enter 选择。',
        awaitingUserAction: '等待你的操作：请选择允许 / 始终允许 / 拒绝。',
        decision: {
            userDenied: '用户拒绝了审批',
        },
        denied: {
            title: '# 工具权限被拒绝',
            toolLine: '- 工具：`{tool}`',
            permissionLine: '- 权限：`{permission}`',
            hint: '你可以重新选择该 tool_call 并重试。',
        },
        summary: {
            title: '# 已批准并执行工具',
            permissionLine: '已批准 `{permission}` 权限以执行 `{tool}`。',
        },
        required: '需要审批（{risk}）。',
        args: {
            commandWithDescription: '命令：{command} - {description}',
            command: '命令：{command}',
            description: '说明：{description}',
            raw: '参数：{args}',
        },
    },
    pathPicker: {
        titleWorkspace: '选择工作区',
        titleFile: '选择文件',
        placeholderWorkspace: '输入路径（../ 等）。Tab 补全，Enter 选择目录。',
        placeholderFile: '输入路径（../ 等）。Tab 补全，Enter 选择文件。',
    },
    providerDialogs: {
        customLabel: '自定义',
        customDetail: '自定义',
        nextApiOAuthLabel: 'Next API 提供方（OAuth）',
        nextApiOAuthDetail: '通过 Next API OAuth 登录',
        addCustomLabel: '添加自定义提供方',
        addCustomDetail: '添加自定义提供方',
        providerFallback: '提供方',
        adapter: {
            openai: 'OpenAI',
            openaiOpenRouter: 'OpenAI 兼容（OpenRouter）',
            openaiLocal: 'OpenAI 兼容（本地端点）',
            openaiResponses: 'OpenAI Responses',
            gemini: 'Gemini',
            anthropic: 'Anthropic',
        },
        status: {
            configured: '已配置',
            notConfigured: '未配置',
        },
        manage: {
            title: '自定义提供方：{provider}',
            connect: '连接',
            connectDetail: '编辑 API Key / Base URL',
            rename: '重命名',
            renameDetail: '编辑提供方名称',
            models: '编辑模型',
            modelsDetail: '更新可用模型 ID',
            delete: '删除',
            deleteDetail: '移除此提供方',
        },
        deleteConfirm: {
            title: '删除 {provider}？',
            confirm: '删除（确认）',
            confirmDetail: '此操作无法撤销',
            cancelDetail: '保留提供方',
        },
        nameDialog: {
            title: '命名自定义提供方',
            label: '提供方名称',
            placeholder: '例如：DeepSeek（代理）',
        },
        modelsDialog: {
            title: '自定义提供方模型',
            modelsTitle: '模型',
            modelsPlaceholder: '模型 ID（, 或换行分隔）',
            hint: ', / 换行分隔 • Shift+Enter 换行 • Enter 应用',
            fetch: '拉取模型',
            fetching: '正在拉取模型…',
        },
        modelsFetchDialog: {
            title: '选择模型',
            searchPlaceholder: '筛选模型',
            hint: 'Space 勾选  •  Enter 确认  •  Esc 取消',
        },
        toast: {
            modelSet: '模型已设置为 {provider} / {model}。',
            noModels: '你目前还没有可用模型，请先连接一个提供方（/connect）。',
            connectFirst: '首次发送前请先连接提供方（/connect）。',
            apiKeyRequired: '需要 API Key。',
            baseUrlRequired: '需要 Base URL。',
            baseUrlInvalid: 'Base URL 必须以 http:// 或 https:// 开头。',
            connected: '已连接 {provider}。',
            connectedSelectModel: '已连接 {provider}，请选择模型。',
            connectedCheckFailed: '已连接 {provider}，但自检失败：{reason}',
            connectionTestPassed: '连接测试通过：{provider}。',
            connectionTestFailed: '连接测试失败：{provider} - {reason}',
            connectionActionUpdateKey: '操作建议：重新打开连接，更新 API Key 后再次测试。',
            connectionActionFixBaseUrl: '操作建议：检查 Base URL 路径（通常以 /v1 结尾）后再次测试。',
            connectionActionSwitchKey: '操作建议：稍后重试，或切换其他 Key/提供方。',
            connectionActionRetryTest: '操作建议：检查网络/代理后再次执行测试连接。',
            noModelsFetching: '暂无模型，正在拉取模型列表…',
            firstUseGuide: '快速上手：1) /connect  2) /models  3) 发送「hello」',
            firstUseSendHello: '下一步：发送第一条消息（例如：「hello」）。',
            connectionCheckUnauthorized: '401 未授权：请检查 API Key 与提供方是否匹配。',
            connectionCheckForbidden: '403 禁止访问：当前 Key 可能无此提供方/模型权限。',
            connectionCheckNotFound: '404 未找到：请检查 Base URL 路径（OpenAI 兼容通常以 /v1 结尾）。',
            connectionCheckRateLimited: '429 限流：请稍后重试，或切换其他 Key/提供方。',
            connectionCheckTimeout: '连接超时：请检查网络/代理后重试。',
            connectionCheckNetwork: '网络连接失败：请检查 DNS/代理/Base URL。',
            connectionCheckFailed: '连接自检失败：{error}',
            apiKeyCleared: '已清除 {provider} 的 API Key。',
            customAdded: '已添加自定义提供方：{provider}。',
            customRenamed: '已重命名自定义提供方：{provider}。',
            customModelsUpdated: '已更新自定义提供方模型：{provider}。',
            customDeleted: '已删除自定义提供方：{provider}。',
            modelsRequired: '至少需要一个模型。',
            modelsEmpty: '未获取到模型。',
            modelsFetchFailed: '模型拉取失败：{error}',
            modelsFetchChatCompletions: '当 Base URL 为 /chat/completions 或 /responses 时不支持拉取模型。',
            manualModelsRequired: '此端点不支持自动发现模型。请在模型配置中手动输入模型名称。',
            nameRequired: '提供方名称不能为空。',
            nameConflict: '提供方名称已存在。',
        },
    },
    copyToast: {
        copiedToClipboard: '已复制到剪贴板',
    },
};
//# sourceMappingURL=zh-CN.js.map