export const dashboardZhCn = { processing: '处理中...', executingWith: (action: string) => `执行中:${action}`, executing: 'Nanobot 正在执行工具...', thinkingWith: (action: string) => `思考中:${action}`, thinking: 'Nanobot 正在思考中...', fileReadFail: '文件读取失败。', workspaceLoadFail: '无法读取 workspace 目录。', channelSaved: '渠道配置已保存(重启 Bot 后生效)。', channelSaveFail: '渠道保存失败。', channelAddFail: '新增渠道失败。', channelDeleted: '渠道已删除。', channelDeleteConfirm: (channelType: string) => `确认删除渠道 ${channelType}?`, channelDeleteFail: '删除渠道失败。', stopFail: '停止失败,请查看后端日志。', startFail: '启动失败,请查看后端日志。', backendDeliverFail: '后端未成功投递指令。', sendFail: '发送失败。', uploadFile: '上传文件', uploadingFile: '上传中...', uploadFail: '文件上传失败。', attachmentAdded: (count: number) => `已添加 ${count} 个附件。`, uploadTooLarge: (files: string, limitMb: number) => `以下文件超过上传上限 ${limitMb}MB:${files}`, uploadTypeNotAllowed: (files: string, allowed: string) => `以下文件类型不允许上传:${files}。允许的后缀:${allowed}`, attachmentMessage: '[附件消息]', removeAttachment: '移除附件', copyPrompt: '复制指令', editPrompt: '编辑指令', copyPromptDone: '指令已复制。', copyPromptFail: '复制指令失败。', editPromptDone: '已填入输入框。', voiceInput: '语音输入', textInput: '文字输入', voiceUnavailable: '语音识别未启用。', voiceUnsupported: '当前浏览器不支持录音。', voicePermissionDenied: '麦克风权限被拒绝,请在浏览器设置中允许访问。', voiceRecordFail: '录音失败,请重试。', voiceReady: '点击麦克风开始录音', voiceRecording: '录音中...', voiceTranscribing: '语音识别中...', voiceStart: '开始录音', voiceStop: '停止录音', voiceTranscribeDone: '语音已转为文本。', voiceTranscribeEmpty: '未识别到有效语音内容。', voiceTranscribeFail: '语音识别失败。', copyReply: '复制回复', copyReplyDone: '回复已复制。', copyReplyFail: '复制回复失败。', deleteMessage: '删除消息', deleteMessageConfirm: (role: string) => `确认删除这条${role}消息?`, deleteMessageDone: '消息已删除。', deleteMessageFail: '删除消息失败。', deleteMessagePending: '消息尚未同步,暂不可删除。', quoteReply: '引用回复', quotedReplyLabel: '已引用回复', clearQuote: '取消引用', quoteOnlyMessage: '[引用回复]', stagedSubmissionEmpty: '仅包含附件或引用内容', stagedSubmissionRestore: '编辑', stagedSubmissionRemove: '移除', stagedSubmissionQueued: '已加入暂存队列,前序任务结束后会自动提交。', stagedSubmissionRestored: '暂存内容已恢复到输入框。', stagedSubmissionAttachmentCount: (count: number) => `附件 ${count}`, goodReply: '好回复', badReply: '坏回复', feedbackUpSaved: '已标记为好回复。', feedbackDownSaved: '已标记为坏回复。', feedbackCleared: '反馈已取消。', feedbackSaveFail: '反馈保存失败。', feedbackMessagePending: '消息尚未同步,暂不可反馈。', sendFailMsg: (msg: string) => `指令发送失败:${msg}`, providerRequired: '请填写 Provider、模型和 API Key 后再测试。', connOk: (preview: string) => (preview ? `连接成功,模型: ${preview}` : '连接成功'), connFail: (msg: string) => `连接失败: ${msg}`, configUpdated: '配置已更新(重启 Bot 后生效)。', saveFail: '保存失败。', deleteBotConfirm: (id: string) => `确认删除 Bot ${id}?将删除对应 workspace。`, deleteBotDone: 'Bot 与 workspace 已删除。', deleteFail: '删除失败。', titleBots: 'Bot 列表', botSearchPlaceholder: '按 Bot 名称或 ID 搜索', botSearchNoResult: '没有匹配的 Bot。', workspaceSearchPlaceholder: '按文件名或路径搜索', workspaceSearchNoResult: '没有匹配的文件或目录。', searchAction: '搜索', clearSearch: '清除搜索', syncingPageSize: '正在同步分页设置...', paginationPrev: '上一页', paginationNext: '下一页', paginationPage: (current: number, total: number) => `${current} / ${total}`, newBot: '新建机器人', manageImages: '镜像管理', extensions: '扩展菜单', templateManager: '模板管理', templateManagerTitle: '模板管理', templateTabAgent: '代理模板', templateTabTopic: '主题预设模板', templateAgentFile: '代理模板(5 个 MD)', templateTopicFile: '主题预设模板(3 项)', templateJsonHint: '请编辑 JSON 内容,保存后新建配置将读取最新模板。', templateLoadFail: '读取模板失败。', templateSaveFail: '保存模板失败。', templateSaved: '模板已保存。', batchStart: '批量启动', batchStop: '批量停止', batchStartNone: '当前没有可批量启动的 Bot。', batchStopNone: '当前没有可批量停止的 Bot。', batchStartConfirm: (count: number) => `确认批量启动 ${count} 个 Bot?`, batchStopConfirm: (count: number) => `确认批量停止 ${count} 个 Bot?`, batchStartDone: (ok: number, fail: number) => `批量启动完成:成功 ${ok},失败 ${fail}`, batchStopDone: (ok: number, fail: number) => `批量停止完成:成功 ${ok},失败 ${fail}`, templateAgentInvalid: '代理模板格式错误。', templateTopicInvalid: '主题模板格式错误。', templateParseFail: '模板 JSON 解析失败。', image: '镜像', disabled: '已禁用', stop: '停止', start: '启动', enable: '启用', disable: '禁用', disableConfirm: (id: string) => `确认禁用 Bot ${id}?禁用后将立即停止且不可操作。`, enableDone: 'Bot 已启用。', disableDone: 'Bot 已禁用并停止。', enableFail: '启用失败,请查看后端日志。', disableFail: '禁用失败,请查看后端日志。', restart: '重启 Bot', restartConfirm: (id: string) => `确认重启 Bot ${id}?`, restartFail: '重启失败,请查看后端日志。', delete: '删除', noConversation: '暂无对话消息。请先发送指令,Bot 回复会在这里按标准会话格式展示。', clearHistory: '清空对话', clearHistoryConfirm: (name: string) => `确认清空 ${name} 的面板对话历史?`, clearHistoryDone: '对话历史已清空。', clearHistoryFail: '清空对话历史失败。', exportHistory: '导出对话', exportHistoryFail: '导出对话失败。', you: '你', user: '用户', inputPlaceholder: '输入指令后回车发送(Shift+Enter 换行)', disabledPlaceholder: 'Bot 未运行,无法发送指令。', controlCommands: '控制命令', controlCommandsDesc: '发送 nanobot 内建 slash 指令', controlCommandNew: '新会话', controlCommandStop: '停止任务', controlCommandRestart: '重启进程', controlCommandHelp: '查看命令', controlCommandsShow: '展开控制命令', controlCommandsHide: '收起控制命令', controlCommandSent: (command: string) => `已发送控制命令 ${command}。`, sending: '发送中...', send: '发送', interrupt: '中断', interruptSent: '已发送中断指令。', botStarting: 'Bot 正在启动中...', botStopping: 'Bot 正在停止中...', botDisabledHint: 'Bot 已禁用,请先启用后再进行操作。', chatDisabled: 'Bot 已停止,对话区已禁用。', selectBot: '请选择 Bot 查看详情', runtime: '运行状态', base: '基础', params: '模型', channels: '渠道', topic: '主题', topicPanel: '主题管理', topicPanelDesc: '管理该 Bot 的主题路由目标。仅启用的主题会接收投递;未配置主题时不投递。', topicActive: '启用', topicName: '主题名称', topicDescription: '主题描述', topicPurpose: '用途(purpose)', topicIncludeWhen: '命中条件(include_when)', topicExcludeWhen: '排除条件(exclude_when)', topicExamplesPositive: '正例(examples.positive)', topicExamplesNegative: '反例(examples.negative)', topicPriority: '优先级(priority)', topicListHint: '每行一条规则或示例', topicFilterProgress: '过滤 progress 系统消息', topicFilterToolHint: '过滤 tool-hint 系统消息', topicSystemFilterHint: '建议保持开启,避免 feed 被过程噪声污染。', topicEmpty: '暂无主题。', topicAdd: '新增主题', topicAddHint: '主题 Key 仅支持小写字母、数字、点、下划线和连字符。', topicKey: '主题 Key', topicKeyPlaceholder: '例如 finance_market', topicKeyRequired: '请先填写主题 Key。', topicSaved: '主题配置已保存。', topicSaveFail: '主题配置保存失败。', topicDeleted: '主题已删除。', topicDeleteFail: '主题删除失败。', topicDeleteConfirm: (topicKey: string) => `确认删除主题 ${topicKey}?`, topicPresetPolitics: '预设:时政新闻', topicPresetFinance: '预设:财经信息', topicPresetTech: '预设:技术资讯', topicPresetBlank: '空白主题', topicPresetPoliticsApplied: '已填入“时政新闻”主题预设。', topicPresetFinanceApplied: '已填入“财经信息”主题预设。', topicPresetTechApplied: '已填入“技术资讯”主题预设。', skills: '技能', mcp: 'MCP', tools: '工具', skillsPanel: '技能面板', skillsEmpty: '暂无技能。', addSkill: '新增技能', removeSkill: '移除技能', uploadZipSkill: '上传 ZIP 技能包', zipOnlyHint: '仅支持 .zip 文件', invalidZipFile: '只能上传 .zip 文件', envParams: '环境变量', envParamsDesc: '配置该 Bot 的运行时环境变量(容器级)。', noEnvParams: '暂无环境变量。', envKey: '变量名(如 BRAVE_API_KEY)', envValue: '变量值', showEnvValue: '显示变量值', hideEnvValue: '隐藏变量值', addEnvParam: '新增环境变量', removeEnvParam: '移除环境变量', envParamsSaved: '环境变量已保存。', envParamsSaveFail: '环境变量保存失败。', envParamsHint: '修改后需重启 Bot 才会生效。', mcpPanel: 'MCP 配置', mcpPanelDesc: '配置该 Bot 的 MCP Servers(HTTP/SSE)。建议每个 Bot 使用独立的 X-Bot-Id / X-Bot-Secret。', mcpEmpty: '暂无 MCP Server。', mcpServer: 'MCP Server', mcpName: '服务名称', mcpNamePlaceholder: '如 biz_mcp', mcpType: '传输类型', mcpUrlPlaceholder: '如 http://mcp.internal:9001/mcp', mcpBotIdPlaceholder: '如 mula_bot_b02', mcpBotSecretPlaceholder: '输入该 Bot 对应的密钥', mcpToolTimeout: 'Tool Timeout(秒)', mcpDraftRequired: '请先填写 MCP 服务名称和 URL。', mcpDraftAdded: '已加入 MCP 列表,记得保存配置。', addMcpServer: '新增 MCP Server', saveMcpConfig: '保存 MCP 配置', mcpSaved: 'MCP 配置已保存。', mcpSaveFail: 'MCP 配置保存失败。', mcpHint: '保存后需重启 Bot 才会生效。', toolsLoadFail: '读取工具技能失败。', toolsAddFail: '新增工具失败。', toolsRemoveFail: '移除工具失败。', toolsRemoveConfirm: (name: string) => `确认移除技能 ${name}?该操作不可撤销。`, agent: '代理', container: '容器状态', current: '当前状态', lastAction: '最后动作', workspaceOutputs: '工作区', autoRefresh: '自动刷新', loadingDir: '读取目录中...', emptyDir: '当前目录为空。', openingPreview: '正在打开文件预览...', workspaceHint: '点击目录进入;点击 .md/.json 文件弹出预览。', noPreviewFile: '本目录没有可预览文件。', noTelemetry: '暂无可展示信息', goUpTitle: '点击返回上级目录', goUp: '返回上级', openFolderTitle: '点击进入目录', folder: '目录', previewTitle: '点击打开预览', fileNotPreviewable: '该文件类型不可预览', baseConfig: '基础配置', accessPassword: '访问密码', accessPasswordPlaceholder: '留空表示不设置访问密码', botIdReadonly: 'Bot ID(只读)', botName: 'Bot 名称', botNamePlaceholder: '输入 Bot 名称', baseImageReadonly: '基础镜像', modelName: '模型名称', modelNamePlaceholder: '如 qwen-plus', newApiKey: 'API Key', newApiKeyPlaceholder: '请输入 API Key', testing: '测试中...', testModelConnection: '测试模型连接', cancel: '取消', save: '保存', modelParams: '模型', saveParams: '保存参数', agentFiles: '代理文件配置', saveFiles: '保存文件', filePreview: '文件预览', editFile: '编辑 Markdown', previewMode: '预览模式', fileTruncated: '文件较大,当前内容为截断预览。', fileEditDisabled: '当前为截断预览,不能直接编辑保存。', fileSaved: 'Markdown 已保存。', fileSaveFail: 'Markdown 保存失败。', download: '下载', copyAddress: '复制地址', urlCopied: '地址已复制。', urlCopyFail: '复制地址失败。', close: '关闭', cronViewer: '定时任务', cronReload: '刷新任务', cronLoading: '读取任务中...', cronEmpty: '暂无定时任务。', cronEnabled: '启用', cronDisabled: '已停用', cronStart: '启用任务', cronStop: '停止任务', cronDelete: '删除任务', cronStartFail: '启用任务失败。', cronStopFail: '停止任务失败。', cronDeleteFail: '删除任务失败。', cronDeleteConfirm: (id: string) => `确认删除任务 ${id}?`, };