const zhHans = { sidebar: { home: '首页', extensions: '扩展', installedPlugins: '已安装扩展', pluginMarket: '扩展市场', mcpServers: 'MCP 服务器', addExtension: '添加扩展', pluginPages: '插件页面', pluginPagesTooltip: '由已安装的插件提供的可视化页面', quickStart: '快速开始向导', scrollToBottom: '滚动到底部', editionCommunity: '社区版', editionCloud: '云端版', }, common: { login: '登录', logout: '退出登录', accountOptions: '系统设置', account: '账户', integration: '连接', email: '邮箱', password: '密码', welcome: '欢迎回到 LangBot 👋', continueToLogin: '登录以继续', loginSuccess: '登录成功', loginFailed: '登录失败,请检查邮箱和密码是否正确', loginLoadError: '无法连接到服务器', loginLoadErrorDesc: '无法连接到 LangBot 后端服务,请确认服务已启动后重试。', retry: '重试', enterEmail: '输入邮箱地址', enterPassword: '输入密码', invalidEmail: '请输入有效的邮箱地址', emptyPassword: '请输入密码', language: '语言', helpDocs: '帮助文档', featureRequest: '需求建议', starOnGitHub: '在 GitHub 上 Star', create: '创建', edit: '编辑', delete: '删除', add: '添加', select: '请选择', skill: '技能', cancel: '取消', submit: '提交', error: '错误', success: '成功', save: '保存', saving: '保存中...', recommend: '推荐', start: '开始', confirm: '确认', confirmDelete: '确认删除', deleteConfirmation: '你确定要删除这个吗?', selectOption: '选择一个选项', selectPreset: '选择预设', required: '必填', enable: '是否启用', name: '名称', description: '描述', icon: '图标', close: '关闭', deleteSuccess: '删除成功', deleteError: '删除失败:', addRound: '添加回合', copy: '复制', copySuccess: '复制成功', copyFailed: '复制失败', test: '测试', forgotPassword: '忘记密码?', agreementNotice: '继续即表示您同意我们的', termsOfService: '服务条款', privacyPolicy: '隐私政策', and: '和', dataCollectionPolicy: '数据收集政策', dataCollectionPolicyUrl: 'https://link.langbot.app/zh/docs/data-policy', loading: '加载中...', fieldRequired: '此字段为必填项', or: '或', loginWithSpace: '通过 Space 登录', spaceLoginRecommended: '推荐:使用官方提供的稳定模型 API 和云服务', loginLocal: '使用本地账号登录', loginWithPassword: '通过密码登录', spaceLoginTitle: '通过 Space 登录', spaceLoginDescription: '扫描二维码或访问下方链接进行授权', spaceLoginUserCode: '您的验证码', spaceLoginExpires: '验证码将在 {{seconds}} 秒后过期', spaceLoginWaiting: '等待授权中...', spaceLoginSuccess: '授权成功', spaceLoginFailed: 'Space 登录失败', spaceLoginExpired: '验证码已过期,请重试', spaceLoginCancel: '取消', spaceLoginVisitLink: '访问链接', spaceLoginProcessing: '正在通过 Space 登录', spaceLoginProcessingDescription: '请稍候,正在完成登录...', spaceLoginSuccessDescription: '正在跳转到 LangBot...', spaceLoginError: '登录失败', spaceLoginNoCode: '缺少授权码', backToLogin: '返回登录', backToHome: '返回首页', spaceAccountCannotChangePassword: 'Space 账户无法在此修改密码', theme: '主题', changePassword: '修改密码', currentPassword: '当前密码', newPassword: '新密码', confirmNewPassword: '确认新密码', enterCurrentPassword: '输入当前密码', enterNewPassword: '输入新密码', enterConfirmPassword: '确认新密码', currentPasswordRequired: '当前密码不能为空', newPasswordRequired: '新密码不能为空', confirmPasswordRequired: '确认密码不能为空', passwordsDoNotMatch: '两次输入的密码不一致', changePasswordSuccess: '密码修改成功', changePasswordFailed: '密码修改失败,请检查当前密码是否正确', apiIntegration: 'API 集成', apiKeys: 'API 密钥', manageApiIntegration: '管理 API 集成', manageApiKeys: '管理 API 密钥', createApiKey: '创建 API 密钥', apiKeyName: 'API 密钥名称', apiKeyDescription: 'API 密钥描述', apiKeyValue: 'API 密钥值', apiKeyCreated: 'API 密钥创建成功', apiKeyDeleted: 'API 密钥删除成功', apiKeyDeleteConfirm: '确定要删除此 API 密钥吗?', apiKeyNameRequired: 'API 密钥名称不能为空', copyApiKey: '复制 API 密钥', apiKeyCopied: 'API 密钥已复制到剪贴板', noApiKeys: '暂无 API 密钥', apiKeyHint: 'API 密钥允许外部系统访问 LangBot 的 Service API', webhooks: 'Webhooks', createWebhook: '创建 Webhook', webhookName: 'Webhook 名称', webhookUrl: 'Webhook URL', webhookDescription: 'Webhook 描述', webhookEnabled: '是否启用', webhookCreated: 'Webhook 创建成功', webhookDeleted: 'Webhook 删除成功', webhookDeleteConfirm: '确定要删除此 Webhook 吗?', webhookNameRequired: 'Webhook 名称不能为空', webhookUrlRequired: 'Webhook URL 不能为空', noWebhooks: '暂无 Webhook', webhookHint: 'Webhook 允许 LangBot 将个人消息和群消息事件推送到外部系统', actions: '操作', apiKeyCreatedMessage: '请复制此 API 密钥,若按钮无效,请手动复制。', none: '无', more: '更多 ({{count}})', less: '收起', noItems: '暂无内容', }, notFound: { title: '页面不存在', description: '您要查找的页面似乎不存在。请检查您输入的 URL 是否正确,或者返回首页。', back: '上一级', home: '返回主页', help: '查看帮助文档', }, models: { title: '模型配置', description: '配置和管理可在流水线中使用的模型', createModel: '创建对话模型', editModel: '编辑模型', getModelListError: '获取模型列表失败:', modelName: '模型名称', modelProvider: '模型提供商', modelBaseURL: '基础 URL', modelAbilities: '模型能力', saveSuccess: '保存成功', saveError: '保存失败:', createSuccess: '创建成功', createError: '创建失败:', deleteSuccess: '删除成功', deleteError: '删除失败:', deleteConfirmation: '你确定要删除这个模型吗?', modelNameRequired: '模型名称不能为空', modelProviderRequired: '模型供应商不能为空', requestURLRequired: '请求URL不能为空', apiKeyRequired: 'API Key不能为空', keyNameRequired: '键名不能为空', mustBeValidNumber: '必须是有效的数字', mustBeTrueOrFalse: '必须是 true 或 false', requestURL: '请求URL', scanURL: '扫描模型地址', scanURLPlaceholder: '留空则默认使用请求URL + /models', scanURLDescription: '当模型扫描接口与模型调用接口不是同一个地址时,在这里填写实际的模型列表接口。', apiKey: 'API Key', abilities: '能力', selectModelAbilities: '选择模型能力', visionAbility: '视觉能力', functionCallAbility: '函数调用', extraParameters: '额外参数', addParameter: '添加参数', keyName: '键名', type: '类型', value: '值', string: '字符串', number: '数字', boolean: '布尔值', object: '对象', objectJsonPlaceholder: '{ "type": "disabled" }', invalidJsonObject: '值必须是有效的 JSON 对象', selectModelProvider: '选择模型供应商', modelProviderDescription: '请填写供应商向您提供的模型名称', modelManufacturer: '模型厂商', aggregationPlatform: '中转平台', selfDeployed: '自部署', builtin: '内置', selectModel: '请选择模型', testSuccess: '测试成功', testError: '测试失败,请检查模型配置', llmModels: '对话模型', localProvider: '本地', localProviderDescription: '在本地配置和管理的模型', spaceProviderDescription: '从您的 Space 账户同步的模型', spaceDisabledForLocalAccount: '使用 Space 登录以使用云端模型', syncModels: '同步', syncSuccess: '同步完成:创建 {{created}} 个,更新 {{updated}} 个', syncError: '同步失败:', spaceModelReadOnly: 'Space 模型为只读', noSpaceModels: '暂无 Space 模型。点击同步按钮从 Space 获取模型。', noLocalModels: '暂无本地模型。点击创建按钮添加模型。', providerCount: '共 {{count}} 个自定义供应商', // 供应商结构新增键 addModel: '添加模型', manualAdd: '手动添加', scanAdd: '扫描添加', scanModels: '扫描模型', scanModelsHint: '从当前供应商接口读取可用模型,然后勾选要添加的模型。', scannedModels: '扫描结果', scanDebug: '调试信息', searchScannedModels: '搜索扫描结果', noScannedModels: '还没有扫描结果,点击上方按钮开始扫描。', noScannedModelsMatch: '没有匹配的模型', addSelectedModels: '添加所选模型', addSelectedModelsSuccess: '已添加 {{count}} 个模型', selectAll: '全选模型', alreadyAdded: '已添加', addLLMModel: '添加对话模型', addEmbeddingModel: '添加嵌入模型', provider: '供应商', existingProvider: '已有供应商', newProvider: '新建供应商', selectProvider: '选择供应商', requester: '供应商类型', selectRequester: '选择供应商类型', langbotModelsDescription: 'LangBot Space 提供的云端模型', credits: '积分', loginWithSpace: '通过 Space 登录', loginToUseModels: '通过 Space 登录以使用云端模型', noModels: '暂无模型', langbotModels: 'LangBot 模型', spaceTrialTooltip: '免费试用积分已就绪!通过 Space 登录即可零配置使用云端模型。', unlockModels: '登录以使用', editProvider: '编辑供应商', addProvider: '添加供应商', addProviderHint: '添加自定义供应商以使用其他来源的模型', addProviderHintSimple: '添加自定义供应商以使用模型', noProviders: '暂无自定义供应商', providerName: '供应商名称', providerNameRequired: '供应商名称不能为空', requesterRequired: '供应商类型不能为空', providerSaved: '供应商已保存', providerCreated: '供应商已创建', providerSaveError: '保存供应商失败:', providerDeleted: '供应商已删除', providerDeleteError: '删除供应商失败:', deleteProviderConfirmation: '你确定要删除这个供应商吗?', loadError: '加载数据失败', chat: '对话', embedding: '嵌入', rerank: '重排序', rerankUrlTooltip: '重排序接口的完整 URL 覆盖(如 https://dashscope.aliyuncs.com/compatible-api/v1/reranks)', rerankPathTooltip: '添加到基础 URL 后的重排序路径(默认:rerank)', modelsCount: '{{count}} 个模型', expandModels: '展开', collapseModels: '收起', fallback: { primary: '主模型', fallbackList: '备用模型', addFallback: '添加备用模型', }, }, bots: { title: '机器人', description: '创建和管理机器人,这是 LangBot 与各个平台连接的入口', createBot: '创建机器人', selectFromSidebar: '从侧边栏选择一个机器人', editBot: '编辑机器人', getBotListError: '获取机器人列表失败:', botName: '机器人名称', botDescription: '机器人描述', botNameRequired: '机器人名称不能为空', botDescriptionRequired: '机器人描述不能为空', adapterRequired: '适配器不能为空', defaultDescription: '一个机器人', getBotConfigError: '获取机器人配置失败:', saveSuccess: '保存成功', saveError: '保存失败:', createSuccess: '创建成功 请启用或修改绑定流水线', createError: '创建失败:', deleteSuccess: '删除成功', deleteError: '删除失败:', deleteConfirmation: '你确定要删除这个机器人吗?', platformAdapter: '平台/适配器选择', selectAdapter: '选择适配器', adapterConfig: '适配器配置', viewAdapterDocs: '查看文档', bindPipeline: '绑定流水线', selectPipeline: '选择流水线', selectBot: '请选择机器人', botLogTitle: '机器人日志', enableAutoRefresh: '开启自动刷新', session: '会话', yesterday: '昨天', earlier: '更久之前', dateFormat: '{{month}}月{{day}}日', setBotEnableError: '设置机器人启用状态失败', log: '日志', configuration: '配置', logs: '日志', basicInfo: '基础信息', basicInfoDescription: '设置机器人名称和描述', routingConnection: '路由与连接', routingConnectionDescription: '绑定处理此机器人消息的流水线', routingRules: '条件路由规则', routingRulesDescription: '按顺序匹配,命中第一条规则后路由到对应流水线;都不匹配时使用上方默认流水线', addRoutingRule: '添加规则', ruleTypeLauncherType: '会话类型', ruleTypeLauncherId: '会话 ID', ruleTypeMessageContent: '消息内容', operatorEq: '等于', operatorNeq: '不等于', operatorContains: '包含', operatorNotContains: '不包含', operatorStartsWith: '前缀匹配', operatorRegex: '正则匹配', operatorHas: '包含', operatorNotHas: '不包含', ruleTypeMessageHasElement: '消息元素类型', ruleValueElementPlaceholder: '选择元素类型', elementImage: '图片', elementVoice: '语音', elementFile: '文件', elementForward: '转发', elementFace: '表情', elementAt: '@某人', elementAtAll: '@全体', elementQuote: '引用', ruleValuePlaceholder: '匹配值', ruleValueLauncherIdPlaceholder: '群号或用户 ID', ruleValueMessagePlaceholder: '消息内容', ruleValuePrefixPlaceholder: '如: !draw', ruleValueRegexpPlaceholder: '如: ^/help', pipelineDiscard: '丢弃消息', sessionTypePerson: '私聊', sessionTypeGroup: '群聊', adapterConfigDescription: '配置所选平台适配器', dangerZone: '危险区域', dangerZoneDescription: '不可逆的操作', deleteBotAction: '删除此机器人', deleteBotHint: '删除后,所有关联配置将被永久移除,且无法恢复。', webhookUrl: 'Webhook 回调地址', webhookUrlCopied: 'Webhook 地址已复制', webhookUrlHint: '点击输入框自动全选,然后按 Ctrl+C (Mac: Cmd+C) 复制,或点击右侧按钮', webhookUrlHintEither: '以上两个地址任选其一填入平台配置即可', webhookSaasHint: 'Webhook 需要公网可访问的域名。LangBot Cloud 为你的机器人提供开箱即用的公网地址。', webhookSaasLink: '了解 LangBot Cloud', adapterCategory: { popular: '热门', china: '中国', global: '全球', protocol: '协议', }, logLevel: '日志级别', allLevels: '全部级别', selectLevel: '选择级别', levelsSelected: '个级别已选', viewDetailedLogs: '查看详细日志', viewDetails: '详情', collapse: '收起', imagesAttached: '张图片', noLogs: '暂无日志', sessionMonitor: { title: '会话监控', sessions: '会话列表', noSessions: '暂无会话', selectSession: '选择一个会话查看消息', noMessages: '该会话暂无消息', messages: '条消息', messageCount: '{{count}} 条消息', loading: '加载中...', loadingSessions: '加载会话中...', loadingMessages: '加载消息中...', user: '用户', variables: '变量', platform: '平台', lastActive: '最近活跃', refresh: '刷新', active: '活跃', inactive: '不活跃', discarded: '已丢弃', userMessage: '用户', botMessage: '助手', }, }, plugins: { title: '插件扩展', description: '安装和配置用于扩展功能的插件,请在流水线配置中选用', createPlugin: '创建插件', editPlugin: '编辑插件', installed: '已安装', marketplace: '扩展市场', arrange: '编排', install: '安装', installPlugin: '安装插件', newPlugin: '新建插件', onlySupportGithub: '目前仅支持从 GitHub 安装', enterGithubLink: '请输入插件的Github链接', installing: '正在安装插件...', installSuccess: '插件安装成功', installFailed: '插件安装失败:', searchPlugin: '搜索插件', sortBy: '排序方式', mostStars: '最多星标', recentlyAdded: '最近新增', recentlyUpdated: '最近更新', noMatchingPlugins: '没有找到匹配的插件', loading: '加载中...', getPluginListError: '获取插件列表失败:', pluginConfig: '插件配置', noPluginInstalled: '暂未安装任何插件', noExtensionInstalled: '暂未安装任何扩展', loadingExtensions: '正在加载扩展...', groupByType: '按格式分组', pluginSort: '插件排序', pluginSortDescription: '插件顺序会影响同一事件内的处理顺序,请拖动插件卡片排序', pluginSortSuccess: '插件排序成功', pluginSortError: '插件排序失败:', pluginNoConfig: '插件没有配置项。', systemDisabled: '插件系统未启用', systemDisabledDesc: '尚未启用插件系统,请根据文档修改配置', connectionError: '插件系统连接异常', connectionErrorDesc: '请检查插件系统配置或联系管理员', errorDetails: '错误详情', loadingStatus: '正在检查插件系统状态...', failedToGetStatus: '获取插件系统状态失败', pluginSystemNotReady: '插件系统未就绪,无法执行此操作', debugInfo: '调试信息', debugInfoTitle: '插件调试信息', debugUrl: '调试地址', debugKey: '调试密钥', noDebugKey: '(未设置)', debugKeyDisabled: '未设置调试密钥,插件调试无需认证', boxStatusTitle: 'Box 运行时', boxStatus: '状态', boxConnected: '已连接', boxUnavailable: '不可用', boxBackend: '后端', boxProfile: '配置', boxSandboxes: '沙箱数', boxErrors: '错误数', boxSessionImage: '镜像', boxSessionBackend: '后端', boxSessionResources: '资源', boxSessionNetwork: '网络', boxStatusLoadFailed: '加载 Box 状态失败', failedToGetDebugInfo: '获取调试信息失败', copiedToClipboard: '已复制到剪贴板', deleting: '删除中...', deletePlugin: '删除插件', cancel: '取消', saveConfig: '保存配置', saving: '保存中...', confirmDeletePlugin: '你确定要删除插件({{author}}/{{name}})吗?', deleteDataCheckbox: '同时删除插件配置和持久化存储', confirmDelete: '确认删除', deleteError: '删除失败:', close: '关闭', deleteConfirm: '删除确认', deleteSuccess: '删除成功', dangerZone: '危险区域', dangerZoneDescription: '不可逆的操作', modifyFailed: '修改失败:', componentName: { Tool: '工具', EventListener: '事件监听器', Command: '命令', KnowledgeEngine: '知识引擎', Parser: '解析器', Page: '页面', }, uploadLocal: '本地上传', debugging: '调试中', uploadLocalPlugin: '上传本地插件', localPreview: { title: '预览本地插件包', unpacking: '正在解包预览...', unpackComplete: '解包预览完成', failed: '解包预览失败', pluginInfo: '插件信息', packageInfo: '包信息', name: '名称', author: '作者', version: '版本', fileCount: '文件数', dependencies: '依赖', components: '组件', ready: '插件包已解包,确认后开始安装。', }, uploadPluginOnly: '仅支持 .lbpkg 文件', dragToUpload: '拖拽文件到此处上传', unsupportedFileType: '不支持的文件类型,仅支持 .lbpkg 文件', uploadingPlugin: '正在上传插件...', uploadSuccess: '上传成功', uploadFailed: '上传失败', selectFileToUpload: '选择要上传的插件文件', askConfirm: '确定要安装插件 "{{name}}" ({{version}}) 吗?', askConfirmNoVersion: '确定要安装插件 "{{name}}" 吗?', fromGithub: '来自 GitHub', fromLocal: '本地安装', fromMarketplace: '来自市场', componentsList: '组件: ', noComponents: '无组件', delete: '删除插件', update: '更新插件', new: '新', updateConfirm: '更新确认', confirmUpdatePlugin: '你确定要更新插件({{author}}/{{name}})吗?', confirmUpdate: '确认更新', updating: '更新中...', updateSuccess: '插件更新成功', updateError: '更新失败:', saveConfigSuccessNormal: '保存配置成功', saveConfigError: '保存配置失败:', config: '配置', readme: '文档', viewSource: '查看来源', loadingReadme: '正在加载文档...', noReadme: '该插件没有提供 README 文档', fileUpload: { tooLarge: '文件大小超过 10MB 限制', success: '文件上传成功', failed: '文件上传失败', uploading: '上传中...', chooseFile: '选择文件', addFile: '添加文件', }, installFromGithub: '来自 GitHub', enterRepoUrl: '请输入 GitHub 仓库地址', repoUrlPlaceholder: '例如: https://github.com/owner/repo', fetchingReleases: '正在获取 Release 列表...', selectRelease: '选择 Release', noReleasesFound: '未找到 Release', fetchReleasesError: '获取 Release 列表失败:', selectAsset: '选择要安装的文件', noAssetsFound: '该 Release 没有可用的 .lbpkg 文件', fetchAssetsError: '获取文件列表失败:', backToReleases: '返回 Release 列表', backToRepoUrl: '返回仓库地址', backToAssets: '返回文件选择', releaseTag: 'Tag: {{tag}}', releaseName: '名称: {{name}}', publishedAt: '发布于: {{date}}', prerelease: '预发布', assetSize: '大小: {{size}}', confirmInstall: '确认安装', installFromGithubDesc: '从 GitHub Release 安装插件', goToMarketplace: '前往扩展市场', installProgress: { title: '正在安装 {{name}}', titleGeneric: '扩展安装', titlePlugin: '正在安装插件 {{name}}', titleMCP: '正在安装 MCP 服务器 {{name}}', titleSkill: '正在安装技能 {{name}}', overallProgress: '总体进度', downloading: '下载中', installingDeps: '安装依赖', initializing: '初始化配置', launching: '启动中', completed: '已完成', failed: '安装失败', downloadSize: '包大小: {{size}}', depsInfo: '共 {{count}} 个依赖需要安装', depsProgress: '已安装 {{installed}}/{{total}} · 剩余 {{remaining}} 个', installComplete: '安装成功', installCompletePlugin: '插件安装成功', installCompleteMCP: 'MCP 服务器安装成功', installCompleteSkill: '技能安装成功', dismiss: '关闭', background: '后台运行', taskQueue: '安装任务', clearCompleted: '清除已完成', noTasks: '暂无安装任务', }, }, market: { searchPlaceholder: '搜索插件...', searchResults: '搜索到 {{count}} 个插件', totalPlugins: '共 {{count}} 个插件', noPlugins: '暂无插件', noResults: '未找到相关插件', loadingMore: '加载更多...', loading: '加载中...', allLoaded: '已显示全部插件', install: '安装', installCard: '安装 {{name}}', installConfirm: '确定要安装插件 "{{name}}" ({{version}}) 吗?', downloadComplete: '插件 "{{name}}" 下载完成', installFailed: '安装失败,请稍后重试', loadFailed: '获取插件列表失败,请稍后重试', noDescription: '暂无描述', notFound: '插件信息未找到', sortBy: '排序方式', sort: { recentlyAdded: '最近新增', recentlyUpdated: '最近更新', mostDownloads: '最多下载', leastDownloads: '最少下载', }, downloads: '次下载', download: '下载', repository: '代码仓库', downloadFailed: '下载失败', noReadme: '该插件没有提供 README 文档', description: '描述', tagLabel: '标签', submissionTitle: '您有插件提交正在审核中: {{name}}', submissionPending: '您的插件提交正在审核中: {{name}}', submissionApproved: '您的插件提交已通过审核: {{name}}', submissionRejected: '您的插件提交已被拒绝: {{name}}', clickToRevoke: '撤回', revokeSuccess: '撤回成功', revokeFailed: '撤回失败', submissionDetails: '插件提交详情', markAsRead: '已读', markAsReadSuccess: '已标记为已读', markAsReadFailed: '标记为已读失败', filterByComponent: '插件组件', filterByComponentHint: '插件提供的能力类型,如工具(Tool)、命令(Command)、事件监听器(EventListener)等,用于扩展 LangBot 的各项能力。按组件筛选可只看提供对应能力的插件。', allComponents: '全部组件', componentName: { Tool: '工具', EventListener: '事件监听器', Command: '命令', KnowledgeEngine: '知识引擎', Parser: '解析器', Page: '页面', }, filterByType: '类型', allTypes: '全部类型', typePlugin: '插件', typeMCP: 'MCP', typeSkill: '技能', requestPlugin: '请求插件', tags: { filterByTags: '按标签筛选', selected: '已选', selectTags: '选择标签', clearAll: '清空', noTags: '暂无标签', }, filters: { allFormats: '全部格式', more: '筛选', advancedTitle: '高级筛选', advancedDescription: '普通用户通常不需要选择这些类型;仅在你明确知道扩展格式时使用。', technicalType: '扩展格式', }, allExtensions: '全部扩展', viewDetails: '查看详情', deprecated: '已弃用', deprecatedTooltip: '请安装对应「知识引擎」插件', }, mcp: { title: 'MCP', createServer: '添加 MCP 服务器', addMCPServer: '添加 MCP 服务器', editServer: '修改 MCP 服务器', deleteServer: '删除 MCP 服务器', confirmDeleteServer: '你确定要删除此 MCP 服务器吗?', confirmDeleteTitle: '删除 MCP 服务器', getServerListError: '获取 MCP 服务器列表失败:', serverName: '服务器名称', serverMode: '连接模式', selectMode: '选择模式', stdio: 'Stdio模式', sse: 'SSE模式', http: 'HTTP模式', noServerInstalled: '暂未配置任何 MCP 服务器', serverNameRequired: '服务器名称不能为空', commandRequired: '命令不能为空', urlRequired: 'URL 不能为空', timeoutMustBePositive: '超时时间必须是正数', command: '命令', args: '参数', env: '环境变量', url: 'URL地址', headers: '请求头', timeout: '超时时间', addArgument: '添加参数', addEnvVar: '添加环境变量', addHeader: '添加请求头', keyName: '键名', value: '值', testing: '测试中...', connecting: '连接中...', testSuccess: '测试成功', testFailed: '测试失败:', testError: '刷新出错', refreshSuccess: '刷新成功', refreshFailed: '刷新失败:', connectionSuccess: '连接成功', connectionFailed: '连接失败,请检查URL', connectionFailedStatus: '连接失败', boxDisabledStdioRefused: 'Stdio 模式的 MCP 服务器依赖 Box 沙箱,目前已在配置中禁用(box.enabled = false)。', boxUnavailableStdioRefused: 'Stdio 模式的 MCP 服务器依赖 Box 沙箱,目前无法连接。', boxStdioRefusedSuggestion: '请启用 Box(box.enabled = true)并确认运行时连接正常,或将此服务器切换到 http/sse 模式。', boxRequired: '需要 Box', stdioBlockedByBoxToast: 'Box 沙箱已禁用或不可用,无法保存 stdio 模式的 MCP。请启用 Box 或改为 http/sse 模式。', toolsFound: '个工具', unknownError: '未知错误', noToolsFound: '未找到任何工具', parseResultFailed: '解析测试结果失败', noResultReturned: '测试未返回结果', getTaskFailed: '获取任务状态失败', noTaskId: '未获取到任务ID', deleteSuccess: '删除成功', deleteFailed: '删除失败:', deleteError: '删除失败:', saveSuccess: '保存成功', saveError: '保存失败:', createSuccess: '创建成功', createFailed: '创建失败:', createError: '创建失败:', loadFailed: '加载失败', modifyFailed: '修改失败:', toolCount: '工具:{{count}}', parameterCount: '参数:{{count}}', noParameters: '无参数', statusConnected: '已连接', statusDisconnected: '未连接', statusError: '连接错误', statusDisabled: '已禁用', loading: '加载中...', starCount: '星标:{{count}}', install: '安装', installFromGithub: '从Github安装MCP服务器', add: '添加', name: '名称', nameRequired: '名称不能为空', sseTimeout: 'SSE超时时间', sseTimeoutDescription: '用于建立SSE连接的超时时间', extraParametersDescription: '额外参数,用于配置MCP服务器的特定行为', timeoutMustBeNumber: '超时时间必须是数字', timeoutNonNegative: '超时时间不能为负数', sseTimeoutMustBeNumber: 'SSE超时时间必须是数字', sseTimeoutNonNegative: 'SSE超时时间不能为负数', updateSuccess: '更新成功', updateFailed: '更新失败:', selectFromSidebar: '从侧边栏选择一个 MCP 服务器', dangerZone: '危险区域', dangerZoneDescription: '此 MCP 服务器的不可逆操作。', deleteMCPAction: '删除此 MCP 服务器', deleteMCPHint: '删除后,此 MCP 服务器配置将无法恢复。', }, pipelines: { title: '流水线', description: '流水线定义了对消息事件的处理流程,用于绑定到机器人', createPipeline: '创建流水线', selectFromSidebar: '从侧边栏选择一个流水线', editPipeline: '编辑流水线', chat: '对话', configuration: '配置', debugChat: '对话调试', getPipelineListError: '获取流水线列表失败:', daysAgo: '天前', today: '今天', updateTime: '更新于', defaultBadge: '默认', sortBy: '排序方式', newestCreated: '最新创建', earliestCreated: '最早创建', recentlyEdited: '最近编辑', earliestEdited: '最早编辑', basicInfo: '基础信息', basicInfoDescription: '设置流水线名称、图标和描述', aiCapabilities: 'AI 能力', triggerConditions: '触发条件', safetyControls: '安全控制', outputProcessing: '输出处理', nameRequired: '名称不能为空', descriptionRequired: '描述不能为空', createSuccess: '创建成功 请编辑流水线详细参数', createError: '创建失败:', saveSuccess: '保存成功', saveError: '保存失败:', copySuffix: ' Copy', deleteConfirmation: '你确定要删除这个流水线吗?已绑定此流水线的机器人将无法使用。', defaultPipelineCannotDelete: '默认流水线不可删除', deleteSuccess: '删除成功', deleteError: '删除失败:', copyConfirmTitle: '确认复制', copyConfirmation: '确定要复制这个流水线吗?复制将创建一个包含完整配置的新流水线。', unsavedChanges: '有未保存的更改', dangerZone: '危险区域', dangerZoneDescription: '不可逆的操作', deletePipelineAction: '删除此流水线', deletePipelineHint: '删除后,绑定此流水线的机器人将无法正常工作。', copyPipelineAction: '复制此流水线', copyPipelineHint: '创建一条新的流水线,并复制所有配置。', extensions: { title: '扩展集成', loadError: '加载插件列表失败', saveSuccess: '保存成功', saveError: '保存失败', noPluginsAvailable: '暂无可用插件', disabled: '已禁用', noPluginsSelected: '未选择任何插件', addPlugin: '添加插件', selectPlugins: '选择插件', pluginsTitle: '插件', mcpServersTitle: 'MCP 服务器', noMCPServersSelected: '未选择任何 MCP 服务器', addMCPServer: '添加 MCP 服务器', selectMCPServers: '选择 MCP 服务器', toolCount: '{{count}} 个工具', noPluginsInstalled: '无已安装的插件', noMCPServersConfigured: '无已配置的 MCP 服务器', selectAll: '全选', enableAllPlugins: '启用所有插件', enableAllMCPServers: '启用所有 MCP 服务器', enableAllSkills: '启用所有技能', allPluginsEnabled: '已启用所有插件', allMCPServersEnabled: '已启用所有 MCP 服务器', allSkillsEnabled: '已启用所有技能', skillsTitle: '技能', noSkillsSelected: '未选择任何技能', addSkill: '添加技能', selectSkills: '选择技能', noSkillsAvailable: '暂无可用技能', }, debugDialog: { title: '流水线对话', selectPipeline: '选择流水线', sessionType: '会话类型', privateChat: '私聊', groupChat: '群聊', send: '发送', reset: '重置对话', inputPlaceholder: '发送 {{type}} 消息...', noMessages: '暂无消息', userMessage: '用户', botMessage: '机器人', sendFailed: '发送失败', resetSuccess: '对话已重置', resetFailed: '重置失败', loadMessagesFailed: '加载消息失败', loadPipelinesFailed: '加载流水线失败', atTips: '提及机器人', streaming: '流式传输', streamOutput: '流式', connected: 'WebSocket已连接', disconnected: 'WebSocket未连接', connectionError: 'WebSocket连接错误', connectionFailed: 'WebSocket连接失败', notConnected: 'WebSocket未连接,请稍后重试', imageUploadFailed: '图片上传失败', reply: '回复', replyTo: '回复给', showMarkdown: '渲染', showRaw: '原文', allMembers: '全体成员', file: '文件', voice: '语音', uploadImage: '上传图片', uploading: '上传中...', }, monitoring: { title: '监控日志', description: '查看此流水线的运行记录和错误信息(最近24小时)', detailedLogs: '详细日志', }, }, knowledge: { title: '知识库', createKnowledgeBase: '创建知识库', selectFromSidebar: '从侧边栏选择一个知识库', editKnowledgeBase: '编辑知识库', selectKnowledgeBase: '选择知识库', selectKnowledgeBases: '选择知识库', addKnowledgeBase: '添加知识库', noKnowledgeBaseSelected: '未选择知识库', empty: '无', editDocument: '文档', description: '配置可用于提升模型回复质量的知识库', metadata: '元数据', documents: '文档', kbNameRequired: '知识库名称不能为空', kbDescriptionRequired: '知识库描述不能为空', embeddingModelUUIDRequired: '嵌入模型不能为空', daysAgo: '天前', today: '今天', kbName: '知识库名称', kbDescription: '知识库描述', topK: '召回数量', topKRequired: '召回数量不能为空', topKMax: '召回数量最大值为 30', topKdescription: '召回相关文档块的数量,取值范围为 1-30', defaultDescription: '一个知识库', embeddingModelUUID: '嵌入模型', selectEmbeddingModel: '选择嵌入模型', embeddingModelDescription: '用于向量化文本,可在模型配置页面配置', updateTime: '更新于', cannotChangeEmbeddingModel: '知识库创建后不可修改嵌入模型', updateKnowledgeBaseSuccess: '知识库更新成功', updateKnowledgeBaseFailed: '知识库更新失败:', documentsTab: { name: '名称', status: '状态', noResults: '暂无文档', dragAndDrop: '拖拽文件到此处或点击上传', uploading: '上传中...', supportedFormats: '支持 PDF、Word、TXT、Markdown、HTML、ZIP 等文档格式', uploadSuccess: '文件上传成功!', uploadError: '文件上传失败:', uploadingFile: '上传文件中...', fileSizeExceeded: '文件大小超过 10MB 限制,请分割成较小的文件后上传', actions: '操作', delete: '删除文件', fileDeleteSuccess: '文件删除成功', fileDeleteFailed: '文件删除失败:', processing: '处理中', completed: '完成', failed: '失败', selectParser: '选择解析器', builtInParser: '由知识引擎提供', noParserAvailable: '没有解析器支持此文件类型,请安装支持该格式的解析器插件。', installParserHint: '前往扩展市场安装解析器 →', confirmUpload: '上传', cancelUpload: '取消', }, deleteKnowledgeBaseConfirmation: '你确定要删除这个知识库吗?此知识库下的所有文档将被删除。', retrieve: '检索测试', retrieveTest: '检索测试', query: '查询', queryPlaceholder: '输入查询内容...', distance: '距离', content: '内容', fileName: '文件名', noResults: '暂无结果', retrieveError: '检索失败:', unknownEngine: '未知引擎', knowledgeEngine: '知识引擎', knowledgeEngineRequired: '知识引擎不能为空', selectKnowledgeEngine: '选择知识引擎', builtInEngine: '内置引擎', cannotChangeKnowledgeEngine: '知识库创建后不可修改知识引擎', basicInfo: '基础信息', basicInfoDescription: '设置知识库名称、图标和描述', engineSettings: '引擎设置', engineSettingsDescription: '所选知识引擎的配置', engineSettingsReadonly: '编辑模式下不可修改', engineSettingsInvalid: '引擎设置中存在无效项,请检查必填字段', retrievalSettingsInvalid: '检索设置中存在无效项,请检查必填字段', retrievalSettings: '检索设置', retrievalSettingsDescription: '配置从此知识库检索文档的方式', dangerZone: '危险区域', dangerZoneDescription: '不可逆的操作', deleteKbAction: '删除此知识库', deleteKbHint: '删除后,此知识库中的所有文档和数据将被永久移除。', noEnginesAvailable: '没有可用的知识库引擎', installEngineHint: '请先安装「知识引擎」插件', createKnowledgeBaseFailed: '知识库创建失败:', loadKnowledgeBaseFailed: '知识库加载失败:', deleteKnowledgeBaseFailed: '知识库删除失败:', getKnowledgeBaseListError: '获取知识库列表失败:', embeddingModel: '嵌入模型', embeddingModelRequired: '此引擎需要选择嵌入模型', addExternal: '添加外部知识库', createExternalSuccess: '外部知识库创建成功', updateExternalSuccess: '外部知识库更新成功', deleteExternalSuccess: '外部知识库删除成功', retriever: '检索器', selectRetriever: '选择一个检索器...', retrieverConfiguration: '检索器配置', retrieverInstallInfo: '您可以从', retrieverMarketLink: '此处安装知识检索器插件', migration: { title: '知识库迁移', description: '新版本已将知识库重构为插件化架构,并统一内置知识库和外部知识库为「知识引擎」插件,需要对旧知识库数据进行迁移。您的旧数据已自动备份在数据库中。', detected: '共检测到 {{total}} 个知识库需要迁移({{internal}} 个内置知识库,{{external}} 个外部知识库)。', startWithInstall: '自动安装插件并迁移', startDataOnly: '仅迁移数据', dataOnlyHint: '「仅迁移数据」适合内网环境使用,请在迁移完成后自行安装对应插件', dismiss: '丢弃原数据', running: '正在迁移知识库,请稍候...', success: '知识库迁移完成', error: '知识库迁移失败:', dismissError: '操作失败', retry: '重试', }, }, register: { title: '初始化 LangBot 👋', description: '这是您首次启动 LangBot', adminAccountNote: '您在此处初始化使用的账号将作为管理员账号', register: '注册', initWithSpace: '通过 Space 初始化', spaceRecommended: '推荐:使用官方提供的稳定模型 API 和云服务', spaceInfoTip1: 'Space 提供统一的账户鉴权服务,不会上传您的任何敏感信息。', spaceInfoTip2: '使用 Space 账户登录可使用 LangBot Models 等云服务,您将会获得一定的免费模型调用额度帮助您快速起步。', spaceInfoTip3: '登录方式不会影响其他功能,您在任何情况下都可以配置使用其他来源的模型。', registerLocal: '注册本地账号', registerWithPassword: '通过邮箱密码组合注册', initSuccess: '初始化成功 请登录', initFailed: '初始化失败:', }, resetPassword: { title: '重置密码 🔐', description: '输入恢复密钥和新的密码来重置您的账户密码', recoveryKey: '恢复密钥', recoveryKeyDescription: '存储在配置文件`data/config.yaml`的`system.recovery_key`中', newPassword: '新密码', enterRecoveryKey: '输入恢复密钥', enterNewPassword: '输入新密码', recoveryKeyRequired: '恢复密钥不能为空', newPasswordRequired: '新密码不能为空', resetPassword: '重置密码', resetting: '重置中...', resetSuccess: '密码重置成功,请登录', resetFailed: '密码重置失败,请检查邮箱和恢复密钥是否正确', backToLogin: '返回登录', }, embedding: { description: '管理嵌入模型,用于向量化文本', createModel: '创建嵌入模型', editModel: '编辑嵌入模型', getModelListError: '获取嵌入模型列表失败:', embeddingModels: '嵌入模型', extraParametersDescription: '将在请求时附加到请求体中,如 encoding_format, dimensions 等', }, llm: { llmModels: '对话模型', description: '管理 LLM 模型,用于对话消息生成', extraParametersDescription: '将在请求时附加到请求体中,如 max_tokens, temperature, top_p 等', }, version: { newVersionAvailable: '有新版本可用', viewUpdateGuide: '查看更新方式', noReleaseNotes: '暂无更新日志', }, account: { settings: '账户设置', setPassword: '设置密码', passwordSetSuccess: '密码设置成功', passwordStatus: '本地密码', passwordSet: '已设置', passwordNotSet: '未设置', passwordSetDescription: '您已设置本地密码,可使用邮箱密码登录', spaceStatus: 'Space 账户', spaceBound: '已绑定', spaceNotBound: '未绑定', spaceBoundDescription: '已绑定 Space 账户,可使用官方模型 API 和云服务', bindSpace: '绑定 Space 账户', bindSpaceDescription: '绑定后可使用官方模型 API 和云服务', bindSpaceButton: '绑定', bindSpaceConfirmTitle: '确认绑定', bindSpaceConfirmDescription: '您即将把本地实例绑定到 Space 账户', bindSpaceWarning: '绑定后,您的登录邮箱将从 {{localEmail}} 更改为 Space 账户的邮箱。', bindSpaceSuccess: 'Space 账户绑定成功', bindSpaceFailed: '绑定 Space 账户失败', bindSpaceInvalidState: '无效的绑定请求,请从账户设置重新发起', setPasswordHint: '设置密码后可使用邮箱密码登录', spaceEmailMismatch: 'Space登录账号邮箱与本实例账号邮箱不匹配', }, monitoring: { title: '仪表盘', description: '查看机器人活动、LLM调用和系统性能', overview: '概览', totalMessages: '总消息数', llmCallsCount: 'LLM调用', modelCallsCount: '模型调用', successRate: '成功率', activeSessions: '活跃会话', last24Hours: '最近24小时', filters: { title: '筛选', bot: '机器人', pipeline: '流水线', allBots: '全部机器人', selectBot: '选择机器人', allPipelines: '全部流水线', selectPipeline: '选择流水线', loading: '加载中...', timeRange: '时间范围', customRange: '自定义范围', from: '从', to: '到', apply: '应用', reset: '重置筛选', lastHour: '最近1小时', last6Hours: '最近6小时', last24Hours: '最近24小时', last7Days: '最近7天', last30Days: '最近30天', }, tabs: { messages: '消息记录', llmCalls: 'LLM调用', embeddingCalls: 'Embedding调用', modelCalls: '模型调用', feedback: '用户反馈', sessions: '会话分析', errors: '错误日志', }, messageList: { timestamp: '时间戳', bot: '机器人', pipeline: '流水线', message: '消息', sessionId: '会话ID', status: '状态', actions: '操作', viewDetails: '查看详情', copyId: '复制ID', noMessages: '未找到消息', noMessagesDescription: '尝试调整筛选条件或稍后查看', loading: '加载消息中...', loadMore: '加载更多', autoRefresh: '自动刷新', platform: '角色', user: '用户', level: '级别', runner: '执行器', viewConversation: '显示对话详情', }, llmCalls: { title: 'LLM调用', model: '模型', tokens: 'Token数', duration: '持续时间', cost: '成本', noData: '未找到LLM调用记录', inputTokens: '输入Token', outputTokens: '输出Token', totalTokens: '总Token数', avgDuration: '平均耗时', calls: '调用次数', }, embeddingCalls: { title: 'Embedding调用', model: '模型', tokens: 'Token数', duration: '持续时间', noData: '未找到Embedding调用记录', promptTokens: '输入Token', totalTokens: '总Token数', inputCount: '输入数量', knowledgeBase: '知识库', queryText: '查询文本', }, modelCalls: { title: '模型调用', llmModel: '对话模型', embeddingModel: '嵌入模型', embeddingCall: '嵌入调用', retrieveCall: '检索调用', noData: '未找到模型调用记录', }, sessions: { sessionId: '会话ID', messageCount: '消息数', duration: '持续时间', lastActivity: '最后活动', noSessions: '未找到会话', startTime: '开始时间', messageStats: '消息统计', totalMessages: '总消息数', successMessages: '成功', errorMessages: '失败', llmStats: 'LLM统计', noData: '会话未找到', }, errors: { title: '错误', errorType: '错误类型', errorMessage: '错误消息', occurredAt: '发生时间', noErrors: '未找到错误', stackTrace: '堆栈追踪', }, feedback: { title: '用户反馈', totalFeedback: '总反馈数', totalLikes: '点赞数', totalDislikes: '点踩数', satisfactionRate: '满意度', like: '点赞', dislike: '点踩', noFeedback: '暂无反馈', noFeedbackDescription: '用户反馈将在此显示', feedbackList: '反馈列表', feedbackContent: '反馈内容', contextInfo: '上下文信息', userId: '用户ID', messageId: '消息ID', streamId: '关联提问ID', inaccurateReasons: '不准确原因', platform: '平台', exportFeedback: '导出反馈', }, queries: { title: '查询记录', }, messageDetails: { noData: '此查询没有LLM调用或错误记录', }, queryVariables: { title: '查询变量', }, trafficChart: { title: '流量概览', messages: '消息数', llmCalls: 'LLM调用', noData: '暂无流量数据', }, viewMonitoring: '查看日志监控', refreshData: '刷新数据', exportData: '导出数据', export: { title: '导出数据', exporting: '导出中...', messages: '消息记录', llmCalls: 'LLM 调用', embeddingCalls: 'Embedding 调用', errors: '错误日志', sessions: '会话记录', feedback: '用户反馈', }, systemStatus: '系统状态', pluginRuntime: '插件运行时', boxRuntime: 'Box 运行时', connected: '已连接', disconnected: '未连接', disabled: '已禁用', statusDetail: '状态', pluginDisabled: '插件系统已禁用', boxDisabled: 'Box 沙箱已在配置中禁用——沙箱工具、技能添加/编辑与 stdio MCP 均不可用', boxUnavailable: 'Box 沙箱不可用——沙箱工具、技能添加/编辑与 stdio MCP 均不可用', boxRequiredHint: '此功能依赖 Box 运行时。请在配置中启用(box.enabled = true)并确认运行时连接正常。', boxBackend: '后端', boxProfile: '配置', boxSandboxes: '沙箱数', boxSessionCreated: '创建时间', boxSessionLastUsed: '最后使用', }, storageAnalysis: { title: '存储分析', description: '查看存储占用和可清理文件', openDialog: '查看分析', dialogTitle: '存储分析', generatedAt: '生成时间 {{time}}', loading: '加载中...', refresh: '刷新', totalSize: '总占用', binaryStorage: '插件二进制存储', uploadCleanup: '过期上传文件', logCleanup: '过期日志', sections: '存储分区', monitoringTables: '监控表', runtimeTasks: '运行任务', cleanupPolicy: '清理策略', uploadRetention: '上传文件保留', logRetention: '日志保留', databaseType: '数据库类型', days: '天', missing: '不存在', expiredUploads: '过期上传文件', expiredLogs: '过期日志', noExpiredUploads: '暂无过期上传文件', noExpiredLogs: '暂无过期日志', sectionNames: { database: '数据库', logs: '日志', storage: '上传文件', vector_store: '向量库', plugins: '插件', mcp: 'MCP', temp: '临时文件', }, }, limitation: { maxBotsReached: '已达到机器人数量上限({{max}}个)。请先删除已有机器人后再创建新的。', maxPipelinesReached: '已达到流水线数量上限({{max}}个)。请先删除已有流水线后再创建新的。', maxExtensionsReached: '已达到扩展数量上限({{max}}个)。请先删除已有扩展后再添加新的。', }, skills: { title: '技能', description: '创建和管理可在对话中激活的技能', createSkill: '创建技能', createSkillDescription: '导入本地目录或手动填写信息创建', editSkill: '编辑技能', getSkillListError: '获取技能列表失败:', skillName: '技能名称', displayName: '技能名称', displayNamePlaceholder: '显示名称(支持中文)', skillSlug: '目录名称', skillSlugPlaceholder: 'english-name-only', skillSlugHelp: '用作技能目录名,仅支持英文字母、数字、连字符和下划线。', skillDescription: '技能描述', skillInstructions: '指令内容', saveSuccess: '保存成功', saveError: '保存失败:', createSuccess: '创建成功', createError: '创建失败:', deleteSuccess: '删除成功', deleteError: '删除失败:', deleteConfirmation: '你确定要删除这个技能吗?', delete: '删除技能', skillNameRequired: '技能名称不能为空', skillDescriptionRequired: '技能描述不能为空', packageRootRequired: '技能目录不能为空', scan: '扫描', scanSuccess: '目录扫描成功', scanError: '扫描目录失败:', noSkills: '暂未配置任何技能', preview: '预览', previewInstructions: 'SKILL.md 内容预览', instructionsPlaceholder: '使用 Markdown 格式输入技能指令...', descriptionPlaceholder: '简短描述此技能的功能(会展示给 LLM)', packageRoot: '技能目录', packageRootHelp: '非必填。仅在导入已有技能目录时需要填写,新建技能可留空。扫描会检查当前目录及两级子目录。', importLocalDirectory: '导入本地技能目录', chooseSkillDirectory: '选择 SKILL.md 所在目录', chooseAnotherDirectory: '重新选择目录', importingDirectory: '正在预览...', clearDirectoryPreview: '清除已选目录', noSkillMdInDirectory: '选择的目录中没有找到 SKILL.md', multipleSkillMdInDirectory: '选择的目录中包含多个 SKILL.md,请直接选择单个技能目录。', importDirectoryError: '导入目录失败:', advancedSettings: '高级设置', searchSkills: '搜索技能...', selectSkills: '选择技能', builtin: '内置', addSkill: '添加技能', importFromGithub: '从 GitHub 安装技能', createManually: '手动创建', uploadZip: '上传 ZIP 包', uploadZipOnly: '仅支持 .zip 技能包', installSuccess: '技能安装成功', installError: '安装技能失败:', enterRepoUrl: '输入 GitHub 仓库地址', repoUrlPlaceholder: '例如 https://github.com/owner/repo', fetchingReleases: '正在获取发布版本...', selectRelease: '选择发布版本', noReleasesFound: '未找到发布版本', fetchReleasesError: '获取发布版本失败:', selectAsset: '选择要安装的文件', sourceArchive: '源码包 (zip)', noAssetsFound: '此版本暂无可安装的文件', fetchAssetsError: '获取文件列表失败:', backToReleases: '返回版本列表', backToRepoUrl: '返回仓库地址', backToAssets: '返回文件列表', releaseTag: '标签:{{tag}}', publishedAt: '发布于:{{date}}', prerelease: '预发布', assetSize: '大小:{{size}}', confirmInstall: '确认安装', installing: '正在安装技能...', loading: '加载中...', previewLoadError: '加载预览失败', selectFromSidebar: '从侧边栏选择一个技能', dangerZone: '危险区域', dangerZoneDescription: '不可逆的操作', files: '文件', noFiles: '暂无文件', loadFilesError: '加载文件失败:', readFileError: '读取文件失败:', saveFile: '保存文件', saveFileSuccess: '文件保存成功', saveFileError: '保存文件失败:', }, wizard: { sidebarDescription: '通过引导步骤创建机器人', loading: '正在加载向导...', loadError: '加载向导数据失败', skip: '跳过', skipConfirmMessage: '您之后可以在账户菜单重新进入快速开始向导,或手动创建机器人。', skipConfirmOk: '确定', prev: '上一步', next: '下一步', finish: '创建并部署', confirmCreateBot: '确定,创建机器人', createSuccess: '流水线已创建并关联到机器人!', botCreateSuccess: '机器人创建成功!', botSaveSuccess: '机器人配置已保存并启用!', createError: '创建资源失败', spaceAuthError: '无法发起 Space 授权', skipSaveError: '保存跳过状态失败,请重试。', completeSaveError: '保存完成状态失败,请重试。', step: { platform: '平台接入', botConfig: '机器人配置', aiEngine: 'AI 引擎', done: '完成', }, platform: { title: '选择平台', description: '选择机器人要接入的消息平台。', }, botConfig: { title: '配置机器人', description: '配置好机器人并确认其正常运行后再继续。', saveBot: '保存并启用', resaveBot: '重新保存配置', botSaved: '机器人配置已保存并启用,请查看日志确认连接正常。', logsTitle: '机器人日志', logsDescription: '监控机器人活动,确认平台连接是否正常工作。', }, aiEngine: { title: '选择 AI 引擎', description: '选择驱动机器人智能的 AI 引擎。', }, spaceBanner: { message: '接入 LangBot Space,获取免费试用模型额度,零配置极速开箱!', action: '前往授权登录', }, config: { botInfo: '机器人信息', botNamePlaceholder: '请输入机器人名称', botDescPlaceholder: '请输入机器人描述(可选)', platformConfig: '{{platform}} 配置', aiConfig: '{{engine}} 配置', }, done: { title: '一切就绪!', description: '机器人已创建并连接到 AI 流水线。你现在可以在工作台中管理它。', backToWorkbench: '返回工作台', }, }, addExtension: { installTitle: '安装{{type}}', installConfirm: '确定要安装{{type}} "{{name}}" 吗?', installInfoType: '类型', installInfoId: '标识', installInfoVersion: '版本', installSuccess: '安装成功', installStage: { mcpInstalling: '正在添加并连接 MCP 服务器…', skillInstalling: '正在安装技能…', installed: '已完成', }, manualAdd: '手动添加', uploadExtension: '拖拽或点击上传扩展包', uploadHint: '支持 .zip(技能)和 .lbpkg(插件)文件', orContinueWith: '或选择以下操作', addMCPServerHint: '连接一个 MCP 工具服务器扩展', installFromGithub: '从 GitHub 安装', installFromGithubHint: '插件包或技能(SKILL.md)', githubUrlHelp: '粘贴 GitHub 地址', githubUrlTooltip: '插件:粘贴仓库、Release 或 Tag 地址。技能:粘贴技能目录里的 SKILL.md 页面地址。', githubUrlPlaceholder: 'GitHub 仓库、Release 或 SKILL.md 链接', githubUrlRequired: '请输入 GitHub 地址', previewSkill: '预览技能', noSkillPreviewFound: '未找到可导入的技能', createSkill: '创建新的技能', createSkillHint: '从本地目录导入或手动创建', unsupportedFileType: '不支持的文件类型,仅支持 .zip 和 .lbpkg 文件', }, errorPage: { unexpectedError: '出错了', unexpectedErrorDescription: '发生了意外错误,请稍后重试。', notFound: '页面未找到', notFoundDescription: '你访问的页面不存在或已被移动。', backendUnavailableStatus: '后端服务不可用', goBack: '返回上页', backToHome: '返回首页', backToLogin: '返回登录', retrying: '正在重试', retryFailed: '仍然无法连接后端,请确认服务已启动后再重试。', }, feishu: { createApp: '一键创建飞书应用', scanQRCode: '请使用飞书扫描以下二维码,授权后将自动创建应用并填写凭据', waitingForScan: '等待扫码中', createSuccess: '应用创建成功!凭据已自动填入', createFailed: '创建失败', connecting: '正在连接飞书服务...', expired: '二维码已过期,请重试', denied: '用户已拒绝授权', connectionLost: '连接已断开,请重试', reconnecting: '正在重新连接...', retry: '重试', }, weixin: { scanLogin: '扫码登录微信', scanQRCode: '请使用微信扫描以下二维码,授权后将自动登录并填写令牌', loginSuccess: '登录成功!令牌已自动填入', loginFailed: '登录失败', }, dingtalk: { createApp: '一键创建钉钉应用', scanQRCode: '请使用钉钉扫描以下二维码,授权后将自动创建应用并填写凭据', waitingForScan: '等待扫码中', createSuccess: '应用创建成功!凭据已自动填入', createFailed: '创建失败', connecting: '正在连接钉钉服务...', retry: '重试', robotCodeNote: '机器人代码无法自动获取,请前往钉钉开发者后台 > 机器人配置中手动复制。识图、上传文件等功能需要填写此字段。', }, wecombot: { createBot: '一键创建企业微信机器人', scanQRCode: '请使用企业微信扫描以下二维码,授权后将自动创建机器人并填写凭据', waitingForScan: '等待扫码中', createSuccess: '机器人创建成功!凭据已自动填入', createFailed: '创建失败', connecting: '正在连接企业微信服务...', retry: '重试', robotNameNote: '机器人名称无法自动获取,请手动填写。', }, pluginPages: { selectFromSidebar: '从侧边栏选择一个插件页面', invalidPage: '无效的插件页面', }, }; export default zhHans;