mirror of
https://github.com/cogwheel0/conduit.git
synced 2026-10-19 01:37:03 +00:00
Some checks are pending
L10n / l10n (push) Waiting to run
* Fix ten reported issues and vendor Hermes Agent as an API reference Closes #693, #695, #699, #700, #701, #703, #708, #712, #716, #723. - Hermes (#693, #699): load transcripts over REST even when session.resume fails, page at 200 messages and shrink on oversized responses, and show distinct errors for too-large, not-found, and RPC failures. Add the hermes-src submodule (NousResearch/hermes-agent v2026.9.11) as the RPC and REST contract reference. - Server version banner (#695): dismissible, remembered per server and version. - Model selector (#700): overflow fade and selection tint use the card surface. - OpenRouter (#701): skip Batch API-only ":batch" model variants. - Persisted chat content (#703): store plain output text instead of rendered <details> markup when structured output exists, matching the web client. - Direct connections (#708): probes report their real failure instead of a generic message, the Open WebUI logout fence no longer blocks Direct setup, and 401/403 under the api-key header mode hints at Bearer auth. - Reasoning effort (#712): per-server, per-model user picks override the model's configured default and are sent explicitly in the request. - Voice calls (#716): stop the record plugin from clearing the Android communication device and verify the loudspeaker route before reporting it. - Voice mode (#723): finalize speech on the responseDone marker. - Add the five new strings to every locale. * Address review: keep incomplete-clear block, pass effort on sends, keep all dismissals - Direct profiles stay hidden and unusable after an incomplete full app-data clear, in memory and across restarts, until the logout fence is cleared by a completed cleanup or a new authenticated session. Ordinary failed sign-outs still do not block Direct setup. - The primary Open WebUI send path now passes the resolved per-model reasoning effort like regeneration and queued completions already did. - Server version warning dismissals are stored as a bounded set so dismissing one server no longer forgets another. * Address review: release rejected speaker device, speak settled text on responseDone - When Android accepts the built-in speaker but the read-back disagrees, clear that selection before the legacy setSpeakerphoneOn fallback, which is ignored while a communication device stays selected. - Voice mode takes the final text from the message once responseDone is set; the streaming content provider can lag behind the flushed message. * Address review: await the incomplete-clear restart marker before returning The marker is written through the app-data-clear barrier with a checked write and awaited by the clear coordinator, so a process death right after an incomplete clear cannot reload the surviving Direct profiles on restart. * Address review: arm the restart fence before the wipe and propagate marker failures The incomplete-clear marker is now armed before any data is wiped, disarmed only when the clear completes or yields ownership, re-asserted on an incomplete outcome, and a failed checked write aborts the clear instead of being swallowed. The in-memory block is unchanged. * Do not raise an error banner for response.incomplete Open WebUI forwards the provider's `response.incomplete` event over the socket but treats it as a no-op: the output is kept and the turn still ends with a normal `done`. Raising an error on that event flashed "The response stopped before it was complete" under the answer until `done` cleared it. `response.failed` still surfaces the provider error.
3269 lines
139 KiB
Text
3269 lines
139 KiB
Text
{
|
||
"@@locale": "zh",
|
||
"appTitle": "Conduit",
|
||
"serverIncompatibleTitle": "不支持该服务器",
|
||
"serverIncompatibleMessage": "此服务器运行的 Open WebUI 版本为 {serverVersion},高于本应用支持的版本(最高 {maxVersion})。",
|
||
"serverIncompatibleResolution": "若要继续,请将服务器降级到 {maxVersion} 或更早版本,或等待新增支持的应用更新。",
|
||
"serverIncompatibleConnectBlocked": "此服务器的版本高于本应用支持的版本(最高 {maxVersion})。",
|
||
"serverIncompatibleRecheck": "重新检查服务器",
|
||
"serverIncompatibleSwitchServer": "使用其他服务器",
|
||
"serverIncompatibleStillUnsupported": "此服务器的版本仍高于本应用支持的版本。",
|
||
"retry": "重试",
|
||
"back": "返回",
|
||
"you": "你",
|
||
"loadingProfile": "加载个人资料中...",
|
||
"unableToLoadProfile": "无法加载个人资料。",
|
||
"pleaseCheckConnection": "请检查您的连接并重试",
|
||
"connectionIssueTitle": "无法连接到您的服务器",
|
||
"@connectionIssueTitle": {
|
||
"description": "当配置的服务器无法访问时显示的标题"
|
||
},
|
||
"connectionIssueSubtitle": "重新连接以继续或退出登录以选择其他服务器。",
|
||
"@connectionIssueSubtitle": {
|
||
"description": "当无法访问服务器时解释可用操作的副标题"
|
||
},
|
||
"account": "账户",
|
||
"supportConduit": "支持 Conduit",
|
||
"supportConduitSubtitle": "通过资助持续开发来保持 Conduit 的独立性。",
|
||
"githubSponsorsTitle": "GitHub 赞助",
|
||
"githubSponsorsSubtitle": "成为定期赞助者以资助路线图项目。",
|
||
"buyMeACoffeeTitle": "Buy Me a Coffee",
|
||
"buyMeACoffeeSubtitle": "一次性捐赠以表达感谢。",
|
||
"releaseNotesTitle": "新变化",
|
||
"releaseNotesAnnouncementTitle": "{version} 新变化",
|
||
"@releaseNotesAnnouncementTitle": {"placeholders": {"version": {"type": "String"}}},
|
||
"releaseNotesLearnMore": "了解更多",
|
||
"releaseNotesReviewButton": "评价 Conduit",
|
||
"releaseNotesDoneButton": "完成",
|
||
"signOut": "退出登录",
|
||
"endYourSession": "结束您的会话",
|
||
"signOutOptionsDescription": "退出登录会清除此设备上的应用偏好设置以及 Direct 和 Hermes 连接。已保存的对话和服务器上的数据不会受到影响。",
|
||
"keepServerDetails": "保留服务器详情",
|
||
"keepServerDetailsDescription": "服务器地址和非敏感连接设置;令牌和 Cookie 标头将被删除",
|
||
"defaultModel": "默认模型",
|
||
"autoSelect": "服务器默认",
|
||
"loadingModels": "加载模型中...",
|
||
"failedToLoadModels": "无法加载模型",
|
||
"failedToLoadFiles": "无法加载文件",
|
||
"availableModels": "可用模型",
|
||
"noResults": "无结果",
|
||
"searchModels": "搜索模型...",
|
||
"searchFiles": "搜索文件...",
|
||
"errorMessage": "出了点问题。请重试。",
|
||
"closeButtonSemantic": "关闭",
|
||
"loadingContent": "加载内容中",
|
||
"noItems": "无项目",
|
||
"noItemsToDisplay": "无可显示的项目",
|
||
"knowledgeBase": "知识库",
|
||
"attachments": "附件",
|
||
"files": "文件",
|
||
"takePhoto": "拍照",
|
||
"document": "文档",
|
||
"backToServerSetup": "返回服务器设置",
|
||
"connectedToServer": "已连接到服务器",
|
||
"signIn": "登录",
|
||
"enterCredentials": "输入您的凭据以访问您的 AI 对话",
|
||
"credentials": "凭据",
|
||
"apiKey": "API 密钥",
|
||
"token": "令牌",
|
||
"jwt": "JWT",
|
||
"usernameOrEmail": "用户名或电子邮件",
|
||
"password": "密码",
|
||
"signInWithToken": "使用令牌登录",
|
||
"connectToServer": "连接到服务器",
|
||
"serverUrl": "服务器 URL",
|
||
"serverUrlHint": "https://your-server.com",
|
||
"enterServerUrlSemantic": "输入您的服务器 URL 或 IP 地址",
|
||
"headerName": "标头名称",
|
||
"headerValue": "标头值",
|
||
"headerValueHint": "api-key-123 或 Bearer token",
|
||
"addHeader": "添加标头",
|
||
"maximumHeadersReached": "已达到最大标头数",
|
||
"removeHeader": "删除标头",
|
||
"connecting": "连接中...",
|
||
"connectToServerButton": "连接到服务器",
|
||
"demoModeActive": "演示模式已激活",
|
||
"skipServerSetupTryDemo": "跳过服务器设置并尝试演示",
|
||
"enterDemo": "进入演示",
|
||
"demoBadge": "演示",
|
||
"serverNotOpenWebUI": "这似乎不是 Open-WebUI 服务器。",
|
||
"serverUrlEmpty": "服务器 URL 不能为空",
|
||
"invalidUrlFormat": "无效的 URL 格式。请检查您的输入。",
|
||
"onlyHttpHttps": "仅支持 HTTP 和 HTTPS 协议。",
|
||
"serverAddressRequired": "需要服务器地址(例如 192.168.1.10 或 example.com)。",
|
||
"portRange": "端口必须在 1 到 65535 之间。",
|
||
"invalidIpFormat": "无效的 IP 地址格式。使用如 192.168.1.10 的格式。",
|
||
"couldNotConnectGeneric": "无法连接。请仔细检查地址并重试。",
|
||
"weCouldntReachServer": "我们无法访问服务器。请检查您的连接和服务器是否正在运行。",
|
||
"connectionTimedOut": "连接超时。服务器可能很忙或被防火墙阻止。",
|
||
"useHttpOrHttpsOnly": "仅使用 http:// 或 https://。",
|
||
"loginFailed": "登录失败",
|
||
"invalidCredentials": "无效的用户名或密码。请重试。",
|
||
"serverRedirectingHttps": "服务器正在重定向请求。请检查您的服务器的 HTTPS 配置。",
|
||
"unableToConnectServer": "无法连接到服务器。请检查您的连接。",
|
||
"requestTimedOut": "请求超时。请重试。",
|
||
"genericSignInFailed": "我们无法让您登录。请检查您的凭据和服务器设置。",
|
||
"attachmentLabel": "附件",
|
||
"tools": "工具",
|
||
"toolServer": "工具服务器",
|
||
"toolServers": "工具服务器",
|
||
"terminal": "终端",
|
||
"filters": "过滤器",
|
||
"voiceInput": "语音输入",
|
||
"voice": "语音",
|
||
"voiceStatusListening": "正在听...",
|
||
"voiceStatusRecording": "正在录制...",
|
||
"voiceHoldToTalk": "按住说话",
|
||
"voiceAutoSend": "自动发送",
|
||
"voiceTranscript": "转录",
|
||
"voicePromptSpeakNow": "现在说话...",
|
||
"voicePromptTapStart": "点击开始以开始",
|
||
"voiceActionStop": "停止",
|
||
"voiceActionStart": "开始",
|
||
"messageHintText": "问 Conduit",
|
||
"stopGenerating": "停止生成",
|
||
"codeCopiedToClipboard": "代码已复制到剪贴板。",
|
||
"send": "发送",
|
||
"sendMessage": "发送消息",
|
||
"file": "文件",
|
||
"photo": "照片",
|
||
"camera": "相机",
|
||
"pasteImage": "粘贴图片",
|
||
"apiUnavailable": "API 服务不可用",
|
||
"unableToLoadImage": "无法加载图像",
|
||
"notAnImageFile": "不是图像文件:{fileName}",
|
||
"failedToLoadImage": "无法加载图像:{error}",
|
||
"invalidDataUrl": "无效的数据 URL 格式",
|
||
"failedToDecodeImage": "无法解码图像",
|
||
"invalidImageFormat": "无效的图像格式",
|
||
"emptyImageData": "空图像数据",
|
||
"confirm": "确认",
|
||
"cancel": "取消",
|
||
"chatQueuedOfflineTitle": "离线排队中",
|
||
"chatQueuedOfflineMessage": "服务器可访问时,此响应将开始。",
|
||
"chatQueuedPendingTitle": "已排队等待发送",
|
||
"chatQueuedPendingMessage": "同步运行后,Conduit 将立即开始此响应。",
|
||
"chatQueuedFailedTitle": "发送失败",
|
||
"chatQueuedFailedMessage": "重试排队的响应或取消它。",
|
||
"chatQueuedSnackBar": "消息已排队。服务器可访问时将发送。",
|
||
"ok": "确定",
|
||
"inputField": "输入字段",
|
||
"checkConnection": "检查连接",
|
||
"openSettings": "打开设置",
|
||
"goBack": "返回",
|
||
"technicalDetails": "技术详情",
|
||
"save": "保存",
|
||
"chooseModel": "选择模型",
|
||
"reviewerMode": "审核者模式",
|
||
"selectLanguage": "选择语言",
|
||
"newFolder": "新文件夹",
|
||
"folderName": "文件夹名称",
|
||
"newChat": "新对话",
|
||
"more": "更多",
|
||
"clear": "清除",
|
||
"searchConversations": "搜索对话...",
|
||
"create": "创建",
|
||
"failedToCreateFolder": "无法创建文件夹",
|
||
"failedToMoveChat": "无法移动对话",
|
||
"failedToLoadChats": "无法加载对话",
|
||
"failedToUpdatePin": "无法更新置顶",
|
||
"failedToDeleteChat": "无法删除对话",
|
||
"manage": "管理",
|
||
"rename": "重命名",
|
||
"delete": "删除",
|
||
"renameChat": "重命名对话",
|
||
"enterChatName": "输入对话名称",
|
||
"failedToRenameChat": "无法重命名对话",
|
||
"failedToUpdateArchive": "无法更新存档",
|
||
"unarchive": "取消存档",
|
||
"archive": "存档",
|
||
"pin": "置顶",
|
||
"unpin": "取消置顶",
|
||
"recent": "最近",
|
||
"system": "系统",
|
||
"english": "English",
|
||
"deutsch": "Deutsch",
|
||
"francais": "Français",
|
||
"italiano": "Italiano",
|
||
"espanol": "Español",
|
||
"nederlands": "Nederlands",
|
||
"russian": "Русский",
|
||
"chinese": "中文",
|
||
"chineseSimplified": "简体中文",
|
||
"chineseTraditional": "繁體中文",
|
||
"korean": "한국어",
|
||
"japanese": "日本語",
|
||
"czech": "Čeština",
|
||
"slovak": "Slovenčina",
|
||
"polish": "波兰语",
|
||
"deleteMessagesTitle": "删除消息",
|
||
"deleteMessagesMessage": "删除 {count} 条消息?",
|
||
"@deleteMessagesMessage": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"routeNotFound": "未找到路由:{routeName}",
|
||
"@routeNotFound": {
|
||
"placeholders": {
|
||
"routeName": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"deleteChatTitle": "删除对话",
|
||
"deleteChatMessage": "此对话将被永久删除。",
|
||
"deleteFolderTitle": "删除文件夹",
|
||
"deleteFolderMessage": "此文件夹及其分配引用将被删除。",
|
||
"failedToDeleteFolder": "无法删除文件夹",
|
||
"aboutApp": "关于",
|
||
"aboutAppSubtitle": "Conduit 信息和链接",
|
||
"web": "网页",
|
||
"imageGen": "图像生成",
|
||
"pinned": "已置顶",
|
||
"folders": "文件夹",
|
||
"archived": "已存档",
|
||
"appLanguage": "应用语言",
|
||
"darkMode": "深色模式",
|
||
"webSearch": "网页搜索",
|
||
"webSearchDescription": "搜索网页并在回复中引用来源。",
|
||
"imageGeneration": "图像生成",
|
||
"imageGenerationDescription": "从您的提示创建图像。",
|
||
"copy": "复制",
|
||
"ttsListen": "收听",
|
||
"ttsStop": "停止",
|
||
"edit": "编辑",
|
||
"regenerate": "重新生成",
|
||
"noConversationsYet": "尚无对话",
|
||
"usernameOrEmailHint": "输入您的用户名或电子邮件",
|
||
"passwordHint": "输入您的密码",
|
||
"enterToken": "输入您的 JWT 令牌",
|
||
"tokenHint": "从 Open WebUI 设置获取 JWT 令牌。API 密钥 (sk-...) 不支持流式传输。",
|
||
"apiKeyNotSupported": "不支持 API 密钥 (sk-...)。请改用 JWT 令牌。",
|
||
"apiKeyNoLongerSupported": "由于不再支持 API 密钥,您已被登出。请使用 Open WebUI 设置中的 JWT 令牌登录。",
|
||
"tokenTooShort": "令牌太短",
|
||
"signingIn": "正在登录...",
|
||
"advancedSettings": "高级设置",
|
||
"customHeaders": "自定义标头",
|
||
"customHeadersDescription": "为身份验证、API 密钥或特殊服务器要求添加自定义 HTTP 标头。",
|
||
"allowSelfSignedCertificates": "信任自签名证书",
|
||
"@allowSelfSignedCertificates": {
|
||
"description": "允许信任配置服务器的自签名 TLS 证书的切换标签。"
|
||
},
|
||
"allowSelfSignedCertificatesDescription": "接受此服务器的 TLS 证书,即使它是自签名的。仅对您信任的服务器启用。",
|
||
"@allowSelfSignedCertificatesDescription": {
|
||
"description": "阐明启用自签名证书切换风险的帮助文本。"
|
||
},
|
||
"mutualTlsSectionTitle": "mTLS 客户端证书",
|
||
"mutualTlsSectionDescription": "如果服务器在建立连接时要求双向 TLS,请附加 PEM 证书链和 PEM 私钥。",
|
||
"mutualTlsSelectCertificate": "选择证书",
|
||
"mutualTlsSelectPrivateKey": "选择私钥",
|
||
"mutualTlsCertificateReady": "证书",
|
||
"mutualTlsPrivateKeyReady": "私钥",
|
||
"mutualTlsPrivateKeyPasswordHint": "私钥密码(可选)",
|
||
"mutualTlsClearCredentials": "清除 mTLS 文件",
|
||
"mutualTlsMissingCredentialPair": "要使用 mTLS,请同时选择客户端证书和私钥。",
|
||
"mutualTlsCertificatePemRequired": "所选证书文件必须包含 PEM 证书链。",
|
||
"mutualTlsPrivateKeyPemRequired": "所选私钥文件必须包含 PEM 私钥。",
|
||
"mutualTlsFileReadFailed": "无法读取所选的 mTLS 文件。",
|
||
"mutualTlsHandshakeFailed": "服务器拒绝了 mTLS 凭据。请确认该证书、私钥和密码是否正确。",
|
||
"headerNameTooLong": "标头名称太长(最多 64 个字符)",
|
||
"headerNameInvalidChars": "无效的标头名称。仅使用字母、数字和这些符号:!#$&-^_`|~",
|
||
"headerNameReserved": "无法覆盖保留的标头「{key}」",
|
||
"@headerNameReserved": {
|
||
"placeholders": {
|
||
"key": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"headerValueTooLong": "标头值太长(最多 1024 个字符)",
|
||
"headerValueInvalidChars": "标头值包含无效字符。仅使用可打印的 ASCII。",
|
||
"headerValueUnsafe": "标头值似乎包含潜在的不安全内容",
|
||
"headerAlreadyExists": "标头「{key}」已存在。首先删除它以更新。",
|
||
"@headerAlreadyExists": {
|
||
"placeholders": {
|
||
"key": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"maxHeadersReachedDetail": "最多允许 10 个自定义标头。删除一些以添加更多。",
|
||
"noModelsAvailable": "无可用模型",
|
||
"followingSystem": "跟随系统:{theme}",
|
||
"@followingSystem": {
|
||
"placeholders": {
|
||
"theme": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"themeDark": "深色",
|
||
"themePalette": "强调色调色板",
|
||
"@themePalette": {
|
||
"description": "选择应用颜色调色板的标题。"
|
||
},
|
||
"themeLight": "浅色",
|
||
"currentlyUsingDarkTheme": "当前使用深色主题",
|
||
"currentlyUsingLightTheme": "当前使用浅色主题",
|
||
"aboutConduit": "关于 Conduit",
|
||
"versionLabel": "版本:{version}({build})",
|
||
"@versionLabel": {
|
||
"placeholders": {
|
||
"version": {
|
||
"type": "String"
|
||
},
|
||
"build": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"githubRepository": "GitHub 仓库",
|
||
"unableToLoadAppInfo": "无法加载应用信息",
|
||
"thinking": "思考中...",
|
||
"thoughts": "思路",
|
||
"thoughtForDuration": "思考了 {duration}",
|
||
"@thoughtForDuration": {
|
||
"description": "显示助手在回复前思考了多长时间。",
|
||
"placeholders": {
|
||
"duration": {
|
||
"type": "String",
|
||
"example": "3s"
|
||
}
|
||
}
|
||
},
|
||
"analyzing": "分析中…",
|
||
"analyzed": "已分析",
|
||
"appCustomization": "自定义",
|
||
"appCustomizationSubtitle": "主题、语言、语音和 quick actions",
|
||
"quickActionsDescription": "聊天快捷方式",
|
||
"chatSettings": "对话",
|
||
"sendOnEnter": "回车发送",
|
||
"sendOnEnterDescription": "回车发送(软键盘)。Cmd/Ctrl+Enter 也可用",
|
||
"disableHapticsWhileStreaming": "流式输出时禁用触觉反馈",
|
||
"disableHapticsWhileStreamingDescription": "仅关闭实时回复的触觉反馈,不影响应用的其他反馈",
|
||
"androidAssistantTitle": "Android 数字助理",
|
||
"androidAssistantDescription": "选择触发 Android 数字助理时要执行的操作。",
|
||
"androidAssistantOverlayOption": "显示快速浮层(默认)",
|
||
"androidAssistantNewChatOption": "打开 Conduit 并新建聊天",
|
||
"androidAssistantVoiceCallOption": "开始语音通话",
|
||
"sttSettings": "语音转文字",
|
||
"sttEngineLabel": "识别引擎",
|
||
"sttEngineDevice": "本机",
|
||
"sttEngineServer": "服务器",
|
||
"sttEngineDeviceDescription": "音频会保留在此设备上。如果设备不支持语音识别,语音输入将不可用。",
|
||
"sttEngineServerDescription": "始终将录音发送到你的 Open WebUI 服务器进行转写。",
|
||
"sttDeviceUnavailableWarning": "此设备不支持本机语音识别。",
|
||
"sttServerUnavailableWarning": "连接到启用转写功能的服务器后才能使用此选项。",
|
||
"sttSilenceDuration": "静音持续时间",
|
||
"sttSilenceDurationDescription": "检测到静音后等待多久自动停止录音",
|
||
"sttTranscriptionLanguage": "转写语言",
|
||
"sttTranscriptionLanguageDescription": "使用“自动”跟随此设备的语言,或输入 en 等代码。",
|
||
"sttTranscriptionLanguageAuto": "自动",
|
||
"sttTranscriptionLanguageCustom": "自定义语言代码",
|
||
"sttTranscriptionLanguagePlaceholder": "ISO-639-1 代码,例如 en",
|
||
"sttTranscriptionLanguageInvalid": "请使用 en 这样的双字母语言代码。",
|
||
"sttDeviceLanguage": "识别语言",
|
||
"sttDeviceLanguageDescription": "选择设备端语音识别使用的语言。",
|
||
"sttDeviceLanguageAutoDescription": "在支持时自动切换已安装的语言。",
|
||
"sttDeviceLanguageSystemDescription": "使用当前的 Android 系统语言。",
|
||
"sttDeviceLanguagePlaceholder": "BCP-47 代码,例如 pl-PL",
|
||
"sttDeviceLanguageInvalid": "请输入有效的语言区域代码,例如 pl-PL。",
|
||
"ttsSettings": "文本转语音",
|
||
"ttsEngineDeviceDescription": "在此设备上完成合成。如果设备不支持文本转语音,语音播放将不可用。",
|
||
"ttsEngineServerDescription": "始终向你的 Open WebUI 服务器请求音频。",
|
||
"ttsDeviceUnavailableWarning": "此设备不支持本机文本转语音。",
|
||
"ttsServerUnavailableWarning": "连接到启用文本转语音的服务器后才能使用此选项。",
|
||
"ttsVoice": "语音",
|
||
"ttsSpeechRate": "语速",
|
||
"ttsPitch": "音调",
|
||
"ttsVolume": "音量",
|
||
"ttsPreview": "预览语音",
|
||
"ttsSystemDefault": "系统默认",
|
||
"ttsSelectVoice": "选择语音",
|
||
"ttsPreviewText": "这是所选语音的预览。",
|
||
"ttsNoVoicesAvailable": "没有可用的语音",
|
||
"ttsVoicesForLanguage": "{language} 语音",
|
||
"ttsOtherVoices": "其他语言",
|
||
"error": "错误",
|
||
"display": "显示",
|
||
"realtime": "实时",
|
||
"transportMode": "传输模式",
|
||
"mode": "模式",
|
||
"transportModePolling": "轮询回退",
|
||
"transportModeWs": "仅 WebSocket",
|
||
"transportModePollingInfo": "当 WebSocket 被阻止时改用 HTTP 轮询,在条件允许时切换回 WebSocket。",
|
||
"transportModeWsInfo": "开销较低,但可能在严格的代理/防火墙后失败。",
|
||
"quickActionsSelectedCount": "{count, plural, =0{未选择操作} other{已选择{count}个操作}}",
|
||
"@quickActionsSelectedCount": {
|
||
"description": "Subtitle indicating how many quick actions are selected.",
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int",
|
||
"example": "2"
|
||
}
|
||
}
|
||
},
|
||
"autoSelectDescription": "使用服务器上配置的默认模型",
|
||
"@autoSelectDescription": {
|
||
"description": "Explains what the server-provided model setting does."
|
||
},
|
||
"ttsEngineLabel": "引擎",
|
||
"@ttsEngineLabel": {
|
||
"description": "Label for selecting the text-to-speech engine."
|
||
},
|
||
"ttsEngineDevice": "本机",
|
||
"@ttsEngineDevice": {
|
||
"description": "Chip label for using on-device text-to-speech."
|
||
},
|
||
"ttsEngineServer": "服务器",
|
||
"@ttsEngineServer": {
|
||
"description": "Chip label for using server-side text-to-speech."
|
||
},
|
||
"modelCapabilityMultimodal": "多模态",
|
||
"@modelCapabilityMultimodal": {
|
||
"description": "Capability chip label for models that support multimodal input."
|
||
},
|
||
"modelCapabilityReasoning": "推理",
|
||
"@modelCapabilityReasoning": {
|
||
"description": "Capability chip label for models that support reasoning features."
|
||
},
|
||
"voiceCallTitle": "语音通话",
|
||
"@voiceCallTitle": {
|
||
"description": "Title displayed on the voice call screen."
|
||
},
|
||
"voiceCallPause": "暂停",
|
||
"@voiceCallPause": {
|
||
"description": "Button label to pause a voice call."
|
||
},
|
||
"voiceCallResume": "继续",
|
||
"@voiceCallResume": {
|
||
"description": "Button label to resume a paused voice call."
|
||
},
|
||
"voiceCallStop": "停止",
|
||
"@voiceCallStop": {
|
||
"description": "Button label to stop the active voice call."
|
||
},
|
||
"voiceCallEnd": "结束通话",
|
||
"@voiceCallEnd": {
|
||
"description": "Button label to end the voice call session."
|
||
},
|
||
"chooseDifferentFile": "选择其他文件",
|
||
"@chooseDifferentFile": {
|
||
"description": "Action label prompting the user to pick another file."
|
||
},
|
||
"errorWithMessage": "错误:{message}",
|
||
"@errorWithMessage": {
|
||
"description": "Error label with appended message text.",
|
||
"placeholders": {
|
||
"message": {
|
||
"type": "String",
|
||
"example": "Network timeout"
|
||
}
|
||
}
|
||
},
|
||
"networkTimeoutError": "连接超时。请检查网络后重试。",
|
||
"@networkTimeoutError": {
|
||
"description": "User-facing message when a network request times out."
|
||
},
|
||
"networkUnreachableError": "无法连接服务器。请检查服务器地址和网络。",
|
||
"@networkUnreachableError": {
|
||
"description": "User-facing message when the server cannot be reached."
|
||
},
|
||
"networkServerNotResponding": "服务器没有响应。请确认服务器正在运行且可访问。",
|
||
"@networkServerNotResponding": {
|
||
"description": "User-facing message when the server does not respond to a request."
|
||
},
|
||
"networkGenericError": "网络连接出现问题。请检查网络连接。",
|
||
"@networkGenericError": {
|
||
"description": "Fallback message for generic network errors."
|
||
},
|
||
"serverError500": "服务器出现问题,通常是暂时的。",
|
||
"@serverError500": {
|
||
"description": "Message when a 500 error is encountered."
|
||
},
|
||
"serverErrorUnavailable": "服务器暂时不可用。请稍后再试。",
|
||
"@serverErrorUnavailable": {
|
||
"description": "Message when a 502/503 error is encountered."
|
||
},
|
||
"serverErrorTimeout": "服务器响应超时。请重试。",
|
||
"@serverErrorTimeout": {
|
||
"description": "Message when the server times out."
|
||
},
|
||
"serverErrorGeneric": "服务器出现故障。请稍后再试。",
|
||
"@serverErrorGeneric": {
|
||
"description": "Fallback server error message."
|
||
},
|
||
"authSessionExpired": "会话已过期,请重新登录。",
|
||
"@authSessionExpired": {
|
||
"description": "Message when an authentication session expires."
|
||
},
|
||
"authForbidden": "您没有执行此操作的权限。",
|
||
"@authForbidden": {
|
||
"description": "Message when the user lacks required permissions."
|
||
},
|
||
"authInvalidToken": "认证令牌无效,请重新登录。",
|
||
"@authInvalidToken": {
|
||
"description": "Message when the authentication token is invalid."
|
||
},
|
||
"authGenericError": "认证出现问题,请重新登录。",
|
||
"@authGenericError": {
|
||
"description": "Fallback authentication error message."
|
||
},
|
||
"validationInvalidEmail": "请输入有效的邮箱地址。",
|
||
"@validationInvalidEmail": {
|
||
"description": "Validation message for invalid email input."
|
||
},
|
||
"validationWeakPassword": "密码不符合要求,请检查后重试。",
|
||
"@validationWeakPassword": {
|
||
"description": "Validation message for weak passwords."
|
||
},
|
||
"validationMissingRequired": "请填写所有必填项。",
|
||
"@validationMissingRequired": {
|
||
"description": "Validation message when required fields are missing."
|
||
},
|
||
"validationFormatError": "部分信息格式不正确,请检查后重试。",
|
||
"@validationFormatError": {
|
||
"description": "Validation message for generic formatting issues."
|
||
},
|
||
"validationGenericError": "请检查输入内容并重试。",
|
||
"@validationGenericError": {
|
||
"description": "Fallback validation message."
|
||
},
|
||
"fileNotFound": "未找到文件,可能已移动或删除。",
|
||
"@fileNotFound": {
|
||
"description": "Message when a file cannot be located."
|
||
},
|
||
"fileAccessDenied": "无法访问文件,请检查权限。",
|
||
"@fileAccessDenied": {
|
||
"description": "Message when file access is denied."
|
||
},
|
||
"fileTooLarge": "文件过大,请选择较小的文件。",
|
||
"@fileTooLarge": {
|
||
"description": "Message when a file exceeds size limits."
|
||
},
|
||
"fileGenericError": "文件出现问题,请尝试其他文件。",
|
||
"@fileGenericError": {
|
||
"description": "Fallback file error message."
|
||
},
|
||
"permissionCameraRequired": "需要相机权限,请在设置中开启。",
|
||
"@permissionCameraRequired": {
|
||
"description": "Message when camera permission is missing."
|
||
},
|
||
"permissionStorageRequired": "需要存储权限,请在设置中开启。",
|
||
"@permissionStorageRequired": {
|
||
"description": "Message when storage permission is missing."
|
||
},
|
||
"permissionMicrophoneRequired": "需要麦克风权限,请在设置中开启。",
|
||
"@permissionMicrophoneRequired": {
|
||
"description": "Message when microphone permission is missing."
|
||
},
|
||
"permissionGenericError": "需要权限,请在设置中检查应用权限。",
|
||
"@permissionGenericError": {
|
||
"description": "Fallback permission error message."
|
||
},
|
||
"actionRetryRequest": "请再次尝试该请求。",
|
||
"@actionRetryRequest": {
|
||
"description": "Description for retrying a failed request."
|
||
},
|
||
"actionVerifyConnection": "请检查网络连接。",
|
||
"@actionVerifyConnection": {
|
||
"description": "Description for checking internet connectivity."
|
||
},
|
||
"actionRetryOperation": "请重试此操作。",
|
||
"@actionRetryOperation": {
|
||
"description": "Description for retrying the same operation."
|
||
},
|
||
"actionRetryAfterDelay": "稍等片刻再试一次。",
|
||
"@actionRetryAfterDelay": {
|
||
"description": "Description suggesting a short delay before retrying."
|
||
},
|
||
"actionSignInToAccount": "登录到您的账户。",
|
||
"@actionSignInToAccount": {
|
||
"description": "Description for signing back into the app."
|
||
},
|
||
"actionSelectAnotherFile": "请选择其他文件。",
|
||
"@actionSelectAnotherFile": {
|
||
"description": "Description for choosing a different file."
|
||
},
|
||
"actionOpenAppSettings": "打开应用设置以授予权限。",
|
||
"@actionOpenAppSettings": {
|
||
"description": "Description for opening system or app settings."
|
||
},
|
||
"actionRetryAfterPermission": "授予权限后请重试。",
|
||
"@actionRetryAfterPermission": {
|
||
"description": "Description for retrying once permissions are granted."
|
||
},
|
||
"actionReturnToPrevious": "返回上一屏。",
|
||
"@actionReturnToPrevious": {
|
||
"description": "Description for navigating back to the prior screen."
|
||
},
|
||
"continueAction": "继续",
|
||
"@continueAction": {
|
||
"description": "Button label to continue an action or flow."
|
||
},
|
||
"loadingShort": "加载中",
|
||
"@loadingShort": {
|
||
"description": "Short loading label used for accessibility."
|
||
},
|
||
"loadingAnnouncement": "正在加载:{message}",
|
||
"@loadingAnnouncement": {
|
||
"description": "Screen reader announcement when loading a resource.",
|
||
"placeholders": {
|
||
"message": {
|
||
"type": "String",
|
||
"example": "Messages"
|
||
}
|
||
}
|
||
},
|
||
"errorAnnouncement": "错误:{error}",
|
||
"@errorAnnouncement": {
|
||
"description": "Screen reader announcement for an error.",
|
||
"placeholders": {
|
||
"error": {
|
||
"type": "String",
|
||
"example": "Network timeout"
|
||
}
|
||
}
|
||
},
|
||
"errorAnnouncementWithSuggestion": "错误:{error}。{suggestion}",
|
||
"@errorAnnouncementWithSuggestion": {
|
||
"description": "Screen reader announcement for an error with a follow-up suggestion.",
|
||
"placeholders": {
|
||
"error": {
|
||
"type": "String",
|
||
"example": "Network timeout"
|
||
},
|
||
"suggestion": {
|
||
"type": "String",
|
||
"example": "Please try again later."
|
||
}
|
||
}
|
||
},
|
||
"successAnnouncement": "成功:{message}",
|
||
"@successAnnouncement": {
|
||
"description": "Screen reader announcement for successful actions.",
|
||
"placeholders": {
|
||
"message": {
|
||
"type": "String",
|
||
"example": "Profile updated"
|
||
}
|
||
}
|
||
},
|
||
"requiredFieldLabel": "{label} *",
|
||
"@requiredFieldLabel": {
|
||
"description": "Label text indicating a required field.",
|
||
"placeholders": {
|
||
"label": {
|
||
"type": "String",
|
||
"example": "Email"
|
||
}
|
||
}
|
||
},
|
||
"requiredFieldHelper": "必填项",
|
||
"@requiredFieldHelper": {
|
||
"description": "Helper text indicating that the field is required."
|
||
},
|
||
"switchOnLabel": "开启",
|
||
"@switchOnLabel": {
|
||
"description": "Semantic label when a switch is enabled."
|
||
},
|
||
"switchOffLabel": "关闭",
|
||
"@switchOffLabel": {
|
||
"description": "Semantic label when a switch is disabled."
|
||
},
|
||
"dialogSemanticLabel": "对话框:{title}",
|
||
"@dialogSemanticLabel": {
|
||
"description": "Semantic label describing the dialog title.",
|
||
"placeholders": {
|
||
"title": {
|
||
"type": "String",
|
||
"example": "Settings"
|
||
}
|
||
}
|
||
},
|
||
"previousLabel": "上一步",
|
||
"@previousLabel": {
|
||
"description": "Label for navigating to the previous item."
|
||
},
|
||
"nextLabel": "下一步",
|
||
"@nextLabel": {
|
||
"description": "Label for navigating to the next item."
|
||
},
|
||
"themePaletteConduitLabel": "Conduit",
|
||
"@themePaletteConduitLabel": {
|
||
"description": "Palette name for the default Conduit theme."
|
||
},
|
||
"themePaletteConduitDescription": "为 Conduit 设计的简洁中性色主题。",
|
||
"@themePaletteConduitDescription": {
|
||
"description": "Description of the Conduit palette."
|
||
},
|
||
"themePaletteClaudeLabel": "Claude",
|
||
"@themePaletteClaudeLabel": {
|
||
"description": "Palette name inspired by the Claude web client."
|
||
},
|
||
"themePaletteClaudeDescription": "源自 Claude 网页端的温暖触感配色。",
|
||
"@themePaletteClaudeDescription": {
|
||
"description": "Description of the Claude palette."
|
||
},
|
||
"themePaletteT3ChatLabel": "T3 Chat",
|
||
"@themePaletteT3ChatLabel": {
|
||
"description": "Palette name inspired by the T3 Stack brand."
|
||
},
|
||
"themePaletteT3ChatDescription": "灵感来自 T3 Stack 品牌的活泼渐变。",
|
||
"@themePaletteT3ChatDescription": {
|
||
"description": "Description of the T3 Chat palette."
|
||
},
|
||
"themePaletteCatppuccinLabel": "Catppuccin",
|
||
"@themePaletteCatppuccinLabel": {
|
||
"description": "Palette name for Catppuccin colors."
|
||
},
|
||
"themePaletteCatppuccinDescription": "柔和的马卡龙色调。",
|
||
"@themePaletteCatppuccinDescription": {
|
||
"description": "Description of the Catppuccin palette."
|
||
},
|
||
"themePaletteTangerineLabel": "Tangerine",
|
||
"@themePaletteTangerineLabel": {
|
||
"description": "Palette name for Tangerine colors."
|
||
},
|
||
"themePaletteTangerineDescription": "温暖的橙色与石板色调。",
|
||
"@themePaletteTangerineDescription": {
|
||
"description": "Description of the Tangerine palette."
|
||
},
|
||
"@notAnImageFile": {
|
||
"description": "Error when a referenced file is not an image.",
|
||
"placeholders": {
|
||
"fileName": {
|
||
"type": "String",
|
||
"example": "image.txt"
|
||
}
|
||
}
|
||
},
|
||
"@failedToLoadImage": {
|
||
"description": "Error including the underlying reason when image loading fails.",
|
||
"placeholders": {
|
||
"error": {
|
||
"type": "String",
|
||
"example": "Network error"
|
||
}
|
||
}
|
||
},
|
||
"@ttsVoicesForLanguage": {
|
||
"description": "Section header for voices matching the app language",
|
||
"placeholders": {
|
||
"language": {
|
||
"type": "String",
|
||
"example": "EN"
|
||
}
|
||
}
|
||
},
|
||
"voiceCallReady": "已就绪",
|
||
"@voiceCallReady": {
|
||
"description": "Status label shown when the voice call is ready to start."
|
||
},
|
||
"voiceCallConnecting": "正在连接...",
|
||
"@voiceCallConnecting": {
|
||
"description": "Status label shown while the voice call is connecting."
|
||
},
|
||
"voiceCallListening": "正在聆听",
|
||
"@voiceCallListening": {
|
||
"description": "Status label shown while the call is listening for input."
|
||
},
|
||
"voiceCallPaused": "已暂停",
|
||
"@voiceCallPaused": {
|
||
"description": "Status label shown when the call is paused."
|
||
},
|
||
"voiceCallProcessing": "正在思考...",
|
||
"@voiceCallProcessing": {
|
||
"description": "Status label shown while the call processes a response."
|
||
},
|
||
"voiceCallSpeaking": "正在讲话",
|
||
"@voiceCallSpeaking": {
|
||
"description": "Status label shown while the assistant is speaking."
|
||
},
|
||
"voiceCallDisconnected": "已断开",
|
||
"@voiceCallDisconnected": {
|
||
"description": "Status label shown when the voice call has ended or disconnected."
|
||
},
|
||
"voiceCallErrorHelp": "请检查:\n• 已授予麦克风权限\n• 设备支持语音识别\n• 已连接到服务器",
|
||
"@voiceCallErrorHelp": {
|
||
"description": "Guidance shown when the voice call encounters an error."
|
||
},
|
||
"mermaidPreviewUnavailable": "此平台不支持 Mermaid 预览。",
|
||
"chartPreviewUnavailable": "此平台不支持图表预览。",
|
||
"notes": "笔记",
|
||
"searchNotes": "搜索笔记...",
|
||
"createNote": "创建笔记",
|
||
"noNotesYet": "暂无笔记",
|
||
"noNotesFound": "未找到笔记",
|
||
"createFirstNoteHint": "点击 + 创建您的第一条笔记。",
|
||
"tryDifferentSearch": "尝试其他搜索词。",
|
||
"loadingNotes": "正在加载笔记...",
|
||
"loadingNote": "正在加载笔记...",
|
||
"failedToLoadNotes": "加载笔记失败",
|
||
"deleteNoteTitle": "删除笔记",
|
||
"deleteNoteMessage": "删除「{title}」?此操作无法撤消。",
|
||
"@deleteNoteMessage": {
|
||
"placeholders": {
|
||
"title": {
|
||
"type": "String",
|
||
"example": "My Note"
|
||
}
|
||
}
|
||
},
|
||
"writeNote": "写点什么...",
|
||
"saving": "保存中...",
|
||
"saved": "已保存",
|
||
"noteCopiedToClipboard": "笔记已复制到剪贴板",
|
||
"generateTitle": "生成标题",
|
||
"generatingTitle": "正在生成标题...",
|
||
"noContentToGenerateTitle": "请先添加内容以生成标题",
|
||
"failedToGenerateTitle": "生成标题失败",
|
||
"noContentToEnhance": "请先添加内容以进行增强",
|
||
"noteEnhanced": "笔记已通过 AI 增强",
|
||
"failedToEnhanceNote": "增强笔记失败",
|
||
"noModelSelected": "请先选择一个模型",
|
||
"enhanceWithAI": "使用 AI 增强",
|
||
"enhanceNote": "增强笔记",
|
||
"startDictation": "开始听写",
|
||
"stopRecording": "停止录音",
|
||
"voiceInputUnavailable": "语音输入不可用",
|
||
"failedToStartDictation": "启动听写失败",
|
||
"noteNotFound": "未找到笔记",
|
||
"untitled": "无标题",
|
||
"today": "今天",
|
||
"yesterday": "昨天",
|
||
"previous7Days": "过去 7 天",
|
||
"previous30Days": "过去 30 天",
|
||
"older": "更早",
|
||
"wordCount": "{count} 字",
|
||
"@wordCount": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int",
|
||
"example": "150"
|
||
}
|
||
}
|
||
},
|
||
"charCount": "{count} 字符",
|
||
"@charCount": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int",
|
||
"example": "500"
|
||
}
|
||
}
|
||
},
|
||
"promptVariablesTitle": "填写详情",
|
||
"promptVariablesDescription": "填写以下字段以自定义此提示词。",
|
||
"promptVariableNumberMin": "最小值为 {min}",
|
||
"@promptVariableNumberMin": {
|
||
"placeholders": {
|
||
"min": {
|
||
"type": "double",
|
||
"example": "0"
|
||
}
|
||
}
|
||
},
|
||
"promptVariableNumberMax": "最大值为 {max}",
|
||
"@promptVariableNumberMax": {
|
||
"placeholders": {
|
||
"max": {
|
||
"type": "double",
|
||
"example": "100"
|
||
}
|
||
}
|
||
},
|
||
"sso": "SSO",
|
||
"ssoDescription": "使用组织的身份提供商登录",
|
||
"signInWithSso": "使用 SSO 登录",
|
||
"ssoAuthenticating": "正在验证...",
|
||
"ssoAuthFailed": "SSO 验证失败",
|
||
"ssoLoadingLogin": "正在加载登录页面...",
|
||
"ldap": "LDAP",
|
||
"ldapDescription": "使用 LDAP 目录凭据登录",
|
||
"signInWithLdap": "使用 LDAP 登录",
|
||
"ldapUsername": "用户名",
|
||
"ldapUsernameHint": "输入您的 LDAP 用户名",
|
||
"moreSignInOptions": "更多登录选项",
|
||
"ldapNotEnabled": "此服务器未启用 LDAP 验证",
|
||
"ssoPlatformNotSupported": "此平台不支持 SSO 验证。请改用凭据或 LDAP 验证。",
|
||
"continueWithProvider": "使用 {provider} 继续",
|
||
"or": "或",
|
||
"usageInfo": "信息",
|
||
"usageInfoTitle": "响应统计",
|
||
"usageTokenGeneration": "Token 生成",
|
||
"usagePromptEval": "提示处理",
|
||
"usageTotalDuration": "总耗时",
|
||
"usageTokensPerSecond": "{speed} t/s",
|
||
"@usageTokensPerSecond": {
|
||
"placeholders": {
|
||
"speed": {
|
||
"type": "String",
|
||
"example": "45.2"
|
||
}
|
||
}
|
||
},
|
||
"usageTokenCount": "{count} 个 token",
|
||
"@usageTokenCount": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int",
|
||
"example": "128"
|
||
}
|
||
}
|
||
},
|
||
"usageSecondsFormat": "{seconds}秒",
|
||
"@usageSecondsFormat": {
|
||
"placeholders": {
|
||
"seconds": {
|
||
"type": "String",
|
||
"example": "2.34"
|
||
}
|
||
}
|
||
},
|
||
"usageLoadDuration": "模型加载时间",
|
||
"usageQueueTime": "排队时间",
|
||
"usageReasoningTokens": "推理 token",
|
||
"usageTotalTokens": "总 token",
|
||
"proxyAuthentication": "代理认证",
|
||
"proxyAuthPlatformNotSupported": "代理认证需要移动设备。请先通过浏览器进行认证。",
|
||
"proxyAuthLoading": "正在加载认证页面...",
|
||
"proxyAuthFailed": "代理认证失败",
|
||
"proxyAuthHelpText": "通过您组织的代理完成登录,然后登录 Open WebUI。您将被自动重定向。",
|
||
"proxyAuthHelpTextSimple": "通过您的代理登录。认证后,点击继续以进行登录。",
|
||
"continueButton": "继续",
|
||
"proxyAuthRequired": "此服务器需要代理认证",
|
||
"proxyAuthRequiredDescription": "您的服务器似乎位于认证代理(如 oauth2-proxy)后面。您需要先通过代理登录。",
|
||
"authenticateThroughProxy": "认证",
|
||
"voiceOptions": "语音选项",
|
||
"dictation": "听写",
|
||
"dictationDescription": "说话并实时转换为文字",
|
||
"recordAudio": "录制音频",
|
||
"recordAudioDescription": "保存音频以便稍后转录",
|
||
"recordingAudio": "录音中...",
|
||
"preparingRecording": "准备中...",
|
||
"recordingHint": "完成后点击停止",
|
||
"stopAndSaveRecording": "停止并保存",
|
||
"processingRecording": "处理中...",
|
||
"audioRecordingSaved": "音频录制已保存",
|
||
"microphonePermissionDenied": "麦克风权限被拒绝",
|
||
"recordingFailed": "录音失败",
|
||
"removeFileConfirm": "从笔记中移除此文件?",
|
||
"fileRemoved": "文件已移除",
|
||
"playAudio": "播放音频",
|
||
"removeFile": "移除文件",
|
||
"audioFileType": "音频",
|
||
"imageFileType": "图片",
|
||
"failedToUploadAudio": "音频上传失败",
|
||
"audioAttachment": "音频附件",
|
||
"loadingAudio": "正在加载音频...",
|
||
"failedToLoadAudio": "无法加载音频",
|
||
"webPage": "网页",
|
||
"greetingTitle": "你好,{username}",
|
||
"temporaryChat": "临时聊天",
|
||
"temporaryChatTooltip": "此聊天不会出现在历史记录中",
|
||
"saveChat": "保存聊天",
|
||
"temporaryChatByDefault": "默认临时聊天",
|
||
"temporaryChatByDefaultDescription": "新聊天不会保存到历史记录,除非您选择保存",
|
||
"chatSaved": "聊天已保存到历史记录",
|
||
"chatSaveFailed": "无法保存聊天",
|
||
"sidebarChatsTab": "聊天",
|
||
"sidebarTerminalTab": "终端",
|
||
"@sidebarTerminalTab": {
|
||
"description": "Label for the Terminal tab in the sidebar"
|
||
},
|
||
"sidebarNotesTab": "笔记",
|
||
"sidebarChannelsTab": "频道",
|
||
"sidebarResizeHandle": "调整侧边栏宽度",
|
||
"@sidebarResizeHandle": {"description": "Accessibility label for the draggable tablet sidebar divider."},
|
||
"sidebarResizeResetHint": "轻点两下以重置侧边栏宽度",
|
||
"@sidebarResizeResetHint": {"description": "Accessibility hint for resetting the tablet sidebar width."},
|
||
"sidebarWidthValue": "{width} 点",
|
||
"@sidebarWidthValue": {
|
||
"description": "Accessibility value describing the current tablet sidebar width.",
|
||
"placeholders": {"width": {"type": "int"}}
|
||
},
|
||
"closeSidebar": "关闭侧边栏",
|
||
"terminalSelectServer": "选择终端服务器",
|
||
"@terminalSelectServer": {
|
||
"description": "Prompt shown when the user needs to choose a terminal server."
|
||
},
|
||
"terminalNoServersConfigured": "没有可用的终端服务器。",
|
||
"@terminalNoServersConfigured": {
|
||
"description": "Empty state shown when there are no terminal servers configured."
|
||
},
|
||
"terminalConnectAction": "连接",
|
||
"@terminalConnectAction": {
|
||
"description": "Button label used to connect to a terminal session."
|
||
},
|
||
"terminalDisconnectAction": "断开连接",
|
||
"@terminalDisconnectAction": {
|
||
"description": "Button label used to disconnect from a terminal session."
|
||
},
|
||
"terminalConnectedStatus": "已连接",
|
||
"@terminalConnectedStatus": {
|
||
"description": "Status label shown when the terminal is connected."
|
||
},
|
||
"terminalDisconnectedStatus": "已断开",
|
||
"@terminalDisconnectedStatus": {
|
||
"description": "Status label shown when the terminal is disconnected."
|
||
},
|
||
"terminalConnectingStatus": "正在连接...",
|
||
"@terminalConnectingStatus": {
|
||
"description": "Status label shown while the terminal connection is being established."
|
||
},
|
||
"terminalUploadAction": "上传",
|
||
"@terminalUploadAction": {
|
||
"description": "Action label for uploading a file into the terminal workspace."
|
||
},
|
||
"terminalOpenInBrowserAction": "在浏览器中打开",
|
||
"@terminalOpenInBrowserAction": {
|
||
"description": "Action label for opening a forwarded port in the browser."
|
||
},
|
||
"terminalHomeAction": "主目录",
|
||
"@terminalHomeAction": {
|
||
"description": "Tooltip for navigating back to the terminal home directory."
|
||
},
|
||
"terminalCurrentPathLabel": "当前路径",
|
||
"@terminalCurrentPathLabel": {
|
||
"description": "Label displayed above the current terminal working directory."
|
||
},
|
||
"terminalPortsSectionLabel": "监听端口",
|
||
"@terminalPortsSectionLabel": {
|
||
"description": "Section title for ports discovered in the terminal environment."
|
||
},
|
||
"terminalNoFiles": "此目录中没有文件。",
|
||
"@terminalNoFiles": {
|
||
"description": "Empty state shown when the current terminal directory has no files."
|
||
},
|
||
"terminalNoPorts": "未检测到监听端口。",
|
||
"@terminalNoPorts": {
|
||
"description": "Empty state shown when the terminal server reports no listening ports."
|
||
},
|
||
"terminalPreviewUnavailable": "预览不可用。请改用下载。",
|
||
"@terminalPreviewUnavailable": {
|
||
"description": "Message shown when a terminal file cannot be previewed inline."
|
||
},
|
||
"terminalFeatureDisabled": "此终端服务器未提供交互式 shell。",
|
||
"@terminalFeatureDisabled": {
|
||
"description": "Message shown when the selected terminal server disables interactive terminal sessions."
|
||
},
|
||
"terminalFolderNameHint": "文件夹名称",
|
||
"@terminalFolderNameHint": {
|
||
"description": "Hint text used when creating a new folder in the terminal workspace."
|
||
},
|
||
"terminalFailedToLoadFiles": "无法加载终端文件。",
|
||
"@terminalFailedToLoadFiles": {
|
||
"description": "Error message shown when the terminal file list cannot be loaded."
|
||
},
|
||
"terminalFailedToLoadPorts": "无法加载监听端口。",
|
||
"@terminalFailedToLoadPorts": {
|
||
"description": "Error message shown when terminal port discovery fails."
|
||
},
|
||
"terminalFailedToConnect": "无法连接到终端。",
|
||
"@terminalFailedToConnect": {
|
||
"description": "Error message shown when the terminal websocket session cannot be opened."
|
||
},
|
||
"terminalDownloadFailed": "无法下载所选文件。",
|
||
"@terminalDownloadFailed": {
|
||
"description": "Error message shown when downloading a terminal file fails."
|
||
},
|
||
"terminalUploadFailed": "无法上传所选文件。",
|
||
"@terminalUploadFailed": {
|
||
"description": "Error message shown when uploading a terminal file fails."
|
||
},
|
||
"terminalRenameFailed": "无法重命名所选项目。",
|
||
"@terminalRenameFailed": {
|
||
"description": "Error message shown when renaming a file or folder in the terminal workspace fails."
|
||
},
|
||
"terminalDeleteFailed": "无法删除所选项目。",
|
||
"@terminalDeleteFailed": {
|
||
"description": "Error message shown when deleting a file or folder in the terminal workspace fails."
|
||
},
|
||
"terminalFolderCreateFailed": "无法创建文件夹。",
|
||
"@terminalFolderCreateFailed": {
|
||
"description": "Error message shown when creating a new terminal folder fails."
|
||
},
|
||
"channelCreateTitle": "创建频道",
|
||
"channelName": "频道名称",
|
||
"channelDescription": "描述",
|
||
"channelPrivate": "私密频道",
|
||
"channelJoin": "加入频道",
|
||
"channelLeave": "退出频道",
|
||
"channelDelete": "删除频道",
|
||
"channelEdit": "编辑频道",
|
||
"channelDeleteConfirm": "删除此频道?此操作无法撤销。",
|
||
"channelLeaveConfirm": "退出此频道?",
|
||
"channelEmptyState": "暂无频道",
|
||
"channelNoMessages": "暂无消息。开始对话吧!",
|
||
"channelMembers": "{count} {count, plural, =1{位成员} other{位成员}}",
|
||
"channelMessageReply": "回复",
|
||
"channelMessageReact": "表情回应",
|
||
"channelMessageEdit": "编辑",
|
||
"channelMessageDelete": "删除",
|
||
"channelLoadError": "无法加载频道",
|
||
"channelSendError": "无法发送消息",
|
||
"channelDeleted": "此频道已被删除",
|
||
"searchChannels": "搜索频道...",
|
||
"channelUnreadCount": "{count} 条未读消息",
|
||
"channelCreateError": "无法创建频道",
|
||
"channelMessageHint": "消息...",
|
||
"audioUploadError": "无法上传音频:{error}",
|
||
"shareChat": "分享聊天",
|
||
"@shareChat": {
|
||
"description": "Dialog title and action label for sharing a chat."
|
||
},
|
||
"shareChatDescription": "创建链接后发送的消息不会被分享。拥有该 URL 的用户可以查看已分享的聊天。",
|
||
"@shareChatDescription": {
|
||
"description": "Explains that a shared chat link is a snapshot."
|
||
},
|
||
"shareChatExisting": "你之前已分享过此聊天。",
|
||
"@shareChatExisting": {
|
||
"description": "Explains that the chat already has an existing shared link."
|
||
},
|
||
"shareChatDeleteLink": "删除此链接",
|
||
"@shareChatDeleteLink": {
|
||
"description": "Action label to delete the current shared chat link."
|
||
},
|
||
"shareChatDeleteAndCreate": "并创建新的分享链接。",
|
||
"@shareChatDeleteAndCreate": {
|
||
"description": "Continuation text after the delete shared link action."
|
||
},
|
||
"copyLink": "复制链接",
|
||
"@copyLink": {
|
||
"description": "Button label to copy a newly created shared chat URL."
|
||
},
|
||
"updateAndCopyLink": "更新并复制链接",
|
||
"@updateAndCopyLink": {
|
||
"description": "Button label to refresh a shared chat snapshot and copy the URL."
|
||
},
|
||
"sharedChatCopied": "已将分享聊天 URL 复制到剪贴板。",
|
||
"@sharedChatCopied": {
|
||
"description": "Snackbar shown after copying a shared chat URL."
|
||
},
|
||
"shareSystemSheet": "分享...",
|
||
"@shareSystemSheet": {
|
||
"description": "Button label to open the platform share sheet."
|
||
},
|
||
"chatShareFailed": "分享聊天失败",
|
||
"@chatShareFailed": {
|
||
"description": "Snackbar shown when chat sharing fails."
|
||
},
|
||
"sharedLinkDeleted": "已删除分享聊天链接",
|
||
"@sharedLinkDeleted": {
|
||
"description": "Snackbar shown after deleting a shared chat link."
|
||
},
|
||
"deleteSharedLinkFailed": "删除分享链接失败",
|
||
"@deleteSharedLinkFailed": {
|
||
"description": "Snackbar shown when deleting a shared chat link fails."
|
||
},
|
||
"systemPrompts": "系统提示词",
|
||
"globalSystemPrompt": "全局系统提示词",
|
||
"modelSystemPrompts": "模型系统提示词",
|
||
"folderSystemPrompts": "文件夹系统提示词",
|
||
"openWebuiModelSettings": "Open WebUI 模型设置",
|
||
"openWebuiFolderSettings": "Open WebUI 文件夹设置",
|
||
"accessibleModelsCount": "{count} 个可访问模型",
|
||
"accessibleFoldersCount": "{count} 个可访问文件夹",
|
||
"unableToLoadOpenWebuiSettings": "无法加载 Open WebUI 设置。",
|
||
"unableToLoadModels": "无法加载模型。",
|
||
"unableToLoadFolders": "无法加载文件夹。",
|
||
"noAccessibleModelsFound": "未找到可访问的模型。",
|
||
"noAccessibleFoldersFound": "未找到可访问的文件夹。",
|
||
"tapToLoadServerPromptSettings": "点按以加载服务器提示词设置。",
|
||
"loadingFromOpenWebui": "正在从 Open WebUI 加载...",
|
||
"globalSystemPromptEditorDescription": "保存到你的 Open WebUI 用户设置,并用作默认聊天系统提示词。",
|
||
"modelNoEditableServerRecord": "此模型没有可编辑的服务器记录。",
|
||
"modelSystemPromptTitle": "{modelName} 系统提示词",
|
||
"modelSystemPromptEditorDescription": "保存到 Open WebUI 模型 params.system。",
|
||
"modelNoWriteAccessDescription": "你没有此模型的写入权限。",
|
||
"unableToLoadFolder": "无法加载此文件夹。",
|
||
"folderSystemPromptTitle": "{folderName} 系统提示词",
|
||
"folderSystemPromptEditorDescription": "保存到 Open WebUI 文件夹 data.system_prompt。",
|
||
"notSet": "未设置",
|
||
"enterSystemPrompt": "输入系统提示词",
|
||
"close": "关闭",
|
||
"connectionHealth": "连接状态",
|
||
"personalization": "个性化",
|
||
"personalizationSubtitle": "默认模型、个人提示词和记忆",
|
||
"defaultImageGenerationModel": "默认图像生成模型",
|
||
"defaultImageGenerationModelDescription": "输入 OpenRouter 图像模型 ID。留空则使用 OpenRouter 默认模型。",
|
||
"openRouterDefaultImageGenerationModel": "OpenRouter 默认模型(openai/gpt-5-image)",
|
||
"yourSystemPrompt": "你的系统提示词",
|
||
"yourSystemPromptDescription": "设置 Open WebUI 将应用到你聊天的个人系统提示词。",
|
||
"memoryTitle": "记忆",
|
||
"memoryEnabledDescription": "允许服务器在未来聊天中使用你保存的记忆。",
|
||
"memoryDisabledDescription": "保存的记忆会保留在服务器上,但不会注入到聊天中。",
|
||
"manageMemories": "管理记忆",
|
||
"manageMemoriesDescription": "添加、编辑和删除服务器记住的关于你的事实。",
|
||
"savedMemoriesCount": "{count} 条已保存记忆",
|
||
"memoryEditorDescription": "让记忆保持简短具体,以便服务器稳定应用。",
|
||
"memoryHint": "示例:我偏好带代码示例的简洁回答。",
|
||
"addMemory": "添加记忆",
|
||
"editMemory": "编辑记忆",
|
||
"deleteMemory": "删除记忆",
|
||
"deleteMemoryConfirm": "从服务器删除这条已保存记忆?",
|
||
"clearAllMemories": "清除所有记忆",
|
||
"clearAllMemoriesDescription": "这会永久删除你账户的所有已保存记忆。",
|
||
"noMemoriesSaved": "还没有保存的记忆。",
|
||
"memoryUpdatedAt": "更新于 {formattedTime}",
|
||
"advancedPromptOverrides": "高级提示词覆盖",
|
||
"advancedPromptOverridesDescription": "模型级提示词覆盖位于 App 与聊天。",
|
||
"audioSettingsTitle": "音频",
|
||
"audioSettingsSubtitle": "语音转文字和文字转语音",
|
||
"appAndChat": "App 与聊天",
|
||
"appAndChatSubtitle": "主题、语言、聊天行为和高级覆盖",
|
||
"accountSettingsTitle": "账户",
|
||
"accountSettingsSubtitle": "个人资料详情和密码管理",
|
||
"accountDetails": "账户详情",
|
||
"signInToManageAccount": "登录以管理账户详情。",
|
||
"emailLabel": "电子邮件",
|
||
"roleLabel": "角色",
|
||
"accountStatus": "状态",
|
||
"profileDetails": "个人资料详情",
|
||
"name": "姓名",
|
||
"avatarUrl": "头像 URL",
|
||
"avatarUrlHint": "https://example.com/avatar.png",
|
||
"bioLabel": "简介",
|
||
"bioHint": "关于你的简短描述。",
|
||
"genderLabel": "性别",
|
||
"genderPreferNotToSay": "不愿透露",
|
||
"genderMale": "男",
|
||
"genderFemale": "女",
|
||
"genderCustom": "自定义",
|
||
"customGenderLabel": "自定义性别",
|
||
"customGenderHint": "输入你的性别",
|
||
"customGenderRequired": "请输入自定义性别或选择其他选项。",
|
||
"birthDateLabel": "出生日期",
|
||
"selectBirthDate": "选择日期",
|
||
"birthDateHint": "YYYY-MM-DD",
|
||
"currentAvatar": "当前头像",
|
||
"uploadFromDevice": "从设备上传",
|
||
"useInitials": "首字母",
|
||
"removeAvatar": "移除",
|
||
"avatarUploadFailed": "无法更新头像。",
|
||
"timezoneLabel": "时区",
|
||
"timezoneHint": "Asia/Shanghai",
|
||
"saveProfile": "保存个人资料",
|
||
"changePasswordTitle": "更改密码",
|
||
"passwordChangeUnavailable": "此服务器已禁用密码更改。",
|
||
"currentPassword": "当前密码",
|
||
"newPassword": "新密码",
|
||
"confirmNewPassword": "确认新密码",
|
||
"nameRequired": "保存前请输入姓名。",
|
||
"profileUpdated": "个人资料已更新。",
|
||
"passwordFieldsRequired": "请输入当前密码和新密码。",
|
||
"passwordsDoNotMatch": "新密码不匹配。",
|
||
"passwordUpdated": "密码已更新。",
|
||
"activeStatus": "活跃",
|
||
"inactiveStatus": "未活跃",
|
||
"appInformation": "Conduit 应用",
|
||
"appVersion": "版本",
|
||
"serverInformation": "服务器信息",
|
||
"serverInfoUnavailable": "服务器信息暂不可用。",
|
||
"serverNameLabel": "服务器名称",
|
||
"serverVersionLabel": "服务器版本",
|
||
"latestVersionLabel": "最新版本",
|
||
"deploymentIdLabel": "部署 ID",
|
||
"defaultLocaleLabel": "默认语言",
|
||
"userCountLabel": "用户数",
|
||
"serverDefaultModelsLabel": "默认模型",
|
||
"loginFormLabel": "登录表单",
|
||
"passwordChangesLabel": "密码更改",
|
||
"apiKeysLabel": "API 密钥",
|
||
"audioInputLabel": "音频输入",
|
||
"audioOutputLabel": "音频输出",
|
||
"speechToTextEngineLabel": "语音转文字引擎",
|
||
"textToSpeechEngineLabel": "文字转语音引擎",
|
||
"licenseMetadataLabel": "许可证元数据",
|
||
"enabledLabel": "已启用",
|
||
"disabledLabel": "已禁用",
|
||
"noEmailLabel": "无电子邮件",
|
||
"userFallbackName": "用户",
|
||
"unknownLabel": "未知",
|
||
"socketNotConnected": "未连接",
|
||
"socketConnected": "已连接",
|
||
"socketDisconnected": "已断开",
|
||
"socketLatencyLabel": "延迟",
|
||
"socketReconnectsLabel": "重连",
|
||
"socketLastHeartbeat": "上次心跳:{time}",
|
||
"socketTransportWebSocket": "WebSocket 传输",
|
||
"socketTransportPolling": "HTTP 轮询传输",
|
||
"socketTransportUnknown": "未知传输",
|
||
"socketQualityExcellent": "极佳",
|
||
"socketQualityGood": "良好",
|
||
"socketQualityFair": "一般",
|
||
"socketQualityPoor": "较差",
|
||
"timeJustNow": "刚刚",
|
||
"timeSecondsAgo": "{count} 秒前",
|
||
"timeMinutesAgo": "{count} 分钟前",
|
||
"timeHoursAgo": "{count} 小时前",
|
||
"attach": "附加",
|
||
"@attach": {
|
||
"description": "Button label to attach content to the current chat or folder chat."
|
||
},
|
||
"attachWebpageDescription": "粘贴 URL,将其内容提取到聊天中。",
|
||
"@attachWebpageDescription": {
|
||
"description": "Description shown in the web page attachment dialog."
|
||
},
|
||
"webpageUrlLabel": "网页 URL",
|
||
"@webpageUrlLabel": {
|
||
"description": "Label for the URL field in the web page attachment dialog."
|
||
},
|
||
"invalidHttpUrl": "请输入有效的 http(s) URL。",
|
||
"@invalidHttpUrl": {
|
||
"description": "Validation message when a URL is missing or not HTTP/HTTPS."
|
||
},
|
||
"youtubeTranscriptFetchFailed": "无法获取 YouTube 转录。",
|
||
"@youtubeTranscriptFetchFailed": {
|
||
"description": "Error shown when a YouTube transcript cannot be fetched."
|
||
},
|
||
"webpageNoReadableContent": "该页面没有可读内容。",
|
||
"@webpageNoReadableContent": {
|
||
"description": "Error shown when a fetched webpage has no readable text content."
|
||
},
|
||
"failedToAttachContent": "无法附加内容。",
|
||
"@failedToAttachContent": {
|
||
"description": "Generic error shown when attaching web content fails."
|
||
},
|
||
"scrollToBottom": "滚动到底部",
|
||
"@scrollToBottom": {
|
||
"description": "Tooltip for the button that scrolls a chat to the newest message."
|
||
},
|
||
"editFolder": "编辑文件夹",
|
||
"@editFolder": {
|
||
"description": "Title and menu label for editing a folder."
|
||
},
|
||
"editFolderDescription": "在服务器上更新文件夹名称和图标。",
|
||
"@editFolderDescription": {
|
||
"description": "Description shown in the folder edit sheet."
|
||
},
|
||
"icon": "图标",
|
||
"@icon": {
|
||
"description": "Label for selecting an icon."
|
||
},
|
||
"folderIconDescription": "选择文件夹图标。",
|
||
"@folderIconDescription": {
|
||
"description": "Subtitle for the folder icon picker."
|
||
},
|
||
"defaultLabel": "默认",
|
||
"@defaultLabel": {
|
||
"description": "Generic label for the default option."
|
||
},
|
||
"systemPrompt": "系统提示词",
|
||
"@systemPrompt": {
|
||
"description": "Singular label for a system prompt field or menu item."
|
||
},
|
||
"move": "移动",
|
||
"@move": {
|
||
"description": "Context action to move an item."
|
||
},
|
||
"moveToFolder": "移动到文件夹",
|
||
"@moveToFolder": {
|
||
"description": "Title for choosing a destination folder for a chat."
|
||
},
|
||
"moveFolder": "移动文件夹",
|
||
"@moveFolder": {
|
||
"description": "Title for choosing a destination parent for a folder."
|
||
},
|
||
"noFolder": "无文件夹",
|
||
"@noFolder": {
|
||
"description": "Option to remove a chat from any folder."
|
||
},
|
||
"topLevel": "顶层",
|
||
"@topLevel": {
|
||
"description": "Option to move a folder to the top level."
|
||
},
|
||
"failedToMoveFolder": "移动文件夹失败",
|
||
"@failedToMoveFolder": {
|
||
"description": "Error shown when moving a folder fails."
|
||
},
|
||
"failedToRenameFolder": "重命名文件夹失败",
|
||
"@failedToRenameFolder": {
|
||
"description": "Error shown when renaming a folder fails."
|
||
},
|
||
"browseKnowledgeBase": "浏览知识库",
|
||
"@browseKnowledgeBase": {
|
||
"description": "Title for opening the knowledge base picker."
|
||
},
|
||
"knowledgePickerHint": "按 Enter 选择文档",
|
||
"@knowledgePickerHint": {
|
||
"description": "Hint shown for keyboard selection in the knowledge base picker."
|
||
},
|
||
"execution": "执行",
|
||
"@execution": {
|
||
"description": "Fallback label for an unnamed code execution."
|
||
},
|
||
"codeExecutionTitle": "代码执行",
|
||
"@codeExecutionTitle": {
|
||
"description": "Fallback title for a code execution details sheet."
|
||
},
|
||
"codeExecutionFailed": "{label} 失败",
|
||
"@codeExecutionFailed": {
|
||
"description": "Title shown when a named code execution fails.",
|
||
"placeholders": {
|
||
"label": {
|
||
"type": "String",
|
||
"example": "Execution"
|
||
}
|
||
}
|
||
},
|
||
"codeExecutionRunning": "{label}…",
|
||
"@codeExecutionRunning": {
|
||
"description": "Title shown while a named code execution is still running.",
|
||
"placeholders": {
|
||
"label": {
|
||
"type": "String",
|
||
"example": "Execution"
|
||
}
|
||
}
|
||
},
|
||
"language": "语言",
|
||
"@language": {
|
||
"description": "Label for a programming language field."
|
||
},
|
||
"code": "代码",
|
||
"@code": {
|
||
"description": "Label for source code content."
|
||
},
|
||
"output": "输出",
|
||
"@output": {
|
||
"description": "Label for execution output."
|
||
},
|
||
"download": "下载",
|
||
"@download": {
|
||
"description": "Fallback label for a downloadable file."
|
||
},
|
||
"languageWithValue": "语言:{language}",
|
||
"@languageWithValue": {
|
||
"description": "Label and value for a programming language.",
|
||
"placeholders": {
|
||
"language": {
|
||
"type": "String",
|
||
"example": "Python"
|
||
}
|
||
}
|
||
},
|
||
"previewDeferredLargeContent": "大型内容的预览已延后。",
|
||
"@previewDeferredLargeContent": {
|
||
"description": "Message shown when an inline preview is delayed because content is large."
|
||
},
|
||
"openPreview": "打开预览",
|
||
"@openPreview": {
|
||
"description": "Button to open a deferred preview."
|
||
},
|
||
"copiedToClipboard": "已复制到剪贴板",
|
||
"@copiedToClipboard": {
|
||
"description": "Snackbar message after copying content to the clipboard."
|
||
},
|
||
"preview": "预览",
|
||
"@preview": {
|
||
"description": "Button label for opening a preview."
|
||
},
|
||
"alertTip": "提示",
|
||
"@alertTip": {
|
||
"description": "Fallback label for a tip markdown alert."
|
||
},
|
||
"alertImportant": "重要",
|
||
"@alertImportant": {
|
||
"description": "Fallback label for an important markdown alert."
|
||
},
|
||
"alertWarning": "警告",
|
||
"@alertWarning": {
|
||
"description": "Fallback label for a warning markdown alert."
|
||
},
|
||
"alertCaution": "注意",
|
||
"@alertCaution": {
|
||
"description": "Fallback label for a caution markdown alert."
|
||
},
|
||
"alertNote": "备注",
|
||
"@alertNote": {
|
||
"description": "Fallback label for a note markdown alert."
|
||
},
|
||
"markdownDetailsGroupPendingTitle": "正在探索 {summary}",
|
||
"@markdownDetailsGroupPendingTitle": {
|
||
"description": "Title shown for a pending grouped tool-call details block.",
|
||
"placeholders": {
|
||
"summary": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"markdownDetailsGroupCompleteTitle": "已探索 {summary}",
|
||
"@markdownDetailsGroupCompleteTitle": {
|
||
"description": "Title shown for a completed grouped tool-call details block.",
|
||
"placeholders": {
|
||
"summary": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"markdownDetailsGroupUnnamedTool": "工具",
|
||
"@markdownDetailsGroupUnnamedTool": {
|
||
"description": "Fallback label used when a grouped tool call has no tool name."
|
||
},
|
||
"folderIconFolder": "文件夹",
|
||
"@folderIconFolder": {
|
||
"description": "Accessibility label for the folder icon option."
|
||
},
|
||
"folderIconOpenFolder": "打开的文件夹",
|
||
"@folderIconOpenFolder": {
|
||
"description": "Accessibility label for the open folder icon option."
|
||
},
|
||
"folderIconBriefcase": "公文包",
|
||
"@folderIconBriefcase": {
|
||
"description": "Accessibility label for the briefcase folder icon option."
|
||
},
|
||
"folderIconBooks": "书籍",
|
||
"@folderIconBooks": {
|
||
"description": "Accessibility label for the books folder icon option."
|
||
},
|
||
"folderIconMemo": "备忘录",
|
||
"@folderIconMemo": {
|
||
"description": "Accessibility label for the memo folder icon option."
|
||
},
|
||
"folderIconDividers": "分隔页",
|
||
"@folderIconDividers": {
|
||
"description": "Accessibility label for the dividers folder icon option."
|
||
},
|
||
"folderIconTools": "工具",
|
||
"@folderIconTools": {
|
||
"description": "Accessibility label for the tools folder icon option."
|
||
},
|
||
"folderIconToolbox": "工具箱",
|
||
"@folderIconToolbox": {
|
||
"description": "Accessibility label for the toolbox folder icon option."
|
||
},
|
||
"folderIconSparkles": "闪光",
|
||
"@folderIconSparkles": {
|
||
"description": "Accessibility label for the sparkles folder icon option."
|
||
},
|
||
"folderIconBrain": "大脑",
|
||
"@folderIconBrain": {
|
||
"description": "Accessibility label for the brain folder icon option."
|
||
},
|
||
"folderIconRocket": "火箭",
|
||
"@folderIconRocket": {
|
||
"description": "Accessibility label for the rocket folder icon option."
|
||
},
|
||
"folderIconTarget": "目标",
|
||
"@folderIconTarget": {
|
||
"description": "Accessibility label for the target folder icon option."
|
||
},
|
||
"folderIconGeneric": "文件夹图标",
|
||
"@folderIconGeneric": {
|
||
"description": "Generic accessibility label for a custom folder icon."
|
||
},
|
||
"thread": "话题串",
|
||
"@thread": {
|
||
"description": "Title and context action for a message thread."
|
||
},
|
||
"threadWithCount": "话题串 ({count})",
|
||
"@threadWithCount": {
|
||
"description": "Thread action label with reply count.",
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int",
|
||
"example": "3"
|
||
}
|
||
}
|
||
},
|
||
"channelMembersTitle": "成员 ({count})",
|
||
"@channelMembersTitle": {
|
||
"description": "Title for the channel members sheet.",
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int",
|
||
"example": "5"
|
||
}
|
||
}
|
||
},
|
||
"channelInputPlaceholder": "在此输入...",
|
||
"@channelInputPlaceholder": {
|
||
"description": "Placeholder for the channel message composer."
|
||
},
|
||
"channelUnknownMember": "未知",
|
||
"@channelUnknownMember": {
|
||
"description": "Fallback name for a channel member with no display name."
|
||
},
|
||
"replyInputPlaceholder": "回复...",
|
||
"@replyInputPlaceholder": {
|
||
"description": "Placeholder for the thread reply composer."
|
||
},
|
||
"editPhoto": "编辑照片",
|
||
"@editPhoto": {
|
||
"description": "Action to edit the profile photo."
|
||
},
|
||
"replyingToUser": "正在回复 {name}",
|
||
"@replyingToUser": {
|
||
"description": "Label shown above the channel composer when replying to a user.",
|
||
"placeholders": {
|
||
"name": {
|
||
"type": "String",
|
||
"example": "Alex"
|
||
}
|
||
}
|
||
},
|
||
"voiceCallWithModel": "与 {modelName} 进行语音通话",
|
||
"@voiceCallWithModel": {
|
||
"description": "Notification title for an ongoing voice call with a model.",
|
||
"placeholders": {
|
||
"modelName": {
|
||
"type": "String",
|
||
"example": "GPT-4"
|
||
}
|
||
}
|
||
},
|
||
"notificationPermissionTitle": "通知权限",
|
||
"@notificationPermissionTitle": {
|
||
"description": "Title for the system notification permission prompt."
|
||
},
|
||
"callNotificationPermissionRationale": "通话提醒需要通知权限。",
|
||
"@callNotificationPermissionRationale": {
|
||
"description": "Rationale shown when requesting notification permission for call alerts."
|
||
},
|
||
"callNotificationPermissionPost": "允许通知以显示来电。",
|
||
"@callNotificationPermissionPost": {
|
||
"description": "Instruction shown when requesting notification permission for incoming calls."
|
||
},
|
||
"acceptCall": "接听",
|
||
"@acceptCall": {
|
||
"description": "Call action to accept an incoming call."
|
||
},
|
||
"declineCall": "拒绝",
|
||
"@declineCall": {
|
||
"description": "Call action to decline an incoming call."
|
||
},
|
||
"missedCall": "未接来电",
|
||
"@missedCall": {
|
||
"description": "Notification subtitle for a missed call."
|
||
},
|
||
"callBack": "回拨",
|
||
"@callBack": {
|
||
"description": "Notification action to call back after a missed call."
|
||
},
|
||
"calling": "正在呼叫...",
|
||
"@calling": {
|
||
"description": "Notification subtitle while starting a call."
|
||
},
|
||
"hangUp": "挂断",
|
||
"@hangUp": {
|
||
"description": "Notification action to hang up a call."
|
||
},
|
||
"incomingCallChannelName": "来电",
|
||
"@incomingCallChannelName": {
|
||
"description": "Android notification channel name for incoming calls."
|
||
},
|
||
"missedCallChannelName": "未接来电",
|
||
"@missedCallChannelName": {
|
||
"description": "Android notification channel name for missed calls."
|
||
},
|
||
"mute": "静音",
|
||
"@mute": {
|
||
"description": "Notification action to mute a call."
|
||
},
|
||
"unmute": "取消静音",
|
||
"@unmute": {
|
||
"description": "Notification action to unmute a call."
|
||
},
|
||
"voiceCallMuted": "已静音",
|
||
"@voiceCallMuted": {
|
||
"description": "Status label when a voice call is muted."
|
||
},
|
||
"voiceCallChannelDescription": "正在进行的语音通话通知",
|
||
"@voiceCallChannelDescription": {
|
||
"description": "Android notification channel description for ongoing voice calls."
|
||
},
|
||
"@greetingTitle": {
|
||
"description": "Greeting shown on the empty chat page.",
|
||
"placeholders": {
|
||
"username": {
|
||
"type": "String",
|
||
"example": "Alex"
|
||
}
|
||
}
|
||
},
|
||
"@continueWithProvider": {
|
||
"description": "Button text for OAuth provider sign-in.",
|
||
"placeholders": {
|
||
"provider": {
|
||
"type": "String",
|
||
"example": "Google"
|
||
}
|
||
}
|
||
},
|
||
"@channelMembers": {
|
||
"description": "Member count display in channel header",
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"@audioUploadError": {
|
||
"description": "Error message when audio upload fails",
|
||
"placeholders": {
|
||
"error": {
|
||
"type": "String",
|
||
"description": "The error message"
|
||
}
|
||
}
|
||
},
|
||
"@accessibleModelsCount": {
|
||
"description": "Subtitle showing how many accessible models are listed.",
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int",
|
||
"example": "4"
|
||
}
|
||
}
|
||
},
|
||
"@accessibleFoldersCount": {
|
||
"description": "Subtitle showing how many accessible folders are listed.",
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int",
|
||
"example": "3"
|
||
}
|
||
}
|
||
},
|
||
"@modelSystemPromptTitle": {
|
||
"description": "Title for a model system prompt editor.",
|
||
"placeholders": {
|
||
"modelName": {
|
||
"type": "String",
|
||
"example": "GPT-4"
|
||
}
|
||
}
|
||
},
|
||
"@folderSystemPromptTitle": {
|
||
"description": "Title for a folder system prompt editor.",
|
||
"placeholders": {
|
||
"folderName": {
|
||
"type": "String",
|
||
"example": "Work"
|
||
}
|
||
}
|
||
},
|
||
"@savedMemoriesCount": {
|
||
"description": "Shows how many memories are saved.",
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"@memoryUpdatedAt": {
|
||
"description": "Shows when a memory was last updated.",
|
||
"placeholders": {
|
||
"formattedTime": {}
|
||
}
|
||
},
|
||
"@socketLastHeartbeat": {
|
||
"description": "Shows when the socket last received a heartbeat.",
|
||
"placeholders": {
|
||
"time": {
|
||
"type": "String",
|
||
"example": "just now"
|
||
}
|
||
}
|
||
},
|
||
"@timeSecondsAgo": {
|
||
"description": "Compact relative time label for seconds ago.",
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int",
|
||
"example": "12"
|
||
}
|
||
}
|
||
},
|
||
"@timeMinutesAgo": {
|
||
"description": "Compact relative time label for minutes ago.",
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int",
|
||
"example": "5"
|
||
}
|
||
}
|
||
},
|
||
"@timeHoursAgo": {
|
||
"description": "Compact relative time label for hours ago.",
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int",
|
||
"example": "2"
|
||
}
|
||
}
|
||
},
|
||
"rateLimitExceeded": "请求过多。请稍后再试。",
|
||
"@rateLimitExceeded": {
|
||
"description": "Error shown when the server rejects a request due to rate limiting."
|
||
},
|
||
"rateLimitRetryAfter": "请等待 {duration} 后再试。",
|
||
"@rateLimitRetryAfter": {
|
||
"description": "Advice shown when a rate limit response includes a retry delay.",
|
||
"placeholders": {
|
||
"duration": {
|
||
"type": "String",
|
||
"example": "1m 30s"
|
||
}
|
||
}
|
||
},
|
||
"rateLimitRetrySoon": "请稍等片刻后再试。",
|
||
"@rateLimitRetrySoon": {
|
||
"description": "Advice shown when a rate limit response does not include an exact retry delay."
|
||
},
|
||
"securityCertificateError": "安全证书错误。无法验证服务器身份。",
|
||
"@securityCertificateError": {
|
||
"description": "Error shown when the server TLS certificate cannot be trusted or verified."
|
||
},
|
||
"noToolsAvailable": "没有可用工具",
|
||
"@noToolsAvailable": {
|
||
"description": "Empty state shown when no tools are available in the composer overflow menu."
|
||
},
|
||
"failedToLoadTools": "无法加载工具",
|
||
"@failedToLoadTools": {
|
||
"description": "Error shown when the composer overflow menu cannot load tools."
|
||
},
|
||
"terminalExpandAction": "全屏",
|
||
"terminalReopenFullscreen": "已在全屏中打开 - 点按以重新打开",
|
||
"terminalKeyTab": "Tab",
|
||
"terminalKeyUp": "上",
|
||
"terminalKeyDown": "下",
|
||
"terminalKeyCtrlC": "Ctrl-C",
|
||
"terminalCopyAction": "复制",
|
||
"terminalPasteAction": "粘贴",
|
||
"terminalNothingToCopy": "没有选择要复制的内容",
|
||
"terminalCopied": "已复制到剪贴板",
|
||
"terminalPasteWhileDisconnected": "连接后粘贴",
|
||
"terminalPortsToggle": "监听端口",
|
||
"releaseNotesManualSubtitle": "{currentVersion} 的内置更新日志",
|
||
"settingsCategoryApp": "应用",
|
||
"settingsCategoryAi": "AI",
|
||
"settingsCategoryServer": "服务器",
|
||
"settingsCategorySupport": "支持",
|
||
"settingsDataAndConnection": "数据与连接",
|
||
"settingsAppearance": "外观",
|
||
"settingsAppearanceSubtitle": "主题、调色板和语言",
|
||
"settingsChatSubtitle": "聊天行为、快捷操作和高级提示词",
|
||
"workspaceTitle": "Workspace",
|
||
"workspaceSubtitle": "Manage server resources and access.",
|
||
"workspaceModels": "Models",
|
||
"workspaceKnowledge": "Knowledge",
|
||
"workspacePrompts": "Prompts",
|
||
"workspaceTools": "Tools",
|
||
"workspaceSkills": "Skills",
|
||
"workspaceCreate": "Create",
|
||
"workspaceEmpty": "No resources yet.",
|
||
"workspaceDenied": "You do not have permission to manage this workspace section.",
|
||
"workspaceUnsupported": "This server does not support Workspace management.",
|
||
"workspaceLoadFailed": "Workspace could not be loaded.",
|
||
"workspaceRetry": "Retry",
|
||
"workspaceSelectItem": "Select an item to view its details.",
|
||
"workspaceEditorComingSoon": "This editor will be available in the next Workspace milestone.",
|
||
"workspaceSearchHint": "Search workspace resources",
|
||
"workspaceLoadMore": "Load more",
|
||
"workspaceAccessTitle": "Sharing & access",
|
||
"workspaceAccessSharingDisabled": "Sharing is turned off for this resource, so access is read-only.",
|
||
"workspaceAccessPublicDisabled": "You do not have permission to share this publicly.",
|
||
"workspaceAccessPeopleHeading": "People & groups",
|
||
"workspaceAccessUsersDisabled": "Sharing with individual people is disabled; you can share with groups only.",
|
||
"workspaceAccessEmpty": "Not shared with anyone yet.",
|
||
"workspaceAccessAddPeople": "Add people or groups",
|
||
"workspaceAccessAddGroups": "Add groups",
|
||
"workspaceAccessVisibilityLabel": "Public",
|
||
"workspaceAccessVisibilityDescription": "Anyone on this server can view this resource.",
|
||
"workspaceAccessGroupBadge": "Group",
|
||
"workspaceAccessUserBadge": "Person",
|
||
"workspaceAccessCanEdit": "Can edit",
|
||
"workspaceAccessRemoveGrant": "Remove access",
|
||
"workspacePrincipalTitle": "Add people or groups",
|
||
"workspacePrincipalUsersTab": "People",
|
||
"workspacePrincipalGroupsTab": "Groups",
|
||
"workspacePrincipalSearchHint": "Search people by name or email",
|
||
"workspacePrincipalLoadFailed": "Could not load results.",
|
||
"workspacePrincipalSearchPrompt": "Search to find people to share with.",
|
||
"workspacePrincipalNoResults": "No matches found.",
|
||
"workspaceReadOnlyBadge": "Read only",
|
||
"workspaceReadOnlyExplanation": "You have view-only access to this resource.",
|
||
"workspaceEditorDiscardTitle": "Discard changes?",
|
||
"workspaceEditorDiscardMessage": "Your unsaved changes will be lost.",
|
||
"workspaceEditorDiscardConfirm": "Discard",
|
||
"workspaceEditorKeepEditing": "Keep editing",
|
||
"workspaceEditorSaveTooltip": "Save changes",
|
||
"workspaceEditorSaving": "Saving…",
|
||
"workspaceEditorMoreActions": "More actions",
|
||
"workspaceImportChooseFile": "Choose JSON file",
|
||
"workspaceImportPasteLabel": "Or paste JSON",
|
||
"workspaceImportPasteHint": "Paste exported JSON here",
|
||
"workspaceImportRun": "Import",
|
||
"workspaceImportInvalidJson": "That doesn't look like valid JSON.",
|
||
"workspaceImportEmpty": "No items were found to import.",
|
||
"workspaceImportReadFailed": "Could not read the selected file.",
|
||
"workspaceImportBatchFailed": "The import could not be completed.",
|
||
"workspaceImportSummary": "Imported {success} of {total} items",
|
||
"workspaceImportItemImported": "Imported",
|
||
"workspaceImportItemFailed": "Import failed",
|
||
"workspaceImportDone": "Done",
|
||
"workspaceModelNewTitle": "New model",
|
||
"@workspaceModelNewTitle": {
|
||
"description": "Title shown when creating a new workspace model."
|
||
},
|
||
"workspaceModelIdLabel": "Model ID",
|
||
"@workspaceModelIdLabel": {
|
||
"description": "Label for the unique model identifier field."
|
||
},
|
||
"workspaceModelBaseModel": "Base model",
|
||
"@workspaceModelBaseModel": {
|
||
"description": "Label for the base-model selector."
|
||
},
|
||
"workspaceModelBaseModelNone": "None (custom)",
|
||
"workspaceModelBaseModelRequired": "请选择基础模型。",
|
||
"@workspaceModelBaseModelRequired": {"description": "Validation shown when a non-admin model create or protected edit has no base model."},
|
||
"@workspaceModelBaseModelNone": {
|
||
"description": "Base-model option meaning no base model is used."
|
||
},
|
||
"workspaceModelName": "Name",
|
||
"@workspaceModelName": {
|
||
"description": "Label for the model display-name field."
|
||
},
|
||
"workspaceModelDescription": "Description",
|
||
"@workspaceModelDescription": {
|
||
"description": "Label for the model description field."
|
||
},
|
||
"workspaceModelTags": "Tags",
|
||
"@workspaceModelTags": {
|
||
"description": "Label for the model tags editor."
|
||
},
|
||
"workspaceModelTagsHint": "Add tag",
|
||
"@workspaceModelTagsHint": {
|
||
"description": "Action chip label to add a new tag."
|
||
},
|
||
"workspaceModelSystemPrompt": "System prompt",
|
||
"@workspaceModelSystemPrompt": {
|
||
"description": "Label for the model system prompt field."
|
||
},
|
||
"workspaceModelSuggestionPrompts": "Suggested prompts",
|
||
"@workspaceModelSuggestionPrompts": {
|
||
"description": "Label for the suggested prompts editor."
|
||
},
|
||
"workspaceModelAddSuggestion": "Add suggestion",
|
||
"@workspaceModelAddSuggestion": {
|
||
"description": "Button to add a suggested prompt."
|
||
},
|
||
"workspaceModelRemoveSuggestion": "Remove suggestion",
|
||
"@workspaceModelRemoveSuggestion": {
|
||
"description": "Tooltip to remove a suggested prompt."
|
||
},
|
||
"workspaceModelStopSequences": "Stop sequences",
|
||
"@workspaceModelStopSequences": {
|
||
"description": "Label for the stop-sequences field."
|
||
},
|
||
"workspaceModelStopHint": "Comma-separated stop sequences",
|
||
"@workspaceModelStopHint": {
|
||
"description": "Helper text for the stop-sequences field."
|
||
},
|
||
"workspaceModelAdvancedParams": "Advanced parameters (JSON)",
|
||
"@workspaceModelAdvancedParams": {
|
||
"description": "Label for the advanced inference parameters JSON field."
|
||
},
|
||
"workspaceModelParamsHint": "JSON object of additional parameters",
|
||
"@workspaceModelParamsHint": {
|
||
"description": "Helper text for a JSON parameters field."
|
||
},
|
||
"workspaceModelInvalidJson": "Enter a valid JSON object.",
|
||
"@workspaceModelInvalidJson": {
|
||
"description": "Validation error for a malformed JSON field."
|
||
},
|
||
"workspaceModelCapabilities": "Capabilities",
|
||
"@workspaceModelCapabilities": {
|
||
"description": "Label for the model capability toggles."
|
||
},
|
||
"workspaceModelTerminal": "Terminal ID",
|
||
"@workspaceModelTerminal": {
|
||
"description": "Label for the terminal identifier field."
|
||
},
|
||
"workspaceModelTtsVoice": "Text-to-speech voice",
|
||
"@workspaceModelTtsVoice": {
|
||
"description": "Label for the TTS voice field."
|
||
},
|
||
"workspaceModelDefaultFeatures": "Default features",
|
||
"@workspaceModelDefaultFeatures": {
|
||
"description": "Label for the default feature IDs field."
|
||
},
|
||
"workspaceModelBuiltinTools": "Built-in tools (JSON)",
|
||
"@workspaceModelBuiltinTools": {
|
||
"description": "Label for the built-in tools JSON field."
|
||
},
|
||
"workspaceModelKnowledge": "Knowledge",
|
||
"@workspaceModelKnowledge": {
|
||
"description": "Label for the knowledge relationship selector."
|
||
},
|
||
"workspaceModelTools": "Tools",
|
||
"@workspaceModelTools": {
|
||
"description": "Label for the tools relationship selector."
|
||
},
|
||
"workspaceModelSkills": "Skills",
|
||
"@workspaceModelSkills": {
|
||
"description": "Label for the skills relationship selector."
|
||
},
|
||
"workspaceModelFilters": "Filters",
|
||
"@workspaceModelFilters": {
|
||
"description": "Label for the filter functions selector."
|
||
},
|
||
"workspaceModelDefaultFilters": "Default filters",
|
||
"@workspaceModelDefaultFilters": {
|
||
"description": "Label for the default filter functions selector."
|
||
},
|
||
"workspaceModelActions": "Actions",
|
||
"@workspaceModelActions": {
|
||
"description": "Label for the action functions selector."
|
||
},
|
||
"workspaceModelSectionBasics": "Basics",
|
||
"@workspaceModelSectionBasics": {
|
||
"description": "Section header for basic model fields."
|
||
},
|
||
"workspaceModelSectionPrompt": "Prompt",
|
||
"@workspaceModelSectionPrompt": {
|
||
"description": "Section header for prompt-related model fields."
|
||
},
|
||
"workspaceModelSectionAdvanced": "Advanced",
|
||
"@workspaceModelSectionAdvanced": {
|
||
"description": "Section header for advanced model fields."
|
||
},
|
||
"workspaceModelSectionRelationships": "Relationships",
|
||
"@workspaceModelSectionRelationships": {
|
||
"description": "Section header for model relationship selectors."
|
||
},
|
||
"workspaceModelSectionAccess": "Access",
|
||
"@workspaceModelSectionAccess": {
|
||
"description": "Section header for model access controls."
|
||
},
|
||
"workspaceModelProfileImage": "Profile image",
|
||
"@workspaceModelProfileImage": {
|
||
"description": "Label for the model profile image."
|
||
},
|
||
"workspaceModelChangeImage": "Change image",
|
||
"@workspaceModelChangeImage": {
|
||
"description": "Button to pick a new profile image."
|
||
},
|
||
"workspaceModelRemoveImage": "Remove image",
|
||
"@workspaceModelRemoveImage": {
|
||
"description": "Button to clear the profile image."
|
||
},
|
||
"workspaceModelImageFailed": "Could not load the selected image.",
|
||
"@workspaceModelImageFailed": {
|
||
"description": "Error when picking a profile image fails."
|
||
},
|
||
"workspaceModelSelectNone": "None selected",
|
||
"@workspaceModelSelectNone": {
|
||
"description": "Subtitle when no relationship items are selected."
|
||
},
|
||
"workspaceModelSelectCount": "{count} selected",
|
||
"@workspaceModelSelectCount": {
|
||
"description": "Subtitle showing how many relationship items are selected.",
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"workspaceModelRelationshipEmpty": "Nothing available to select.",
|
||
"@workspaceModelRelationshipEmpty": {
|
||
"description": "Empty state for a relationship picker."
|
||
},
|
||
"workspaceModelManageAccess": "Manage access",
|
||
"@workspaceModelManageAccess": {
|
||
"description": "Action to open the access-grants sheet for a model."
|
||
},
|
||
"workspaceModelClone": "Duplicate",
|
||
"@workspaceModelClone": {
|
||
"description": "Action that duplicates the model."
|
||
},
|
||
"workspaceModelCloneSuffix": "(copy)",
|
||
"@workspaceModelCloneSuffix": {
|
||
"description": "Suffix appended to a duplicated model name."
|
||
},
|
||
"workspaceModelActivate": "Activate",
|
||
"@workspaceModelActivate": {
|
||
"description": "Action that marks the model active."
|
||
},
|
||
"workspaceModelDeactivate": "Deactivate",
|
||
"@workspaceModelDeactivate": {
|
||
"description": "Action that marks the model inactive."
|
||
},
|
||
"workspaceModelHide": "Hide from selector",
|
||
"@workspaceModelHide": {
|
||
"description": "Action that hides the model from model selectors."
|
||
},
|
||
"workspaceModelUnhide": "Show in selector",
|
||
"@workspaceModelUnhide": {
|
||
"description": "Action that unhides the model in model selectors."
|
||
},
|
||
"workspaceModelDelete": "Delete model",
|
||
"@workspaceModelDelete": {
|
||
"description": "Action that deletes the model."
|
||
},
|
||
"workspaceModelDeleteConfirmTitle": "Delete model?",
|
||
"@workspaceModelDeleteConfirmTitle": {
|
||
"description": "Confirmation dialog title for deleting a model."
|
||
},
|
||
"workspaceModelDeleteConfirmMessage": "This permanently removes {name}.",
|
||
"@workspaceModelDeleteConfirmMessage": {
|
||
"description": "Confirmation dialog body for deleting a model.",
|
||
"placeholders": {
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"workspaceModelExport": "Export model",
|
||
"@workspaceModelExport": {
|
||
"description": "Action that exports a single model as JSON."
|
||
},
|
||
"workspaceModelExportAll": "Export all models",
|
||
"@workspaceModelExportAll": {
|
||
"description": "Action that exports every readable model as JSON."
|
||
},
|
||
"workspaceModelExportFailed": "The export could not be completed.",
|
||
"@workspaceModelExportFailed": {
|
||
"description": "Error when exporting models fails."
|
||
},
|
||
"workspaceModelImport": "Import models",
|
||
"@workspaceModelImport": {
|
||
"description": "Action that imports models from JSON."
|
||
},
|
||
"workspaceModelIdRequired": "A model ID is required.",
|
||
"@workspaceModelIdRequired": {
|
||
"description": "Validation error when the model ID is empty."
|
||
},
|
||
"workspaceModelNameRequired": "A name is required.",
|
||
"@workspaceModelNameRequired": {
|
||
"description": "Validation error when the model name is empty."
|
||
},
|
||
"workspaceModelSaved": "Model saved.",
|
||
"@workspaceModelSaved": {
|
||
"description": "Confirmation that the model was saved."
|
||
},
|
||
"workspaceModelSaveFailed": "The model could not be saved.",
|
||
"@workspaceModelSaveFailed": {
|
||
"description": "Error when saving the model fails."
|
||
},
|
||
"workspaceModelDeleted": "Model deleted.",
|
||
"@workspaceModelDeleted": {
|
||
"description": "Confirmation that the model was deleted."
|
||
},
|
||
"workspaceModelAddAction": "Add",
|
||
"@workspaceModelAddAction": {
|
||
"description": "Confirm button in a small add-text dialog."
|
||
},
|
||
"workspaceKnowledgeCreateTitle": "New knowledge base",
|
||
"@workspaceKnowledgeCreateTitle": {
|
||
"description": "Title of the create form for a new knowledge base."
|
||
},
|
||
"workspaceKnowledgeName": "Name",
|
||
"@workspaceKnowledgeName": {
|
||
"description": "Label for the knowledge base name field."
|
||
},
|
||
"workspaceKnowledgeDescription": "Description",
|
||
"@workspaceKnowledgeDescription": {
|
||
"description": "Label for the knowledge base description field."
|
||
},
|
||
"workspaceKnowledgeNameRequired": "A name is required.",
|
||
"@workspaceKnowledgeNameRequired": {
|
||
"description": "Validation error when the knowledge base name is empty."
|
||
},
|
||
"workspaceKnowledgeSaved": "Knowledge base saved.",
|
||
"@workspaceKnowledgeSaved": {
|
||
"description": "Confirmation that the knowledge base was saved."
|
||
},
|
||
"workspaceKnowledgeSaveFailed": "The knowledge base could not be saved.",
|
||
"@workspaceKnowledgeSaveFailed": {
|
||
"description": "Error when saving a knowledge base fails."
|
||
},
|
||
"workspaceKnowledgeDeleted": "Knowledge base deleted.",
|
||
"@workspaceKnowledgeDeleted": {
|
||
"description": "Confirmation that the knowledge base was deleted."
|
||
},
|
||
"workspaceKnowledgeDelete": "Delete knowledge base",
|
||
"@workspaceKnowledgeDelete": {
|
||
"description": "Overflow action that deletes the knowledge base."
|
||
},
|
||
"workspaceKnowledgeDeleteConfirmTitle": "Delete knowledge base?",
|
||
"@workspaceKnowledgeDeleteConfirmTitle": {
|
||
"description": "Confirmation dialog title for deleting a knowledge base."
|
||
},
|
||
"workspaceKnowledgeDeleteConfirmMessage": "This permanently removes {name} and detaches its files.",
|
||
"@workspaceKnowledgeDeleteConfirmMessage": {
|
||
"description": "Confirmation dialog body for deleting a knowledge base.",
|
||
"placeholders": {
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"workspaceKnowledgeReset": "Reset",
|
||
"@workspaceKnowledgeReset": {
|
||
"description": "Overflow action that removes all files from a knowledge base."
|
||
},
|
||
"workspaceKnowledgeResetConfirmTitle": "Reset knowledge base?",
|
||
"@workspaceKnowledgeResetConfirmTitle": {
|
||
"description": "Confirmation dialog title for resetting a knowledge base."
|
||
},
|
||
"workspaceKnowledgeResetConfirmMessage": "This removes all files from {name} but keeps the knowledge base.",
|
||
"@workspaceKnowledgeResetConfirmMessage": {
|
||
"description": "Confirmation dialog body for resetting a knowledge base.",
|
||
"placeholders": {
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"workspaceKnowledgeResetDone": "Knowledge base reset.",
|
||
"@workspaceKnowledgeResetDone": {
|
||
"description": "Confirmation that the knowledge base files were reset."
|
||
},
|
||
"workspaceKnowledgeExport": "Export knowledge base",
|
||
"@workspaceKnowledgeExport": {
|
||
"description": "Overflow action that exports a knowledge base archive."
|
||
},
|
||
"workspaceKnowledgeExportFailed": "The export could not be completed.",
|
||
"@workspaceKnowledgeExportFailed": {
|
||
"description": "Error when exporting a knowledge base fails."
|
||
},
|
||
"workspaceKnowledgeManageAccess": "Manage access",
|
||
"@workspaceKnowledgeManageAccess": {
|
||
"description": "Action that opens the sharing and access sheet for a knowledge base."
|
||
},
|
||
"workspaceKnowledgeViewAll": "All",
|
||
"@workspaceKnowledgeViewAll": {
|
||
"description": "Knowledge collection filter showing all knowledge bases."
|
||
},
|
||
"workspaceKnowledgeViewCreated": "Created by you",
|
||
"@workspaceKnowledgeViewCreated": {
|
||
"description": "Knowledge collection filter showing bases the user created."
|
||
},
|
||
"workspaceKnowledgeViewShared": "Shared with you",
|
||
"@workspaceKnowledgeViewShared": {
|
||
"description": "Knowledge collection filter showing bases shared with the user."
|
||
},
|
||
"workspaceKnowledgeSourceAll": "All sources",
|
||
"@workspaceKnowledgeSourceAll": {
|
||
"description": "Knowledge collection filter showing both local and connected sources."
|
||
},
|
||
"workspaceKnowledgeSourceLocal": "Local",
|
||
"@workspaceKnowledgeSourceLocal": {
|
||
"description": "Knowledge collection filter showing only local knowledge bases."
|
||
},
|
||
"workspaceKnowledgeSourceExternal": "Connected",
|
||
"@workspaceKnowledgeSourceExternal": {
|
||
"description": "Knowledge collection filter showing only external/connected knowledge bases."
|
||
},
|
||
"workspaceKnowledgeExternalBadge": "Connected",
|
||
"@workspaceKnowledgeExternalBadge": {
|
||
"description": "Badge marking a knowledge base as external/connected (read-only)."
|
||
},
|
||
"workspaceKnowledgeExternalReadOnly": "Connected knowledge bases are read-only in this app.",
|
||
"@workspaceKnowledgeExternalReadOnly": {
|
||
"description": "Notice shown when viewing an external/connected knowledge base."
|
||
},
|
||
"workspaceKnowledgeFilesTitle": "Files",
|
||
"@workspaceKnowledgeFilesTitle": {
|
||
"description": "Heading of the knowledge base file browser."
|
||
},
|
||
"workspaceKnowledgeFilesEmpty": "No files yet.",
|
||
"@workspaceKnowledgeFilesEmpty": {
|
||
"description": "Empty state when a knowledge base directory contains no files."
|
||
},
|
||
"workspaceKnowledgeFilesLoadFailed": "Files could not be loaded.",
|
||
"@workspaceKnowledgeFilesLoadFailed": {
|
||
"description": "Error when the knowledge base file list fails to load."
|
||
},
|
||
"workspaceKnowledgeRefreshFiles": "Refresh",
|
||
"@workspaceKnowledgeRefreshFiles": {
|
||
"description": "Tooltip for the button that refreshes the knowledge file list."
|
||
},
|
||
"workspaceKnowledgeRoot": "Root",
|
||
"@workspaceKnowledgeRoot": {
|
||
"description": "Breadcrumb label for the top level of a knowledge base."
|
||
},
|
||
"workspaceKnowledgeAddMenu": "Add files",
|
||
"@workspaceKnowledgeAddMenu": {
|
||
"description": "Tooltip for the menu that adds files or folders to a knowledge base."
|
||
},
|
||
"workspaceKnowledgeUpload": "Upload file",
|
||
"@workspaceKnowledgeUpload": {
|
||
"description": "Menu item to upload a single local file into a knowledge base."
|
||
},
|
||
"workspaceKnowledgeUploading": "Uploading {name}…",
|
||
"@workspaceKnowledgeUploading": {
|
||
"description": "Progress label shown while a file uploads into a knowledge base.",
|
||
"placeholders": {
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"workspaceKnowledgeUploadFailed": "The file could not be uploaded.",
|
||
"@workspaceKnowledgeUploadFailed": {
|
||
"description": "Error when uploading a file into a knowledge base fails."
|
||
},
|
||
"workspaceKnowledgeBatchAttach": "Upload multiple files",
|
||
"@workspaceKnowledgeBatchAttach": {
|
||
"description": "Menu item to upload several local files into a knowledge base at once."
|
||
},
|
||
"workspaceKnowledgeAttachExisting": "Attach server file",
|
||
"@workspaceKnowledgeAttachExisting": {
|
||
"description": "Menu item to attach an existing server file to a knowledge base."
|
||
},
|
||
"workspaceKnowledgeAttachFailed": "The file could not be attached.",
|
||
"@workspaceKnowledgeAttachFailed": {
|
||
"description": "Error when attaching an existing file to a knowledge base fails."
|
||
},
|
||
"workspaceKnowledgeAddText": "Add text file",
|
||
"@workspaceKnowledgeAddText": {
|
||
"description": "Menu item to create a text file and attach it to a knowledge base."
|
||
},
|
||
"workspaceKnowledgeAddTextName": "File name",
|
||
"@workspaceKnowledgeAddTextName": {
|
||
"description": "Label for the file name field when adding a text file."
|
||
},
|
||
"workspaceKnowledgeAddTextContent": "Content",
|
||
"@workspaceKnowledgeAddTextContent": {
|
||
"description": "Label for the content field when adding a text file."
|
||
},
|
||
"workspaceKnowledgeAddTextFailed": "The text file could not be added.",
|
||
"@workspaceKnowledgeAddTextFailed": {
|
||
"description": "Error when adding a text file to a knowledge base fails."
|
||
},
|
||
"workspaceKnowledgeNewFolder": "New folder",
|
||
"@workspaceKnowledgeNewFolder": {
|
||
"description": "Menu item and dialog title to create a new directory in a knowledge base."
|
||
},
|
||
"workspaceKnowledgeFolderName": "Folder name",
|
||
"@workspaceKnowledgeFolderName": {
|
||
"description": "Label for the folder name field."
|
||
},
|
||
"workspaceKnowledgeFolderCreateFailed": "The folder could not be created.",
|
||
"@workspaceKnowledgeFolderCreateFailed": {
|
||
"description": "Error when creating or renaming a knowledge base folder fails."
|
||
},
|
||
"workspaceKnowledgeRenameFolder": "Rename folder",
|
||
"@workspaceKnowledgeRenameFolder": {
|
||
"description": "Action to rename a knowledge base directory."
|
||
},
|
||
"workspaceKnowledgeDeleteFolder": "Delete folder",
|
||
"@workspaceKnowledgeDeleteFolder": {
|
||
"description": "Action to delete a knowledge base directory."
|
||
},
|
||
"workspaceKnowledgeDeleteFolderConfirmTitle": "Delete folder?",
|
||
"@workspaceKnowledgeDeleteFolderConfirmTitle": {
|
||
"description": "Confirmation dialog title for deleting a knowledge base directory."
|
||
},
|
||
"workspaceKnowledgeDeleteFolderConfirmMessage": "Files inside {name} move to the parent folder.",
|
||
"@workspaceKnowledgeDeleteFolderConfirmMessage": {
|
||
"description": "Confirmation dialog body for deleting a knowledge base directory.",
|
||
"placeholders": {
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"workspaceKnowledgeFolderDeleteFailed": "The folder could not be deleted.",
|
||
"@workspaceKnowledgeFolderDeleteFailed": {
|
||
"description": "Error when deleting a knowledge base folder fails."
|
||
},
|
||
"workspaceKnowledgeFileRename": "Rename",
|
||
"@workspaceKnowledgeFileRename": {
|
||
"description": "Per-file action to rename a knowledge base file."
|
||
},
|
||
"workspaceKnowledgeFileRefresh": "Re-index",
|
||
"@workspaceKnowledgeFileRefresh": {
|
||
"description": "Per-file action to re-index a knowledge base file."
|
||
},
|
||
"workspaceKnowledgeFileReindexed": "Re-indexing started.",
|
||
"@workspaceKnowledgeFileReindexed": {
|
||
"description": "Confirmation that re-indexing a knowledge base file began."
|
||
},
|
||
"workspaceKnowledgeFileMove": "Move",
|
||
"@workspaceKnowledgeFileMove": {
|
||
"description": "Per-file action to move a knowledge base file to another folder."
|
||
},
|
||
"workspaceKnowledgeFileRenameFailed": "The file could not be renamed.",
|
||
"@workspaceKnowledgeFileRenameFailed": {
|
||
"description": "Error when renaming a knowledge base file fails."
|
||
},
|
||
"workspaceKnowledgeFileMoveFailed": "The file could not be moved.",
|
||
"@workspaceKnowledgeFileMoveFailed": {
|
||
"description": "Error when moving a knowledge base file fails."
|
||
},
|
||
"workspaceKnowledgeFileDetach": "Remove from knowledge",
|
||
"@workspaceKnowledgeFileDetach": {
|
||
"description": "Per-file action to detach a file from a knowledge base."
|
||
},
|
||
"workspaceKnowledgeFileDetachTitle": "Remove file?",
|
||
"@workspaceKnowledgeFileDetachTitle": {
|
||
"description": "Confirmation dialog title for detaching a file from a knowledge base."
|
||
},
|
||
"workspaceKnowledgeFileDetachMessage": "Remove {name} from this knowledge base?",
|
||
"@workspaceKnowledgeFileDetachMessage": {
|
||
"description": "Confirmation dialog body for detaching a file from a knowledge base.",
|
||
"placeholders": {
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"workspaceKnowledgeFileDeleteUnderlying": "Also delete the underlying file",
|
||
"@workspaceKnowledgeFileDeleteUnderlying": {
|
||
"description": "Checkbox to delete the stored file when detaching, shown to owners/admins."
|
||
},
|
||
"workspaceKnowledgeFileDetachFailed": "The file could not be removed.",
|
||
"@workspaceKnowledgeFileDetachFailed": {
|
||
"description": "Error when detaching a file from a knowledge base fails."
|
||
},
|
||
"workspaceKnowledgeMoveTitle": "Move to folder",
|
||
"@workspaceKnowledgeMoveTitle": {
|
||
"description": "Title of the sheet for choosing a destination folder."
|
||
},
|
||
"workspaceKnowledgeMoveRoot": "Root (no folder)",
|
||
"@workspaceKnowledgeMoveRoot": {
|
||
"description": "Move destination representing the knowledge base root."
|
||
},
|
||
"workspaceKnowledgeStatusPending": "Processing…",
|
||
"@workspaceKnowledgeStatusPending": {
|
||
"description": "Status shown for a knowledge base file still being ingested."
|
||
},
|
||
"workspaceKnowledgeStatusFailed": "Failed",
|
||
"@workspaceKnowledgeStatusFailed": {
|
||
"description": "Status shown for a knowledge base file whose ingestion failed."
|
||
},
|
||
"workspacePromptCreateTitle": "New prompt",
|
||
"@workspacePromptCreateTitle": {
|
||
"description": "Title shown while creating a new workspace prompt."
|
||
},
|
||
"workspacePromptName": "Name",
|
||
"@workspacePromptName": {
|
||
"description": "Label for the prompt name field."
|
||
},
|
||
"workspacePromptNameRequired": "Name is required.",
|
||
"@workspacePromptNameRequired": {
|
||
"description": "Validation error when the prompt name is empty."
|
||
},
|
||
"workspacePromptCommand": "Command",
|
||
"@workspacePromptCommand": {
|
||
"description": "Label for the prompt slash-command field."
|
||
},
|
||
"workspacePromptCommandHint": "Only letters, numbers, hyphens, and underscores. Type it as a slash command in chat.",
|
||
"@workspacePromptCommandHint": {
|
||
"description": "Helper text explaining the allowed prompt command characters."
|
||
},
|
||
"workspacePromptCommandRequired": "Command is required.",
|
||
"@workspacePromptCommandRequired": {
|
||
"description": "Validation error when the prompt command is empty."
|
||
},
|
||
"workspacePromptCommandInvalid": "Only letters, numbers, hyphens, and underscores are allowed.",
|
||
"@workspacePromptCommandInvalid": {
|
||
"description": "Validation error when the prompt command contains illegal characters."
|
||
},
|
||
"workspacePromptCommandTaken": "That command is already in use.",
|
||
"@workspacePromptCommandTaken": {
|
||
"description": "Error shown when saving a prompt whose command collides with another prompt."
|
||
},
|
||
"workspacePromptContent": "Prompt content",
|
||
"@workspacePromptContent": {
|
||
"description": "Label for the prompt template body field."
|
||
},
|
||
"workspacePromptContentHint": "Write the prompt template…",
|
||
"@workspacePromptContentHint": {
|
||
"description": "Placeholder text for the empty prompt content field."
|
||
},
|
||
"workspacePromptContentRequired": "Prompt content is required.",
|
||
"@workspacePromptContentRequired": {
|
||
"description": "Validation error when the prompt content is empty."
|
||
},
|
||
"workspacePromptWriteTab": "Write",
|
||
"@workspacePromptWriteTab": {
|
||
"description": "Toggle label for the editable prompt content view."
|
||
},
|
||
"workspacePromptPreviewTab": "Preview",
|
||
"@workspacePromptPreviewTab": {
|
||
"description": "Toggle label for the rendered markdown preview of the prompt content."
|
||
},
|
||
"workspacePromptPreviewEmpty": "Nothing to preview yet.",
|
||
"@workspacePromptPreviewEmpty": {
|
||
"description": "Empty-state text shown in the prompt preview when there is no content."
|
||
},
|
||
"workspacePromptTags": "Tags",
|
||
"@workspacePromptTags": {
|
||
"description": "Label for the prompt tags field."
|
||
},
|
||
"workspacePromptTagAdd": "Add tag",
|
||
"@workspacePromptTagAdd": {
|
||
"description": "Action to add a tag to a prompt."
|
||
},
|
||
"workspacePromptVersionSection": "Version",
|
||
"@workspacePromptVersionSection": {
|
||
"description": "Section header for prompt versioning controls."
|
||
},
|
||
"workspacePromptCommitMessage": "Commit message",
|
||
"@workspacePromptCommitMessage": {
|
||
"description": "Label for the optional commit message recorded with a prompt version."
|
||
},
|
||
"workspacePromptCommitMessageHint": "Describe what changed (optional)",
|
||
"@workspacePromptCommitMessageHint": {
|
||
"description": "Placeholder for the prompt commit message field."
|
||
},
|
||
"workspacePromptSetProduction": "Set as production version",
|
||
"@workspacePromptSetProduction": {
|
||
"description": "Toggle that marks the saved prompt version as the live production version."
|
||
},
|
||
"workspacePromptSetProductionSubtitle": "Make this the live version used in chat.",
|
||
"@workspacePromptSetProductionSubtitle": {
|
||
"description": "Explanation for the production-version toggle."
|
||
},
|
||
"workspacePromptManageAccess": "Manage access",
|
||
"@workspacePromptManageAccess": {
|
||
"description": "Action to open the sharing/access editor for a prompt."
|
||
},
|
||
"workspacePromptClone": "Duplicate",
|
||
"@workspacePromptClone": {
|
||
"description": "Overflow action that clones a prompt."
|
||
},
|
||
"workspacePromptCloneSuffix": "(copy)",
|
||
"@workspacePromptCloneSuffix": {
|
||
"description": "Suffix appended to the name and command of a cloned prompt."
|
||
},
|
||
"workspacePromptUpdateDetails": "Save name & command only",
|
||
"@workspacePromptUpdateDetails": {
|
||
"description": "Overflow action that updates prompt metadata without creating a new version."
|
||
},
|
||
"workspacePromptDetailsSaved": "Details saved",
|
||
"@workspacePromptDetailsSaved": {
|
||
"description": "Confirmation that prompt name and command were updated."
|
||
},
|
||
"workspacePromptActivate": "Activate",
|
||
"@workspacePromptActivate": {
|
||
"description": "Overflow action that enables a prompt."
|
||
},
|
||
"workspacePromptDeactivate": "Deactivate",
|
||
"@workspacePromptDeactivate": {
|
||
"description": "Overflow action that disables a prompt."
|
||
},
|
||
"workspacePromptDelete": "Delete prompt",
|
||
"@workspacePromptDelete": {
|
||
"description": "Overflow action that deletes a prompt."
|
||
},
|
||
"workspacePromptDeleteConfirmTitle": "Delete prompt?",
|
||
"@workspacePromptDeleteConfirmTitle": {
|
||
"description": "Confirmation dialog title for deleting a prompt."
|
||
},
|
||
"workspacePromptDeleteConfirmMessage": "\"{name}\" will be permanently deleted.",
|
||
"@workspacePromptDeleteConfirmMessage": {
|
||
"description": "Confirmation dialog body for deleting a prompt.",
|
||
"placeholders": {
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"workspacePromptDeleted": "Prompt deleted",
|
||
"@workspacePromptDeleted": {
|
||
"description": "Confirmation that a prompt was deleted."
|
||
},
|
||
"workspacePromptSaved": "Prompt saved",
|
||
"@workspacePromptSaved": {
|
||
"description": "Confirmation that a prompt was saved."
|
||
},
|
||
"workspacePromptSaveFailed": "Couldn't save the prompt. Please try again.",
|
||
"@workspacePromptSaveFailed": {
|
||
"description": "Error shown when saving a prompt fails."
|
||
},
|
||
"workspacePromptImport": "Import prompts",
|
||
"@workspacePromptImport": {
|
||
"description": "Overflow action that imports prompt definitions from JSON."
|
||
},
|
||
"workspacePromptExport": "Export prompts",
|
||
"@workspacePromptExport": {
|
||
"description": "Overflow action that exports readable prompts as JSON."
|
||
},
|
||
"workspacePromptExportFailed": "Couldn't export prompts.",
|
||
"@workspacePromptExportFailed": {
|
||
"description": "Error shown when exporting prompts fails."
|
||
},
|
||
"workspacePromptHistory": "Version history",
|
||
"@workspacePromptHistory": {
|
||
"description": "Header of the prompt version-history panel."
|
||
},
|
||
"workspacePromptHistoryEmpty": "No versions yet.",
|
||
"@workspacePromptHistoryEmpty": {
|
||
"description": "Empty-state text when a prompt has no version history."
|
||
},
|
||
"workspacePromptHistoryLoadFailed": "Couldn't load version history.",
|
||
"@workspacePromptHistoryLoadFailed": {
|
||
"description": "Error shown when loading prompt history fails."
|
||
},
|
||
"workspacePromptHistoryCommitFallback": "No commit message",
|
||
"@workspacePromptHistoryCommitFallback": {
|
||
"description": "Placeholder shown for a history entry without a commit message."
|
||
},
|
||
"workspacePromptHistoryLive": "Live",
|
||
"@workspacePromptHistoryLive": {
|
||
"description": "Badge marking the active production version of a prompt."
|
||
},
|
||
"workspacePromptHistoryDiff": "Compare with production",
|
||
"@workspacePromptHistoryDiff": {
|
||
"description": "Action to diff a prompt version against the production version."
|
||
},
|
||
"workspacePromptHistoryDiffTitle": "Version comparison",
|
||
"@workspacePromptHistoryDiffTitle": {
|
||
"description": "Title of the prompt version diff sheet."
|
||
},
|
||
"workspacePromptHistoryDiffEmpty": "No content differences.",
|
||
"@workspacePromptHistoryDiffEmpty": {
|
||
"description": "Shown when two prompt versions have identical content."
|
||
},
|
||
"workspacePromptHistoryDiffNameChanged": "The name changed between these versions.",
|
||
"@workspacePromptHistoryDiffNameChanged": {
|
||
"description": "Note shown in the diff sheet when the prompt name changed."
|
||
},
|
||
"workspacePromptHistoryDiffFailed": "Couldn't compute the diff.",
|
||
"@workspacePromptHistoryDiffFailed": {
|
||
"description": "Error shown when computing a prompt version diff fails."
|
||
},
|
||
"workspacePromptHistoryRestore": "Restore this version",
|
||
"@workspacePromptHistoryRestore": {
|
||
"description": "Action that loads a version snapshot back into the editor."
|
||
},
|
||
"workspacePromptHistoryRestored": "Version content restored. Save to keep it.",
|
||
"@workspacePromptHistoryRestored": {
|
||
"description": "Confirmation that a version snapshot was loaded into the editor."
|
||
},
|
||
"workspacePromptHistorySetProduction": "Set as production",
|
||
"@workspacePromptHistorySetProduction": {
|
||
"description": "Action that pins a version as the production version."
|
||
},
|
||
"workspacePromptHistoryProductionSet": "Production version updated.",
|
||
"@workspacePromptHistoryProductionSet": {
|
||
"description": "Confirmation that the production version was changed."
|
||
},
|
||
"workspacePromptHistoryDelete": "Delete version",
|
||
"@workspacePromptHistoryDelete": {
|
||
"description": "Action that deletes a prompt history entry."
|
||
},
|
||
"workspacePromptHistoryDeleteConfirmTitle": "Delete version?",
|
||
"@workspacePromptHistoryDeleteConfirmTitle": {
|
||
"description": "Confirmation dialog title for deleting a prompt version."
|
||
},
|
||
"workspacePromptHistoryDeleteConfirmMessage": "This version snapshot will be removed. This can't be undone.",
|
||
"@workspacePromptHistoryDeleteConfirmMessage": {
|
||
"description": "Confirmation dialog body for deleting a prompt version."
|
||
},
|
||
"workspacePromptHistoryDeleted": "Version deleted",
|
||
"@workspacePromptHistoryDeleted": {
|
||
"description": "Confirmation that a prompt version was deleted."
|
||
},
|
||
"workspacePromptHistoryDeleteProduction": "The live production version can't be deleted.",
|
||
"@workspacePromptHistoryDeleteProduction": {
|
||
"description": "Error shown when trying to delete the active production version."
|
||
},
|
||
"workspaceSkillCreateTitle": "New skill",
|
||
"@workspaceSkillCreateTitle": {
|
||
"description": "Title shown while creating a new workspace skill."
|
||
},
|
||
"workspaceSkillName": "Name",
|
||
"@workspaceSkillName": {
|
||
"description": "Label for the skill name field."
|
||
},
|
||
"workspaceSkillNameHint": "e.g. Code Review Guidelines",
|
||
"@workspaceSkillNameHint": {
|
||
"description": "Placeholder example for the skill name field."
|
||
},
|
||
"workspaceSkillNameRequired": "Name is required.",
|
||
"@workspaceSkillNameRequired": {
|
||
"description": "Validation error when the skill name is empty."
|
||
},
|
||
"workspaceSkillId": "Skill ID",
|
||
"@workspaceSkillId": {
|
||
"description": "Label for the skill identifier field."
|
||
},
|
||
"workspaceSkillIdHint": "e.g. code-review-guidelines",
|
||
"@workspaceSkillIdHint": {
|
||
"description": "Placeholder example for the skill identifier field."
|
||
},
|
||
"workspaceSkillIdRequired": "Skill ID is required.",
|
||
"@workspaceSkillIdRequired": {
|
||
"description": "Validation error when the skill identifier is empty."
|
||
},
|
||
"workspaceSkillIdInvalid": "Only letters, numbers, hyphens, and underscores are allowed.",
|
||
"@workspaceSkillIdInvalid": {
|
||
"description": "Validation error when the skill identifier contains illegal characters."
|
||
},
|
||
"workspaceSkillIdTaken": "That skill ID or name is already in use.",
|
||
"@workspaceSkillIdTaken": {
|
||
"description": "Error shown when saving a skill whose id or name collides with another skill."
|
||
},
|
||
"workspaceSkillDescription": "Description",
|
||
"@workspaceSkillDescription": {
|
||
"description": "Label for the optional skill description field."
|
||
},
|
||
"workspaceSkillDescriptionHint": "e.g. Step-by-step instructions for code reviews",
|
||
"@workspaceSkillDescriptionHint": {
|
||
"description": "Placeholder example for the skill description field."
|
||
},
|
||
"workspaceSkillContent": "Instructions",
|
||
"@workspaceSkillContent": {
|
||
"description": "Label for the skill Markdown instructions body field."
|
||
},
|
||
"workspaceSkillContentHint": "Enter skill instructions in markdown…",
|
||
"@workspaceSkillContentHint": {
|
||
"description": "Placeholder text for the empty skill instructions field."
|
||
},
|
||
"workspaceSkillContentRequired": "Instructions are required.",
|
||
"@workspaceSkillContentRequired": {
|
||
"description": "Validation error when the skill instructions are empty."
|
||
},
|
||
"workspaceSkillWriteTab": "Write",
|
||
"@workspaceSkillWriteTab": {
|
||
"description": "Toggle label for the editable skill instructions view."
|
||
},
|
||
"workspaceSkillPreviewTab": "Preview",
|
||
"@workspaceSkillPreviewTab": {
|
||
"description": "Toggle label for the rendered markdown preview of the skill instructions."
|
||
},
|
||
"workspaceSkillPreviewEmpty": "Nothing to preview yet.",
|
||
"@workspaceSkillPreviewEmpty": {
|
||
"description": "Empty-state text shown in the skill preview when there is no content."
|
||
},
|
||
"workspaceSkillManageAccess": "Manage access",
|
||
"@workspaceSkillManageAccess": {
|
||
"description": "Action to open the sharing/access editor for a skill."
|
||
},
|
||
"workspaceSkillSaved": "Skill saved",
|
||
"@workspaceSkillSaved": {
|
||
"description": "Confirmation that a skill was saved."
|
||
},
|
||
"workspaceSkillSaveFailed": "Couldn't save the skill. Please try again.",
|
||
"@workspaceSkillSaveFailed": {
|
||
"description": "Error shown when saving a skill fails."
|
||
},
|
||
"workspaceSkillClone": "Duplicate",
|
||
"@workspaceSkillClone": {
|
||
"description": "Overflow action that clones a skill."
|
||
},
|
||
"workspaceSkillCloneSuffix": "(Clone)",
|
||
"@workspaceSkillCloneSuffix": {
|
||
"description": "Suffix appended to the name of a cloned skill."
|
||
},
|
||
"workspaceSkillActivate": "Activate",
|
||
"@workspaceSkillActivate": {
|
||
"description": "Overflow action that enables a skill."
|
||
},
|
||
"workspaceSkillDeactivate": "Deactivate",
|
||
"@workspaceSkillDeactivate": {
|
||
"description": "Overflow action that disables a skill."
|
||
},
|
||
"workspaceSkillDelete": "Delete skill",
|
||
"@workspaceSkillDelete": {
|
||
"description": "Overflow action that deletes a skill."
|
||
},
|
||
"workspaceSkillDeleteConfirmTitle": "Delete skill?",
|
||
"@workspaceSkillDeleteConfirmTitle": {
|
||
"description": "Confirmation dialog title for deleting a skill."
|
||
},
|
||
"workspaceSkillDeleteConfirmMessage": "\"{name}\" will be permanently deleted.",
|
||
"@workspaceSkillDeleteConfirmMessage": {
|
||
"description": "Confirmation dialog body for deleting a skill.",
|
||
"placeholders": {
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"workspaceSkillDeleted": "Skill deleted",
|
||
"@workspaceSkillDeleted": {
|
||
"description": "Confirmation that a skill was deleted."
|
||
},
|
||
"workspaceSkillImport": "Import skills",
|
||
"@workspaceSkillImport": {
|
||
"description": "Title of the JSON skill import sheet."
|
||
},
|
||
"workspaceSkillImportMarkdown": "Import Markdown",
|
||
"@workspaceSkillImportMarkdown": {
|
||
"description": "Overflow action that imports a skill from a Markdown file into the create editor."
|
||
},
|
||
"workspaceSkillImportJson": "Import JSON",
|
||
"@workspaceSkillImportJson": {
|
||
"description": "Overflow action that imports one or more skills from a JSON file."
|
||
},
|
||
"workspaceSkillImportMarkdownLoaded": "Markdown loaded. Review and save to create the skill.",
|
||
"@workspaceSkillImportMarkdownLoaded": {
|
||
"description": "Confirmation that a Markdown file was loaded into the unsaved skill editor."
|
||
},
|
||
"workspaceSkillImportMarkdownFailed": "Couldn't read the Markdown file.",
|
||
"@workspaceSkillImportMarkdownFailed": {
|
||
"description": "Error shown when reading a Markdown skill file fails."
|
||
},
|
||
"workspaceSkillExport": "Export skills",
|
||
"@workspaceSkillExport": {
|
||
"description": "Overflow action that exports readable skills as JSON."
|
||
},
|
||
"workspaceSkillExportFailed": "Couldn't export skills.",
|
||
"@workspaceSkillExportFailed": {
|
||
"description": "Error shown when exporting skills fails."
|
||
},
|
||
"workspaceToolCreateTitle": "Create tool",
|
||
"workspaceToolName": "Name",
|
||
"workspaceToolNameHint": "e.g. My Tools",
|
||
"workspaceToolNameRequired": "Enter a tool name.",
|
||
"workspaceToolId": "Tool ID",
|
||
"workspaceToolIdHint": "Letters, numbers, and underscores; can't start with a number.",
|
||
"workspaceToolIdRequired": "Enter a tool ID.",
|
||
"workspaceToolIdInvalid": "Tool IDs use letters, numbers, and underscores and can't start with a number.",
|
||
"workspaceToolIdTaken": "That tool ID is already in use.",
|
||
"workspaceToolDescription": "Description",
|
||
"workspaceToolDescriptionHint": "e.g. Tools for performing various operations",
|
||
"workspaceToolContent": "Python source",
|
||
"workspaceToolContentHint": "Write your tool as a Python class named Tools…",
|
||
"workspaceToolContentRequired": "Add Python source before saving.",
|
||
"workspaceToolWarning": "Tools run arbitrary Python on the server — only add code from sources you trust.",
|
||
"workspaceToolSaved": "Tool saved",
|
||
"workspaceToolDeleted": "Tool deleted",
|
||
"workspaceToolSaveFailed": "Couldn't save the tool.",
|
||
"workspaceToolManageAccess": "Manage access",
|
||
"workspaceToolClone": "Duplicate",
|
||
"workspaceToolCloneSuffix": "(Clone)",
|
||
"workspaceToolDelete": "Delete",
|
||
"workspaceToolDeleteConfirmTitle": "Delete tool?",
|
||
"workspaceToolDeleteConfirmMessage": "\"{name}\" will be permanently deleted.",
|
||
"workspaceToolImport": "Import tools",
|
||
"workspaceToolImportJson": "Import JSON",
|
||
"workspaceToolImportUrl": "Import from URL",
|
||
"workspaceToolImportUrlTitle": "Import tool from URL",
|
||
"workspaceToolImportUrlHint": "Enter a raw or GitHub URL to a tool's Python file",
|
||
"workspaceToolImportUrlLabel": "URL",
|
||
"workspaceToolImportUrlInvalid": "Enter a valid URL.",
|
||
"workspaceToolImportUrlFailed": "Couldn't import the tool from that URL.",
|
||
"workspaceToolImportUrlLoaded": "Tool loaded — review and save.",
|
||
"workspaceToolExport": "Export tools",
|
||
"workspaceToolExportFailed": "Couldn't export tools.",
|
||
"workspaceToolManifest": "Manifest",
|
||
"workspaceToolManifestVersion": "Version {version}",
|
||
"workspaceToolManifestRequiredVersion": "Requires Open WebUI {version}",
|
||
"workspaceToolManifestFunding": "Funding: {url}",
|
||
"workspaceToolSpecs": "Generated specifications",
|
||
"workspaceToolDetails": "工具详情",
|
||
"workspaceToolFunctionCount": "{count} 个函数",
|
||
"@workspaceToolFunctionCount": {"placeholders":{"count":{"type":"int"}}},
|
||
"workspaceToolSpecsEmpty": "No specifications were generated for this tool.",
|
||
"workspaceToolIncompatible": "This tool requires Open WebUI v{required}, but the server is v{current}. Update the server to save.",
|
||
"workspaceToolValves": "Valves",
|
||
"workspaceToolValvesTitle": "Valves",
|
||
"workspaceToolValvesServer": "Server valves",
|
||
"workspaceToolValvesUser": "User valves",
|
||
"workspaceToolValvesEmpty": "No valves",
|
||
"workspaceToolValvesSaved": "Valves updated",
|
||
"workspaceToolValvesSaveFailed": "Couldn't update valves.",
|
||
"workspaceToolValvesLoadFailed": "Couldn't load valves.",
|
||
"workspaceValveRequired": "required",
|
||
"workspaceValveDefault": "Default",
|
||
"workspaceValveCustom": "Custom",
|
||
"workspaceValveNone": "None",
|
||
"workspaceValveEnabled": "Enabled",
|
||
"workspaceValveDisabled": "Disabled",
|
||
"noteConflictCopyBadge": "冲突副本",
|
||
"noteConflictCopySuffix": "(冲突副本)",
|
||
"notificationChannelDescription": "当有人在频道或私信中发送消息时通知。",
|
||
"notificationChannelMessagesDescription": "回复、频道消息和已完成的响应",
|
||
"notificationChannelMessagesName": "消息",
|
||
"notificationChannelTitle": "频道消息",
|
||
"notificationChatDescription": "当你未查看的聊天中的响应完成时通知。",
|
||
"notificationChatTitle": "聊天响应",
|
||
"notificationDefaultTitle": "新消息",
|
||
"notificationInAppBannerDescription": "在应用打开时在应用内显示横幅。",
|
||
"notificationInAppBannerTitle": "应用内横幅",
|
||
"notificationSoundAlwaysDescription": "即使应用处于打开和前台状态也播放提示音。",
|
||
"notificationSoundAlwaysTitle": "始终播放声音",
|
||
"notificationSoundDescription": "收到通知时播放提示音。",
|
||
"notificationSoundTitle": "声音",
|
||
"notificationSystemDescription": "当应用在后台时在应用外显示通知。",
|
||
"notificationSystemTitle": "系统通知",
|
||
"notificationViewAction": "查看",
|
||
"notificationsEnabledDescription": "当应用在后台时以及在应用内接收提醒。",
|
||
"notificationsEnabledTitle": "启用通知",
|
||
"notificationsPermissionDenied": "通知已在系统设置中关闭。",
|
||
"notificationsSubtitle": "回复、消息和已完成响应的提醒",
|
||
"notificationsTitle": "通知",
|
||
"hermesSecretsUnavailable": "Could not access saved Hermes credentials. Unlock secure storage and retry.",
|
||
"hermesAgentSettingsTitle": "Hermes Agent",
|
||
"hermesAgentSettingsSubtitle": "Connect a self-hosted Hermes agent",
|
||
"connectOpenWebUITitle": "Connect to Open WebUI",
|
||
"connectOpenWebUISubtitle": "Add a self-hosted Open WebUI server",
|
||
"backendChooserWelcome": "Welcome to Conduit",
|
||
"backendChooserPrompt": "Choose how you want to connect.",
|
||
"backendChooserOpenWebUISubtitle": "Use your self-hosted Open WebUI server with full chat, notes, and more.",
|
||
"backendChooserHermesTitle": "Use a Hermes Agent",
|
||
"backendChooserHermesSubtitle": "Connect directly to a self-hosted Hermes agent — no Open WebUI server needed.",
|
||
"hermesApprovalRequired": "Approval required",
|
||
"hermesApprovalFallback": "The agent is requesting permission to continue.",
|
||
"openWebUiPromptOther": "其他",
|
||
"@openWebUiPromptOther": {"description": "Label for a free-form answer to an Open WebUI ask-user question."},
|
||
"openWebUiPromptAnswerHint": "输入你的回答",
|
||
"@openWebUiPromptAnswerHint": {"description": "Placeholder for a free-form Open WebUI ask-user answer."},
|
||
"openWebUiPromptSubmit": "提交",
|
||
"@openWebUiPromptSubmit": {"description": "Action that submits all answers to an Open WebUI ask-user prompt."},
|
||
"hermesApprovalApproved": "Approved ✓",
|
||
"hermesApprovalDenied": "Denied",
|
||
"hermesApprovalApproveAction": "Approve",
|
||
"hermesApprovalDenyAction": "Deny",
|
||
"hermesEnableTitle": "Enable Hermes Agent",
|
||
"hermesEnableSubtitle": "Use your self-hosted Hermes agent as a model in the picker.",
|
||
"hermesServerUrlTitle": "Server URL",
|
||
"hermesApiKeyTitle": "API key",
|
||
"hermesConfiguredReplacePlaceholder": "Configured — enter to replace",
|
||
"hermesApiKeyPlaceholder": "Enter API key",
|
||
"hermesMemoryKeyTitle": "Memory key (optional)",
|
||
"hermesMemoryKeyPlaceholder": "Auto-generated if left blank",
|
||
"hermesCapabilitiesTitle": "Capabilities",
|
||
"hermesCapabilityApproval": "Approval",
|
||
"hermesCapabilitySkills": "Skills",
|
||
"hermesCapabilityToolsets": "Toolsets",
|
||
"hermesCapabilityJobs": "Jobs",
|
||
"hermesCapabilitySessions": "Sessions",
|
||
"hermesTabInfoTitle": "Conversations & Scheduled Agents",
|
||
"hermesTabInfoSubtitle": "Available in the Hermes tab once enabled.",
|
||
"hermesNativeSettingsSubtitle": "Connect directly to a self-hosted Hermes agent.",
|
||
"hermesSelfHostedAgentLabel": "Self-hosted agent",
|
||
"hermesNoConversationsMessage": "No Hermes conversations yet.\nStart a new chat with the Hermes Agent and it will appear here.",
|
||
"hermesConversationsTitle": "Conversations",
|
||
"hermesBotsTitle": "机器人",
|
||
"hermesConversationsLoadError": "Could not load Hermes conversations.\nCheck the connection in Settings → Hermes Agent.",
|
||
"hermesSchedulesLoading": "Loading schedules…",
|
||
"hermesSchedulesUnavailable": "Schedules unavailable",
|
||
"hermesNoSchedulesYet": "No schedules yet",
|
||
"hermesSchedulesSummary": "{active} active · {total, plural, =1{1 schedule} other{{total} schedules}}",
|
||
"hermesReviewSchedules": "Review schedules",
|
||
"hermesScheduledAgentsTitle": "Scheduled agents",
|
||
"workspaceToolImportUrlHost": "Only GitHub tool URLs can be imported.",
|
||
"signInServerDescription": "Use your Open WebUI account to sign in to the server below.",
|
||
"openWebUIServer": "Open WebUI server",
|
||
"serverAddressUnavailable": "Server address unavailable",
|
||
"showPassword": "Show password",
|
||
"hidePassword": "Hide password",
|
||
"reviewerModeEnabled": "Reviewer mode enabled. You can open the demo without a server.",
|
||
"reviewerModeDisabled": "Reviewer mode disabled.",
|
||
"openSourceLicenses": "Open source licenses",
|
||
"directConnectionsTitle": "Direct Connections",
|
||
"directConnectionsSubtitle": "Connect to OpenAI-compatible APIs and Ollama",
|
||
"directConnectionsDescription": "Connect to model providers without Open WebUI. Credentials are stored securely on this device and sent to the provider with requests.",
|
||
"directConnectionsCombinedDescription": "使用从 Open WebUI 同步或仅保存在本机的连接,直接连接模型提供商。",
|
||
"openWebUiDirectConnectionsSectionTitle": "Open WebUI 服务器",
|
||
"openWebUiDirectConnectionsSectionDescription": "保存在 Open WebUI 帐户中,其他已登录的客户端也可使用。",
|
||
"deviceDirectConnectionsSectionTitle": "本机",
|
||
"deviceDirectConnectionsSectionDescription": "凭据安全地保存在本机。",
|
||
"openWebUiDirectProfilesEmptyTitle": "暂无服务器连接",
|
||
"openWebUiDirectProfilesEmptySubtitle": "添加兼容 OpenAI 的 API 连接,即可通过 Open WebUI 同步。",
|
||
"openWebUiDirectConnectionsLoadFailed": "无法从 Open WebUI 同步连接。",
|
||
"openWebUiDirectConnectionSourceLabel": "Open WebUI",
|
||
"deviceDirectConnectionSourceLabel": "本机",
|
||
"openWebUiDirectConnectionUnsupportedAuth": "Conduit 无法安全使用此连接的认证方式。",
|
||
"directConnectionUnavailableLabel": "不可用",
|
||
"openWebUiDirectConnectionEditorDescription": "更改将保存到 Open WebUI 帐户。",
|
||
"openWebUiDirectConnectionProviderDescription": "Open WebUI 用户连接支持兼容 OpenAI 的 API。",
|
||
"openWebUiDirectConnectionFallbackName": "Open WebUI 连接",
|
||
"openWebUiDirectConnectionsUnavailable": "Open WebUI 连接不可用。",
|
||
"directConnectionNoLongerExists": "此连接已不存在。",
|
||
"openWebUiDirectConnectionDeleteMessage": "这会从 Open WebUI 帐户和其他已登录的客户端中移除 {name}。",
|
||
"@openWebUiDirectConnectionDeleteMessage": {"description":"Confirmation message shown before deleting an Open WebUI-synced direct connection.","placeholders":{"name":{"type":"String"}}},
|
||
"addDirectConnection": "Add connection",
|
||
"editDirectConnection": "Edit connection",
|
||
"directConnectionName": "Connection name",
|
||
"directConnectionNameRequired": "Enter a connection name.",
|
||
"directConnectionUrlInvalid": "Use a valid http:// or https:// URL.",
|
||
"directConnectionCredentialsReentryRequired": "Re-enter credentials when changing servers.",
|
||
"directConnectionApiKeyRequired": "Enter an API key or choose no authentication.",
|
||
"directConnectionHeaderNameRequired": "Enter a header name, then add the header.",
|
||
"directConnectionCredentialTransferTitle": "Use credentials with new server?",
|
||
"directConnectionCredentialTransferMessage": "This sends the API key and complete custom-header map to the new server. Only continue if you trust it.",
|
||
"directConnectionCredentialTransferConfirm": "Use credentials",
|
||
"directConnectionSaveFailed": "Could not save this connection.",
|
||
"directConnectionSaveConflict": "此连接已在其他位置更改。请重新打开后再保存。",
|
||
"directConnectionReachFailed": "Could not reach the provider.",
|
||
"directConnectionDeleteTitle": "Delete connection?",
|
||
"directConnectionDeleteMessage": "This removes {name} and its credentials from this device.",
|
||
"directConnectionDeleteFailed": "Could not delete this connection.",
|
||
"directConnectionProbeConnected": "Connected",
|
||
"directConnectionProbeConnectedModels": "{count, plural, =1{Connected · 1 model} other{Connected · {count} models}}",
|
||
"directProvider": "Provider type",
|
||
"openAICompatible": "OpenAI-compatible",
|
||
"ollama": "Ollama",
|
||
"openRouterProviderName": "OpenRouter",
|
||
"directApiBaseUrl": "Base URL",
|
||
"directOpenRouterUrlInvalid": "Use OpenRouter’s HTTPS /api/v1 root (global or EU).",
|
||
"directOpenRouterBaseUrlDescription": "Uses your OpenRouter API key, authenticated model catalog, and Conduit-managed tools.",
|
||
"directOpenRouterChatCompletionsDescription": "Chat Completions is used for native web search, image generation, PDF parsing, and reusable PDF annotations.",
|
||
"directCompletionApi": "Completion API",
|
||
"directChatCompletions": "Chat Completions",
|
||
"directResponses": "Responses",
|
||
"directChatCompletionsDescription": "Works with OpenAI-compatible providers such as LM Studio, vLLM, LocalAI, and OpenRouter.",
|
||
"directResponsesDescription": "Use the typed Responses event stream. Choose this only when the provider exposes /responses.",
|
||
"directApiVersion": "API version",
|
||
"directApiVersionDescription": "Optional. Adds the api-version query parameter required by Azure OpenAI endpoints.",
|
||
"directAuthentication": "Authentication",
|
||
"noAuthentication": "No authentication",
|
||
"bearerToken": "Bearer token",
|
||
"directApiKeyHeader": "API-key header",
|
||
"directApiKeyHeaderDescription": "Sends the credential in the api-key header used by Azure OpenAI.",
|
||
"directApiKey": "API key",
|
||
"directCustomHeaders": "Custom headers",
|
||
"directManualModelIds": "Manual model IDs",
|
||
"directManualModelIdsDescription": "可选。如果服务器无法列出模型,请每行输入一个 ID。",
|
||
"@directManualModelIdsDescription": {"placeholders":{}},
|
||
"directModelIdPrefix": "Model ID prefix",
|
||
"directModelIdPrefixDescription": "Optional. Adds a visible namespace such as studio.model-name without changing the model ID sent to the provider.",
|
||
"directModelTags": "Model tags",
|
||
"directModelTagsDescription": "Optional. Separate tags with commas or new lines.",
|
||
"syncDirectHistory": "Open WebUI history",
|
||
"syncDirectHistorySubtitle": "New direct chats sync when signed in. Existing chats keep their current location.",
|
||
"directHistoryLocalOnlySubtitle": "New direct chats stay on this device. Existing chats keep their current location.",
|
||
"backendChooserDirectTitle": "Connect directly",
|
||
"backendChooserDirectSubtitle": "Use an OpenAI-compatible API or Ollama without Open WebUI.",
|
||
"testDirectConnection": "Test connection",
|
||
"directConnectionTestUnavailable": "Connection testing is not available yet.",
|
||
"finishDirectSetup": "Start chatting",
|
||
"directProfilesEmptyTitle": "No direct connections yet",
|
||
"directProfilesEmptySubtitle": "Add an OpenAI-compatible or Ollama server to get started.",
|
||
"directConnectionsSectionTitle": "Connections",
|
||
"directSavedDataUnreadable": "The saved connection data could not be read.",
|
||
"directSecureStorageUnavailable": "Check secure storage access and try again.",
|
||
"onDevice": "On device",
|
||
"directConnectionError": "Direct connection error",
|
||
"directAttachmentUnsupported": "This direct model does not support this attachment.",
|
||
"backendChooserOpenWebUITitle": "Open WebUI",
|
||
"hermesMemoryKeyDescription": "The memory key scopes the agent's long-term memory to you (X-Hermes-Session-Key). A stable key is generated automatically the first time you chat if you leave this blank.",
|
||
"moreModels": "More models",
|
||
"reasoningEffort": "Effort",
|
||
"reasoningEffortLow": "Low",
|
||
"reasoningEffortMedium": "Medium",
|
||
"reasoningEffortHigh": "High",
|
||
"reasoningEffortMinimal": "最低",
|
||
"reasoningEffortExtraHigh": "极高",
|
||
"reasoningEffortMaximum": "最高",
|
||
"reasoningEffortNone": "无",
|
||
"customReasoningEffort": "Custom effort",
|
||
"customReasoningEffortHint": "Enter a provider-supported effort",
|
||
"proxyServerVerificationFailed": "Could not verify the Open WebUI server. The proxy session may have expired or be invalid. Please try again.",
|
||
"proxyManualSignInRequired": "Authentication failed. Please try signing in manually.",
|
||
"sidebarSyncingChats": "Syncing chats",
|
||
"sidebarSyncingNotes": "Syncing notes",
|
||
"sidebarFinishingSync": "Finishing sync",
|
||
"loadMermaidPreview": "Load Mermaid preview",
|
||
"loadChartPreview": "Load chart preview",
|
||
"loadPdfPreview": "Load PDF preview: {title}",
|
||
"ollamaCloudDefaultName": "Ollama Cloud",
|
||
"ollamaCloudBaseUrlHint": "https://ollama.com",
|
||
"ollamaCloudBaseUrlDescription": "Use https://ollama.com with an API key for Ollama Cloud.",
|
||
"ollamaModelLoaded": "Loaded",
|
||
"ollamaModelActions": "Model memory",
|
||
"ollamaModelActionsDescription": "Manage this model in Ollama's RAM or VRAM.",
|
||
"ollamaLoadModel": "Load model",
|
||
"ollamaLoadModelDescription": "Warm it now to make the first response faster.",
|
||
"ollamaUnloadModel": "Unload model",
|
||
"ollamaUnloadModelDescription": "Free its RAM or VRAM. It loads automatically on the next message.",
|
||
"ollamaUnloadModelConfirmTitle": "Unload {name}?",
|
||
"ollamaUnloadModelConfirmMessage": "This frees the model's RAM or VRAM. Ollama will load it again automatically when you send a message.",
|
||
"ollamaKeepAlive": "Keep alive",
|
||
"ollamaKeepAliveDescription": "Applied to this model after each chat request.",
|
||
"ollamaKeepAliveServerDefault": "Server default",
|
||
"ollamaKeepAliveFiveMinutes": "5 minutes",
|
||
"ollamaKeepAliveThirtyMinutes": "30 minutes",
|
||
"ollamaKeepAliveOneHour": "1 hour",
|
||
"ollamaKeepAliveAlways": "Always loaded",
|
||
"ollamaKeepAliveImmediate": "Unload after every response",
|
||
"ollamaKeepAliveCustom": "Custom",
|
||
"ollamaKeepAliveCustomHint": "Examples: 10m, 24h, 3600, -1, or 0",
|
||
"ollamaKeepAliveInvalid": "Use seconds or a duration such as 10m or 24h.",
|
||
"ollamaModelLoadedMessage": "{name} is loaded.",
|
||
"ollamaModelUnloadedMessage": "{name} was unloaded.",
|
||
"ollamaModelActionFailed": "Could not update this model's memory state.",
|
||
"ollamaThinking": "Thinking",
|
||
"ollamaCloudModelActionsDescription": "Configure how this Ollama Cloud model responds.",
|
||
"ollamaThinkingDescription": "Choose how much reasoning the model should use. Available levels depend on the model.",
|
||
"ollamaThinkingAutomatic": "Automatic",
|
||
"ollamaThinkingDisabled": "Off",
|
||
"ollamaThinkingLow": "Low",
|
||
"ollamaThinkingMedium": "Medium",
|
||
"ollamaThinkingHigh": "High",
|
||
"ollamaThinkingMaximum": "Maximum",
|
||
"releaseNotesSupportPromptHeading": "喜欢 Conduit 吗?",
|
||
"releaseNotesSupportPromptMessage": "一条简短的评价能帮助更多人发现 Conduit。一点小小的打赏能支持我继续开发。无论哪一种,对我都意义重大。",
|
||
"directConnectProvider": "连接提供商",
|
||
"directConnectProviderTitle": "连接提供商",
|
||
"directConnectionEnabledSubtitle": "在模型选择器中显示此连接的模型。",
|
||
"directConnectionDetailsTitle": "连接详情",
|
||
"directBaseUrlDescription": "请包含提供商要求的 API 前缀,通常为 /v1。",
|
||
"directConfiguredReplacePlaceholder": "已配置,输入新值以替换",
|
||
"directApiKeyPlaceholder": "输入 API 密钥",
|
||
"hermesOnboardingFailed": "无法完成 Hermes 设置。请检查安全存储后重试。",
|
||
"hermesConnectionDetailsTitle": "连接详情",
|
||
"hermesMemoryKeyShortDescription": "将智能体的长期记忆限定于你。留空时 Conduit 会创建密钥。",
|
||
"hermesConnectAction": "连接 Hermes",
|
||
"hermesToolCount": "{count} 个工具",
|
||
"@hermesToolCount": {"placeholders":{"count":{"type":"int"}}},
|
||
"hermesNoToolsets": "服务器未报告工具集。",
|
||
"hermesToolsetsNewSessions": "更改将应用于新的 Hermes 会话。现有聊天将保留当前工具。",
|
||
"hermesServerStatusTitle": "服务器状态",
|
||
"hermesNoServerStatus": "服务器未报告状态。",
|
||
"hermesLegacySessionToken": "旧版会话令牌",
|
||
"hermesLegacySessionTokenHint": "粘贴 Hermes 会话令牌",
|
||
"hermesGatewayStopped": "Hermes 仪表板已在线,但 Desktop Gateway 已停止。请在 Hermes 服务器上启动网关,然后重新测试。",
|
||
"hermesProfile": "Hermes 配置文件",
|
||
"hermesProfileLabel": "配置文件",
|
||
"hermesRefreshProfiles": "刷新配置文件",
|
||
"hermesDesktopAuthentication": "桌面身份验证",
|
||
"hermesDashboardAuthHelp": "在登录窗口中打开 Hermes 仪表板,然后返回此处测试连接。",
|
||
"hermesAuthLegacy": "旧版",
|
||
"hermesAuthNative": "原生",
|
||
"hermesAuthDashboard": "仪表板",
|
||
"hermesNativeSignIn": "使用 Hermes 登录",
|
||
"hermesDashboardSignIn": "打开仪表板登录",
|
||
"hermesGatewayAccessHeaders": "网关访问标头",
|
||
"hermesGatewayAccessHeadersHelp": "用于受保护的 Hermes 仪表板的可选标头。",
|
||
"hermesDesktopGateway": "Desktop Gateway",
|
||
"hermesReloadSkills": "重新加载技能",
|
||
"hermesNoInstalledSkills": "没有已安装的技能",
|
||
"hermesMcpServers": "MCP 服务器",
|
||
"hermesSignOut": "退出 Hermes",
|
||
"hermesActionFailed": "Hermes 操作失败。",
|
||
"hermesToolsetUpdateFailed": "Hermes 工具集更新失败。",
|
||
"hermesJobStateLabel": "状态",
|
||
"hermesJobDeliveryLabel": "投递",
|
||
"hermesJobLastLabel": "上次",
|
||
"hermesJobNextLabel": "下次",
|
||
"hermesJobRunHistory": "运行历史",
|
||
"hermesApprovalAllowOnce": "允许一次",
|
||
"hermesApprovalAllowSession": "本次会话允许",
|
||
"hermesApprovalAlwaysAllow": "始终允许",
|
||
"hermesClarificationTitle": "Hermes 需要澄清",
|
||
"hermesSudoTitle": "Hermes 需要 sudo 权限",
|
||
"hermesSecretTitle": "Hermes 需要一个密钥",
|
||
"hermesMcpSetupTitle": "Hermes 需要设置 MCP",
|
||
"hermesResponseSent": "已发送回复",
|
||
"hermesNotNow": "暂不",
|
||
"hermesSetUp": "设置",
|
||
"hermesSensitiveResponse": "敏感回复",
|
||
"hermesResponse": "回复",
|
||
"hermesSendResponse": "发送回复",
|
||
"hermesFastTier": "快速层级",
|
||
"hermesFastTierOn": "开启",
|
||
"hermesFastTierOff": "关闭",
|
||
"hermesTurnSteer": "引导",
|
||
"hermesTurnSendNext": "发送下一条",
|
||
"hermesTurnControlsUnsupported": "请升级 Hermes 以启用安全的轮次控制。",
|
||
"sidebarHermesTab": "Hermes",
|
||
"markdownShowMoreLines": "再显示 {count} 行",
|
||
"@markdownShowMoreLines": {"placeholders":{"count":{"type":"int"}}},
|
||
"markdownShowLess": "收起",
|
||
"voiceBargeIn": "插话",
|
||
"voiceBargeInDescription": "助手说话时继续聆听,以便你随时打断。",
|
||
"voiceCallSpeakerOn": "打开扬声器",
|
||
"voiceCallSpeakerOff": "关闭扬声器",
|
||
"colorScheme": "配色方案",
|
||
"channelEmptyHint": "创建频道以开始群组对话。",
|
||
"passwordChangeDescription": "更新账户密码",
|
||
"profileDetailsSummary": "个人简介、性别和生日",
|
||
"notificationRequiresMaster": "请开启通知以更改此设置。",
|
||
"notificationRequiresSound": "请开启声音以更改此设置。",
|
||
"enabled": "开启",
|
||
"disabled": "关闭",
|
||
"hermesJobNew": "新建定时任务",
|
||
"hermesJobAdminDisabled": "此服务器已停用任务管理。计划为只读。",
|
||
"hermesJobEmptyMessage": "创建定时任务以自动运行提示词。",
|
||
"hermesJobLoadFailed": "无法加载定时任务。请检查 Hermes 连接后重试。",
|
||
"hermesJobCreateFailed": "无法创建定时任务。",
|
||
"hermesJobCreated": "定时任务已创建。",
|
||
"hermesJobPaused": "已暂停",
|
||
"hermesJobRunNow": "立即运行",
|
||
"hermesJobEdit": "编辑定时任务",
|
||
"hermesJobDelete": "删除定时任务",
|
||
"hermesJobResumeFailed": "无法恢复定时任务。",
|
||
"hermesJobPauseFailed": "无法暂停定时任务。",
|
||
"hermesJobResumed": "定时任务已恢复。",
|
||
"hermesJobPausedSuccess": "定时任务已暂停。",
|
||
"hermesJobRunFailed": "无法运行定时任务。",
|
||
"hermesJobStarted": "定时任务已启动。",
|
||
"hermesJobUpdateFailed": "无法更新定时任务。",
|
||
"hermesJobUpdated": "定时任务已更新。",
|
||
"hermesJobDeleteTitle": "删除任务",
|
||
"hermesJobDeleteMessage": "要删除此定时任务吗?此操作无法撤销。",
|
||
"hermesJobDeleteFailed": "无法删除定时任务。",
|
||
"hermesJobDeleted": "定时任务已删除。",
|
||
"hermesJobEditorEditTitle": "编辑任务",
|
||
"hermesJobNameHint": "每日摘要",
|
||
"hermesJobPromptLabel": "提示词",
|
||
"hermesJobPromptHint": "每次运行时,智能体应执行什么操作?",
|
||
"hermesJobScheduleLabel": "计划",
|
||
"hermesJobScheduleHint": "0 9 * * * 或 every 2h",
|
||
"hermesJobTooLong": "请勿超过 {count} 个字符",
|
||
"hermesJobScheduleInvalid": "请输入时长、间隔、日期、时间或有效的 cron 计划。",
|
||
"hermesJobScheduleHelp": "可使用 cron(0 9 * * *)、间隔(every 2h)、延迟(30m)或 ISO 日期和时间。",
|
||
"hermesJobsSheetSubtitle": "暂停计划或查看接下来要运行的内容。",
|
||
"hermesJobsSheetReview": "查看运行时间并暂停计划。",
|
||
"hermesJobsManageDescription": "创建、编辑、运行或删除计划。",
|
||
"hermesJobsEmptyManageHint": "使用“管理”创建定时提示词。",
|
||
"hermesLastStatus": "最近状态:{status}",
|
||
"hermesSessionUntitled": "未命名对话",
|
||
"hermesSessionFork": "分叉",
|
||
"hermesSessionRenameTitle": "重命名对话",
|
||
"hermesSessionNameHint": "对话名称",
|
||
"hermesSessionDeleteTitle": "删除对话",
|
||
"hermesSessionDeleteMessage": "要删除此 Hermes 对话吗?此操作无法撤销。",
|
||
"hermesSessionForkFailed": "无法分叉对话。",
|
||
"hermesSessionRenameFailed": "无法重命名对话。",
|
||
"hermesSessionDeleteFailed": "无法删除对话。",
|
||
"hermesSessionLoadFailed": "无法加载此对话。请检查连接后重试。",
|
||
"hermesMemoryKeyFieldLabel": "记忆键",
|
||
"directMcpServersTitle": "MCP servers", "directMcpEmptyTitle": "No MCP servers yet", "directMcpReachabilityHelp": "Add a Streamable HTTP endpoint that this phone can reach.", "directMcpEditorTitle": "Edit MCP server", "directMcpAddTitle": "Add MCP server", "directMcpName": "Server name", "directMcpEndpoint": "Streamable HTTP endpoint", "directMcpBearerToken": "Bearer token (optional)", "directMcpCustomHeaders": "Custom headers (optional)", "directMcpCustomHeadersHint": "One per line: Name: Value", "directMcpTestConnection": "Test connection", "directMcpTesting": "Testing connection…", "directMcpTestSucceeded": "Connected — {count} tools found.", "directMcpTestFailed": "Could not list tools from this MCP server.", "directMcpSaveFailed": "Could not save this MCP server.", "directMcpLoadFailed": "Could not load MCP servers from secure storage.", "directMcpMissing": "This MCP server no longer exists.", "directMcpCredentialTransferTitle": "Use credentials with new server?", "directMcpCredentialTransferMessage": "This sends the bearer token and custom headers to the new server. Continue only if you trust it. Cancel saves the server without credentials.", "directMcpCredentialTransferConfirm": "Use credentials", "directMcpDeleteTitle": "Delete MCP server?", "directMcpDeleteMessage": "This removes {name} and its credentials from this device.", "directMcpDeleteFailed": "Could not delete this MCP server.", "directMcpAuthMode": "Authentication", "directMcpAuthNone": "None", "directMcpAuthBearer": "Bearer token", "directMcpAuthOAuth": "OAuth", "directMcpOAuthConnect": "Connect in browser", "directMcpOAuthReconnect": "Reconnect in browser", "directMcpOAuthDisconnect": "Disconnect OAuth", "directMcpOAuthPending": "Waiting for authorization in the browser…", "directMcpOAuthConnected": "OAuth connected.", "directMcpOAuthConnectionDetails": "Connected to {issuerHost} · {scopes}", "directMcpOAuthNoScopes": "No scopes reported", "directMcpOAuthConnectFailed": "Could not connect this MCP server with OAuth.", "directMcpOAuthDisconnectFailed": "Could not disconnect OAuth from this MCP server.", "directMcpApprovalTitle": "Tool approval", "directMcpApprovalAllowOnce": "Allow once", "directMcpApprovalAllowSession": "Allow for session", "directMcpApprovalAllowAlways": "Always allow", "directMcpApprovalAlwaysTitle": "Always allow this tool?", "directMcpApprovalAlwaysMessage": "{serverName} will be allowed to run {toolName} without asking again. The approval is revoked automatically if the tool schema changes.", "@directMcpApprovalAlwaysMessage": {"placeholders":{"serverName":{"type":"String"},"toolName":{"type":"String"}}}, "directMcpApprovalSaveFailed": "Could not remember this approval. You can retry or choose another option.", "directMcpApprovalDeny": "Deny", "directMcpApprovalAllowed": "Allowed once", "directMcpApprovalAllowedSession": "Allowed for session", "directMcpApprovalAllowedAlways": "Always allowed", "directMcpApprovalDenied": "Denied", "directMcpApprovalExpired": "Approval expired", "directMcpRememberedApprovalsTitle": "Always allowed tools", "directMcpRememberedApprovalsSubtitle": "These exact tools can run without asking while their server and input schema remain unchanged.", "directMcpRememberedApprovalRevoke": "Revoke", "directMcpRememberedApprovalsRevokeAll": "Revoke all", "directMcpRememberedApprovalRevokeFailed": "Could not revoke the remembered approval."
|
||
,"directMcpContentAction": "MCP content"
|
||
,"directMcpContentTitle": "MCP content"
|
||
,"directMcpContentServer": "MCP server"
|
||
,"directMcpContentSearch": "Search prompts and resources"
|
||
,"directMcpContentPrompts": "Prompts"
|
||
,"directMcpContentResources": "Resources"
|
||
,"directMcpContentEmpty": "This server has no prompts or resources."
|
||
,"directMcpContentNoMatches": "No matching prompts or resources."
|
||
,"directMcpContentLoadFailed": "Could not load content from this MCP server."
|
||
,"directMcpContentRefresh": "Refresh MCP content"
|
||
,"directMcpContentPreviewTitle": "Preview"
|
||
,"directMcpContentInsert": "Insert"
|
||
,"directMcpContentPromptHeading": "MCP prompt from {serverName}: {promptName}"
|
||
,"@directMcpContentPromptHeading": {"placeholders":{"serverName":{"type":"String"},"promptName":{"type":"String"}}}
|
||
,"directMcpContentResourceHeading": "MCP resource from {serverName}: {resourceUri}"
|
||
,"@directMcpContentResourceHeading": {"placeholders":{"serverName":{"type":"String"},"resourceUri":{"type":"String"}}}
|
||
,"directMcpContentRoleUser": "User"
|
||
,"directMcpContentRoleAssistant": "Assistant"
|
||
,"directMcpContentRequestFailed": "Could not load this MCP content. Try again."
|
||
,"directMcpContentUnsupported": "This item is binary or unsupported. Choose a text prompt or text resource."
|
||
,"directMcpContentChanged": "This item changed on the server. Refresh and choose it again."
|
||
,"directMcpContentTooLarge": "This content is too large to insert."
|
||
,"directMcpContentComposerTooLarge": "The draft and this content exceed the 256 KiB message limit. Shorten the draft or content and try again."
|
||
,"directMcpContentLoading": "Loading MCP content…"
|
||
,"directMcpInsecureCredentialsTitle": "Send credentials without encryption?"
|
||
,"directMcpInsecureCredentialsMessage": "This server uses unencrypted HTTP. Your bearer token, OAuth token, and custom headers could be read or changed on the network."
|
||
,"directMcpInsecureCredentialsConfirm": "Send without encryption"
|
||
,"hermesSessionTooLarge": "此对话过大,无法在此设备上加载。"
|
||
,"hermesSessionNotFound": "此对话在 Hermes 服务器上已不可用。"
|
||
,"hermesSessionLoadFailedDetail": "无法加载此对话:{detail}"
|
||
,"@hermesSessionLoadFailedDetail": {
|
||
"placeholders": {
|
||
"detail": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
}
|
||
,"directBearerDescription": "通过 Authorization: Bearer 请求头发送凭据。大多数 OpenAI 兼容服务器(llama.cpp、vLLM、LM Studio、Ollama)都采用此方式。"
|
||
,"directApiKeyHeaderAzureOnlyDescription": "通过 api-key 请求头发送凭据。仅用于 Azure OpenAI;其他 OpenAI 兼容服务器需要 Bearer 令牌。"
|
||
}
|