conduit/lib/l10n/app_zh.arb
cogwheel 4e73c9a0ea
Some checks are pending
L10n / l10n (push) Waiting to run
Fix ten reported issues and vendor Hermes Agent as an API reference (#725)
* 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.
2026-09-15 00:48:03 +05:30

3269 lines
139 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"@@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 令牌。"
}