Xubin Ren ab9f49970d
feat(desktop): polish desktop shell and shared WebUI surfaces (#4195)
* feat(desktop): add native host scaffold

* feat(webui): track turns and usage in gateway

* feat(webui): polish desktop chat experience

* feat(apps): add ArcGIS and Joplin logos

* feat(desktop): polish shell and shared surfaces

* fix(webui): avoid preview chips for glob references

* test: align CI expectations for token fallback

* feat(webui): preview prompt rail entries

* feat(webui): add prompt navigator drawer

* style(webui): refine prompt navigator placement

* style(webui): align prompt navigator with header actions

* style(webui): simplify prompt navigator header

* refactor(webui): clean thread resource refresh

* feat(desktop): add native reply notifications

* fix(webui): preserve desktop restart and replay state

* fix(desktop): harden gateway proxy startup

* fix(web): fall back when readability is unavailable

* fix(desktop): hide window instead of closing on macos

* fix(webui): unify desktop header actions

* fix(webui): simplify prompt history rows

* fix(desktop): log notification delivery failures

* chore(desktop): clean source package artifacts

* fix(cron): support one-time relative reminders

* fix(webui): reveal scroll button in place

* Revert "fix(cron): support one-time relative reminders"

This reverts commit 4c4661da120a3c7283e0768412bae48604e7390b.

* refactor(webui): extract token usage heatmap

* docs(desktop): clarify contributor guides

---------

Co-authored-by: chengyongru <2755839590@qq.com>
2026-06-06 19:49:33 +08:00

867 lines
32 KiB
JSON
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.

{
"app": {
"brand": "nanobot",
"loading": {
"connecting": "正在連線到 nanobot…",
"boot": "正在載入 nanobot…"
},
"error": {
"title": "無法連線到 nanobot",
"gatewayHint": "請確認 gateway 已啟動(`nanobot gateway`),並且目前頁面與 gateway 在同一台機器上開啟。"
},
"auth": {
"title": "需要驗證",
"hint": "輸入 gateway 設定中 tokenIssueSecret 配置的密鑰。",
"placeholder": "密碼",
"submit": "連線",
"invalid": "密碼無效,請再試一次。"
},
"account": {
"section": "帳戶",
"logoutHint": "中斷此瀏覽器與 gateway 的連線。",
"logout": "登出"
},
"system": {
"section": "系統",
"restartHint": "重新啟動 nanobot 以套用執行階段變更。",
"restart": "重新啟動 nanobot",
"restarting": "正在重新啟動...",
"restartEngine": "重新啟動引擎",
"restartingEngine": "正在重新啟動引擎..."
},
"restart": {
"completed": "重新啟動已完成,耗時 {{seconds}} 秒。"
},
"documentTitle": {
"base": "nanobot",
"chat": "{{title}} · nanobot"
},
"meta": {
"description": "nanobot Web UI —— 與你的 nanobot 工作區對話。"
}
},
"sidebar": {
"navigation": "側邊欄導覽",
"collapse": "收合側邊欄",
"newChat": "新增對話",
"searchAria": "搜尋",
"searchPlaceholder": "搜尋",
"searchResults": "搜尋結果",
"noSearchResults": "沒有符合的對話。",
"recent": "最近對話",
"settings": "設定",
"language": {
"label": "語言",
"ariaLabel": "切換語言"
},
"apps": "應用",
"skills": {
"title": "技能"
}
},
"settings": {
"backToChat": "返回聊天",
"sidebar": {
"title": "設定",
"ariaLabel": "設定分區"
},
"nav": {
"general": "一般",
"byok": "BYOK",
"overview": "概覽",
"appearance": "外觀",
"models": "模型",
"providers": "提供商",
"image": "圖片",
"browser": "網頁",
"runtime": "系統",
"advanced": "安全",
"cliApps": "CLI 應用",
"mcp": "MCP",
"apps": "應用",
"skills": "技能"
},
"sections": {
"interface": "介面",
"ai": "AI",
"system": "系統",
"status": "狀態",
"localPreferences": "本機偏好",
"presets": "預設",
"imageGeneration": "圖片生成",
"imageDefaults": "預設值",
"webSearch": "網頁搜尋",
"webBehavior": "行為",
"identity": "身分",
"webuiSafety": "WebUI 安全",
"capabilities": "能力",
"cliApps": "CLI 應用",
"mcp": "MCP 服務",
"apps": "應用",
"nativeHost": "原生宿主",
"hostSafety": "App 安全"
},
"rows": {
"theme": "主題",
"language": "語言",
"provider": "供應商",
"model": "模型",
"restart": "重新啟動 nanobot",
"configPath": "配置路徑",
"activePreset": "目前預設",
"gateway": "閘道",
"restartState": "重啟狀態",
"pendingChanges": "待套用更改",
"selectedPreset": "已選預設",
"presetModel": "預設模型",
"density": "密度",
"activityMode": "活動細節",
"codeWrap": "程式碼換行",
"maxResults": "最大結果數",
"timeout": "逾時",
"jinaReader": "Jina 閱讀器",
"imageGeneration": "圖片生成",
"imageProvider": "圖片供應商",
"imageProviderStatus": "供應商狀態",
"imageProviderBase": "供應商位址",
"imageModel": "圖片模型",
"defaultAspectRatio": "預設比例",
"defaultImageSize": "預設尺寸",
"maxImagesPerTurn": "每輪最大圖片數",
"imageSaveDir": "儲存目錄",
"botName": "Bot 名稱",
"botIcon": "Bot 圖示",
"timezone": "時區",
"workspacePath": "預設工作區",
"localServiceAccess": "本機服務",
"webuiDefaultAccess": "預設權限",
"currentModel": "目前設定",
"brandLogos": "品牌 Logo",
"cliAppsCatalog": "目錄",
"cliAppsFilter": "篩選",
"engine": "引擎",
"logs": "日誌",
"diagnostics": "診斷",
"contextWindow": "上下文視窗"
},
"help": {
"theme": "在淺色與深色外觀之間切換。",
"language": "選擇 WebUI 使用的語言。",
"provider": "選擇處理新模型請求的供應商。",
"model": "設定 nanobot 預設使用的模型名稱。",
"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": "已啟用",
"disabled": "已停用",
"restartPending": "等待重啟",
"ready": "就緒",
"privateEngine": "私有引擎",
"unixSocket": "Unix socket",
"defaultWorkspace": "預設工作區",
"comfortable": "舒適",
"compact": "緊湊",
"auto": "自動",
"expanded": "展開",
"on": "開啟",
"off": "關閉",
"defaultPermission": "預設權限",
"fullAccess": "完全訪問權限",
"configured": "已配置",
"notConfigured": "未配置",
"pending": "等待中",
"restartingEngine": "正在重啟"
},
"status": {
"loading": "正在載入設定...",
"loadError": "無法載入設定",
"unsaved": "有未儲存的更改。",
"upToDate": "已是最新。",
"savedRestart": "已儲存。重新啟動 nanobot 後生效。",
"restartAfterSaving": "儲存更改後,在合適時重啟。",
"savedRestartApply": "已儲存。準備好後重啟。",
"imageProviderRestart": "圖片供應商更改已儲存。準備好後重啟。",
"hostRestartAfterSaving": "儲存後 nanobot 會重啟引擎。",
"hostRestartPending": "已儲存。準備好後會重啟引擎。",
"hostApiUnavailable": "宿主操作僅在原生應用中可用。",
"logsOpened": "已開啟日誌資料夾。",
"logsOpenFailed": "無法開啟日誌資料夾。",
"diagnosticsExported": "診斷已匯出到 {{path}}。",
"diagnosticsExportFailed": "無法匯出診斷。"
},
"actions": {
"save": "儲存",
"saving": "正在儲存",
"edit": "編輯",
"cancel": "取消",
"open": "開啟",
"export": "匯出",
"opening": "正在開啟...",
"exporting": "正在匯出..."
},
"byok": {
"description": "自帶 provider key。Nanobot 會從目前 config 讀取這些值,只有已設定的 provider 才能在一般設定中選擇。",
"configured": "已設定",
"notConfigured": "未設定",
"configuredSection": "已設定",
"notConfiguredSection": "未設定",
"showMore": "再顯示 {{count}} 個",
"showLess": "收合",
"apiKey": "API key",
"apiBase": "API base",
"apiKeyPlaceholder": "輸入 API key",
"apiKeyConfiguredPlaceholder": "留空則保留目前 key",
"configuredKeyHint": "已設定的 key",
"apiBasePlaceholder": "使用 provider 預設地址",
"apiKeyRequired": "需要 API key 才能設定此 provider。",
"showApiKey": "顯示 API key",
"hideApiKey": "隱藏 API key",
"noConfiguredProviders": "沒有已設定的 provider",
"configureFirst": "請先在 BYOK 設定 provider。",
"openByok": "開啟 BYOK",
"tabs": {
"ariaLabel": "BYOK 憑證類型",
"llm": "LLM",
"webSearch": "網頁搜尋"
},
"webSearch": {
"provider": "搜尋 provider",
"providerHelp": "選擇 web search 工具使用的後端。",
"selectProvider": "選擇 provider",
"credentials": "憑證",
"noCredentialRequired": "不需要 key",
"noCredentialHelp": "DuckDuckGo 不需要儲存 API key。",
"apiKeyHelp": "儲存到 config 後只顯示遮罩提示。",
"baseUrl": "Base URL",
"baseUrlHelp": "SearXNG 需要你自己的實例網址。",
"baseUrlPlaceholder": "https://search.example.com",
"apiKeyRequired": "此搜尋 provider 需要 API key。",
"baseUrlRequired": "SearXNG 需要 Base URL。",
"missingCredential": "填寫必要憑證後才能儲存。",
"saveHint": "變更會套用到新的 web search 請求。"
}
},
"overview": {
"model": "目前模型",
"providers": "供應商",
"configuredCount": "已配置 {{count}} 個",
"totalProviders": "共 {{count}} 個可用",
"webSearch": "網頁搜尋",
"imageGeneration": "圖片生成",
"workspace": "工作區"
},
"usage": {
"title": "Token 活動",
"shortTitle": "Token Usage",
"subtitle": "最近 12 個月由供應商回報的 token 用量。",
"empty": "新的模型回覆產生後,這裡會顯示 token 活動。",
"totalTokens": "累計 Token 數",
"peakTokens": "峰值 Token 數",
"thirtyDayTokens": "30 天 Token 數",
"currentStreak": "目前連續天數",
"longestStreak": "最長連續天數",
"daysValue": "{{count}} 天",
"last30": "30 天",
"activeDays": "活躍天數",
"requests": "請求數",
"estimated": "估算",
"includesEstimates": "包含估算",
"cellTitle": "{{date}}{{tokens}} tokens{{requests}} 次請求",
"sources": {
"user": "對話",
"api": "API",
"cron": "自動任務",
"dream": "記憶整理",
"system": "系統"
}
},
"providers": {
"searchPlaceholder": "搜尋供應商",
"noMatches": "沒有符合的供應商。",
"saveProvider": "儲存供應商"
},
"image": {
"selectProvider": "選擇供應商",
"selectAspect": "選擇比例",
"selectSize": "選擇尺寸",
"configureProvider": "配置供應商",
"missingCredential": "啟用圖片生成前請先配置此供應商。"
},
"models": {
"selectModel": "選擇模型",
"addConfiguration": "新增配置",
"newConfiguration": "新增模型配置",
"newConfigurationHelp": "將供應商與模型儲存為一鍵選項。",
"configurationName": "配置名稱",
"configurationNameHelp": "重新命名這個已儲存的模型配置。",
"configurationNamePlaceholder": "快速寫作",
"searchModels": "搜尋或輸入模型 ID",
"useCustomModel": "使用",
"loadingModels": "正在載入模型...",
"searchCatalog": "搜尋供應商目錄來選擇模型。",
"modelsAvailable": "可用",
"noModelResults": "沒有符合的模型。",
"loadFailed": "模型列表不可用。",
"unsupportedModelList": "手動輸入模型 ID。",
"providerNotConfigured": "載入模型前請先配置此供應商。",
"autoProviderCustomOnly": "自動供應商模式使用自訂模型 ID。"
},
"timezone": {
"select": "選擇時區",
"search": "搜尋時區",
"empty": "沒有符合的時區。"
},
"cliApps": {
"allCategories": "全部分類",
"availableCount": "{{count}} 個應用",
"installedCount": "已安裝 {{count}} 個",
"summary": "已安裝 {{installed}} / {{total}} 個 CLI",
"filterAll": "全部",
"filterInstalled": "已安裝的 CLI",
"filterNotInstalled": "未安裝",
"searchPlaceholder": "搜尋 CLI",
"statusInstalled": "已安裝",
"statusAvailable": "可用",
"statusMissing": "缺少相依項",
"statusUnsupported": "不支援",
"statusNotInstalled": "未安裝",
"unsupported": "不支援",
"loading": "正在載入 CLI 應用...",
"empty": "沒有符合此篩選條件的 CLI 應用。",
"readyTitle": "@{{name}} 已就緒",
"readyStatus": "就緒",
"readyPrompt": "使用 @{{name}} 查看這個 CLI 能做什麼。",
"readyTry": "試用 @{{name}}",
"readyCopied": "已複製",
"openChat": "開啟聊天",
"requires": "需要",
"test": "測試 CLI",
"update": "更新 CLI",
"uninstall": "解除安裝 CLI",
"install": "安裝 CLI",
"unavailable": "不可用",
"noDescription": "暫無描述。"
},
"mcp": {
"allCategories": "全部分類",
"summary": "已啟用 {{installed}} / {{total}} 個預設",
"filterAll": "全部",
"filterInstalled": "已啟用",
"filterNotInstalled": "未啟用",
"searchPlaceholder": "搜尋 MCP 預設",
"moreOptions": "更多 MCP 選項",
"moreOptionsSubtitle": "新增自訂服務,或匯入 mcp.json。",
"customTitle": "自訂 MCP",
"customSubtitle": "新增任意 stdio、HTTP 或 SSE MCP 服務。",
"customAction": "自訂",
"importAction": "匯入",
"serverName": "服務名稱",
"serverUrl": "URL",
"transport": "傳輸方式",
"command": "指令",
"args": "Args JSON",
"headers": "Headers JSON",
"env": "Env JSON",
"timeout": "工具逾時",
"advancedOptions": "進階選項",
"hideAdvanced": "隱藏進階",
"saveCustom": "儲存 MCP",
"configImport": "匯入 mcp.json",
"importConfig": "匯入",
"restartRequired": "重新啟動 nanobot 以連接更新後的 MCP 工具。",
"toolsFound": "{{count}} 個工具",
"loading": "正在載入 MCP 預設...",
"empty": "沒有符合此篩選條件的 MCP 預設。",
"openDocs": "開啟文件",
"test": "測試",
"remove": "移除",
"enable": "啟用",
"enabled": "已啟用",
"setup": "連接",
"configure": "連接",
"connectTitle": "連接 {{name}}",
"connectHint": "從你的帳號設定中加入金鑰。",
"saveAndEnable": "儲存並啟用",
"updateSetup": "更新設定",
"configured": "已設定",
"keepExisting": "留空以保留目前值",
"statusConfigured": "已設定",
"statusMissingCredentials": "需要金鑰",
"statusMissingDependency": "需要相依項",
"statusComingSoon": "即將推出",
"statusNotInstalled": "未啟用",
"toolScope": "工具",
"allTools": "全部",
"noTools": "無",
"testForTools": "執行測試以檢查並選擇個別工具。"
},
"legal": {
"thirdPartyBrands": "產品名稱、標誌與品牌均屬於其各自擁有者。使用僅為識別用途,並不代表背書。"
},
"apps": {
"description": "新增 nanobot 可在聊天中使用的 App CLI 和 MCP 服務。",
"cliLabel": "CLI",
"mcpLabel": "MCP",
"filterAll": "全部",
"filterCli": "CLI 應用",
"filterMcp": "MCP 服務",
"enabledSummary": "已啟用 {{count}} 個",
"caption": "{{cli}} 個 CLI · {{mcp}} 個 MCP",
"searchPlaceholder": "搜尋應用",
"featured": "精選",
"loading": "正在載入應用...",
"empty": "沒有符合的應用。"
},
"oauth": {
"authentication": "OAuth 認證",
"signIn": "登入",
"signingIn": "登入中...",
"signInAgain": "重新登入",
"signOut": "登出",
"signedInAs": "已登入為 {{account}}",
"signInHelp": "從這台裝置登入;不會在配置中儲存 API key。",
"signInRequired": "需要登入",
"signInBeforeSaving": "將此 OAuth 供應商設為目前模型供應商前,請先登入。",
"signedIn": "已登入",
"notSignedIn": "未登入"
},
"skills": {
"description": "查看此 agent 在對話中可以載入的指令技能。",
"caption": "{{available}} 個可用 · 共 {{total}} 個",
"featured": "Agent 技能",
"empty": "暫無可用技能。",
"sourceWorkspace": "自訂",
"sourceBuiltin": "內建",
"statusAvailable": "可用",
"statusUnavailable": "不可用",
"unavailableReason": "缺少:{{reason}}",
"openDetails": "查看 {{name}} 詳情",
"loadingDetail": "正在載入技能詳情...",
"loadFailed": "無法載入技能詳情。",
"descriptionTitle": "完整描述",
"source": "來源",
"status": "狀態",
"requirements": "需求",
"noRequirements": "沒有明確需求。",
"commands": "命令",
"environment": "環境變數",
"missingCommands": "缺 CLI",
"missingEnvironment": "缺 ENV",
"unavailableReasonLabel": "不可用原因",
"rawInstructions": "原始 SKILL.md",
"rawInstructionsEmpty": "沒有原始說明。",
"detailDescription": "{{name}} 的詳細資訊。"
}
},
"chat": {
"fallbackTitle": "對話 {{id}}",
"loading": "載入中…",
"noSessions": "目前還沒有會話。",
"showMore": "再顯示 {{count}} 個",
"collapsed": "已折疊 {{count}} 個對話",
"showLess": "收起",
"actions": "「{{title}}」的會話操作",
"newInProject": "在 {{project}} 中開始新對話",
"activity": {
"running": "Agent 正在執行",
"complete": "Agent 已完成"
},
"pin": "置頂",
"unpin": "取消置頂",
"rename": "重新命名",
"renameTitle": "重新命名對話",
"renameDescription": "為這個對話設定僅用於 WebUI 側邊欄的名稱。",
"renamePlaceholder": "對話名稱",
"renameProjectTitle": "重新命名專案",
"renameProjectDescription": "為這個專案設定僅用於 WebUI 側邊欄的名稱。",
"renameProjectPlaceholder": "專案名稱",
"renameSave": "儲存",
"archive": "封存",
"unarchive": "取消封存",
"showArchived": "顯示封存",
"hideArchived": "隱藏封存",
"delete": "刪除",
"newChat": "新增對話",
"groups": {
"pinned": "置頂",
"all": "對話",
"projects": "專案",
"today": "今天",
"yesterday": "昨天",
"earlier": "更早",
"archived": "已封存"
}
},
"deleteConfirm": {
"title": "刪除這個對話?",
"description": "此操作無法復原。",
"cancel": "取消",
"confirm": "刪除"
},
"connection": {
"idle": "閒置",
"connecting": "連線中…",
"open": "已連線",
"reconnecting": "重新連線中…",
"closed": "已中斷",
"error": "連線錯誤"
},
"thread": {
"loadingConversation": "正在載入對話…",
"empty": {
"greetings": {
"workOn": "我們要一起做點什麼?",
"start": "今天從哪裡開始?",
"build": "今天一起構建什麼?",
"tackle": "我們要一起解決什麼?"
},
"quickActions": {
"plan": {
"title": "建立專案計畫",
"prompt": "幫我為接下來要做的事情寫一份簡潔的專案計畫。"
},
"analyze": {
"title": "分析這些資料",
"prompt": "幫我分析這些資料,並指出最重要的模式。"
},
"brainstorm": {
"title": "腦力激盪想法",
"prompt": "圍繞這個問題腦力激盪幾個實用方案,並說明取捨。"
},
"code": {
"title": "撰寫程式碼",
"prompt": "幫我為這個任務撰寫程式碼,先從最小可用改動開始。"
},
"summarize": {
"title": "總結這份文件",
"prompt": "幫我總結這份文件,並列出關鍵重點。"
},
"more": {
"title": "更多",
"prompt": "展示幾個你在這個工作區裡可以幫我的實用方式。"
}
},
"imageQuickActions": {
"icon": {
"title": "設計應用程式圖示",
"prompt": "生成一個乾淨的 1:1 nanobot 應用程式圖示:友善的機器人、簡潔向量風格、柔和藍白配色,不要文字。"
},
"sticker": {
"title": "製作貼圖",
"prompt": "生成一張可愛貼圖風格的小型機器人助理圖片,背景像透明貼紙,表情活潑有趣。"
},
"poster": {
"title": "建立海報",
"prompt": "生成一張個人 AI 助理的精緻海報概念圖,現代構圖、清楚的視覺層級,適合登陸頁展示。"
},
"product": {
"title": "產品樣機",
"prompt": "生成一張對話式 AI Web 應用的乾淨產品樣機圖,極簡介面、高級光影、真實裝置邊框。"
},
"portrait": {
"title": "風格化頭像",
"prompt": "生成一個友善 AI 夥伴的風格化頭像,柔和光線、細節豐富但親切,現代插畫風格。"
},
"edit": {
"title": "編輯圖片",
"prompt": "幫我編輯一張圖片。先請我上傳或指定要編輯的圖片,然後生成編輯後的結果。"
}
}
},
"header": {
"toggleSidebar": "切換側邊欄",
"newChat": "開始新對話",
"toggleTheme": "從頂部切換主題",
"settings": "開啟設定",
"sessionInfo": "會話詳情"
},
"sessionInfo": {
"title": "會話",
"untitled": "未命名對話",
"automations": "自動任務",
"count": "{{count}}",
"loading": "正在載入自動任務...",
"loadFailed": "無法載入自動任務。",
"empty": "這個會話暫時沒有自動任務。",
"disabled": "已關閉",
"schedule": {
"at": "{{time}}",
"every": "每 {{duration}}",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"unknown": "自訂計畫"
},
"next": {
"label": "下次 {{time}}",
"disabled": "已暫停",
"none": "沒有下次執行"
}
},
"composer": {
"placeholderThread": "輸入訊息…",
"placeholderHero": "你在想什麼?",
"placeholderOpening": "正在開啟新對話…",
"placeholderStreaming": "模型正在回覆…",
"inputAria": "訊息輸入框",
"sendHint": "Enter 送出 · Shift+Enter 換行",
"runRuntimeTitle": "執行中 · {{elapsed}}",
"goalStateStrip": "目標 · {{label}}",
"goalStateFallback": "目標",
"goalStateExpandAria": "查看完整目標",
"goalStateSheetTitle": "目標",
"goalStateCloseAria": "關閉目標",
"send": "送出訊息",
"stop": "停止回覆",
"modelNotConfigured": "模型未配置",
"configureModel": "配置模型",
"queued": {
"label": "待引導提示",
"guide": "引導",
"delete": "刪除引導",
"edit": "編輯引導",
"drag": "拖曳排序"
},
"attachImage": "附加圖片",
"imageMode": {
"label": "圖片生成",
"toggle": "切換圖片生成模式",
"placeholder": "描述或編輯圖片…",
"aspectAria": "圖片畫幅",
"aspectLabel": "圖片畫幅",
"aspect": {
"auto": "自動",
"1_1": "方形 1:1",
"3_4": "直式 3:4",
"9_16": "故事版 9:16",
"4_3": "橫式 4:3",
"16_9": "寬螢幕 16:9"
}
},
"tools": {
"search": "搜尋",
"reason": "推理",
"deepResearch": "深度研究",
"voice": "語音輸入"
},
"slash": {
"ariaLabel": "斜線命令",
"label": "命令",
"navigateHint": "↑↓ 選擇",
"selectHint": "Enter/Tab 填入",
"closeHint": "Esc 關閉",
"commands": {
"new": {
"title": "新增對話",
"description": "停止目前任務,並開始新的對話。"
},
"stop": {
"title": "停止目前任務",
"description": "取消這個對話中正在執行的 agent 回合。"
},
"restart": {
"title": "重新啟動 nanobot",
"description": "原地重新啟動 bot 進程。"
},
"status": {
"title": "查看狀態",
"description": "顯示執行環境、provider 和 channel 狀態。"
},
"model": {
"title": "模型",
"description": "查看或切換目前模型預設。"
},
"history": {
"title": "查看對話歷史",
"description": "列印最近 N 則已持久化的對話訊息。"
},
"dream": {
"title": "執行 Dream",
"description": "手動觸發記憶整理。"
},
"dream_log": {
"title": "查看 Dream 日誌",
"description": "查看上一次 Dream 整理變更了什麼。"
},
"dream_restore": {
"title": "恢復記憶",
"description": "將記憶恢復到之前的 Dream 快照。"
},
"goal": {
"title": "長期目標",
"description": "請助理把這則請求當成需要多步驟持續推進的目標。"
},
"help": {
"title": "查看說明",
"description": "列出可用的斜線命令。"
},
"pairing": {
"title": "配對",
"description": "管理配對請求。"
}
},
"badges": {
"current": "目前",
"recent": "最近"
},
"details": {
"goalActive": "目標正在執行",
"goalReady": "開始一個持續目標",
"history": "查看最近訊息",
"stopRunning": "正在執行"
}
},
"encoding": "處理中…",
"remove": "移除附件",
"normalizedSizeHint": "{{orig}} → {{current}}(已自動壓縮)",
"imageRejected": {
"unsupported_type": "不支援的檔案類型",
"too_many_images": "每則訊息最多 {{max}} 張圖片",
"magic_mismatch": "檔案看起來不像真正的圖片",
"decode_failed": "無法解碼這張圖片",
"too_large": "圖片太大,請換一張小一點的",
"io": "無法讀取這個檔案"
},
"mentions": {
"ariaLabel": "應用",
"label": "應用",
"cliGroup": "CLI 應用",
"mcpGroup": "MCP 服務",
"cliBadge": "CLI",
"mcpBadge": "MCP",
"cliDescription": "使用 @{{name}} 呼叫本機 CLI",
"mcpDescription": "使用 @{{name}} 呼叫 MCP 服務"
},
"workspace": {
"accessAria": "工作區存取權限",
"projectAria": "選擇專案",
"projectPlaceholder": "選擇專案",
"default": "預設權限",
"full": "完全存取權限"
}
},
"scrollToBottom": "捲動到底部",
"loadEarlier": "載入更早訊息",
"promptNavigator": {
"open": "開啟輸入導覽",
"title": "輸入列表",
"search": "搜尋輸入",
"noResults": "沒有符合的輸入。",
"jumpTo": "跳到輸入:{{label}}"
}
},
"message": {
"streaming": "串流輸出中",
"assistantTyping": "助理正在輸入",
"toolSingle": "正在使用工具",
"toolMany": "已使用 {{count}} 個工具",
"toolSummary": "{{count}} 個工具",
"toolSummaryMany": "{{count}} 個工具",
"reasoningTools": "推理 · {{count}} 個工具",
"reasoningToolsSingular": "推理 · 1 個工具",
"reasoning": "思考過程",
"reasoningStreaming": "正在思考…",
"reasoningSummary": "推理",
"agentActivitySummary": "{{reasoning}} 步 · {{tools}} 次工具呼叫",
"agentActivityToolsOnly": "{{tools}} 次工具呼叫",
"agentActivityLiveSummary": "進行中… · {{reasoning}} 步 · {{tools}} 次工具呼叫",
"agentActivityLiveToolsOnly": "進行中… · {{tools}} 次工具呼叫",
"imageAttachment": "圖片附件",
"copyReply": "複製回覆",
"copiedReply": "已複製回覆",
"turnLatencyTitle": "本輪耗時(端到端)",
"activityThinkingFor": "思考中,已 {{duration}}",
"activityThought": "已思考",
"activityThoughtFor": "已思考 {{duration}}",
"cliActivityRunningOne": "正在使用 @{{name}}",
"cliActivityRanOne": "已使用 @{{name}}",
"cliActivityFailedOne": "@{{name}} 失敗",
"cliActivityRunningMany": "正在使用 {{count}} 個 CLI 應用",
"cliActivityRanMany": "已使用 {{count}} 個 CLI 應用",
"cliActivityFailedMany": "{{count}} 個 CLI 應用失敗",
"cliRunRunning": "使用中",
"cliRunRan": "已使用",
"cliRunFailed": "失敗",
"automationSourceFallback": "自動化",
"automationTriggered": "自動觸發"
},
"lightbox": {
"title": "圖片預覽",
"open": "檢視圖片",
"prev": "上一張",
"next": "下一張",
"close": "關閉預覽"
},
"filePreview": {
"aria": "檔案預覽",
"close": "關閉檔案預覽",
"loading": "正在載入預覽...",
"failed": "無法預覽這個檔案。",
"routeMissing": "檔案預覽需要最新的 gateway。請重啟 nanobot gateway 後再試。",
"resize": "調整檔案預覽寬度",
"truncated": "檔案較大,目前只顯示前半部分預覽。"
},
"code": {
"fallbackLanguage": "程式碼",
"copyAria": "複製程式碼",
"copy": "複製",
"copied": "已複製"
},
"common": {
"dismiss": "關閉"
},
"errors": {
"messageTooBig": {
"title": "訊息過大",
"body": "伺服器因超過大小限制拒收了上一則訊息。可移除部分圖片或改用較小的圖片後再試。"
},
"workspaceScopeRejected": {
"title": "工作區未變更",
"body": "閘道拒絕了要求的專案或存取權限Nanobot 已繼續使用先前的工作區。"
}
},
"workspace": {
"dialog": {
"defaultProject": "預設工作區",
"manual": "貼上路徑",
"manualPlaceholder": "/Users/name/project",
"usePath": "使用路徑",
"absolutePathRequired": "請輸入這台機器上的絕對資料夾路徑。"
}
}
}