fix(webui): stabilize streaming output and settings i18n

This commit is contained in:
Xubin Ren
2026-06-01 00:00:37 +08:00
parent 31722120b7
commit 34386fe676
13 changed files with 1164 additions and 1048 deletions
+73 -73
View File
@@ -57,7 +57,7 @@
"apps": "应用"
},
"settings": {
"backToChat": "返回对话",
"backToChat": "返回聊天",
"sidebar": {
"title": "设置",
"ariaLabel": "设置分区"
@@ -91,30 +91,30 @@
"cliApps": "CLI 应用",
"mcp": "MCP 服务",
"identity": "身份",
"webuiSafety": "网页端安全",
"webuiSafety": "WebUI 安全",
"capabilities": "能力",
"apps": "应用",
"nativeHost": "App",
"hostSafety": "App 安全"
"nativeHost": "原生宿主",
"hostSafety": "应用安全"
},
"models": {
"selectModel": "选择模型",
"addConfiguration": "添加配置",
"newConfiguration": "新建模型配置",
"newConfigurationHelp": "把服务商和模型保存为一个可直接切换的选项。",
"newConfigurationHelp": "把提供商和模型保存成一键选项。",
"configurationName": "配置名称",
"configurationNameHelp": "重命名这个已保存的模型配置。",
"configurationNamePlaceholder": "快速写作",
"searchModels": "搜索或输入模型 ID",
"useCustomModel": "使用",
"loadingModels": "正在加载模型...",
"searchCatalog": "搜索服务商目录来选择模型。",
"modelsAvailable": "可用",
"searchCatalog": "搜索提供商目录来选择模型。",
"modelsAvailable": "可用",
"noModelResults": "没有匹配的模型。",
"loadFailed": "模型列表不可用。",
"loadFailed": "模型列表不可用。",
"unsupportedModelList": "手动输入模型 ID。",
"providerNotConfigured": "先配置这个服务商再加载模型。",
"autoProviderCustomOnly": "自动服务商模式使用自定义模型 ID。"
"providerNotConfigured": "加载模型前请先配置此提供商。",
"autoProviderCustomOnly": "自动提供商模式使用自定义模型 ID。"
},
"rows": {
"theme": "主题",
@@ -126,25 +126,25 @@
"activePreset": "当前预设",
"gateway": "网关",
"restartState": "重启状态",
"pendingChanges": "待处理更改",
"pendingChanges": "待应用更改",
"currentModel": "当前配置",
"selectedPreset": "选中的预设",
"presetModel": "预设模型",
"density": "密度",
"activityMode": "活动细节",
"activityMode": "活动详情",
"codeWrap": "代码换行",
"brandLogos": "品牌 Logo",
"maxResults": "最大结果数",
"timeout": "超时",
"jinaReader": "Jina Reader",
"jinaReader": "Jina 阅读器",
"imageGeneration": "图片生成",
"imageProvider": "图片服务商",
"imageProviderStatus": "服务商状态",
"imageProviderBase": "服务商地址",
"imageProvider": "图片提供商",
"imageProviderStatus": "提供商状态",
"imageProviderBase": "提供商地址",
"imageModel": "图片模型",
"defaultAspectRatio": "默认比例",
"defaultImageSize": "默认尺寸",
"maxImagesPerTurn": "每轮最图片数",
"maxImagesPerTurn": "每轮最图片数",
"imageSaveDir": "保存目录",
"botName": "Bot 名称",
"botIcon": "Bot 图标",
@@ -162,41 +162,41 @@
"help": {
"theme": "在浅色和深色外观之间切换。",
"language": "选择 WebUI 使用的语言。",
"provider": "选择新模型请求使用的服务商。",
"provider": "选择处理新模型请求的提供商。",
"model": "设置 nanobot 默认使用的模型名称。",
"configPath": "当前网关正在使用的配置文件。",
"currentModel": "选择 nanobot 接下来回复时使用的模型配置。",
"selectedModelProvider": "由当前模型决定。",
"selectedModelValue": "由当前模型决定。",
"selectedPreset": "命名预设在这里只读;需要编辑时请改 config.json。",
"presetModel": "切回 Default 后可在 WebUI 编辑模型和服务商。",
"density": "保存在当前浏览器。",
"currentModel": "用于新的回复。",
"selectedModelProvider": "由选中的模型决定。",
"selectedModelValue": "由选中的模型决定。",
"selectedPreset": "命名预设在这里只读;请在 config.json 中编辑。",
"presetModel": "切回 Default 后可在 WebUI 编辑模型和提供商。",
"density": "保存在浏览器。",
"activityMode": "选择默认显示多少 agent 活动细节。",
"codeWrap": "让较小屏幕上的长代码行更易读。",
"brandLogos": "在设置显示第三方服务商和 CLI 的 Logo。",
"maxResults": "每次 web_search 返回的结果数。",
"timeout": "搜索服务商请求超时秒数。",
"codeWrap": "让长代码行在小屏幕上也易读。",
"brandLogos": "在设置显示第三方提供商和 CLI 图标。",
"maxResults": "每次 web_search 调用返回的结果数。",
"timeout": "搜索提供商请求超时前的秒数。",
"jinaReader": "可用时为 web_fetch 使用 Jina Reader。",
"imageGeneration": "当已配置图片服务商时,在对话中开放 generate_image。",
"imageProvider": "选择 generate_image 使用的服务商。",
"imageProviderStatus": "图片生成复用服务商页里的凭证配置。",
"imageModel": "发送给所选图片服务商的模型名称。",
"defaultAspectRatio": "当提示词没有选择比例时使用。",
"defaultImageSize": "发送给支持该能力的服务商的尺寸提示。",
"maxImagesPerTurn": "单次 generate_image 请求允许的图片上限。",
"botName": "显示在 nanobot 使用名称的地方。",
"botIcon": "显示在 bot 名称旁的短 emoji 或文。",
"timezone": "用于计划任务和需要时间感知的回复。",
"cliAppsCatalog": "只安装 nanobot 在本机调用应用时需要的 CLI 适配层,不触碰应用本体。",
"cliAppsFilter": "按应用、类或能力搜索。",
"localServiceAccess": "允许完全访问模式下的 shell 命令访问 localhost 服务。",
"webuiDefaultAccess": "用于没有单独选择权限的网页端对话。",
"imageGeneration": "配置图片提供商后,在聊天中开放 generate_image。",
"imageProvider": "选择 generate_image 使用的注册提供商。",
"imageProviderStatus": "图片生成复用「提供商」里的凭据。",
"imageModel": "发送给所选图片提供商的模型名称。",
"defaultAspectRatio": "当提示词没有指定比例时使用。",
"defaultImageSize": "发送给支持此选项的提供商的尺寸提示。",
"maxImagesPerTurn": "单次 generate_image 请求可生成的图片上限。",
"botName": "显示在 nanobot 使用展示名称的地方。",
"botIcon": "显示在 Bot 名称旁的短 emoji 或文。",
"timezone": "用于日程和需要时间感知的回复。",
"cliAppsCatalog": "只安装 nanobot 可本地运行的应用 CLI 适配器;不会改动原生应用。",
"cliAppsFilter": "按应用、类或能力搜索。",
"localServiceAccess": "允许完全访问权限下的 shell 命令访问 localhost 服务。",
"webuiDefaultAccess": "用于没有单独项目权限的 Web 聊天。",
"securityManagedControls": "网页抓取始终保护本机、内网和元数据服务。核心渠道安全仍由 config.json 管理。",
"logs": "打开App引擎日志文件夹。",
"diagnostics": "导出一份用于支持排查的运行报告。",
"localServiceAccessNative": "允许完全访问模式下的 shell 命令访问这台 Mac 上的服务。",
"webuiDefaultAccessNative": "用于没有单独选择权限的原生 App 对话。",
"contextWindow": "选择这个模型配置默认使用的上下文预算。"
"logs": "打开原生引擎日志文件夹。",
"diagnostics": "导出一份用于支持排查的小型运行报告。",
"localServiceAccessNative": "允许完全访问权限下的 shell 命令访问这台 Mac 上的服务。",
"webuiDefaultAccessNative": "用于没有单独项目权限的原生聊天。",
"contextWindow": "选择模型配置默认上下文预算。"
},
"timezone": {
"select": "选择时区",
@@ -251,9 +251,9 @@
"serverUrl": "URL",
"transport": "传输方式",
"command": "命令",
"args": "参数 JSON",
"args": "Args JSON",
"headers": "Headers JSON",
"env": "环境变量 JSON",
"env": "Env JSON",
"timeout": "工具超时",
"advancedOptions": "高级选项",
"hideAdvanced": "收起高级",
@@ -299,13 +299,13 @@
"compact": "紧凑",
"auto": "自动",
"expanded": "展开",
"on": "开",
"off": "关",
"on": "开",
"off": "关",
"defaultPermission": "默认权限",
"fullAccess": "完全访问",
"fullAccess": "完全访问权限",
"configured": "已配置",
"notConfigured": "未配置",
"pending": "待应用",
"pending": "等待中",
"restartingEngine": "正在重启"
},
"status": {
@@ -314,12 +314,12 @@
"unsaved": "有未保存的更改。",
"upToDate": "已是最新。",
"savedRestart": "已保存。重启 nanobot 后生效。",
"restartAfterSaving": "保存后,在合适时重启。",
"savedRestartApply": "已保存,可稍后重启。",
"imageProviderRestart": "图片服务商改动已保存,可稍后重启。",
"hostRestartAfterSaving": "保存后nanobot 会自动重启引擎。",
"hostRestartPending": "已保存,将在合适时重启引擎。",
"hostApiUnavailable": "宿主操作只能在原生 App 内使用。",
"restartAfterSaving": "保存更改后,在合适时重启。",
"savedRestartApply": "已保存。准备好后重启。",
"imageProviderRestart": "图片提供商更改已保存。准备好后重启。",
"hostRestartAfterSaving": "保存后 nanobot 会重启引擎。",
"hostRestartPending": "已保存。准备好后会重启引擎。",
"hostApiUnavailable": "宿主操作在原生应用中可用。",
"logsOpened": "已打开日志文件夹。",
"logsOpenFailed": "无法打开日志文件夹。",
"diagnosticsExported": "诊断已导出到 {{path}}。",
@@ -327,13 +327,13 @@
},
"actions": {
"save": "保存",
"saving": "保存",
"saving": "正在保存",
"edit": "编辑",
"cancel": "取消",
"open": "打开",
"export": "导出",
"opening": "打开...",
"exporting": "导出..."
"opening": "正在打开...",
"exporting": "正在导出..."
},
"byok": {
"description": "自带服务商密钥。Nanobot 会从当前 config 读取这些值,只有已配置的服务商才能在通用设置里选择。",
@@ -387,19 +387,19 @@
"workspace": "工作区"
},
"providers": {
"searchPlaceholder": "搜索服务商",
"noMatches": "没有匹配的服务商。",
"saveProvider": "保存服务商"
"searchPlaceholder": "搜索提供商",
"noMatches": "没有匹配的提供商。",
"saveProvider": "保存提供商"
},
"legal": {
"thirdPartyBrands": "产品名称、Logo 和品牌归各自所有者所有;此处仅用于识别,不代表背书或合作。"
},
"image": {
"selectProvider": "选择服务商",
"selectProvider": "选择提供商",
"selectAspect": "选择比例",
"selectSize": "选择尺寸",
"configureProvider": "配置服务商",
"missingCredential": "启用图片生成前请先配置这个服务商。"
"configureProvider": "配置提供商",
"missingCredential": "启用图片生成前请先配置此提供商。"
},
"apps": {
"description": "添加 nanobot 可在聊天中使用的 App CLI 和 MCP 服务。",
@@ -409,22 +409,22 @@
"filterCli": "CLI 应用",
"filterMcp": "MCP 服务",
"enabledSummary": "已启用 {{count}} 个",
"caption": "{{cli}} CLI · {{mcp}} MCP",
"caption": "{{cli}} CLI · {{mcp}} MCP",
"searchPlaceholder": "搜索应用",
"featured": "精选",
"loading": "正在加载应用...",
"empty": "没有符合筛选条件的应用。"
"empty": "没有匹配的应用。"
},
"oauth": {
"authentication": "OAuth 认证",
"signIn": "登录",
"signingIn": "正在登录…",
"signingIn": "登录中...",
"signInAgain": "重新登录",
"signOut": "退出登录",
"signedInAs": "已登录为 {{account}}",
"signInHelp": "这台设备登录;不会 API key 写入配置。",
"signInHelp": "这台设备登录;不会在配置中保存 API key。",
"signInRequired": "需要登录",
"signInBeforeSaving": "先登录这个 OAuth 提供商,然后再保存为当前模型提供商。",
"signInBeforeSaving": "将此 OAuth 提供商为当前模型提供商前,请先登录。",
"signedIn": "已登录",
"notSignedIn": "未登录"
}