const zhHans = { sidebar: { home: '首页', extensions: '扩展', installedPlugins: '已安装插件', pluginMarket: '插件市场', mcpServers: 'MCP 服务器', quickStart: '快速开始向导', }, 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: '请选择', cancel: '取消', submit: '提交', next: '下一步', back: '返回', refresh: '刷新', error: '错误', success: '成功', save: '保存', saving: '保存中...', confirm: '确认', confirmDelete: '确认删除', deleteConfirmation: '你确定要删除这个吗?', selectOption: '选择一个选项', selectPreset: '选择预设', required: '必填', enable: '是否启用', name: '名称', description: '描述', icon: '图标', close: '关闭', deleteSuccess: '删除成功', deleteError: '删除失败:', addRound: '添加回合', copy: '复制', undo: '撤销', redo: '重做', copySuccess: '复制成功', copyFailed: '复制失败', test: '测试', forgotPassword: '忘记密码?', agreementNotice: '继续即表示您同意我们的', privacyPolicy: '隐私政策', and: '和', dataCollectionPolicy: '数据收集政策', dataCollectionPolicyUrl: 'https://link.langbot.app/zh/docs/data-policy', loading: '加载中...', fieldRequired: '此字段为必填项', or: '或', loginWithSpace: '通过 Space 登录', spaceLoginRecommended: '推荐:使用官方提供的稳定模型 API 和云服务', loginLocal: '使用本地账号登录', loginWithPassword: '通过密码登录', spaceLoginTitle: '通过 Space 登录', details: '详情', 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: '暂无内容', data: '数据', result: '结果', body: '请求体', headers: '请求头', query: '查询参数', method: '请求方法', }, 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: '布尔值', 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: '群聊', // Unified binding (replacing routing rules) bindTarget: '绑定目标', bindTargetDescription: '选择处理此机器人消息的 Pipeline 或 Workflow', bindingType: '绑定类型', selectBinding: '请选择绑定目标', selectWorkflow: '选择工作流', noPipelinesFound: '暂无可用的流水线', noWorkflowsFound: '暂无可用的工作流', pipelineBindingHelp: '流水线是传统的消息处理方式,通过预定义的阶段处理消息。', workflowBindingHelp: '工作流提供可视化的节点编排,支持更灵活的消息处理逻辑。', 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: '安装插件', onlySupportGithub: '目前仅支持从 GitHub 安装', enterGithubLink: '请输入插件的Github链接', installing: '正在安装插件...', installSuccess: '插件安装成功', installFailed: '插件安装失败:', searchPlugin: '搜索插件', sortBy: '排序方式', mostStars: '最多星标', recentlyAdded: '最近新增', recentlyUpdated: '最近更新', noMatchingPlugins: '没有找到匹配的插件', loading: '加载中...', getPluginListError: '获取插件列表失败:', pluginConfig: '插件配置', noPluginInstalled: '暂未安装任何插件', pluginSort: '插件排序', pluginSortDescription: '插件顺序会影响同一事件内的处理顺序,请拖动插件卡片排序', pluginSortSuccess: '插件排序成功', pluginSortError: '插件排序失败:', pluginNoConfig: '插件没有配置项。', systemDisabled: '插件系统未启用', systemDisabledDesc: '尚未启用插件系统,请根据文档修改配置', connectionError: '插件系统连接异常', connectionErrorDesc: '请检查插件系统配置或联系管理员', errorDetails: '错误详情', loadingStatus: '正在检查插件系统状态...', failedToGetStatus: '获取插件系统状态失败', pluginSystemNotReady: '插件系统未就绪,无法执行此操作', debugInfo: '调试信息', debugInfoTitle: '插件调试信息', debugUrl: '调试地址', debugKey: '调试密钥', noDebugKey: '(未设置)', debugKeyDisabled: '未设置调试密钥,插件调试无需认证', failedToGetDebugInfo: '获取调试信息失败', copiedToClipboard: '已复制到剪贴板', deleting: '删除中...', deletePlugin: '删除插件', cancel: '取消', saveConfig: '保存配置', saving: '保存中...', confirmDeletePlugin: '你确定要删除插件({{author}}/{{name}})吗?', deleteDataCheckbox: '同时删除插件配置和持久化存储', confirmDelete: '确认删除', deleteError: '删除失败:', close: '关闭', deleteConfirm: '删除确认', deleteSuccess: '删除成功', modifyFailed: '修改失败:', componentName: { Tool: '工具', EventListener: '事件监听器', Command: '命令', KnowledgeEngine: '知识引擎', Parser: '解析器', }, uploadLocal: '本地上传', debugging: '调试中', uploadLocalPlugin: '上传本地插件', dragToUpload: '拖拽文件到此处上传', unsupportedFileType: '不支持的文件类型,仅支持 .lbpkg 和 .zip 文件', uploadingPlugin: '正在上传插件...', uploadSuccess: '上传成功', uploadFailed: '上传失败', selectFileToUpload: '选择要上传的插件文件', askConfirm: '确定要安装插件 "{{name}}" ({{version}}) 吗?', 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: '插件安装', overallProgress: '总体进度', downloading: '下载插件', installingDeps: '安装依赖', initializing: '初始化配置', launching: '启动插件', completed: '已完成', failed: '安装失败', downloadSize: '包大小: {{size}}', depsInfo: '共 {{count}} 个依赖需要安装', depsProgress: '已安装 {{installed}}/{{total}} · 剩余 {{remaining}} 个', installComplete: '插件安装成功', dismiss: '关闭', background: '后台运行', taskQueue: '安装任务', clearCompleted: '清除已完成', noTasks: '暂无安装任务', }, }, market: { searchPlaceholder: '搜索插件...', searchResults: '搜索到 {{count}} 个插件', totalPlugins: '共 {{count}} 个插件', noPlugins: '暂无插件', noResults: '未找到相关插件', loadingMore: '加载更多...', loading: '加载中...', allLoaded: '已显示全部插件', install: '安装', 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: '组件', allComponents: '全部组件', requestPlugin: '请求插件', tags: { filterByTags: '按标签筛选', selected: '已选', selectTags: '选择标签', clearAll: '清空', noTags: '暂无标签', }, viewDetails: '查看详情', deprecated: '已弃用', deprecatedTooltip: '请安装对应「知识引擎」插件', }, mcp: { title: 'MCP', createServer: '添加 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: '连接失败', toolsFound: '个工具', unknownError: '未知错误', noToolsFound: '未找到任何工具', parseResultFailed: '解析测试结果失败', noResultReturned: '测试未返回结果', getTaskFailed: '获取任务状态失败', noTaskId: '未获取到任务ID', deleteSuccess: '删除成功', deleteFailed: '删除失败:', deleteError: '删除失败:', saveSuccess: '保存成功', saveError: '保存失败:', createSuccess: '创建成功', createFailed: '创建失败:', createError: '创建失败:', loadFailed: '加载失败', modifyFailed: '修改失败:', toolCount: '工具:{{count}}', 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 服务器', allPluginsEnabled: '已启用所有插件', allMCPServersEnabled: '已启用所有 MCP 服务器', }, 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: '编辑模式下不可修改', 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: '用户反馈', }, }, limitation: { maxBotsReached: '已达到机器人数量上限({{max}}个)。请先删除已有机器人后再创建新的。', maxPipelinesReached: '已达到流水线数量上限({{max}}个)。请先删除已有流水线后再创建新的。', maxExtensionsReached: '已达到扩展数量上限({{max}}个)。请先删除已有的 MCP 服务器或插件后再添加新的。', }, 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: '返回工作台', }, }, workflows: { title: '工作流', description: '创建和管理可视化工作流,实现复杂的消息处理逻辑', createWorkflow: '创建工作流', selectFromSidebar: '从侧边栏选择一个工作流', editWorkflow: '编辑工作流', newWorkflow: '新工作流', getWorkflowListError: '获取工作流列表失败:', workflowName: '工作流名称', workflowDescription: '工作流描述', workflowNameRequired: '工作流名称不能为空', defaultDescription: '一个工作流', getWorkflowError: '获取工作流失败:', loadError: '加载工作流失败', saveSuccess: '保存成功', saveError: '保存失败:', createSuccess: '工作流创建成功', createError: '创建失败:', deleteSuccess: '删除成功', deleteError: '删除失败:', deleteConfirmation: '你确定要删除这个工作流吗?', copySuccess: '复制成功', copyError: '复制失败:', export: '导出', import: '导入', exportSuccess: '工作流已导出', importSuccess: '工作流已导入', importError: '导入失败:文件格式无效', publish: '发布', publishSuccess: '发布成功', publishError: '发布失败', configuration: '配置', executions: '执行记录', editor: '编辑器', debugChat: '对话调试', basicInfo: '基础信息', basicInfoDesc: '设置工作流名称、图标和描述', basicInfoDescription: '设置工作流名称和描述', dangerZone: '危险区域', dangerZoneDesc: '不可逆的操作', dangerZoneDescription: '不可逆的操作', deleteWorkflowAction: '删除此工作流', deleteWorkflowHint: '删除后,所有关联配置将被永久移除,且无法恢复。', deleteWorkflow: '删除工作流', deleteConfirm: '确认删除', deleteConfirmDesc: '您确定要删除工作流 "{{name}}" 吗?此操作无法撤销。', // Form component name: '名称', namePlaceholder: '输入工作流名称', descriptionPlaceholder: '输入工作流描述(可选)', enabled: '启用', enabledDesc: '启用后,工作流将可以被触发执行', loading: '加载中...', info: '工作流信息', uuid: 'UUID', version: '版本', createdAt: '创建时间', updatedAt: '更新时间', // Executions tab totalExecutions: '共 {{count}} 条执行记录', statistics: '统计分析', successfulCount: '成功 {{count}} 次', successRate: '成功率', averageDuration: '平均耗时', perExecution: '每次执行', failedExecutions: '失败次数', lastExecution: '最后执行', filterByStatus: '按状态筛选', allStatuses: '全部状态', manualTrigger: '手动触发', executionId: '执行 ID', status: '状态', triggerType: '触发类型', startedAt: '开始时间', duration: '耗时', noExecutions: '暂无执行记录', executionDetails: '执行详情', error: '错误信息', nodeExecutions: '节点执行记录', result: '执行结果', 'status.pending': '等待中', 'status.running': '执行中', 'status.completed': '已完成', 'status.failed': '失败', 'status.cancelled': '已取消', // Editor component translations nodePalette: '节点面板', properties: '属性', zoomIn: '放大', zoomOut: '缩小', fitView: '适应视图', unsavedChanges: '有未保存的更改', paste: '粘贴', deleted: '已删除', nothingToCopy: '没有选中的节点可复制', nothingToPaste: '剪贴板为空', copied: '已复制 {{count}} 个节点', pasted: '已粘贴 {{count}} 个节点', nodesSelected: '已选中 {{count}} 个节点', edgesSelected: '已选中 {{count}} 条连线', // Node palette searchNodes: '搜索节点...', loadingNodeTypes: '正在加载节点类型...', noNodesFound: '未找到匹配的节点', clearSearch: '清除搜索', dragToAdd: '拖拽节点到画布添加', // Property panel selectNodeOrEdge: '选择一个节点或连线', selectNodeOrEdgeHint: '点击画布中的节点或连线来查看和编辑其属性', edgeProperties: '连线属性', nodeProperties: '节点属性', condition: '条件', hasCondition: '已设置', conditionPlaceholder: '输入条件表达式,如: output.success == true', conditionHelp: '条件为空时,该连线将始终被执行。支持使用 {{变量名}} 引用上下文变量。', deleteEdge: '删除连线', deleteEdgeConfirm: '确认删除连线', deleteEdgeConfirmDesc: '删除后,该连线将被永久移除。', nodeLabel: '节点名称', nodeLabelPlaceholder: '输入节点显示名称', nodeId: '节点 ID', inputOutputVariables: '输入/输出变量', inputs: '输入', outputs: '输出', availableVariables: '可用变量', globalVariables: '全局变量', messageContent: '消息内容', messageSender: '发送者', platform: '平台', sessionId: '会话 ID', timestamp: '时间戳', nodeConfig: '节点配置', noConfigOptions: '该节点类型暂无配置选项', deleteNode: '删除节点', deleteNodeConfirm: '确认删除节点', deleteNodeConfirmDesc: '删除后,该节点及其所有连线将被永久移除。', // Node inputs/outputs i18n (for port labels) nodeInputs: { // Common inputs input: '输入', message: '消息内容', text: '文本', query: '查询', data: '数据', condition: '条件', value: '值', // Trigger inputs content: '内容', context: '上下文', body: '请求体', variables: '变量', items: '项目列表', arguments: '参数', // AI/Process inputs question: '问题', parameters: '参数定义', key: '键', payload: '载荷', input_value: '输入值', conversation_id: '会话 ID', // Control inputs case_1: '分支1输入', case_2: '分支2输入', branch_1: '分支1', branch_2: '分支2', // Action inputs notification_id: '通知ID', // Integration inputs key_template: '键模板', hash_field: '哈希字段', server_name: '服务器名称', tool_name: '工具名称', arguments_template: '参数模板', scope: '作用域', }, nodeOutputs: { // Common outputs output: '输出', result: '结果', response: '响应', message: '消息', data: '数据', error: '错误', // Trigger outputs sender: '发送者', sender_id: '发送者 ID', sender_name: '发送者名称', conversation_id: '会话 ID', context: '上下文', cron_timestamp: 'Cron 时间戳', cron_schedule: 'Cron 调度表达式', cron_context: 'Cron 上下文', trigger_time: '触发时间', schedule: '触发计划', headers: '请求头', query_params: '查询参数', query: '查询参数', method: '请求方法', body: '请求体', is_group: '是否群聊', platform: '平台', event: '事件', event_type: '事件类型', event_data: '事件数据', event_timestamp: '事件时间戳', // AI/Process outputs usage: 'Token使用统计', parsed: '解析结果', category: '分类结果', confidence: '置信度', all_scores: '所有分数', missing: '缺失参数', success: '是否成功', scores: '分数', chunks: '文本块', count: '数量', logs: '日志', embedding: '向量', dimensions: '维度', intent: '意图', entities: '实体', prompt: '提示/问题', context_info: '上下文信息', console: '控制台输出', code_input: '代码输入', code_output: '代码输出', http_body: 'HTTP 请求体', http_headers: 'HTTP 请求头', http_response: 'HTTP 响应', response_headers: '响应头', transform_input: '转换输入', transform_result: '转换结果', question: '用户问题', parameters: '提取的参数', extraction_success: '提取成功', extract_text: '输入文本', documents: '检索的文档', citations: '引用信息', knowledge_context: '合并上下文', knowledge_query: '检索查询', text: '文本', // Control outputs true: '条件为真输出', false: '条件为假输出', matched_case: '匹配分支', case_1: '分支 1', case_2: '分支 2', default: '默认分支', item: '当前项', index: '当前索引', completed: '是否完成', is_first: '是否第一个', is_last: '是否最后一个', results: '结果', branch_1: '分支1输出', branch_2: '分支2输出', condition_input: '条件输入', switch_input: '开关输入', loop_items: '迭代项目', iterator_array: '输入数组', iterator_item: '当前元素', iterator_index: '当前索引', errors: '错误列表', parallel_input: '并行输入', parallel_results: '所有分支结果', wait_input: '透传输入', wait_output: '透传输出', merged: '合并结果', merge_array: '数组结果', merge_input_1: '输入 1', merge_input_2: '输入 2', merge_input_3: '输入 3', merge_input_4: '输入 4', aggregated: '聚合变量', aggregator_variables: '变量输入', // Action outputs message_id: '消息ID', status_code: '状态码', status: '状态', execution_id: '执行ID', notification_id: '通知ID', target: '目标 ID', reply_message: '回复内容', pipeline_response: 'Pipeline 响应', pipeline_result: '完整结果', pipeline_query: '查询内容', context_data: '上下文数据', store_status: '存储状态', store_key: '存储键', store_value: '存储值', variable_value: '变量值', variable_result: '设置变量结果', statement: '开场白', suggested_questions: '建议问题', suggestions: '建议问题', workflow_output: '工作流输出', final_result: '最终结果', // Integration outputs query_results: '查询结果', row_count: '行数', query_success: '查询成功', redis_result: 'Redis结果', redis_success: 'Redis成功', redis_key: 'Redis 键', redis_value: 'Redis 值', plugin_input: '插件输入', tool_result: '工具结果', tool_success: '工具成功', mcp_arguments: '工具参数', memory_result: '记忆结果', memory_success: '记忆成功', memory_value: '存储值', answer: '答案', dify_success: 'Dify成功', dify_query: '用户输入/查询', dify_conversation_id: '会话 ID', search_results: '搜索结果', knowledge_base_query: '查询内容', n8n_result: 'N8n结果', n8n_success: 'N8n成功', n8n_payload: '工作流输入数据', flow_result: '流程结果', flow_success: '流程成功', langflow_input: '输入内容', bot_answer: '机器人回复', bot_success: '机器人成功', coze_query: '用户输入/查询', coze_conversation_id: '会话 ID', bot_conversation_id: '会话 ID', webhook_body: 'Webhook 请求体', webhook_headers: 'Webhook 请求头', webhook_query: 'Webhook 查询参数', webhook_method: 'Webhook 请求方法', timestamp: '时间戳', }, // Data type labels 'type.string': '字符串', 'type.object': '对象', 'type.array': '数组', 'type.boolean': '布尔值', 'type.number': '数字', 'type.any': '任意类型', 'type.datetime': '日期时间', // Legacy editor keys for compatibility legacyEditor: { title: '可视化编辑器', save: '保存', undo: '撤销', redo: '重做', zoomIn: '放大', zoomOut: '缩小', fitView: '适应视图', unsavedChanges: '有未保存的更改', nodePalette: '节点面板', properties: '属性', nodeLabel: '节点名称', nodeConfig: '节点配置', deleteNode: '删除节点', deleteNodeConfirm: '确定删除此节点?', deleteEdge: '删除连线', deleteEdgeConfirm: '确定删除此连线?', edgeCondition: '条件表达式', edgeConditionPlaceholder: '如: ${output.success} == true', noNodeSelected: '未选中节点', selectNodeToEdit: '点击节点查看和编辑属性', dragNodeHint: '拖拽节点到画布', }, nodes: { trigger: '触发器', triggerDescription: '工作流的起始节点', messageTrigger: '消息触发', messageTriggerDescription: '当收到消息时触发', scheduleTrigger: '定时触发', scheduleTriggerDescription: '按计划定时触发', cronTrigger: '定时触发', cronTriggerDescription: '按定时计划触发工作流', webhookTrigger: 'Webhook 触发', webhookTriggerDescription: '通过 HTTP 请求触发', eventTrigger: '事件触发', eventTriggerDescription: '当系统事件发生时触发', process: 'AI/处理', processDescription: '数据处理节点', aiProcess: 'AI 处理', aiProcessDescription: '使用 AI 模型处理消息', llmCall: 'LLM 调用', llmCallDescription: '调用大语言模型进行对话或生成', codeProcess: '代码处理', codeProcessDescription: '执行自定义代码', codeExecutor: '代码执行', codeExecutorDescription: '执行 Python/JavaScript 代码', templateProcess: '模板处理', templateProcessDescription: '使用模板格式化输出', httpRequest: 'HTTP 请求', httpRequestDescription: '发送 HTTP 请求', dataTransform: '数据转换', dataTransformDescription: '转换数据格式', questionClassifier: '问题分类器', questionClassifierDescription: '使用 LLM 将用户问题分类到预定义类别', parameterExtractor: '参数提取器', parameterExtractorDescription: '使用 LLM 从文本中提取结构化参数', knowledgeRetrieval: '知识库检索', knowledgeRetrievalDescription: '从知识库中检索相关内容', textTemplate: '文本模板', textTemplateDescription: '使用模板生成文本', jsonTransform: 'JSON 转换', jsonTransformDescription: '转换 JSON 数据', dataAggregator: '数据聚合', dataAggregatorDescription: '聚合多个数据源', textSplitter: '文本分割', textSplitterDescription: '将文本分割成块', variableAssignment: '变量赋值', variableAssignmentDescription: '为工作流变量赋值', control: '控制流', controlDescription: '流程控制节点', condition: '条件分支', conditionDescription: '根据条件分流', switch: '多路分支', switchDescription: '多条件分支选择', loop: '循环', loopDescription: '重复执行', iterator: '迭代器', iteratorDescription: '遍历数组元素', parallel: '并行执行', parallelDescription: '并行执行多个分支', wait: '等待', waitDescription: '等待指定时间', delay: '延迟', delayDescription: '等待指定时间', merge: '合并', mergeDescription: '合并多个分支', variableAggregator: '变量聚合器', variableAggregatorDescription: '聚合多个分支的变量输出', action: '动作', actionDescription: '执行动作的节点', sendMessage: '发送消息', sendMessageDescription: '发送消息到平台', replyMessage: '回复消息', replyMessageDescription: '回复触发工作流的消息', storeData: '存储数据', storeDataDescription: '存储数据到数据库', callPipeline: '调用 Pipeline', callPipelineDescription: '调用现有的 Pipeline', setVariable: '设置变量', setVariableDescription: '设置上下文变量', openingStatement: '对话开场白', openingStatementDescription: '提供对话开场白和建议问题', end: '结束', endDescription: '标记工作流执行结束', log: '日志', logDescription: '记录日志信息', integration: '集成', integrationDescription: '第三方平台集成节点', difyWorkflow: 'Dify 工作流', difyWorkflowDescription: '调用 Dify 平台工作流', difyKnowledgeQuery: 'Dify 知识库', difyKnowledgeQueryDescription: '查询 Dify 知识库', n8nWorkflow: 'n8n 工作流', n8nWorkflowDescription: '调用 n8n 工作流', langflowFlow: 'Langflow 流程', langflowFlowDescription: '调用 Langflow 流程', cozeBot: 'Coze Bot', cozeBotDescription: '调用扣子 Bot', // Data & Tools integration nodes databaseQuery: '数据库查询', databaseQueryDescription: '执行数据库查询', redisOperation: 'Redis 操作', redisOperationDescription: '执行 Redis 缓存操作', mcpTool: 'MCP 工具', mcpToolDescription: '调用 MCP 工具', memoryStore: '记忆存储', memoryStoreDescription: '从工作流记忆中存储和检索数据', }, executionHistory: { title: '执行记录', noExecutions: '暂无执行记录', status: '状态', startTime: '开始时间', duration: '耗时', running: '运行中', completed: '已完成', failed: '失败', cancelled: '已取消', viewDetails: '查看详情', cancel: '取消执行', retry: '重试', nodeResults: '节点执行结果', }, versions: { title: '版本历史', current: '当前版本', rollback: '回滚到此版本', rollbackConfirm: '确定回滚到此版本?当前更改将丢失。', rollbackSuccess: '回滚成功', rollbackError: '回滚失败:', }, // Debug and monitoring debug: { title: '调试', mode: '调试模式', panel: '调试面板', start: '开始调试', pause: '暂停', resume: '继续', step: '单步执行', stop: '停止', context: '调试上下文', messageContent: '模拟消息', messageContentPlaceholder: '输入要模拟的消息内容', senderId: '发送者 ID', senderIdPlaceholder: '发送者唯一标识', senderName: '发送者名称', senderNamePlaceholder: '发送者显示名称', platform: '平台', platformPlaceholder: '例如 qq、wechat、telegram', conversationId: '会话 ID', conversationIdPlaceholder: '会话唯一标识', isGroup: '群聊', customVariables: '自定义变量', customVariablesDesc: '添加自定义变量用于调试', variableKey: '变量名', variableValue: '变量值', addVariable: '添加变量', variables: '监控变量', watchedVariables: '监控变量', noWatchedVariables: '暂无监控变量', addWatchVariable: '添加监控', nodeStates: '节点状态', nodeOutputs: '节点输出', noNodeOutputs: '暂无节点输出', toggleBreakpoint: '切换断点', clearBreakpoints: '清除所有断点', breakpointSet: '断点已设置', breakpointRemoved: '断点已移除', logs: '调试日志', noLogs: '暂无日志', clearLogs: '清空日志', autoScroll: '自动滚动', logEntries: '条日志', resetContext: '重置上下文', // Debug execution messages starting: '正在启动调试执行...', started: '调试执行已启动 (ID: {{id}})', startError: '启动调试失败', completed: '调试执行已完成', unknownError: '未知错误', paused: '执行已暂停', pauseError: '暂停失败', resumed: '执行已恢复', resumeError: '恢复失败', steppedTo: '已执行到节点: {{node}}', stepError: '单步执行失败', stopped: '调试已停止', stopError: '停止失败', }, debugMode: '调试模式', debugPanel: '调试面板', startDebug: '开始调试', pauseDebug: '暂停', resumeDebug: '继续', stepDebug: '单步执行', stopDebug: '停止', debugContext: '调试上下文', simulatedMessage: '模拟消息', simulatedMessagePlaceholder: '输入要模拟的消息内容', senderId: '发送者 ID', senderIdPlaceholder: '发送者唯一标识', senderName: '发送者名称', senderNamePlaceholder: '发送者显示名称', conversationId: '会话 ID', conversationIdPlaceholder: '会话唯一标识', isGroup: '群聊', customVariables: '自定义变量', addVariable: '添加变量', variableName: '变量名', variableValue: '变量值', watchedVariables: '监控变量', addWatchVariable: '添加监控', nodeStates: '节点状态', breakpoints: '断点', toggleBreakpoint: '切换断点', breakpointSet: '断点已设置', breakpointRemoved: '断点已移除', debugLogs: '调试日志', noLogs: '暂无日志', clearLogs: '清空日志', autoScroll: '自动滚动', debugState: { idle: '空闲', running: '运行中', paused: '已暂停', completed: '已完成', error: '错误', }, nodeStatus: { pending: '等待中', running: '执行中', completed: '已完成', failed: '失败', skipped: '已跳过', }, debugDialog: { title: '工作流对话', selectWorkflow: '选择工作流', sessionType: '会话类型', privateChat: '私聊', groupChat: '群聊', send: '发送', reset: '重置对话', inputPlaceholder: '发送 {{type}} 消息...', noMessages: '暂无消息', userMessage: '用户', botMessage: '机器人', sendFailed: '发送失败', resetSuccess: '对话已重置', resetFailed: '重置失败', loadMessagesFailed: '加载消息失败', loadWorkflowsFailed: '加载工作流失败', atTips: '提及机器人', streaming: '流式传输', streamOutput: '流式', connected: 'WebSocket已连接', disconnected: 'WebSocket未连接', connectionError: 'WebSocket连接错误', connectionFailed: 'WebSocket连接失败', notConnected: 'WebSocket未连接,请稍后重试', imageUploadFailed: '图片上传失败', reply: '回复', replyTo: '回复给', showMarkdown: '渲染', showRaw: '原文', allMembers: '全体成员', file: '文件', voice: '语音', uploadImage: '上传图片', uploading: '上传中...', }, // Execution history and monitoring filterByDate: '按日期筛选', allTime: '全部时间', today: '今天', lastWeek: '最近一周', lastMonth: '最近一个月', showingExecutions: '显示 {{shown}} / {{total}} 条记录', rerun: '重新运行', rerunExecution: '重新执行', logs: '日志', details: '详情', completedAt: '完成时间', noNodeExecutions: '暂无节点执行记录', // Node config field labels (used by DynamicFormComponent) nodeConfigFields: { // trigger.py - MessageTriggerNode conditions: '触发条件', keyword_filter: '关键词过滤', regex_filter: '正则过滤', min_length: '最小长度', max_length: '最大长度', require_mention: '需要@机器人', respond_rules: '群响应规则', access_control: '访问控制', // trigger.py - CronTriggerNode cron: 'Cron表达式', timezone: '时区', description: '描述', // trigger.py - WebhookTriggerNode path: 'Webhook路径', allowed_methods: '允许的HTTP方法', content_type: 'Content-Type', auth_type: '认证方式', auth_key: '认证密钥', validation: '请求验证', timeout: '超时时间', // trigger.py - EventTriggerNode event_types: '事件类型', filter: '事件过滤', debounce_ms: '防抖时间', // process.py - LLMCallNode model: '模型', prompt_template: '提示词模板', system_prompt: '系统提示词', temperature: '温度', top_p: 'Top P', frequency_penalty: '频率惩罚', presence_penalty: '存在惩罚', max_tokens: '最大Token数', stop_sequences: '停止序列', seed: '随机种子', stream: '流式输出', use_conversation_history: '使用对话历史', // process.py - CodeExecutorNode language: '编程语言', code: '代码', // process.py - HTTPRequestNode url: '请求URL', method: '请求方法', auth_config: '认证配置', // process.py - DataTransformNode transform_type: '转换类型', template: '模板', expression: '表达式', output_type: '输出类型', // process.py - QuestionClassifierNode categories: '分类类别', instruction: '指令', // process.py - ParameterExtractorNode parameters: '参数定义', // process.py - KnowledgeRetrievalNode knowledge_bases: '知识库', top_k: '返回数量', score_threshold: '相似度阈值', search_method: '搜索方法', enable_citations: '启用引用', // control.py - ConditionNode condition_type: '条件类型', condition_expression: '条件表达式', left_value: '左值', operator: '比较运算符', right_value: '右值', // control.py - SwitchNode cases: '分支条件', // control.py - LoopNode max_iterations: '最大迭代次数', break_condition: '中断条件', // control.py - IteratorNode parallel: '并行处理', max_concurrency: '最大并发数', // control.py - ParallelNode branches: '分支配置', wait_all: '等待所有', fail_fast: '快速失败', // control.py - WaitNode duration: '等待时间', duration_type: '时间单位', // control.py - MergeNode merge_strategy: '合并策略', // control.py - VariableAggregatorNode variable_mappings: '变量映射', aggregation_mode: '聚合模式', // action.py - SendMessageNode target_type: '目标类型', target_id: '目标ID', platform: '平台', message_type: '消息类型', // action.py - ReplyMessageNode reply_mode: '回复模式', message_template: '消息模板', long_text_processing: '长文本处理', force_delay: '强制延迟', // action.py - CallPipelineNode pipeline_uuid: '流水线', inherit_context: '继承上下文', // action.py - StoreDataNode storage_type: '存储类型', ttl: '过期时间', key_prefix: '键前缀', // action.py - SetVariableNode variable_name: '变量名称', variable_scope: '变量作用域', set_variable_operation: '操作类型', // action.py - OpeningStatementNode statement: '开场白', suggested_questions: '建议问题', show_suggestions: '显示建议', // action.py - EndNode output_format: '输出格式', success_message: '成功消息', // integration.py - DatabaseQueryNode connection_type: '数据库类型', connection_string: '连接字符串', query: 'SQL查询', query_type: '查询类型', // integration.py - RedisOperationNode connection_url: '连接URL', operation: '操作类型', key_template: '键模板', hash_field: '哈希字段', // integration.py - MCPToolNode server_name: '服务器名称', tool_name: '工具名称', arguments_template: '参数模板', // integration.py - MemoryStoreNode scope: '作用域', // integration.py - DifyWorkflowNode 'base-url': '基础URL', 'api-key': 'API密钥', 'app-type': '应用类型', // integration.py - DifyKnowledgeQueryNode dataset_id: '知识库ID', // integration.py - N8nWorkflowNode 'webhook-url': 'Webhook URL', // integration.py - LangflowFlowNode 'flow-id': '流程ID', // integration.py - CozeBotNode 'bot-id': '机器人ID', 'api-base': 'API基础URL', // process-configs.ts - TextTemplateNode escape_html: '转义HTML', trim_whitespace: '去除空白', // process-configs.ts - JsonTransformNode json_transform_type: 'JSON转换类型', json_expression: 'JSON表达式', mapping: '字段映射', // process-configs.ts - CodeExecutorNode code_language: '编程语言', code_content: '代码内容', // process-configs.ts - DataAggregatorNode aggregation_type: '聚合类型', separator: '分隔符', field_path: '字段路径', // process-configs.ts - TextSplitterNode split_type: '分割类型', chunk_size: '块大小', chunk_overlap: '块重叠', regex_pattern: '正则表达式', remove_empty: '移除空块', // process-configs.ts - VariableAssignmentNode assign_variable_name: '变量名', value_type: '值类型', static_value: '静态值', // integration-configs.ts - N8nWorkflowNode n8n_webhook_url: 'Webhook URL', n8n_auth_type: '认证方式', // integration-configs.ts - LangflowFlowNode langflow_flow_id: '流程ID', // integration-configs.ts - CozeBotNode coze_bot_id: '机器人ID', coze_api_base: 'API基础URL', }, }, unifiedBinding: { bindingType: '绑定类型', pipeline: '流水线', workflow: '工作流', pipelineDescription: '使用传统流水线处理消息', workflowDescription: '使用可视化工作流处理消息', selectPipeline: '选择流水线', selectWorkflow: '选择工作流', noPipelines: '暂无流水线', noWorkflows: '暂无工作流', createPipeline: '创建流水线', createWorkflow: '创建工作流', }, }; export default zhHans;