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
+131 -131
View File
@@ -57,7 +57,7 @@
"apps": "應用"
},
"settings": {
"backToChat": "返回對話",
"backToChat": "返回聊天",
"sidebar": {
"title": "設定",
"ariaLabel": "設定分區"
@@ -65,14 +65,14 @@
"nav": {
"general": "一般",
"byok": "BYOK",
"overview": "Overview",
"appearance": "Appearance",
"models": "Models",
"providers": "Providers",
"image": "Image",
"browser": "Web",
"overview": "概覽",
"appearance": "外觀",
"models": "模型",
"providers": "提供商",
"image": "圖片",
"browser": "網頁",
"runtime": "系統",
"advanced": "Security",
"advanced": "安全",
"cliApps": "CLI 應用",
"mcp": "MCP",
"apps": "應用"
@@ -81,60 +81,60 @@
"interface": "介面",
"ai": "AI",
"system": "系統",
"status": "Status",
"localPreferences": "Local preferences",
"presets": "Presets",
"status": "狀態",
"localPreferences": "本機偏好",
"presets": "預設",
"imageGeneration": "圖片生成",
"imageDefaults": "預設值",
"webSearch": "Web search",
"webBehavior": "Behavior",
"identity": "Identity",
"webuiSafety": "網頁端安全",
"capabilities": "能",
"webSearch": "網頁搜尋",
"webBehavior": "行為",
"identity": "身分",
"webuiSafety": "WebUI 安全",
"capabilities": "能",
"cliApps": "CLI 應用",
"mcp": "MCP 服務",
"apps": "應用",
"nativeHost": "App",
"nativeHost": "原生宿主",
"hostSafety": "App 安全"
},
"rows": {
"theme": "主題",
"language": "語言",
"provider": "提供者",
"provider": "供應商",
"model": "模型",
"restart": "重新啟動 nanobot",
"configPath": "設定檔路徑",
"activePreset": "Active preset",
"gateway": "Gateway",
"restartState": "Restart state",
"pendingChanges": "待處理變更",
"selectedPreset": "Selected preset",
"presetModel": "Preset model",
"density": "Density",
"activityMode": "Activity detail",
"codeWrap": "Code wrapping",
"maxResults": "Max results",
"timeout": "Timeout",
"jinaReader": "Jina reader",
"configPath": "配置路徑",
"activePreset": "目前預設",
"gateway": "閘道",
"restartState": "重啟狀態",
"pendingChanges": "待套用更改",
"selectedPreset": "已選預設",
"presetModel": "預設模型",
"density": "密度",
"activityMode": "活動細節",
"codeWrap": "程式碼換行",
"maxResults": "最大結果數",
"timeout": "逾時",
"jinaReader": "Jina 閱讀器",
"imageGeneration": "圖片生成",
"imageProvider": "圖片服務商",
"imageProviderStatus": "服務商狀態",
"imageProviderBase": "服務商位址",
"imageProvider": "圖片供應商",
"imageProviderStatus": "供應商狀態",
"imageProviderBase": "供應商位址",
"imageModel": "圖片模型",
"defaultAspectRatio": "預設比例",
"defaultImageSize": "預設尺寸",
"maxImagesPerTurn": "每輪最圖片數",
"maxImagesPerTurn": "每輪最圖片數",
"imageSaveDir": "儲存目錄",
"botName": "Bot name",
"botIcon": "Bot icon",
"timezone": "Timezone",
"botName": "Bot 名稱",
"botIcon": "Bot 圖示",
"timezone": "時區",
"workspacePath": "預設工作區",
"localServiceAccess": "Local services",
"webuiDefaultAccess": "Default access",
"localServiceAccess": "本機服務",
"webuiDefaultAccess": "預設權限",
"currentModel": "目前設定",
"brandLogos": "品牌標誌",
"cliAppsCatalog": "CLI 應用目錄",
"cliAppsFilter": "CLI 應用篩選",
"brandLogos": "品牌 Logo",
"cliAppsCatalog": "目錄",
"cliAppsFilter": "篩選",
"engine": "引擎",
"logs": "日誌",
"diagnostics": "診斷",
@@ -143,75 +143,75 @@
"help": {
"theme": "在淺色與深色外觀之間切換。",
"language": "選擇 WebUI 使用的語言。",
"provider": "選擇新模型請求使用的服務提供者。",
"provider": "選擇處理新模型請求的供應商。",
"model": "設定 nanobot 預設使用的模型名稱。",
"configPath": "目前閘道正在使用的設定檔。",
"selectedPreset": "Named presets are read-only here; edit them in config.json.",
"presetModel": "Switch to Default to edit model and provider from the WebUI.",
"density": "Stored only in this browser.",
"activityMode": "Choose how much agent activity chrome to show by default.",
"codeWrap": "Keep long code lines readable on smaller screens.",
"maxResults": "Results returned by each web_search call.",
"timeout": "Seconds before a search provider request times out.",
"jinaReader": "Use Jina Reader for web_fetch when available.",
"imageGeneration": "當已設定圖片服務商時,在對話中開放 generate_image。",
"imageProvider": "選擇 generate_image 使用的登錄服務商。",
"imageProviderStatus": "圖片生成會重用「服務商」中的憑證。",
"imageModel": "傳送給所選圖片服務商的模型名稱。",
"defaultAspectRatio": "提示詞未指定長寬比時使用。",
"defaultImageSize": "傳送給支援此功能的服務商的尺寸提示。",
"maxImagesPerTurn": "單次 generate_image 請求上限。",
"botName": "顯示在 nanobot 使用名稱的地方。",
"botIcon": "顯示在 bot 名稱旁的短 emoji 或文字。",
"timezone": "用於排程需要時間感知的回覆。",
"localServiceAccess": "允許完全存取模式下的 shell 命令存取 localhost 服務。",
"webuiDefaultAccess": "用於沒有單獨選擇權限的網頁端對話。",
"securityManagedControls": "Web fetches always protect local, private, and metadata services. Core channel safety stays in config.json.",
"currentModel": "選擇 nanobot 接下來回覆時使用的模型設定。",
"selectedModelProvider": "由目前模型決定。",
"selectedModelValue": "由目前模型決定。",
"brandLogos": "標誌會從品牌網域載入,並提供本地圖示作為備援。",
"cliAppsCatalog": "瀏覽 nanobot 可在本機執行的應用 CLI。",
"cliAppsFilter": "按應用、類或能力搜尋。",
"logs": "開啟App引擎日誌資料夾。",
"diagnostics": "匯出一份支援排查用的執行階段報告。",
"localServiceAccessNative": "允許完全存取模式下的 shell 命令存取這台 Mac 上的服務。",
"webuiDefaultAccessNative": "用於沒有單獨選擇權限的原生 App 對話。",
"contextWindow": "選擇這個模型設定預設使用的上下文預算。"
"configPath": "目前閘道使用中的配置檔。",
"selectedPreset": "命名預設在此為唯讀;請在 config.json 中編輯。",
"presetModel": "切回 Default 後可在 WebUI 中編輯模型與供應商。",
"density": "只儲存在此瀏覽器中。",
"activityMode": "選擇預設顯示多少 agent 活動細節。",
"codeWrap": "讓長程式碼行在小螢幕上也易讀。",
"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": "用於排程需要時間感知的回覆。",
"localServiceAccess": "允許完全訪問權限下的 shell 命令訪問 localhost 服務。",
"webuiDefaultAccess": "用於沒有單獨專案權限的 Web 聊天。",
"securityManagedControls": "網頁抓取始終保護本機、內網和 metadata 服務。核心渠道安全仍由 config.json 管理。",
"currentModel": "用於新的回覆。",
"selectedModelProvider": "由選取的模型決定。",
"selectedModelValue": "由選取的模型決定。",
"brandLogos": "在設定中顯示第三方提供商和 CLI 圖示。",
"cliAppsCatalog": "只安裝 nanobot 可在本機執行的應用 CLI 轉接器;不會改動原生應用。",
"cliAppsFilter": "按應用、類或能力搜尋。",
"logs": "開啟原生引擎日誌資料夾。",
"diagnostics": "匯出一份用於支援排查的小型執行報告。",
"localServiceAccessNative": "允許完全訪問權限下的 shell 命令訪問這台 Mac 上的服務。",
"webuiDefaultAccessNative": "用於沒有單獨專案權限的原生聊天。",
"contextWindow": "選擇此模型配置的預設上下文預算。"
},
"values": {
"light": "淺色",
"dark": "深色",
"notAvailable": "不可用",
"enabled": "Enabled",
"disabled": "Disabled",
"restartPending": "等待重新啟動",
"enabled": "已啟用",
"disabled": "已停用",
"restartPending": "等待重",
"ready": "就緒",
"comfortable": "Comfortable",
"compact": "Compact",
"auto": "Auto",
"expanded": "Expanded",
"on": "On",
"off": "Off",
"defaultPermission": "Default Permission",
"fullAccess": "Full Access",
"configured": "Configured",
"notConfigured": "Not configured",
"pending": "待套用",
"restartingEngine": "正在重新啟動"
"comfortable": "舒適",
"compact": "緊湊",
"auto": "自動",
"expanded": "展開",
"on": "開啟",
"off": "關閉",
"defaultPermission": "預設權限",
"fullAccess": "完全訪問權限",
"configured": "已配置",
"notConfigured": "未配置",
"pending": "等待中",
"restartingEngine": "正在重"
},
"status": {
"loading": "正在載入設定...",
"loadError": "無法載入設定",
"unsaved": "有未儲存的更。",
"unsaved": "有未儲存的更。",
"upToDate": "已是最新。",
"savedRestart": "已儲存。重新啟動 nanobot 後生效。",
"restartAfterSaving": "儲存變更後,可在準備好時重新啟動。",
"savedRestartApply": "已儲存,可在準備好時重新啟動。",
"imageProviderRestart": "圖片服務商變更已儲存,可在準備好時重新啟動。",
"hostRestartAfterSaving": "儲存後nanobot 會自動重新啟動引擎。",
"hostRestartPending": "已儲存,將在適當時重新啟動引擎。",
"hostApiUnavailable": "宿主操作只能在原生 App 內使用。",
"restartAfterSaving": "儲存更改後,在合適時重啟。",
"savedRestartApply": "已儲存。準備好後重啟。",
"imageProviderRestart": "圖片供應商更改已儲存。準備好後重啟。",
"hostRestartAfterSaving": "儲存後 nanobot 會重啟引擎。",
"hostRestartPending": "已儲存。準備好後會重啟引擎。",
"hostApiUnavailable": "宿主操作在原生應用中可用。",
"logsOpened": "已開啟日誌資料夾。",
"logsOpenFailed": "無法開啟日誌資料夾。",
"diagnosticsExported": "診斷已匯出到 {{path}}。",
@@ -219,13 +219,13 @@
},
"actions": {
"save": "儲存",
"saving": "儲存",
"saving": "正在儲存",
"edit": "編輯",
"cancel": "取消",
"open": "開啟",
"export": "匯出",
"opening": "開啟...",
"exporting": "匯出..."
"opening": "正在開啟...",
"exporting": "正在匯出..."
},
"byok": {
"description": "自帶 provider key。Nanobot 會從目前 config 讀取這些值,只有已設定的 provider 才能在一般設定中選擇。",
@@ -250,7 +250,7 @@
"tabs": {
"ariaLabel": "BYOK 憑證類型",
"llm": "LLM",
"webSearch": "Web Search"
"webSearch": "網頁搜尋"
},
"webSearch": {
"provider": "搜尋 provider",
@@ -270,44 +270,44 @@
}
},
"overview": {
"model": "Current model",
"providers": "Providers",
"configuredCount": "{{count}} configured",
"totalProviders": "{{count}} available",
"webSearch": "Web search",
"model": "目前模型",
"providers": "供應商",
"configuredCount": "已配置 {{count}} ",
"totalProviders": "{{count}} 個可用",
"webSearch": "網頁搜尋",
"imageGeneration": "圖片生成",
"workspace": "Workspace"
"workspace": "工作區"
},
"providers": {
"searchPlaceholder": "Search providers",
"noMatches": "No providers match this search.",
"saveProvider": "儲存服務商"
"searchPlaceholder": "搜尋供應商",
"noMatches": "沒有符合的供應商。",
"saveProvider": "儲存供應商"
},
"image": {
"selectProvider": "選擇服務商",
"selectProvider": "選擇供應商",
"selectAspect": "選擇比例",
"selectSize": "選擇尺寸",
"configureProvider": "設定服務商",
"missingCredential": "啟用圖片生成前請先設定此服務商。"
"configureProvider": "配置供應商",
"missingCredential": "啟用圖片生成前請先配置此供應商。"
},
"models": {
"selectModel": "選擇模型",
"addConfiguration": "新增設定",
"newConfiguration": "新增模型設定",
"newConfigurationHelp": "把服務商和模型儲存為一個可直接切換的選項。",
"configurationName": "設定名稱",
"addConfiguration": "新增配置",
"newConfiguration": "新增模型配置",
"newConfigurationHelp": "將供應商與模型儲存為一選項。",
"configurationName": "配置名稱",
"configurationNameHelp": "重新命名這個已儲存的模型配置。",
"configurationNamePlaceholder": "快速寫作",
"searchModels": "搜尋或輸入模型 ID",
"useCustomModel": "使用",
"loadingModels": "正在載入模型...",
"searchCatalog": "搜尋服務商目錄來選擇模型。",
"modelsAvailable": "可用",
"searchCatalog": "搜尋供應商目錄來選擇模型。",
"modelsAvailable": "可用",
"noModelResults": "沒有符合的模型。",
"loadFailed": "模型列表不可用。",
"loadFailed": "模型列表不可用。",
"unsupportedModelList": "手動輸入模型 ID。",
"providerNotConfigured": "先設定這個服務商再載入模型。",
"autoProviderCustomOnly": "自動服務商模式使用自訂模型 ID。"
"providerNotConfigured": "載入模型前請先配置此供應商。",
"autoProviderCustomOnly": "自動供應商模式使用自訂模型 ID。"
},
"timezone": {
"select": "選擇時區",
@@ -402,29 +402,29 @@
"thirdPartyBrands": "產品名稱、標誌與品牌均屬於其各自擁有者。使用僅為識別用途,並不代表背書。"
},
"apps": {
"description": "新增 nanobot 可在聊天中使用的 App CLI MCP 服務。",
"description": "新增 nanobot 可在聊天中使用的 App CLI MCP 服務。",
"cliLabel": "CLI",
"mcpLabel": "MCP",
"filterAll": "全部",
"filterCli": "CLI 應用",
"filterMcp": "MCP 服務",
"enabledSummary": "已啟用 {{count}} 個",
"caption": "{{cli}} CLI · {{mcp}} MCP",
"caption": "{{cli}} CLI · {{mcp}} MCP",
"searchPlaceholder": "搜尋應用",
"featured": "精選",
"loading": "正在載入應用...",
"empty": "沒有符合篩選條件的應用。"
"empty": "沒有符合的應用。"
},
"oauth": {
"authentication": "OAuth 證",
"authentication": "OAuth 證",
"signIn": "登入",
"signingIn": "正在登入…",
"signingIn": "登入中...",
"signInAgain": "重新登入",
"signOut": "登出",
"signedInAs": "已登入為 {{account}}",
"signInHelp": "這台裝置登入;不會 API key 寫入設定。",
"signInHelp": "這台裝置登入;不會在配置中儲存 API key。",
"signInRequired": "需要登入",
"signInBeforeSaving": "請先登入這個 OAuth 提供商,再儲存為目前模型提供商。",
"signInBeforeSaving": "將此 OAuth 供應商設為目前模型供應商前,請先登入。",
"signedIn": "已登入",
"notSignedIn": "未登入"
}