mirror of
https://github.com/NanmiCoder/claude-code-haha.git
synced 2026-10-10 03:43:11 +08:00
fc9f5d554e
Importing an animated pet required a file that was exactly 1536x2288, laid out as 88 seamless cells, with the last two rows holding sixteen distinct gaze angles. No image model emits that. Whatever a user got back from Jimeng or ChatGPT was some fixed size like 1024x1536, so the path ended at "the animation atlas must be exactly 1536x2288 pixels" every time. The third card was worse: "AI-generate full animation" was hardcoded `disabled`, so the one entry point named after what people actually wanted to do was dead. The fix was already in the tree. `scripts/assemble-generated-pet-atlas.py` landed in the same commit as the four built-in pets, which is to say the built-ins were produced this way — it takes an action sheet at any size, slices it on an 8x9 grid, fits each cell to 192x208, mirrors the run row to make run-left, and reuses rows to reach eleven. That capability was never wired to anything a user could reach. `petAtlasNormalize.ts` reimplements it on a canvas in the renderer, so an author draws nine rows and the app derives the rest. Verified against the reference assembler by reversing dada-code's atlas into a nine-row sheet and re-normalizing it: every difference lands on semi-transparent antialiased edges (2314 pixels, max channel delta 14/255) and opaque regions are identical. That residue is canvas premultiplied-alpha round-tripping, not a slicing bug. Three contract details worth stating. Row frame counts are now derived from `PET_ANIMATION_DEFINITIONS` rather than typed out a fourth time; they come out equal to the assembler's `(6,8,8,4,5,8,6,6,6,8,8)`. A sheet already at 1536x2288 passes through byte-for-byte instead of being resliced, because resampling finished artwork buys nothing. And since the validator never inspects the alpha channel, a flattened white background used to import happily and render as a rectangle on the desktop — the renderer now rejects sheets whose atlas is under 5% transparent (the built-ins sit near 78%) with a message that names the actual problem. The copy stops describing the implementation. "Animate one image" and "Import professional animation atlas / exact 1536x2288 v2 PNG" become "use a picture you already have" and "I already have an action sheet"; the dead AI card becomes a three-step walkthrough carrying a copyable prompt, a labelled 8x9 reference grid that can be saved locally, and the checks that catch the common failures. Reference images are generated by a script rather than hand- placed, in both languages. All five locales move together. Caught while reviewing the real dialog in Electron: after finishing the walkthrough the form heading fell through to the atlas branch and announced "I already have an action sheet" to someone who had just been walked through drawing one. Covered by a test now. Not done: docs/images/desktop_ui/15_pet_create_methods.png still shows the old dialog and needs a fresh capture from a running app to match the styling of the shots around it.
2591 lines
160 KiB
TypeScript
2591 lines
160 KiB
TypeScript
import type { TranslationKey } from './en'
|
||
|
||
export const zh: Record<TranslationKey, string> = {
|
||
// ─── Common ──────────────────────────────────────
|
||
'common.cancel': '取消',
|
||
'common.save': '儲存',
|
||
'common.delete': '刪除',
|
||
'common.add': '新增',
|
||
'common.run': '執行',
|
||
'common.send': '傳送',
|
||
'common.stop': '停止',
|
||
'common.tokens': '{count} tokens',
|
||
'common.rename': '重新命名',
|
||
'common.retry': '重試',
|
||
'common.loading': '載入中...',
|
||
'common.select': '選擇',
|
||
'common.enable': '啟用',
|
||
'common.disable': '禁用',
|
||
'common.active': '已啟用',
|
||
'common.error': '錯誤',
|
||
'common.clearSearch': '清除搜尋',
|
||
'common.copyFailed': '複製失敗。',
|
||
'common.copied': '已複製',
|
||
'h5Connect.failed': '無法連接到 H5 伺服器。',
|
||
'h5Connect.submit': '連接',
|
||
'h5Connect.token': 'H5 權杖',
|
||
'h5Connect.serverUrl': '伺服器位址',
|
||
'h5Connect.subtitle': '輸入桌面端提供的伺服器位址與 H5 存取權杖。',
|
||
'h5Connect.title': '連接 H5 存取',
|
||
'attachments.selectionNoteTitle': '修改內容',
|
||
'chat.pendingMessageQueuedLabel': '已排隊',
|
||
'repoLaunch.worktreeIsolatedDesc': '為本會話建立隔離 worktree,安全實驗,合併前不影響 {branch}。',
|
||
'repoLaunch.worktreeCurrentDesc': '直接在專案目錄中工作,改動立即出現在 {branch} 上。',
|
||
'permMode.badge.risky': '高風險',
|
||
'permMode.badge.optIn': '需開啟一次',
|
||
'chat.generatingDiagram': '正在產生圖表…',
|
||
'chat.copyReply': '複製回覆',
|
||
'chat.copyPrompt': '複製提示詞',
|
||
'chat.copyPath': '複製路徑',
|
||
'common.dismissNotification': '關閉通知',
|
||
|
||
// ─── Sidebar ──────────────────────────────────────
|
||
'sidebar.newSession': '新建會話',
|
||
'sidebar.scheduled': '定時任務',
|
||
'sidebar.skills': '技能',
|
||
'sidebar.terminal': '終端',
|
||
'sidebar.settings': '設定',
|
||
'sidebar.searchPlaceholder': '搜尋會話...',
|
||
'sidebar.noSessions': '暫無會話',
|
||
'sidebar.noMatching': '沒有匹配的會話',
|
||
'sidebar.sessionListFailed': '會話列表載入失敗',
|
||
'sidebar.refreshSessions': '重新整理會話列表',
|
||
'sidebar.indexBuilding': '正在最佳化歷史記錄',
|
||
'sidebar.indexBuildingProgress': '正在最佳化歷史記錄 {indexed}/{discovered}',
|
||
'sidebar.indexReady': '歷史記錄最佳化完成',
|
||
'sidebar.indexOff': '歷史記錄最佳化未啟用',
|
||
'sidebar.indexDegraded': '正在使用標準歷史記錄載入',
|
||
'search.global.trigger': '搜尋聊天',
|
||
'search.global.placeholder': '搜尋全部聊天內容…',
|
||
'search.global.recentTitle': '近期會話',
|
||
'search.global.noResults': '找不到符合的內容',
|
||
'search.global.matchCount': '{count} 筆符合',
|
||
'search.global.truncated': '僅顯示前 {count} 個會話,請縮小關鍵字',
|
||
'search.global.roleUser': '你',
|
||
'search.global.roleAssistant': '助手',
|
||
'search.global.loading': '搜尋中…',
|
||
'search.global.error': '搜尋失敗',
|
||
'search.global.close': '關閉',
|
||
'search.findInPage.title': '頁面內尋找',
|
||
'search.findInPage.placeholder': '尋找',
|
||
'search.findInPage.previousMatch': '上一個符合項',
|
||
'search.findInPage.nextMatch': '下一個符合項',
|
||
'search.findInPage.close': '關閉尋找列',
|
||
'sidebar.projects': '專案',
|
||
'sidebar.projectMenu': '專案選單',
|
||
'sidebar.newProject': '新建專案',
|
||
'sidebar.archiveAllChats': '歸檔所有聊天',
|
||
'sidebar.organizeSidebar': '整理側邊欄',
|
||
'sidebar.sortCondition': '排序條件',
|
||
'sidebar.organizeByProject': '按專案',
|
||
'sidebar.organizeByRecentProject': '近期專案',
|
||
'sidebar.organizeByTime': '按時間順序',
|
||
'sidebar.sortByCreatedAt': '建立時間',
|
||
'sidebar.sortByUpdatedAt': '更新時間',
|
||
'sidebar.newBlankProject': '新建空白專案',
|
||
'sidebar.useExistingFolder': '使用現有資料夾',
|
||
'sidebar.chooseProjectFolderUnavailable': '選擇資料夾僅在桌面端可用。',
|
||
'sidebar.projectActions': '{project} 專案操作',
|
||
'sidebar.pinProject': '置頂專案',
|
||
'sidebar.unpinProject': '取消置頂專案',
|
||
'sidebar.openInFinder': '在“訪達”中開啟',
|
||
'sidebar.openInFinderFailed': '無法在訪達中開啟專案。',
|
||
'sidebar.openInFinderUnavailable': '沒有可用的檔案管理器。',
|
||
'sidebar.hideProjectFromSidebar': '從側邊欄隱藏',
|
||
'sidebar.restoreProjectToSidebar': '恢復到側邊欄',
|
||
'sidebar.restoreHiddenProjects': '恢復隱藏專案({count})',
|
||
'sidebar.projectHidden': '已從側邊欄隱藏 {project},已有會話不會被刪除。',
|
||
'sidebar.newSessionInProject': '在 {project} 中新建會話',
|
||
'sidebar.showMoreSessions': '展開顯示',
|
||
'sidebar.showFewerSessions': '摺疊顯示',
|
||
'sidebar.expandProject': '展開 {project}',
|
||
'sidebar.collapseProject': '摺疊 {project}',
|
||
'sidebar.worktree': 'worktree',
|
||
'sidebar.sessionRunning': '會話執行中',
|
||
'sidebar.missingDir': '目錄缺失',
|
||
'sidebar.confirmDelete': '確定要刪除這個會話嗎?此操作不可撤銷。',
|
||
'sidebar.batchManage': '批次管理',
|
||
'sidebar.batchSelectedCount': '已選 {count} 個',
|
||
'sidebar.batchSelectAll': '全選',
|
||
'sidebar.batchDeselectAll': '取消全選',
|
||
'sidebar.batchSelectGroup': '選擇{group}',
|
||
'sidebar.batchDeleteSelected': '刪除已選 ({count})',
|
||
'sidebar.batchDeleteConfirm': '確定要刪除 {count} 個會話嗎?此操作不可撤銷。',
|
||
'sidebar.batchDeleteConfirmBody': '以下會話將被刪除:',
|
||
'sidebar.batchDeleteMore': '...還有 {count} 條',
|
||
'sidebar.batchExit': '退出批次管理',
|
||
'sidebar.batchDeleteSucceeded': '已刪除 {count} 個會話。',
|
||
'sidebar.batchDeleteFailed': '有 {count} 個會話刪除失敗。',
|
||
'sidebar.allProjects': '所有專案',
|
||
'sidebar.other': '其他',
|
||
'sidebar.timeGroup.today': '今天',
|
||
'sidebar.timeGroup.yesterday': '昨天',
|
||
'sidebar.timeGroup.last7days': '最近 7 天',
|
||
'sidebar.timeGroup.last30days': '最近 30 天',
|
||
'sidebar.timeGroup.older': '更早',
|
||
'sidebar.collapse': '摺疊側邊欄',
|
||
'sidebar.expand': '展開側邊欄',
|
||
'sidebar.resize': '拖曳調整側邊欄寬度',
|
||
|
||
// ─── Title Bar ──────────────────────────────────────
|
||
'titlebar.code': '程式碼',
|
||
'titlebar.terminal': '終端',
|
||
'titlebar.history': '歷史',
|
||
|
||
// ─── Open Project ──────────────────────────────────────
|
||
'openProject.openProject': '開啟專案',
|
||
'openProject.openIn': '用 {target} 開啟',
|
||
'openProject.openFailed': '無法開啟專案',
|
||
|
||
// ─── Open With ─────────────────────────────────────
|
||
'openWith.title': '開啟方式',
|
||
'openWith.inAppBrowser': '應用內瀏覽器',
|
||
'openWith.systemBrowser': '系統瀏覽器',
|
||
'openWith.workspacePreview': '工作臺預覽',
|
||
'openWith.openInTarget': '用 {target} 開啟',
|
||
'openWith.revealInTarget': '在 {target} 中顯示',
|
||
'openWith.fileType.document': '文件',
|
||
'openWith.fileType.web': '網頁',
|
||
'openWith.fileType.image': '圖片',
|
||
'openWith.fileType.code': '程式碼',
|
||
'openWith.fileType.spreadsheet': '試算表',
|
||
'openWith.fileType.presentation': '簡報',
|
||
'openWith.fileType.archive': '壓縮檔',
|
||
'openWith.fileType.audio': '音訊',
|
||
'openWith.fileType.video': '影片',
|
||
'openWith.fileType.file': '檔案',
|
||
|
||
// ─── Assistant Output Targets ──────────────────────
|
||
'assistantOutputs.kind.markdown': 'Markdown',
|
||
'assistantOutputs.kind.html': 'HTML',
|
||
'assistantOutputs.kind.image': '圖片',
|
||
'assistantOutputs.kind.localhost': '本地服務',
|
||
'assistantOutputs.moreOutputs': '+{count} 個輸出',
|
||
'assistantOutputs.open': '開啟',
|
||
|
||
// ─── Workspace Panel ───────────────────────────────
|
||
'workspace.changedFiles': '已更改檔案',
|
||
'workspace.allFiles': '所有檔案',
|
||
'workspace.viewTabs': '工作區檢視',
|
||
'workspace.previewTabs': '預覽標籤',
|
||
'workspace.filterPlaceholder': '篩選檔案...',
|
||
'workspace.filterChangedPlaceholder': '篩選已更改檔案...',
|
||
'workspace.searchAllPlaceholder': '搜尋所有檔案...',
|
||
'workspace.clearFilter': '清除檔案篩選',
|
||
'workspace.searching': '正在搜尋工作區...',
|
||
'workspace.searchResults': '檔案搜尋結果',
|
||
'workspace.searchResultsCount': '找到 {count} 個結果',
|
||
'workspace.searchResultsTruncated': '顯示前 {count} 個結果,請縮小搜尋範圍。',
|
||
'workspace.reviewWorkspace': '審閱工作區',
|
||
'workspace.filesCount': '{count} 個檔案',
|
||
'workspace.filteredFilesCount': '{visible} / {total} 個檔案',
|
||
'workspace.itemsCount': '{count} 個項目',
|
||
'workspace.filteredItemsCount': '{visible} / {total} 個項目',
|
||
'workspace.refresh': '重新整理工作區',
|
||
'workspace.closePanel': '關閉工作區面板',
|
||
'workspace.resizePanel': '調整工作區寬度',
|
||
'workspace.showNavigator': '顯示檔案導覽',
|
||
'workspace.hideNavigator': '隱藏檔案導覽',
|
||
'workbench.modeSwitch': '工作臺模式',
|
||
'workbench.modeWorkspace': '檔案',
|
||
'workbench.modeBrowser': '瀏覽器',
|
||
'workbench.expand': '展開面板',
|
||
'workbench.close': '關閉',
|
||
'workbench.tabTitle': '工作臺',
|
||
'workbench.backToConversation': '返回對話',
|
||
'workbench.navigation': '工作臺導覽',
|
||
'workspace.closeTab': '關閉標籤',
|
||
'workspace.preview': '預覽',
|
||
'workspace.previewEmpty': '選擇一個檔案進行預覽。',
|
||
'workspace.notGitRepo': '當前目錄不是 Git 倉庫。',
|
||
'workspace.missingWorkdir': '工作目錄不存在。',
|
||
'workspace.loadError': '工作區資料載入失敗。',
|
||
'workspace.noChanges': '沒有變更',
|
||
'workspace.noFiles': '沒有檔案',
|
||
'workspace.noMatchingFiles': '沒有匹配的檔案',
|
||
'workspace.previewKind.diff': 'Diff',
|
||
'workspace.previewKind.file': '檔案',
|
||
'workspace.status.modified': '已修改',
|
||
'workspace.status.added': '已新增',
|
||
'workspace.status.deleted': '已刪除',
|
||
'workspace.status.renamed': '已重新命名',
|
||
'workspace.status.untracked': '未追蹤',
|
||
'workspace.status.copied': '已複製',
|
||
'workspace.status.typeChanged': '類型已變更',
|
||
'workspace.status.unknown': '未知狀態',
|
||
'workspace.previewState.loading': '正在載入預覽...',
|
||
'workspace.previewState.binary': '二進位制檔案暫不支援預覽。',
|
||
'workspace.previewState.tooLarge': '檔案過大,無法預覽。',
|
||
'workspace.previewState.missing': '檔案不存在。',
|
||
'workspace.imagePreviewUnavailable': '圖片無法預覽。',
|
||
'workspace.previewLineLimit': '正在顯示已載入內容的前 {count} / {total} 行。',
|
||
'workspace.previewAllLines': '正在顯示全部 {total} 行已載入內容。',
|
||
'workspace.showAllLoadedLines': '顯示全部已載入行',
|
||
'workspace.collapsePreview': '收起預覽',
|
||
'workspace.addToChat': '新增到聊天',
|
||
'workspace.addSelectionToChat': '新增到對話',
|
||
'workspace.copyPath': '複製路徑',
|
||
'workspace.copyAbsolutePath': '複製絕對路徑',
|
||
'workspace.pathCopied': '路徑已複製。',
|
||
'workspace.localComment': '本地評論',
|
||
'workspace.commentLine': '評論第 {line} 行',
|
||
'workspace.commentLineTarget': '第 {line} 行',
|
||
'workspace.commentLineRangeTarget': '第 {start}–{end} 行',
|
||
'workspace.commentPlaceholder': '描述你希望這裡怎麼改...',
|
||
'workspace.addCommentToChat': '新增評論',
|
||
'workspace.diffReview.commentLineAria': '評論 {path} 的{side}側第 {line} 行',
|
||
'workspace.diffReview.editorLabel': '審查評論',
|
||
'workspace.diffReview.submit': '提交',
|
||
'workspace.diffReview.submitAria': '提交審查評論',
|
||
'workspace.diffReview.side.old': '舊',
|
||
'workspace.diffReview.side.new': '新',
|
||
'workspace.diffReview.selectionReset': '選取已重設:只能選擇同一側、同一變更區塊中的行。',
|
||
'workspace.diffReview.diffChanged': '差異已更新。請重新選擇行以提交此評論。',
|
||
'workspace.diffReview.collapsedSelection': '所選行不在收合後的預覽中。請重新選擇可見行以提交此評論。',
|
||
'attachments.remove': '移除 {name}',
|
||
'attachments.open': '開啟 {name}',
|
||
'attachments.previousImage': '上一張圖片',
|
||
'attachments.nextImage': '下一張圖片',
|
||
'attachments.selectionNote': '選取範圍備註:{note}',
|
||
'attachments.openFailed': '無法開啟 {name},檔案可能已被移動或刪除。',
|
||
|
||
// ─── Status Bar ──────────────────────────────────────
|
||
'status.connected': '已連線',
|
||
'status.connecting': '連線中...',
|
||
'status.reconnecting': '重連中...',
|
||
'status.disconnected': '已斷開',
|
||
|
||
// ─── Settings ──────────────────────────────────────
|
||
'settings.title': '設定',
|
||
'settings.tab.providers': '服務商',
|
||
'settings.tab.permissions': '許可權',
|
||
'settings.tab.activity': 'Token 用量',
|
||
'settings.tab.trace': 'Trace',
|
||
'settings.tab.general': '通用',
|
||
'settings.tab.h5Access': 'H5 訪問',
|
||
'settings.tab.terminal': '終端',
|
||
'settings.tab.skills': '技能',
|
||
'settings.tab.mcp': 'MCP',
|
||
'settings.tab.plugins': '外掛',
|
||
'settings.tab.pets': '寵物',
|
||
'settings.tab.diagnostics': '診斷',
|
||
|
||
// Settings > Pets
|
||
'settings.pets.title': '桌面寵物',
|
||
'settings.pets.subtitle': '一隻會關注目前任務、也能接收追問的小夥伴。',
|
||
'settings.pets.enableTitle': '顯示桌面寵物',
|
||
'settings.pets.enableDescription': '在桌面浮動視窗中顯示你選擇的寵物。',
|
||
'settings.pets.loading': '正在載入寵物…',
|
||
'settings.pets.loadError': '無法載入寵物。',
|
||
'settings.pets.saveError': '無法儲存寵物設定。',
|
||
'settings.pets.retry': '重試',
|
||
'settings.pets.refresh': '重新整理',
|
||
'settings.pets.create': '新增寵物',
|
||
'settings.pets.createTitle': '做一隻自己的寵物',
|
||
'settings.pets.createMethodIntro': '選一種做法。圖片都在你自己的電腦上處理,不會上傳,也不會消耗你的對話額度。',
|
||
'settings.pets.createRecommended': '推薦',
|
||
'settings.pets.createImageTitle': '用一張現成的圖',
|
||
'settings.pets.createImageDescription': '手邊有一張角色圖就能開始。牠會輕輕呼吸、上下浮動,你忙的時候牠也跟著動。',
|
||
'settings.pets.createImageDetail': '一分鐘搞定 · 但牠不會跑、也不會揮手',
|
||
'settings.pets.createImageBadge': '最省事',
|
||
'settings.pets.createImageHint': '等一下選一張背景透明的 PNG 或 WebP(長寬都在 32 到 4096 像素之間,檔案不超過 8MB)。這種寵物只會輕輕晃動,不會真的跑起來——想要能跑能跳會揮手,回上一頁選「用 AI 畫一隻會跑會跳的」。',
|
||
'settings.pets.createImageSubmit': '選圖片,做寵物',
|
||
'settings.pets.createAtlasTitle': '我已經有動作圖了',
|
||
'settings.pets.createAtlasDescription': '直接把畫好的多格動作圖選進來,跳過教學。',
|
||
'settings.pets.createAtlasDetail': '尺寸不用自己算 · 選進來會自動對齊',
|
||
'settings.pets.createAtlasSubmit': '選動作圖,做寵物',
|
||
'settings.pets.createAtlasHint': '等一下選一張 8 格寬、9 列高的動作圖。尺寸不用剛好,選進來會自動切格、縮放,還會幫你把「向左跑」那一列鏡像補出來。已經做好的 1536×2288 成品圖集也能直接用,會原樣保留。',
|
||
'settings.pets.createAiTitle': '用 AI 畫一隻會跑會跳的',
|
||
'settings.pets.createAiDescription': '照著三步走:複製一段提示詞、讓 AI 畫圖、把圖選進來。提示詞和對照範本都替你準備好了。',
|
||
'settings.pets.createAiDetail': '十來分鐘 · 需要一個會畫圖的 AI',
|
||
'settings.pets.createBack': '換一種做法',
|
||
'settings.pets.createId': '寵物 ID',
|
||
'settings.pets.createIdHint': '給牠一個英文小名,只能用小寫字母、數字和中間的連字號,例如 moon-cat。',
|
||
'settings.pets.createName': '顯示名稱',
|
||
'settings.pets.createDescription': '寵物描述',
|
||
'settings.pets.createCancel': '取消',
|
||
'settings.pets.createSubmit': '建立',
|
||
'settings.pets.guide.intro': '三步,大約十分鐘,全程在你自己的電腦上完成。',
|
||
'settings.pets.guide.step1Title': '讓 AI 畫一張動作圖',
|
||
'settings.pets.guide.step1Body': '打開一個會畫圖的 AI,把下面這段整個發給它。開頭「角色」那兩行換成你想要的樣子,例如「一隻戴黃色帽子的柴犬」。',
|
||
'settings.pets.guide.step1Tools': '即夢、Nano Banana、ChatGPT 畫圖、Midjourney、Stable Diffusion 都行(隨手舉例,不是推薦)。畫得不對就讓它重畫,或者說「角色保持不變,只重畫第 2 列」。',
|
||
'settings.pets.guide.prompt': `幫我畫一張遊戲角色動作表(sprite sheet)。
|
||
|
||
【角色】
|
||
一隻圓頭圓腦的橘色小貓,戴著藍色小圍巾,Q 版三頭身,
|
||
3D 卡通渲染,表面柔和有光澤,顏色明快。
|
||
(把這兩行換成你想要的角色,寫得越具體越好)
|
||
|
||
【整張圖的要求】
|
||
· 背景完全透明,不要背景色、不要格線、不要文字、不要投影
|
||
· 整張圖平均分成 8 欄 × 9 列,一共 72 個一樣大的方格
|
||
· 每格放一個動作格,角色在格子裡置中,四周留一點空隙
|
||
· 所有格子裡必須是同一隻角色,體型、配色、畫風完全一致
|
||
· 用不到的格子保持完全透明
|
||
|
||
【每一列畫什麼】
|
||
第 1 列 前 6 格:站著不動,輕微呼吸起伏
|
||
第 2 列 全 8 格:向右跑的完整循環,角色始終朝右
|
||
第 3 列 前 4 格:抬起手揮手打招呼
|
||
第 4 列 前 5 格:下蹲、起跳、落地
|
||
第 5 列 全 8 格:失落沮喪,垂頭嘆氣
|
||
第 6 列 前 6 格:原地等待,東張西望
|
||
第 7 列 前 6 格:低頭忙碌工作
|
||
第 8 列 全 8 格:頭和視線從正上方開始向右慢慢轉,經過右上、右邊、右下,轉到接近正下方
|
||
第 9 列 全 8 格:接著上一列,從正下方繼續向左轉,經過左下、左邊、左上,轉回接近正上方`,
|
||
'settings.pets.guide.promptCopy': '複製這段提示詞',
|
||
'settings.pets.guide.promptCopied': '複製好了',
|
||
'settings.pets.guide.copyFailed': '沒能自動複製,手動選取上面的文字複製一下。',
|
||
'settings.pets.guide.step2Title': '照著範本檢查一遍',
|
||
'settings.pets.guide.step2Body': '圖出來以後,對著下面這張範本看三件事。不對就讓 AI 重畫,別急著選進來。',
|
||
'settings.pets.guide.check1': '背景是透空的,不是白底——白底會在桌面上變成一個方塊',
|
||
'settings.pets.guide.check2': '橫著數 8 格,直著數 9 列,每格一個動作',
|
||
'settings.pets.guide.check3': '九列裡從頭到尾是同一隻,沒有中途換臉換配色',
|
||
'settings.pets.guide.templateAlt': '動作表範本:8 欄 9 列,標註了每一列該畫什麼',
|
||
'settings.pets.guide.templateExpand': '點圖片看完整範本',
|
||
'settings.pets.guide.templateCollapse': '點圖片收起',
|
||
'settings.pets.guide.saveTemplate': '把範本存下來',
|
||
'settings.pets.guide.saveFailed': '沒能儲存範本圖,稍後再試。',
|
||
'settings.pets.guide.step3Title': '選進來就好',
|
||
'settings.pets.guide.step3Body': '下一頁填個名字,然後選取剛才那張圖。尺寸不用自己調,長寬差一點也沒關係;「向左跑」那一列也會自動鏡像補上,不用你畫。',
|
||
'settings.pets.guide.continue': '畫好了,下一步',
|
||
'settings.pets.guide.backToSteps': '回去看步驟',
|
||
'settings.pets.createError': '沒能做成這隻寵物。',
|
||
'settings.pets.createError.invalidId': '寵物 ID 只能用小寫字母、數字和中間的連字號。',
|
||
'settings.pets.createError.duplicateId': '已經有一隻用這個 ID 的寵物了,換一個。',
|
||
'settings.pets.createError.unsupportedFormat': '請選 PNG 或 WebP 格式的圖片。',
|
||
'settings.pets.createError.imageTooLarge': '圖片太大了,請控制在 8 MB 以內。',
|
||
'settings.pets.createError.imageDimensions': '圖片長寬都要在 32 到 4096 像素之間,總像素數不超過 16,777,216。',
|
||
'settings.pets.createError.atlasDimensions': '這張圖沒辦法按 8 欄 × 9 列切開。請確認橫著 8 格、直著 9 列,或者直接用 1536×2288 的成品圖集。',
|
||
'settings.pets.createError.opaqueBackground': '這張圖沒有透明背景,做出來會是桌面上的一個方塊。請讓 AI 重新匯出透明背景的 PNG(不要白底)。',
|
||
'settings.pets.createError.invalidImage': '讀不出這張圖,請換一張靜態的 PNG 或 WebP(動圖不行)。',
|
||
'settings.pets.createError.storage': '沒能把寵物存到本機資料夾。',
|
||
'settings.pets.dialog.imageTitle': '選一張背景透明的寵物圖片',
|
||
'settings.pets.dialog.imageFilter': '寵物圖片',
|
||
'settings.pets.dialog.atlasTitle': '選擇寵物動作圖',
|
||
'settings.pets.dialog.atlasFilter': '寵物動作圖',
|
||
'settings.pets.builtInTitle': '內建寵物',
|
||
'settings.pets.customTitle': '你的寵物',
|
||
'settings.pets.customEmpty': '還沒有自訂寵物。',
|
||
'settings.pets.selected': '已選擇',
|
||
'settings.pets.select': '選擇',
|
||
'settings.pets.appearanceTitle': '外觀',
|
||
'settings.pets.size': '寵物大小',
|
||
'settings.pets.sizeDescription': '可在 96 到 192 像素之間調整。',
|
||
'settings.pets.motion': '播放動畫',
|
||
'settings.pets.motionDescription': '關閉後寵物仍可使用,但不會移動。',
|
||
'settings.pets.showTaskPanel': '顯示進行中的工作區域',
|
||
'settings.pets.showTaskPanelDescription': '有工作執行時顯示矩形工作區域;沒有進行中的工作時一律隱藏。',
|
||
'settings.pets.collapsed': '預設收合',
|
||
'settings.pets.collapsedDescription': '預設只顯示寵物,需要時再展開任務面板。',
|
||
'settings.pets.folderTitle': '自訂寵物資料夾',
|
||
'settings.pets.folderDescription': '自訂寵物套件儲存在這裡:${CLAUDE_CONFIG_DIR:-~/.claude}/cc-haha/pets',
|
||
'settings.pets.openFolder': '開啟資料夾',
|
||
'settings.pets.openFolderError': '無法開啟自訂寵物資料夾。',
|
||
'settings.pets.invalidCustom': '已略過 {count} 個無效的自訂寵物資料夾。',
|
||
'settings.pets.builtin.dada': '沉穩的協作機器人,陪你把想法一塊塊搭起來。',
|
||
'settings.pets.builtin.huhu': '拿著鉛筆和計畫本的路線機器人,複雜任務也能找到出口。',
|
||
'settings.pets.builtin.bubu': '舉著修補扳手的小機器人,最擅長發現並修好裂縫。',
|
||
'settings.pets.builtin.huihui': '抱著構建齒輪的小機器人,新回覆一到就精神滿滿。',
|
||
|
||
// Desktop pet window
|
||
'pet.window.noSessions': '暫無進行中的任務',
|
||
'pet.window.expand': '展開',
|
||
'pet.window.collapse': '收合',
|
||
'pet.window.interact': '和寵物互動',
|
||
'pet.window.close': '關閉寵物',
|
||
'pet.window.saveError': '寵物設定儲存失敗,請重試。',
|
||
'pet.window.closeError': '無法關閉寵物,請重試。',
|
||
'pet.window.status.waiting': '等待你處理',
|
||
'pet.window.status.failed': '需要關注',
|
||
'pet.window.status.review': '等待審閱',
|
||
'pet.window.status.running': '工作中',
|
||
'pet.window.status.idle': '閒置',
|
||
'pet.window.sessionCount': '{count} 個任務',
|
||
'pet.window.expandTasks': '顯示 {count} 個進行中的任務',
|
||
'pet.window.hideTasks': '隱藏 {count} 個進行中的任務',
|
||
'pet.window.untitledSession': '未命名任務',
|
||
|
||
// Settings > Usage
|
||
'settings.activity.title': 'Token 用量',
|
||
'settings.activity.profileTitle': '個人資料',
|
||
'settings.activity.profilePrivacy': '僅本地',
|
||
'settings.activity.defaultHandle': 'github.com/NanmiCoder/cc-haha',
|
||
'settings.activity.editProfile': '編輯個人資料',
|
||
'settings.activity.displayName': '顯示名稱',
|
||
'settings.activity.subtitle': '第二行',
|
||
'settings.activity.displayNameHelper': '修改主名稱和第二行;第二行如果是網址會自動作為連結開啟。',
|
||
'settings.activity.avatar': '頭像',
|
||
'settings.activity.avatarHelper': '支援 PNG、JPEG 或 WebP,最大 2 MB。',
|
||
'settings.activity.changeAvatar': '更換頭像',
|
||
'settings.activity.removeAvatar': '移除頭像',
|
||
'settings.activity.saveProfile': '儲存',
|
||
'settings.activity.cancelEdit': '取消',
|
||
'settings.activity.profileSaved': '已儲存到本地',
|
||
'settings.activity.profileSaveFailed': '儲存個人資料失敗',
|
||
'settings.activity.subtitleLoading': '基於本機 Claude Code CLI 會話記錄統計',
|
||
'settings.activity.totalTokens': '累計 Token 數',
|
||
'settings.activity.peakTokens': '峰值 Token 數',
|
||
'settings.activity.longestTask': '最長任務時長',
|
||
'settings.activity.currentStreak': '當前連續天數',
|
||
'settings.activity.longestStreak': '最長連續天數',
|
||
'settings.activity.noDuration': '0 分鐘',
|
||
'settings.activity.tokenActivity': 'Token 活動',
|
||
'settings.activity.mode.daily': '每日',
|
||
'settings.activity.mode.weekly': '每週',
|
||
'settings.activity.mode.cumulative': '累計',
|
||
'settings.activity.modeHelp.daily': '每日:每個格子表示當天 Token 用量。',
|
||
'settings.activity.modeHelp.weekly': '每週:每一列表示這一週的 Token 總量。',
|
||
'settings.activity.modeHelp.cumulative': '累計:每一列表示截至該周的累計 Token 總量。',
|
||
'settings.activity.emptyTitle': '暫無本地用量',
|
||
'settings.activity.emptyBody': '啟動 CLI 或桌面會話並完成模型回覆後,這裡會顯示統計。',
|
||
'settings.activity.metric.yesterday': '昨天',
|
||
'settings.activity.metric.today': '今天',
|
||
'settings.activity.metric.last4': '近 4 天',
|
||
'settings.activity.metric.last30': '30 天',
|
||
'settings.activity.metric.streak': '連續活躍',
|
||
'settings.activity.metric.bestStreak': '最長 {days} 天',
|
||
'settings.activity.heatmapLabel': '按天統計的 Token 用量',
|
||
'settings.activity.weekRange': '{start} - {end}',
|
||
'settings.activity.cumulativeThrough': '截至 {date}',
|
||
'settings.activity.tokenValue': '{tokens} Token',
|
||
'settings.activity.count.sessionOne': '{count} 次會話',
|
||
'settings.activity.count.sessionOther': '{count} 次會話',
|
||
'settings.activity.count.dayOne': '{count} 天',
|
||
'settings.activity.count.dayOther': '{count} 天',
|
||
'settings.activity.count.runOne': '{count} 次執行',
|
||
'settings.activity.count.runOther': '{count} 次執行',
|
||
'settings.activity.weekday.mon': '週一',
|
||
'settings.activity.weekday.wed': '週三',
|
||
'settings.activity.weekday.fri': '週五',
|
||
'settings.activity.selectedDay': '選中日期',
|
||
'settings.activity.sessions': '會話',
|
||
'settings.activity.tokens': 'Token',
|
||
'settings.activity.messages': '訊息',
|
||
'settings.activity.tools': '工具',
|
||
'settings.activity.activityInsights': '活動洞察',
|
||
'settings.activity.activeRate': '活躍率',
|
||
'settings.activity.mostUsedModel': '最常用模型',
|
||
'settings.activity.exploredSkills': '已使用的技能',
|
||
'settings.activity.totalSkillUses': '技能使用總數',
|
||
'settings.activity.totalToolCalls': '工具呼叫',
|
||
'settings.activity.freshTokens': '新增 Token',
|
||
'settings.activity.cachedTokens': '快取命中 Token',
|
||
'settings.activity.estimatedCost': '估算成本',
|
||
'settings.activity.ofTotal': '佔 {percent}',
|
||
'settings.activity.costExcludesModels': '不含 {count} 個未定價模型',
|
||
'settings.activity.totalSessions': '會話總數',
|
||
'settings.activity.mostUsedPluginsAndSkills': '最常用的外掛和技能',
|
||
'settings.activity.none': '暫無',
|
||
'settings.activity.less': '少',
|
||
'settings.activity.more': '多',
|
||
|
||
// Settings > Terminal
|
||
'settings.terminal.title': '終端',
|
||
'settings.terminal.description': '直接執行宿主機命令,用於安裝外掛、Skills、MCP 等擴充套件。桌面端已內建 claude-haha;文件裡的 claude <引數> 可替換成 claude-haha <引數>,例如 claude-haha plugin install ... 或 claude-haha mcp add ...',
|
||
'settings.terminal.infoLabel': '終端安裝說明',
|
||
'settings.terminal.clear': '清屏',
|
||
'settings.terminal.restart': '重啟',
|
||
'settings.terminal.windowTitle': '宿主機 Shell',
|
||
'settings.terminal.unavailableTitle': '需要桌面端執行時',
|
||
'settings.terminal.unavailableBody': '請在打包後的桌面端裡開啟這個頁面,才能啟動互動式終端。',
|
||
'settings.terminal.preferencesTitle': '啟動 Shell',
|
||
'settings.terminal.preferencesBody': '用於新開的終端會話,以及點選重啟後的終端。',
|
||
'settings.terminal.startupShell': '啟動 Shell',
|
||
'settings.terminal.customPath': '自定義 Shell 路徑',
|
||
'settings.terminal.customPathPlaceholder': 'C:\\Program Files\\PowerShell\\7\\pwsh.exe',
|
||
'settings.terminal.customPathRequired': '儲存前請先填寫 Shell 路徑。',
|
||
'settings.terminal.customPathAbsolute': '自定義 Shell 路徑必須是絕對 Windows 路徑。',
|
||
'settings.terminal.saveShell': '儲存 Shell',
|
||
'settings.terminal.saveShellSuccess': '已儲存。重啟終端或新開終端後生效。',
|
||
'settings.terminal.shell.system': '系統預設',
|
||
'settings.terminal.shell.systemDesc': '保持當前基於 COMSPEC 的行為。',
|
||
'settings.terminal.shell.pwsh': 'PowerShell 7 (pwsh)',
|
||
'settings.terminal.shell.pwshDesc': '安裝了 pwsh.exe 時優先使用它。',
|
||
'settings.terminal.shell.powershell': 'Windows PowerShell',
|
||
'settings.terminal.shell.powershellDesc': '使用系統自帶的 powershell.exe。',
|
||
'settings.terminal.shell.cmd': '命令提示符',
|
||
'settings.terminal.shell.cmdDesc': '明確使用 cmd.exe。',
|
||
'settings.terminal.shell.custom': '自定義可執行檔案',
|
||
'settings.terminal.shell.customDesc': '啟動一個絕對路徑的 Shell 可執行檔案。',
|
||
'settings.terminal.status.idle': '空閒',
|
||
'settings.terminal.status.starting': '啟動中',
|
||
'settings.terminal.status.running': '執行中',
|
||
'settings.terminal.status.exited': '已退出',
|
||
'settings.terminal.status.error': '錯誤',
|
||
'settings.terminal.status.unavailable': '不可用',
|
||
'settings.terminal.bashPathLabel': 'Bash 路徑',
|
||
'settings.terminal.bashPathDescription': 'Windows 下預設使用 CMD 作為終端。如果工具呼叫 grep、sed 等 Unix 命令,請在此配置 Bash 可執行檔案路徑(如 Git Bash)。',
|
||
'settings.terminal.bashPathSave': '儲存',
|
||
'settings.terminal.bashPathReset': '恢復預設',
|
||
'settings.terminal.bashPathSaved': '已儲存',
|
||
'settings.terminal.bashPathInvalid': '路徑不存在,請選擇有效的 Bash 可執行檔案',
|
||
'settings.terminal.bashPathBrowse': '瀏覽選擇 Bash 執行檔案',
|
||
'terminal.newTab': '新建終端',
|
||
'terminal.openInTab': '在 Tab 中開啟',
|
||
'terminal.closePanel': '關閉終端面板',
|
||
'terminal.resizePanel': '調整終端面板大小',
|
||
|
||
// Settings > Diagnostics
|
||
'settings.diagnostics.title': '診斷',
|
||
'settings.diagnostics.description': '記錄服務端與 CLI 的啟動、服務商、會話執行錯誤,便於復現和定位問題。',
|
||
'settings.diagnostics.refresh': '重新整理',
|
||
'settings.diagnostics.totalSize': '日誌大小',
|
||
'settings.diagnostics.events': '事件數',
|
||
'settings.diagnostics.completeEvents': '完整事件',
|
||
'settings.diagnostics.completeEventsValue': '{count} 個完整事件',
|
||
'settings.diagnostics.visibleEvents': '目前可見',
|
||
'settings.diagnostics.visibleEventsValue': '{count} 個可見事件',
|
||
'settings.diagnostics.corruptLinesWarning': '偵測到或保留了 {count} 筆損壞診斷記錄的證據。目前診斷檔案包含 {physical} 個實體行,事件總數與最近記錄可能不完整。',
|
||
'settings.diagnostics.storageLimitExceededWarning': '一個或多個診斷區域或活動寫入程序暫時超出各自的保留目標;其分段關閉或過期後將進行清理。',
|
||
'settings.diagnostics.recentErrors': '24h 警告',
|
||
'settings.diagnostics.retention': '保留策略',
|
||
'settings.diagnostics.retentionValue': '{days} 天 / {size}',
|
||
'settings.diagnostics.logDirectory': '日誌目錄',
|
||
'settings.diagnostics.openDirectory': '開啟',
|
||
'settings.diagnostics.exportBundle': '匯出診斷包',
|
||
'settings.diagnostics.copySummary': '複製錯誤摘要',
|
||
'settings.diagnostics.copyIssueReport': '複製 Issue 報告',
|
||
'settings.diagnostics.issueReportCopied': 'Issue 報告已複製。',
|
||
'settings.diagnostics.issueReportCopyFailed': '複製 Issue 報告失敗。',
|
||
'settings.diagnostics.clearLogs': '清理日誌',
|
||
'settings.diagnostics.recentEvents': '最近事件',
|
||
'settings.diagnostics.privacyNote': 'Issue 報告與匯出套件會盡力遮蔽,省略聊天與檔案內容、完整環境變數及 API Key;分享前仍請檢查是否含有私密中繼資料。',
|
||
'settings.diagnostics.noEvents': '暫無診斷事件。',
|
||
'settings.diagnostics.noRecentErrors': '最近沒有警告或錯誤。',
|
||
'settings.diagnostics.loadFailed': '載入診斷資訊失敗。',
|
||
'settings.diagnostics.openFailed': '開啟診斷目錄失敗。',
|
||
'settings.diagnostics.exportFailed': '匯出診斷包失敗。',
|
||
'settings.diagnostics.exported': '已匯出 {file}',
|
||
'settings.diagnostics.summaryCopied': '錯誤摘要已複製。',
|
||
'settings.diagnostics.copyFailed': '複製錯誤摘要失敗。',
|
||
'settings.diagnostics.confirmClear': '確定清理所有本地診斷日誌和已匯出的診斷包?',
|
||
'settings.diagnostics.cleared': '診斷日誌已清理。',
|
||
'settings.diagnostics.clearFailed': '清理診斷日誌失敗。',
|
||
'settings.diagnostics.eventDetails': '詳情',
|
||
'settings.diagnostics.localIndex.title': '本機索引',
|
||
'settings.diagnostics.localIndex.description': '可重建的本機投影,用於加速會話與診斷讀取。',
|
||
'settings.diagnostics.localIndex.rebuild': '重建本機索引',
|
||
'settings.diagnostics.localIndex.confirmRebuild': '只會重建衍生的本機索引,對話記錄與設定不受影響。',
|
||
'settings.diagnostics.localIndex.rebuildSucceeded': '本機索引已重建,來源對話歷史未被刪除。',
|
||
'settings.diagnostics.localIndex.rebuildFailed': '重建本機索引失敗。',
|
||
'settings.diagnostics.localIndex.mode': '模式',
|
||
'settings.diagnostics.localIndex.state': '狀態',
|
||
'settings.diagnostics.localIndex.indexed': '已索引來源',
|
||
'settings.diagnostics.localIndex.degradedSources': '降級來源',
|
||
'settings.diagnostics.localIndex.databaseSize': '資料庫',
|
||
'settings.diagnostics.localIndex.walSize': 'WAL',
|
||
'settings.diagnostics.localIndex.lastUpdated': '最後更新',
|
||
'settings.diagnostics.localIndex.errorCode': '錯誤代碼',
|
||
'settings.diagnostics.localIndex.never': '從未',
|
||
'settings.diagnostics.localIndex.none': '無',
|
||
'settings.diagnostics.localIndex.unavailable': '暫時無法取得本機索引狀態,現有診斷功能仍可使用。',
|
||
'settings.diagnostics.localIndex.buildingMessage': '索引正在背景建置,會話歷史仍可正常使用。',
|
||
'settings.diagnostics.localIndex.degradedMessage': '本機索引已降級,檔案式回退仍可使用。',
|
||
'settings.diagnostics.localIndex.mode.off': '關閉',
|
||
'settings.diagnostics.localIndex.mode.shadow': '影子',
|
||
'settings.diagnostics.localIndex.mode.on': '開啟',
|
||
'settings.diagnostics.localIndex.state.off': '關閉',
|
||
'settings.diagnostics.localIndex.state.building': '建置中',
|
||
'settings.diagnostics.localIndex.state.ready': '就緒',
|
||
'settings.diagnostics.localIndex.state.degraded': '已降級',
|
||
'settings.diagnostics.eventId': '事件 ID',
|
||
'settings.diagnostics.copyEventId': '複製事件 ID',
|
||
'settings.diagnostics.eventIdCopied': '事件 ID 已複製。',
|
||
'settings.diagnostics.eventIdCopyFailed': '複製事件 ID 失敗。',
|
||
'settings.diagnostics.doctorTitle': 'Doctor',
|
||
'settings.diagnostics.doctorDescription': '檢查受保護的使用者與專案狀態,不會進行修改。',
|
||
'settings.diagnostics.doctorProtectedData': '聊天歷史、模型配置、Skills、MCP、IM 和 OAuth 始終受保護。',
|
||
'settings.diagnostics.doctorSafeKeys': '重設只會移除:cc-haha-open-tabs、cc-haha-session-runtime、cc-haha-theme、cc-haha-locale、cc-haha-app-zoom、cc-haha-ui-zoom 和 cc-haha.persistence.schemaVersion。',
|
||
'settings.diagnostics.runDoctor': '執行 Doctor',
|
||
'settings.diagnostics.resetSafeUiState': '重設安全 UI 狀態',
|
||
'settings.diagnostics.confirmResetSafeUiState': '僅重設上方列出的可再生桌面 UI 鍵?受保護的使用者與專案資料不會被修改。',
|
||
'settings.diagnostics.doctorCheckCompleted': 'Doctor 檢查已完成。',
|
||
'settings.diagnostics.doctorResetCompleted': '安全 UI 狀態重設已完成。',
|
||
'settings.diagnostics.doctorPartial': '安全 UI 狀態重設已完成,但有 {count} 個鍵處理失敗。',
|
||
'settings.diagnostics.doctorFailed': 'Doctor 執行失敗。',
|
||
'settings.diagnostics.doctorScope': '範圍',
|
||
'settings.diagnostics.doctorScopeProject': '使用者與目前專案',
|
||
'settings.diagnostics.doctorScopeUser': '僅使用者',
|
||
'settings.diagnostics.doctorSummary': '健康:{healthy} · 未設定:{neutral} · 缺少:{missing} · 無效:{invalid}',
|
||
'settings.diagnostics.doctorFindings': 'Doctor 發現項目',
|
||
'settings.diagnostics.doctorNoFindings': '未發現缺少或無效項目。',
|
||
'settings.diagnostics.doctorStatusHealthy': '健康',
|
||
'settings.diagnostics.doctorStatusNotConfigured': '未設定',
|
||
'settings.diagnostics.doctorStatusMissing': '缺少',
|
||
'settings.diagnostics.doctorStatusInvalidJson': 'JSON 無效',
|
||
'settings.diagnostics.doctorStatusInvalidJsonl': 'JSONL 無效',
|
||
'settings.diagnostics.doctorStatusInvalidSchema': 'Schema 無效',
|
||
'settings.diagnostics.doctorStatusUnreadable': '無法讀取',
|
||
'settings.diagnostics.doctorRemovedKeys': '已移除的鍵',
|
||
'settings.diagnostics.doctorFailedKeys': '失敗的鍵',
|
||
'settings.diagnostics.doctorNoKeys': '無',
|
||
'errorBoundary.title': '出現異常。',
|
||
'errorBoundary.description': '錯誤已記錄到診斷日誌。',
|
||
|
||
// Settings > Claude Official Login
|
||
'settings.claudeOfficialLogin.intro': '使用官方 Claude 模型需要登入你的 Claude.ai 賬號。點選下方按鈕,瀏覽器會開啟 Claude 官方登入頁面,授權後自動回到這裡。',
|
||
'settings.claudeOfficialLogin.loginButton': '登入 Claude 賬號',
|
||
'settings.claudeOfficialLogin.loginStarting': '正在啟動…',
|
||
'settings.claudeOfficialLogin.logoutButton': '登出',
|
||
'settings.claudeOfficialLogin.logoutProcessing': '處理中…',
|
||
'settings.claudeOfficialLogin.loggedInPrefix': '已登入(Claude',
|
||
'settings.claudeOfficialLogin.subTypeUnknown': '未知',
|
||
'settings.claudeOfficialLogin.errorPrefix': '錯誤:',
|
||
'settings.claudeOfficialLogin.openBrowserFailed': '無法開啟瀏覽器,請手動訪問授權連結。',
|
||
|
||
// Settings > ChatGPT Official Login
|
||
'settings.chatgptOfficialLogin.intro': '登入 ChatGPT 後,就可以在桌面端會話裡使用 GPT 模型。',
|
||
'settings.chatgptOfficialLogin.loginButton': '登入 ChatGPT',
|
||
'settings.chatgptOfficialLogin.loginStarting': '正在啟動登入...',
|
||
'settings.chatgptOfficialLogin.logoutButton': '退出登入',
|
||
'settings.chatgptOfficialLogin.logoutProcessing': '正在退出...',
|
||
'settings.chatgptOfficialLogin.loggedInPrefix': '已登入',
|
||
'settings.chatgptOfficialLogin.accountUnknown': 'ChatGPT 賬號',
|
||
'settings.chatgptOfficialLogin.openBrowserFailed': '無法開啟瀏覽器。請複製授權連結並手動開啟。',
|
||
'settings.chatgptOfficialLogin.copyAuthorizeUrl': '複製授權連結',
|
||
'settings.chatgptOfficialLogin.copyLinkFailed': '無法複製授權連結。',
|
||
'settings.chatgptOfficialLogin.errorPrefix': 'ChatGPT OAuth 錯誤:',
|
||
'settings.grokOfficialLogin.intro': '登入 Grok 後,即可在桌面端會話中使用 Grok 官方模型。',
|
||
'settings.grokOfficialLogin.loginButton': '登入 Grok',
|
||
'settings.grokOfficialLogin.loginStarting': '正在啟動登入...',
|
||
'settings.grokOfficialLogin.logoutButton': '退出登入',
|
||
'settings.grokOfficialLogin.logoutProcessing': '正在退出...',
|
||
'settings.grokOfficialLogin.loggedInPrefix': '已登入',
|
||
'settings.grokOfficialLogin.accountUnknown': 'Grok 賬號',
|
||
'settings.grokOfficialLogin.openBrowserFailed': '無法開啟瀏覽器。請複製授權連結並手動開啟。',
|
||
'settings.grokOfficialLogin.copyAuthorizeUrl': '複製授權連結',
|
||
'settings.grokOfficialLogin.copyLinkFailed': '無法複製授權連結。',
|
||
'settings.grokOfficialLogin.errorPrefix': 'Grok OAuth 錯誤:',
|
||
|
||
// Settings > Providers
|
||
'settings.providers.title': '服務商',
|
||
'settings.providers.description': '管理 API 服務商以訪問模型。',
|
||
'settings.providers.addProvider': '新增服務商',
|
||
'settings.providers.officialName': 'Claude 官方',
|
||
'settings.providers.officialDesc': 'Anthropic 原生接入 — 無需 API 金鑰',
|
||
'settings.providers.openaiOfficialName': 'ChatGPT 官方',
|
||
'settings.providers.openaiOfficialDesc': '透過 ChatGPT 賬號完成 OpenAI OAuth — 無需 API 金鑰',
|
||
'settings.providers.grokOfficialName': 'Grok 官方',
|
||
'settings.providers.grokOfficialDesc': '透過 xAI 賬號完成 Grok 官方 OAuth — 無需 API 金鑰',
|
||
'settings.providers.connected': '已連線 ({latency}ms)',
|
||
'settings.providers.failed': '失敗: {error}',
|
||
'settings.providers.connectivityOk': '① 連通 ({latency}ms)',
|
||
'settings.providers.connectivityFailed': '① 連通失敗: {error}',
|
||
'settings.providers.proxyOk': '② 代理轉換 ({latency}ms)',
|
||
'settings.providers.proxyFailed': '② 代理轉換失敗: {error}',
|
||
'settings.providers.confirmDelete': '刪除服務商 "{name}"?此操作不可撤銷。',
|
||
'settings.providers.activate': '啟用',
|
||
'settings.providers.default': '預設',
|
||
'settings.providers.setDefault': '設為預設',
|
||
'settings.providers.test': '測試',
|
||
'settings.providers.edit': '編輯',
|
||
'settings.providers.dragToReorder': '拖曳排序',
|
||
'settings.providers.requestFailed': '請求失敗',
|
||
'settings.providers.addTitle': '新增服務商',
|
||
'settings.providers.editTitle': '編輯服務商',
|
||
'settings.providers.preset': '預設',
|
||
'settings.providers.name': '名稱',
|
||
'settings.providers.namePlaceholder': '服務商名稱',
|
||
'settings.providers.notes': '備註',
|
||
'settings.providers.notesPlaceholder': '可選備註...',
|
||
'settings.providers.baseUrl': '介面地址',
|
||
'settings.providers.baseUrlPlaceholder': 'https://api.example.com/anthropic',
|
||
'settings.providers.apiKey': 'API 金鑰',
|
||
'settings.providers.apiKeyKeep': 'API 金鑰(留空保持不變)',
|
||
'settings.providers.showApiKey': '顯示 API 金鑰',
|
||
'settings.providers.hideApiKey': '隱藏 API 金鑰',
|
||
'settings.providers.getApiKey': '獲取 API Key',
|
||
'settings.providers.modelMapping': '模型對映',
|
||
'settings.providers.mainModel': '主模型',
|
||
'settings.providers.haikuModel': 'Haiku 模型',
|
||
'settings.providers.sonnetModel': 'Sonnet 模型',
|
||
'settings.providers.opusModel': 'Opus 模型',
|
||
'settings.providers.model1mSupportShort': '1M',
|
||
'settings.providers.modelIdPlaceholder': '模型 ID',
|
||
'settings.providers.sameAsMain': '與主模型相同',
|
||
'settings.providers.contextSettingsTitle': '上下文與自動壓縮',
|
||
'settings.providers.contextSettingsDesc': '預設會自動應用模型視窗。只有服務商調整限制,或使用自定義模型 ID 時才需要修改。',
|
||
'settings.providers.contextSettingsEdit': '高階',
|
||
'settings.providers.contextSettingsHide': '收起',
|
||
'settings.providers.contextSummaryAuto': '自動識別已配置模型;未知模型使用內建兜底',
|
||
'settings.providers.contextFallbackAuto': '未知模型:自動',
|
||
'settings.providers.contextFallbackSummary': '未知模型:{tokens}',
|
||
'settings.providers.modelContextWindows': '模型上下文視窗',
|
||
'settings.providers.mainContextWindow': '主模型上下文',
|
||
'settings.providers.haikuContextWindow': 'Haiku 模型上下文',
|
||
'settings.providers.sonnetContextWindow': 'Sonnet 模型上下文',
|
||
'settings.providers.opusContextWindow': 'Opus 模型上下文',
|
||
'settings.providers.contextWindowPlaceholder': '例如 200000',
|
||
'settings.providers.modelContextWindowsDesc': '按每個模型的真實上下文填寫,內建預設會自動帶出,留空則走內建識別或預設 200K。',
|
||
'settings.providers.modelContextWindowNumberError': '請輸入整數。',
|
||
'settings.providers.modelContextWindowRangeError': '範圍必須在 16000 到 10000000 之間。',
|
||
'settings.providers.autoCompactWindow': '未知模型兜底視窗',
|
||
'settings.providers.autoCompactWindowPlaceholder': '可選,例如 200000',
|
||
'settings.providers.autoCompactWindowDesc': '僅用於無法識別的模型;已配置的模型視窗會優先使用。',
|
||
'settings.providers.autoCompactWindowNumberError': '請輸入整數。',
|
||
'settings.providers.autoCompactWindowRangeError': '範圍必須在 16000 到 10000000 之間。',
|
||
'settings.providers.testConnection': '測試連線',
|
||
'settings.providers.settingsJson': '設定 JSON',
|
||
'settings.providers.settingsJsonDesc': '~/.claude/cc-haha/settings.json — 直接編輯,儲存時寫入。',
|
||
'settings.providers.jsonError': 'JSON 語法錯誤: {error}',
|
||
'settings.providers.apiFormat': 'API 格式',
|
||
'settings.providers.apiFormatAnthropic': 'Anthropic Messages (原生)',
|
||
'settings.providers.apiFormatOpenaiChat': 'OpenAI Chat Completions (代理轉換)',
|
||
'settings.providers.apiFormatOpenaiResponses': 'OpenAI Responses API (代理轉換)',
|
||
'settings.providers.proxyHint': '請求將透過本地代理轉換協議格式',
|
||
'settings.providers.authStrategy': '認證變數',
|
||
'settings.providers.authStrategyApiKey': 'API Key (ANTHROPIC_API_KEY)',
|
||
'settings.providers.authStrategyApiKeyDesc': '直連 Anthropic 官方 API,傳送 x-api-key。',
|
||
'settings.providers.authStrategyAuthToken': 'Bearer Token (ANTHROPIC_AUTH_TOKEN)',
|
||
'settings.providers.authStrategyAuthTokenDesc': '大多數第三方 Anthropic 相容服務,傳送 Authorization Bearer。',
|
||
'settings.providers.authStrategyAuthTokenEmptyApiKey': 'Bearer + 清空 API_KEY',
|
||
'settings.providers.authStrategyAuthTokenEmptyApiKeyDesc': 'OpenRouter/Ollama 等場景,避免回退到 Anthropic API key。',
|
||
'settings.providers.authStrategyDualSameToken': '兩個變數寫同一個 Token',
|
||
'settings.providers.authStrategyDualSameTokenDesc': 'Hugging Face Router 等同時檢查兩個變數的服務。',
|
||
'settings.providers.authStrategyDualDummy': '兩個變數寫 dummy',
|
||
'settings.providers.authStrategyDualDummyDesc': 'vLLM 等本地相容服務,只需要佔位認證值。',
|
||
'settings.providers.toolSearchEnabled': '啟用 Tool Search',
|
||
'settings.providers.toolSearchDesc': '按需載入 MCP 和延遲工具,減少首輪工具 schema token。弱模型或不支援 tool_reference 的服務商可以關閉。',
|
||
'settings.providers.toolSearchUnsupported': '目前僅 Anthropic Messages 格式支援 Tool Search;OpenAI 代理格式會保留完整工具 schema。',
|
||
'settings.providers.disableExperimentalBetas': '關閉實驗性 Beta 標頭',
|
||
'settings.providers.disableExperimentalBetasDesc': '為此服務商設定 CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1,避免第三方通道拒絕 beta API 形態。',
|
||
|
||
// Settings > Permissions
|
||
'settings.permissions.title': '許可權模式',
|
||
'settings.permissions.description': '控制工具執行許可權的處理方式。',
|
||
'settings.permissions.default': '詢問許可權',
|
||
'settings.permissions.defaultDesc': '執行工具前先詢問',
|
||
'settings.permissions.acceptEdits': '接受編輯',
|
||
'settings.permissions.acceptEditsDesc': '自動批准檔案編輯,其他操作仍詢問',
|
||
'settings.permissions.plan': '計劃模式',
|
||
'settings.permissions.planDesc': '僅思考和規劃,不執行操作',
|
||
'settings.permissions.bypass': '跳過全部',
|
||
'settings.permissions.bypassDesc': '跳過所有許可權檢查(危險)',
|
||
|
||
// Settings > Adapters
|
||
'settings.tab.adapters': 'IM 接入',
|
||
'settings.adapters.description': '配置即時通訊介面卡,透過 Telegram、微信、釘釘、WhatsApp 或飛書與 Claude Code 對話。首次配置請參考',
|
||
'settings.adapters.configurationDocs': '文件地址',
|
||
'settings.adapters.descriptionAfterDocs': '。',
|
||
'settings.adapters.imTabs': '即時通訊介面卡',
|
||
'settings.adapters.telegram': 'Telegram',
|
||
'settings.adapters.feishu': '飛書',
|
||
'settings.adapters.wechat': '微信',
|
||
'settings.adapters.dingtalk': '釘釘',
|
||
'settings.adapters.whatsapp': 'WhatsApp',
|
||
'settings.adapters.botToken': 'Bot Token',
|
||
'settings.adapters.botTokenPlaceholder': '貼上從 @BotFather 獲取的 Token',
|
||
'settings.adapters.appId': 'App ID',
|
||
'settings.adapters.appIdPlaceholder': '如 cli_xxx',
|
||
'settings.adapters.appSecret': 'App Secret',
|
||
'settings.adapters.appSecretPlaceholder': '從飛書開放平臺獲取',
|
||
'settings.adapters.feishuCreateBotTitle': '還沒有飛書機器人?',
|
||
'settings.adapters.feishuCreateBotDesc': '使用文件中的官方 OpenClaw 模板,一鍵建立已預配許可權的飛書機器人。建立後把 App ID 和 App Secret 填到下方。',
|
||
'settings.adapters.feishuCreateBotAction': '一鍵建立飛書機器人',
|
||
'settings.adapters.feishuCreateBotStepCreate': '點選模板建立機器人。',
|
||
'settings.adapters.feishuCreateBotStepFill': '複製 App ID 和 App Secret,回到這裡填寫。',
|
||
'settings.adapters.encryptKey': 'Encrypt Key',
|
||
'settings.adapters.encryptKeyPlaceholder': '可選',
|
||
'settings.adapters.verificationToken': 'Verification Token',
|
||
'settings.adapters.verificationTokenPlaceholder': '可選',
|
||
'settings.adapters.allowedUsers': '允許的使用者',
|
||
'settings.adapters.allowedUsersHint': '逗號分隔。留空則只允許已配對使用者。',
|
||
'settings.adapters.tgAllowedUsersPlaceholder': '如 123456789, 987654321',
|
||
'settings.adapters.fsAllowedUsersPlaceholder': '如 ou_xxx, ou_yyy',
|
||
'settings.adapters.wcAllowedUsersPlaceholder': '如 wx_user_id_1, wx_user_id_2',
|
||
'settings.adapters.dtAllowedUsersPlaceholder': '如 manager001, staff_yyy',
|
||
'settings.adapters.waAllowedUsersPlaceholder': '如 15551234567@s.whatsapp.net',
|
||
'settings.adapters.defaultProject': '預設專案',
|
||
'settings.adapters.defaultProjectHint': '新 IM 會話的預設工作目錄。留空則使用當前使用者工作目錄。',
|
||
'settings.adapters.streamingCard': '流式卡片模式',
|
||
'settings.adapters.streamingCardDesc': '實時更新訊息內容,體驗更好',
|
||
'settings.adapters.serverUrl': '伺服器地址',
|
||
'settings.adapters.serverUrlPlaceholder': 'ws://127.0.0.1:3456',
|
||
'settings.adapters.save': '儲存',
|
||
'settings.adapters.saved': '已儲存',
|
||
'settings.adapters.saving': '儲存中...',
|
||
'settings.adapters.startHint': '儲存後執行介面卡:cd adapters && bun run {platform}',
|
||
'settings.adapters.pairing': '配對管理',
|
||
'settings.adapters.pairingDesc': '生成配對碼後在 IM 私聊中傳送給 Bot,完成身份繫結。',
|
||
'settings.adapters.generateCode': '生成配對碼',
|
||
'settings.adapters.regenerateCode': '重新生成',
|
||
'settings.adapters.codeExpired': '已過期',
|
||
'settings.adapters.codeExpiresIn': '有效期剩餘',
|
||
'settings.adapters.minutes': '分鐘',
|
||
'settings.adapters.pairingCodeHint': '請在釘釘、飛書、微信、WhatsApp 或 Telegram 私聊中傳送此配對碼給 Bot。微信和 WhatsApp 需要先完成掃碼繫結。',
|
||
'settings.adapters.pairedUsers': '已配對使用者',
|
||
'settings.adapters.noPairedUsers': '暫無已配對使用者',
|
||
'settings.adapters.unbind': '解綁',
|
||
'settings.adapters.unbindConfirm': '確定要解綁該使用者嗎?解綁後需重新配對才能使用。',
|
||
'settings.adapters.platform.telegram': 'Telegram',
|
||
'settings.adapters.platform.feishu': '飛書',
|
||
'settings.adapters.platform.wechat': '微信',
|
||
'settings.adapters.platform.dingtalk': '釘釘',
|
||
'settings.adapters.platform.whatsapp': 'WhatsApp',
|
||
'settings.adapters.dingtalkQrTitle': '掃碼繫結釘釘機器人',
|
||
'settings.adapters.dingtalkQrDesc': '使用釘釘手機 App 掃碼,一鍵建立並授權機器人。成功後會自動儲存 Client ID / Secret 並重啟介面卡。',
|
||
'settings.adapters.dingtalkStartAuth': '掃碼繫結',
|
||
'settings.adapters.dingtalkUnbindBot': '解除機器人繫結',
|
||
'settings.adapters.dingtalkQrAlt': '釘釘授權二維碼',
|
||
'settings.adapters.dingtalkWaiting': '等待釘釘掃碼確認...',
|
||
'settings.adapters.dingtalkBound': '釘釘機器人已繫結。',
|
||
'settings.adapters.dingtalkAuthFailed': '釘釘掃碼授權失敗。',
|
||
'settings.adapters.dingtalkAuthExpired': '釘釘掃碼授權已過期,請重新生成二維碼。',
|
||
'settings.adapters.dingtalkUnbindFailed': '釘釘解綁失敗。',
|
||
'settings.adapters.dingtalkUnbindBotConfirm': '確定解除這個釘釘機器人繫結嗎?解除後需要重新掃碼,釘釘才能繼續收發訊息。',
|
||
'settings.adapters.dingtalkClientId': 'Client ID',
|
||
'settings.adapters.dingtalkClientIdPlaceholder': '掃碼後自動填寫,也可手動輸入',
|
||
'settings.adapters.dingtalkClientSecret': 'Client Secret',
|
||
'settings.adapters.dingtalkClientSecretPlaceholder': '掃碼後自動填寫,也可手動輸入',
|
||
'settings.adapters.dingtalkEndpoint': 'Stream Endpoint',
|
||
'settings.adapters.dingtalkEndpointPlaceholder': '預設 https://api.dingtalk.com',
|
||
'settings.adapters.dingtalkPermissionCardTemplateId': '許可權卡片模板 ID',
|
||
'settings.adapters.dingtalkPermissionCardTemplateIdPlaceholder': '可選,互動卡片模板 ID',
|
||
'settings.adapters.dingtalkPermissionCardTemplateIdHint': '填寫後許可權請求會優先傳送釘釘互動卡片;留空則使用 /allow、/always、/deny 文字授權。',
|
||
'settings.adapters.wechatBind': '掃碼繫結',
|
||
'settings.adapters.wechatRebind': '重新掃碼',
|
||
'settings.adapters.wechatConnected': '微信已繫結',
|
||
'settings.adapters.wechatNotConnected': '微信未繫結',
|
||
'settings.adapters.wechatQrHint': '生成二維碼後使用微信掃碼並確認,繫結完成後介面卡會自動重啟。',
|
||
'settings.adapters.wechatQrAlt': '微信繫結二維碼',
|
||
'settings.adapters.wechatWaiting': '等待微信掃碼確認...',
|
||
'settings.adapters.wechatBindSuccess': '微信繫結成功。',
|
||
'settings.adapters.wechatUnbindAccount': '解除微信繫結',
|
||
'settings.adapters.wechatUnbindAccountConfirm': '確定解除這個微信賬號繫結嗎?解除後需要重新掃碼,微信才能繼續收發訊息。',
|
||
'settings.adapters.wechatUnbound': '微信繫結已解除。',
|
||
'settings.adapters.wechatUnbindFailed': '微信解綁失敗。',
|
||
'settings.adapters.wechatAllowedUsersHint': '微信掃碼只繫結賬號能力;使用者仍需傳送配對碼,或在這裡額外填寫允許的微信使用者 ID。',
|
||
'settings.adapters.whatsappBind': '掃碼繫結',
|
||
'settings.adapters.whatsappRebind': '重新掃碼',
|
||
'settings.adapters.whatsappConnected': 'WhatsApp 已繫結',
|
||
'settings.adapters.whatsappNotConnected': 'WhatsApp 未繫結',
|
||
'settings.adapters.whatsappQrHint': '生成二維碼後,在 WhatsApp 的「已連結裝置」中掃碼確認。繫結完成後介面卡會自動重啟。',
|
||
'settings.adapters.whatsappQrAlt': 'WhatsApp 繫結二維碼',
|
||
'settings.adapters.whatsappWaiting': '等待 WhatsApp 掃碼確認...',
|
||
'settings.adapters.whatsappBindSuccess': 'WhatsApp 繫結成功。',
|
||
'settings.adapters.whatsappBindFailed': 'WhatsApp 繫結失敗。',
|
||
'settings.adapters.whatsappUnbindAccount': '解除 WhatsApp 繫結',
|
||
'settings.adapters.whatsappUnbindAccountConfirm': '確定解除這個 WhatsApp 帳號繫結嗎?解除後需要重新掃碼,WhatsApp 才能繼續收發訊息。',
|
||
'settings.adapters.whatsappUnbound': 'WhatsApp 繫結已解除。',
|
||
'settings.adapters.whatsappUnbindFailed': 'WhatsApp 解綁失敗。',
|
||
'settings.adapters.whatsappAllowedUsersHint': 'WhatsApp 掃碼只繫結 Web 帳號能力;使用者仍需傳送配對碼,或在這裡額外填寫允許的 WhatsApp JID。',
|
||
|
||
// Settings > MCP
|
||
'settings.mcp.title': 'MCP 服務',
|
||
'settings.mcp.description': '在桌面端直接管理外部工具與資料來源。Local、Project、User 三種範圍與 CLI 保持一致。',
|
||
'settings.mcp.addServer': '新增服務',
|
||
'settings.mcp.openServer': '開啟 {name}',
|
||
'settings.mcp.empty': '還沒有配置 MCP 服務',
|
||
'settings.mcp.emptyHint': '先新增一個自定義的 STDIO、HTTP 或 SSE MCP 服務。',
|
||
'settings.mcp.stats.total': '服務總數',
|
||
'settings.mcp.stats.connected': '當前已連線',
|
||
'settings.mcp.stats.attention': '需要處理',
|
||
'settings.mcp.scope.project': '專案共享',
|
||
'settings.mcp.scope.local': '專案私有',
|
||
'settings.mcp.scope.user': '全域性使用者',
|
||
'settings.mcp.scope.plugin': '外掛',
|
||
'settings.mcp.scopeDesc.local': '只對你自己生效,但繫結到某一個專案。配置寫在使用者配置裡,同時帶上選中的專案上下文。',
|
||
'settings.mcp.scopeDesc.project': '寫入選中專案的 `.mcp.json`,專案成員共享。',
|
||
'settings.mcp.scopeDesc.user': '寫入你的全域性 Claude 配置,對所有專案生效。',
|
||
'settings.mcp.scope.dynamic': '內建',
|
||
'settings.mcp.scope.enterprise': '企業託管',
|
||
'settings.mcp.scope.claudeai': 'Claude.ai',
|
||
'settings.mcp.scope.managed': '受管控',
|
||
'settings.mcp.transport.http': 'Streamable HTTP',
|
||
'settings.mcp.globalOnlyHint': '選擇專案私有、專案共享或全域性使用者範圍。',
|
||
'settings.mcp.currentProjectHint': '當前專案:{path}',
|
||
'settings.mcp.form.back': '返回服務列表',
|
||
'settings.mcp.form.createTitle': '連線自定義 MCP',
|
||
'settings.mcp.form.createHint': '按當前 Claude Code 支援的欄位新增一個自定義 MCP 服務。',
|
||
'settings.mcp.form.editTitle': '設定 {name} MCP',
|
||
'settings.mcp.form.editHint': '檢視連線資訊、儲存修改,或直接在桌面端重連這個服務。',
|
||
'settings.mcp.form.transportLocked': '如果你想切換 MCP 服務型別,請先解除安裝後重新新增。',
|
||
'settings.mcp.form.uninstall': '解除安裝',
|
||
'settings.mcp.form.reconnect': '重連',
|
||
'settings.mcp.form.save': '儲存',
|
||
'settings.mcp.form.name': '名稱',
|
||
'settings.mcp.form.namePlaceholder': 'MCP 服務名稱',
|
||
'settings.mcp.form.scope': '配置範圍',
|
||
'settings.mcp.form.transport': '傳輸方式',
|
||
'settings.mcp.form.status': '狀態',
|
||
'settings.mcp.form.location': '配置位置',
|
||
'settings.mcp.form.rawConfig': '原始配置',
|
||
'settings.mcp.form.command': '啟動命令',
|
||
'settings.mcp.form.commandPlaceholder': 'npx',
|
||
'settings.mcp.form.commandHostHint': 'STDIO MCP 命令會直接在宿主機上執行。像 Node.js、Python、Bun、uv 這類執行時需要使用者自己安裝,並確保這個命令在 PATH 裡可用。',
|
||
'settings.mcp.form.arguments': '引數',
|
||
'settings.mcp.form.argumentPlaceholder': 'chrome-devtools-mcp@latest',
|
||
'settings.mcp.form.addArgument': '新增引數',
|
||
'settings.mcp.form.environmentVariables': '環境變數',
|
||
'settings.mcp.form.addEnv': '新增環境變數',
|
||
'settings.mcp.form.keyPlaceholder': '鍵',
|
||
'settings.mcp.form.valuePlaceholder': '值',
|
||
'settings.mcp.form.url': 'URL',
|
||
'settings.mcp.form.sseUrl': 'SSE 地址',
|
||
'settings.mcp.form.urlPlaceholder': 'https://mcp.example.com/mcp',
|
||
'settings.mcp.form.headers': '請求頭',
|
||
'settings.mcp.form.addHeader': '新增請求頭',
|
||
'settings.mcp.form.oauthClientId': 'OAuth Client ID',
|
||
'settings.mcp.form.oauthClientIdPlaceholder': '可選 Client ID',
|
||
'settings.mcp.form.oauthCallbackPort': 'OAuth 回撥埠',
|
||
'settings.mcp.form.oauthCallbackPortPlaceholder': '可選固定回撥埠',
|
||
'settings.mcp.form.headersHelper': 'Headers Helper 指令碼',
|
||
'settings.mcp.form.headersHelperPlaceholder': '可選的輔助指令碼路徑',
|
||
'settings.mcp.form.deleteTitle': '刪除 MCP 服務',
|
||
'settings.mcp.form.cancel': '取消',
|
||
'settings.mcp.form.confirmDelete': '刪除',
|
||
'settings.mcp.form.deleteConfirm': '確定刪除 MCP 服務 “{name}” 嗎?此操作不可撤銷。',
|
||
'settings.mcp.form.deleteConfirmBody': '確定刪除 MCP 服務 “{name}” 嗎?此操作不可撤銷。',
|
||
'settings.mcp.targetProject.title': '目標專案',
|
||
'settings.mcp.targetProject.selected': '當前展示的是這個專案下的私有/共享 MCP:{path}',
|
||
'settings.mcp.targetProject.empty': '先選擇一個專案,才能檢視專案私有或專案共享的 MCP。',
|
||
'settings.mcp.targetProject.emptyWithCurrent': '請先選擇目標專案。當前啟用會話的專案是:{path}',
|
||
'settings.mcp.targetProject.localSelected': '這個 MCP 會作為“專案私有”安裝到:{path}',
|
||
'settings.mcp.targetProject.localEmpty': '請選擇要安裝這個私有 MCP 的專案。',
|
||
'settings.mcp.targetProject.projectSelected': '這個 MCP 會寫入:{path}/.mcp.json,作為專案共享配置。',
|
||
'settings.mcp.targetProject.projectEmpty': '請選擇要寫入 `.mcp.json` 的專案。',
|
||
'settings.mcp.targetProject.globalTitle': '全域性安裝目標',
|
||
'settings.mcp.targetProject.globalHint': '全域性使用者不需要選擇專案。它會寫入你的全域性 Claude 配置,並對所有專案生效。',
|
||
'settings.mcp.toast.created': '已建立 MCP 服務 “{name}”',
|
||
'settings.mcp.toast.saved': '已儲存 MCP 服務 “{name}”',
|
||
'settings.mcp.toast.deleted': '已刪除 MCP 服務 “{name}”',
|
||
'settings.mcp.toast.enabled': '已啟用 MCP 服務 “{name}”',
|
||
'settings.mcp.toast.disabled': '已禁用 MCP 服務 “{name}”',
|
||
'settings.mcp.toast.reconnected': '已重連 MCP 服務 “{name}”',
|
||
'settings.mcp.toast.saveFailed': '儲存 MCP 服務失敗',
|
||
'settings.mcp.toast.deleteFailed': '刪除 MCP 服務失敗',
|
||
'settings.mcp.toast.toggleFailed': '更新 MCP 服務狀態失敗',
|
||
'settings.mcp.toast.reconnectFailed': '重連 MCP 服務失敗',
|
||
|
||
// Settings > Agents
|
||
'settings.tab.agents': 'Agents',
|
||
'settings.agents.title': '已安裝的 Agents',
|
||
'settings.agents.loadError': '載入 Agent 失敗',
|
||
'settings.agents.description': '瀏覽 Claude 當前可用的 Agents,包括內建、專案和使用者來源。可在 TUI 中使用 /agents 檢視當前生效項與覆蓋關係。',
|
||
'settings.agents.browserTitle': '瀏覽已安裝 Agents',
|
||
'settings.agents.browserEyebrow': 'Agent 瀏覽器',
|
||
'settings.agents.entryEyebrow': 'Agent 檔案',
|
||
'settings.agents.empty': '暫無可用 Agent。',
|
||
'settings.agents.emptyHint': '在 Claude 設定或當前專案中新增 Agent 定義後,就會顯示在這裡。',
|
||
'settings.agents.refreshWarning': '變更已儲存,但最新 Agent 設定未能完全套用。',
|
||
'settings.agents.model': '模型',
|
||
'settings.agents.tools': '工具',
|
||
'settings.agents.systemPrompt': '系統提示詞',
|
||
'settings.agents.noDescription': '暫無描述',
|
||
'settings.agents.noSystemPrompt': '未定義系統提示詞。',
|
||
'settings.agents.backToList': '返回列表',
|
||
'settings.agents.agentCount': '{count} 個 Agent',
|
||
'settings.agents.summary.totalAgents': 'Agent 總數',
|
||
'settings.agents.summary.activeAgents': '生效中',
|
||
'settings.agents.summary.sources': '來源型別',
|
||
'settings.agents.summary.source': '來源',
|
||
'settings.agents.summary.model': '模型',
|
||
'settings.agents.summary.tools': '工具',
|
||
'settings.agents.summary.status': '狀態',
|
||
'settings.agents.groupHint': '{source}中有 {count} 個 Agent 可用',
|
||
'settings.agents.status.active': '已生效',
|
||
'settings.agents.status.available': '可檢視',
|
||
'settings.agents.overriddenBy': '被 {source} 覆蓋',
|
||
'settings.agents.overriddenByShort': '被 {source} 覆蓋',
|
||
'settings.agents.toolCount': '{count} 個工具',
|
||
'settings.agents.noTools': '未限制工具',
|
||
'settings.agents.disabledTools': '停用全部工具',
|
||
'settings.agents.promptHint': '閱讀當前 system prompt,並對比這個 Agent 的職責範圍。',
|
||
'settings.agents.source.userSettings': '使用者',
|
||
'settings.agents.source.projectSettings': '專案',
|
||
'settings.agents.source.localSettings': '本地',
|
||
'settings.agents.source.policySettings': '託管',
|
||
'settings.agents.source.plugin': '外掛',
|
||
'settings.agents.source.flagSettings': 'CLI 引數',
|
||
'settings.agents.source.built-in': '內建',
|
||
'settings.agents.create': '建立 Agent',
|
||
'settings.agents.createTitle': '建立 Agent',
|
||
'settings.agents.edit': '編輯',
|
||
'settings.agents.editTitle': '編輯 Agent',
|
||
'settings.agents.delete': '刪除',
|
||
'settings.agents.readOnly': '唯讀',
|
||
'settings.agents.deleteTitle': '刪除 Agent',
|
||
'settings.agents.deleteBody': '確定刪除 Agent「{name}」嗎?此操作無法復原。',
|
||
'settings.agents.deleteTarget': '檔案:{target}',
|
||
'settings.agents.deleteConfirm': '刪除 Agent',
|
||
'settings.agents.deleteError': '刪除 Agent 失敗',
|
||
'settings.agents.detail.configuredModel': '設定模型',
|
||
'settings.agents.detail.configuredEffort': '設定的思考強度',
|
||
'settings.agents.detail.effortHint': '如果所選模型不支援,執行時可能降低或忽略此設定。',
|
||
'settings.agents.detail.inherit': '繼承',
|
||
'settings.agents.form.scope': '設定範圍',
|
||
'settings.agents.form.scopeUser': '使用者',
|
||
'settings.agents.form.scopeProject': '專案',
|
||
'settings.agents.form.projectUnavailable': '請先開啟一個專案工作階段,再建立專案級 Agent。',
|
||
'settings.agents.form.projectTarget': '目標專案:{path}',
|
||
'settings.agents.form.name': '名稱',
|
||
'settings.agents.form.namePlaceholder': 'code-reviewer',
|
||
'settings.agents.form.nameError': '請輸入 1–64 位小寫字母、數字、連字號或底線,並以字母或數字開頭和結尾。',
|
||
'settings.agents.form.description': '描述',
|
||
'settings.agents.form.descriptionPlaceholder': '說明主 Agent 應在什麼情境下委派給它。',
|
||
'settings.agents.form.descriptionRequired': '請輸入描述。',
|
||
'settings.agents.form.systemPrompt': '系統提示詞',
|
||
'settings.agents.form.systemPromptPlaceholder': '定義這個 Agent 的職責、邊界和預期輸出。',
|
||
'settings.agents.form.systemPromptRequired': '請輸入系統提示詞。',
|
||
'settings.agents.form.model': '模型',
|
||
'settings.agents.form.customModel': '自訂模型 ID',
|
||
'settings.agents.form.customModelId': '自訂模型 ID',
|
||
'settings.agents.form.customModelRequired': '請輸入自訂模型 ID。',
|
||
'settings.agents.form.effort': '思考強度',
|
||
'settings.agents.form.inherit': '繼承主 Agent',
|
||
'settings.agents.form.tools': '工具',
|
||
'settings.agents.form.toolsInherit': '全部工具',
|
||
'settings.agents.form.toolsNone': '不允許使用工具',
|
||
'settings.agents.form.toolsCustom': '自訂清單',
|
||
'settings.agents.form.toolsCustomLabel': '其他工具名稱或權限規則',
|
||
'settings.agents.form.toolsPlaceholder': 'mcp__docs__search, Bash(git:*)',
|
||
'settings.agents.form.toolsHint': '選擇這個 Agent 需要的內建工具;自訂工具和 MCP 工具可在下方補充。',
|
||
'settings.agents.form.builtInTools': '內建工具',
|
||
'settings.agents.form.builtInToolsHint': '以下工具在目前執行環境可用,請只授予 Agent 必要的能力。',
|
||
'settings.agents.form.toolsSelectedCount': '已選 {count} 項',
|
||
'settings.agents.form.toolsSearch': '搜尋工具',
|
||
'settings.agents.form.toolsSearchPlaceholder': '依名稱或用途搜尋',
|
||
'settings.agents.form.toolsNoResults': '沒有相符的工具',
|
||
'settings.agents.form.toolsUnavailable': '暫時無法取得內建工具清單,你仍可在下方輸入正確的工具名稱。',
|
||
'settings.agents.form.toolsCustomHint': '選填。用於 MCP 工具、自訂工具或 Bash(git:*) 這類權限規則。',
|
||
'settings.agents.form.toolCategory.readSearch': '讀取與搜尋',
|
||
'settings.agents.form.toolCategory.modify': '修改檔案',
|
||
'settings.agents.form.toolCategory.execute': '執行命令',
|
||
'settings.agents.form.toolCategory.workflow': '工作流程',
|
||
'settings.agents.form.toolCategory.other': '其他',
|
||
'settings.agents.form.toolDescription.Read': '讀取檔案和目錄',
|
||
'settings.agents.form.toolDescription.Glob': '依名稱或路徑規則尋找檔案',
|
||
'settings.agents.form.toolDescription.Grep': '依文字或規則搜尋檔案內容',
|
||
'settings.agents.form.toolDescription.WebFetch': '讀取網頁內容',
|
||
'settings.agents.form.toolDescription.WebSearch': '搜尋網際網路',
|
||
'settings.agents.form.toolDescription.Edit': '精確修改現有檔案',
|
||
'settings.agents.form.toolDescription.Write': '建立或覆寫檔案',
|
||
'settings.agents.form.toolDescription.NotebookEdit': '編輯 Jupyter Notebook 儲存格',
|
||
'settings.agents.form.toolDescription.Bash': '在 Unix Shell 中執行終端命令',
|
||
'settings.agents.form.toolDescription.PowerShell': '執行 Windows PowerShell 命令',
|
||
'settings.agents.form.toolDescription.TodoWrite': '維護工作清單',
|
||
'settings.agents.form.toolDescription.Skill': '載入已安裝的 Skill 工作流程',
|
||
'settings.agents.form.toolDescription.ToolSearch': '依能力尋找延遲載入的工具',
|
||
'settings.agents.form.toolDescription.EnterWorktree': '建立並進入隔離的 Git Worktree',
|
||
'settings.agents.form.toolDescription.ExitWorktree': '離開並清理 Agent Worktree',
|
||
'settings.agents.form.toolDescription.StructuredOutput': '回傳經過 Schema 驗證的結構化資料',
|
||
'settings.agents.form.toolDescription.generic': '使用這項內建執行能力',
|
||
'settings.agents.form.toolsInheritHint': '不寫入 tools 欄位,因此這個 Agent 可以使用全部工具。',
|
||
'settings.agents.form.toolsNoneHint': '寫入空的 tools 清單,因此這個 Agent 無法使用任何工具。',
|
||
'settings.agents.form.toolsCustomRequired': '請至少選擇或輸入一個允許使用的工具。',
|
||
'settings.agents.form.color': '顏色',
|
||
'settings.agents.form.noColor': '預設',
|
||
'settings.agents.form.saveError': '儲存 Agent 失敗',
|
||
|
||
// Settings > Skills
|
||
'settings.skills.title': '已安裝技能',
|
||
'settings.skills.description': '技能擴充套件 Claude 的能力。在 ~/.claude/skills/ 或 ~/.agents/skills/ 中管理技能。',
|
||
'settings.skills.redirectDescription': '技能現在統一放在技能中心管理,市場和已安裝技能會放在同一個入口裡。',
|
||
'settings.skills.browserTitle': '瀏覽已安裝技能',
|
||
'settings.skills.browserEyebrow': '技能瀏覽器',
|
||
'settings.skills.browserDescription': '檢視內建、專案和使用者技能,比較它們的來源與規模,並開啟技能目錄閱讀文件和原始碼檔案。',
|
||
'settings.skills.searchLabel': '搜尋技能',
|
||
'settings.skills.searchPlaceholder': '搜尋技能名稱、描述或來源...',
|
||
'settings.skills.searchResultCount': '匹配 {count} / {total} 個技能',
|
||
'settings.skills.clearSearch': '清空技能搜尋',
|
||
'settings.skills.noSearchResults': '沒有匹配的技能',
|
||
'settings.skills.noSearchResultsHint': '換一個關鍵詞,或清空搜尋檢視全部技能。',
|
||
'settings.skills.entryEyebrow': '技能入口',
|
||
'settings.skills.slashCommand': '/斜槓命令',
|
||
'settings.skills.agentsDirBadge': '.agents',
|
||
'settings.skills.agentsDirHint':
|
||
'來自 ~/.agents/skills/ 開放標準目錄,與 Codex、Cursor、Gemini CLI 共享',
|
||
'settings.skills.agentsDirProjectHint':
|
||
'來自目前專案的 .agents/skills/ 目錄 —— 隨儲存庫一起散布,不是你自己安裝的',
|
||
'settings.skills.tokenEstimate': '約 {count} tokens',
|
||
'settings.skills.tokenEstimateShort': '約 {count}',
|
||
'settings.skills.summary.totalSkills': '技能總數',
|
||
'settings.skills.summary.totalFiles': '檔案數',
|
||
'settings.skills.summary.sources': '來源型別',
|
||
'settings.skills.summary.tokens': '預估 tokens',
|
||
'settings.skills.summary.source': '來源',
|
||
'settings.skills.summary.entry': '入口檔案',
|
||
'settings.skills.groupHint': '{source}中有 {count} 個技能可用',
|
||
'settings.skills.ready': '可檢視',
|
||
'settings.skills.unavailable': '不可用',
|
||
'settings.skills.empty': '暫無已安裝技能',
|
||
'settings.skills.emptyHint': '在 ~/.claude/skills/ 或 ~/.agents/skills/ 中新增技能即可開始',
|
||
'settings.skills.back': '返回列表',
|
||
'settings.skills.files': '個檔案',
|
||
'settings.skills.entryFile': '入口檔案',
|
||
'settings.skills.metaTitle': '技能後設資料',
|
||
'settings.skills.filesPanel': '檔案',
|
||
'settings.skills.filesPanelHint': '瀏覽入口檔案及其配套實現檔案。',
|
||
'settings.skills.readingMode': '當前為{mode}',
|
||
'settings.skills.docMode': '文件模式',
|
||
'settings.skills.codeMode': '程式碼模式',
|
||
'settings.skills.source.user': '使用者',
|
||
'settings.skills.source.project': '專案',
|
||
'settings.skills.source.plugin': '外掛',
|
||
'settings.skills.source.mcp': 'MCP',
|
||
'settings.skills.source.bundled': '內建',
|
||
|
||
// Settings > Memory
|
||
'settings.tab.memory': '記憶',
|
||
'settings.memory.title': '專案記憶',
|
||
'settings.memory.description': '檢視和編輯 Claude 為每個專案寫入的 Markdown 記憶檔案。這些檔案存放在 ~/.claude/projects/<project>/memory/,會被 CLI 執行時載入。',
|
||
'settings.memory.refresh': '重新整理',
|
||
'settings.memory.projects': '專案',
|
||
'settings.memory.files': '記憶檔案',
|
||
'settings.memory.filePath': '記憶檔案路徑',
|
||
'settings.memory.resourceManager': '資源管理器',
|
||
'settings.memory.editor': '編輯',
|
||
'settings.memory.edit': '編輯',
|
||
'settings.memory.preview': '預覽',
|
||
'settings.memory.rendered': '已渲染',
|
||
'settings.memory.emptyProjects': '還沒有找到記憶專案。',
|
||
'settings.memory.emptyFiles': '還沒有找到記憶檔案。',
|
||
'settings.memory.selectFile': '選擇一個記憶檔案。',
|
||
'settings.memory.selectProject': '選擇一個專案。',
|
||
'settings.memory.noFileSelected': '未選擇檔案',
|
||
'settings.memory.current': '當前',
|
||
'settings.memory.indexFile': '索引',
|
||
'settings.memory.missing': '目錄缺失',
|
||
'settings.memory.fileCount': '{count} 個檔案',
|
||
'settings.memory.unsaved': '未儲存',
|
||
'settings.memory.saved': '已儲存',
|
||
'settings.memory.revert': '還原',
|
||
'settings.memory.discardUnsavedConfirm': '要放棄未儲存的記憶修改嗎?',
|
||
'settings.memory.projectSearchPlaceholder': '按路徑搜尋專案...',
|
||
'settings.memory.fileSearchPlaceholder': '搜尋記憶檔案...',
|
||
'settings.memory.resourceSearchPlaceholder': '搜尋專案或記憶檔案...',
|
||
'settings.memory.noProjectMatches': '沒有匹配的專案。',
|
||
'settings.memory.noFileMatches': '沒有匹配的記憶檔案。',
|
||
'settings.memory.clearSearch': '清空搜尋',
|
||
'settings.memory.toggleFolder': '展開或摺疊 {name}',
|
||
|
||
// Settings > Plugins
|
||
'settings.plugins.title': '已安裝外掛',
|
||
'settings.plugins.description': '檢視已安裝外掛、執行狀態,並把外掛變更應用到桌面端執行時。',
|
||
'settings.plugins.browserTitle': '瀏覽已安裝外掛',
|
||
'settings.plugins.browserEyebrow': '外掛管理',
|
||
'settings.plugins.browserDescription': '外掛會把技能、Agent、Hook、MCP 服務和語言工具打包在一起。這裡先聚焦已安裝外掛、健康狀態和應用變更反饋,不把 CLI 的整套複雜互動直接搬過來。',
|
||
'settings.plugins.entryEyebrow': '外掛詳情',
|
||
'settings.plugins.summary.total': '外掛總數',
|
||
'settings.plugins.summary.enabled': '已啟用',
|
||
'settings.plugins.summary.attention': '需關注',
|
||
'settings.plugins.summary.marketplaces': '市場',
|
||
'settings.plugins.summary.skills': '技能',
|
||
'settings.plugins.summary.agents': 'Agents',
|
||
'settings.plugins.summary.mcp': 'MCP',
|
||
'settings.plugins.summary.hooks': 'Hooks',
|
||
'settings.plugins.group.attention': '需關注',
|
||
'settings.plugins.group.enabled': '已啟用',
|
||
'settings.plugins.group.disabled': '已禁用',
|
||
'settings.plugins.groupHint': '此分組下共有 {count} 個外掛',
|
||
'settings.plugins.refresh': '重新整理',
|
||
'settings.plugins.apply': '應用變更',
|
||
'settings.plugins.applyHint': '啟用、禁用或更新後,需要把外掛變更重新應用到當前桌面端執行時。',
|
||
'settings.plugins.lastReload': '最近一次應用:{enabled} 個活躍外掛,{skills} 個外掛技能,{errors} 個錯誤。',
|
||
'settings.plugins.reloadToast': '外掛變更已應用:{enabled} 個活躍外掛,{skills} 個技能,{errors} 個錯誤。',
|
||
'settings.plugins.reloadWarning': '外掛變更已應用,但執行階段重新載入失敗:{message}',
|
||
'settings.plugins.marketplacesTitle': '已知外掛市場',
|
||
'settings.plugins.marketplacesHint': '這裡只展示當前機器已經配置好的 marketplace 來源摘要。',
|
||
'settings.plugins.marketplaceAutoUpdateOn': '自動更新開',
|
||
'settings.plugins.marketplaceAutoUpdateOff': '自動更新關',
|
||
'settings.plugins.marketplaceInstalledCount': '已安裝 {count} 個',
|
||
'settings.plugins.marketplaceUpdatedAt': '更新於 {value}',
|
||
'settings.plugins.status.enabled': '已啟用',
|
||
'settings.plugins.status.disabled': '已禁用',
|
||
'settings.plugins.status.attention': '需關注',
|
||
'settings.plugins.scope.user': '使用者',
|
||
'settings.plugins.scope.project': '專案',
|
||
'settings.plugins.scope.local': '本地',
|
||
'settings.plugins.scope.managed': '託管',
|
||
'settings.plugins.scope.builtin': '內建',
|
||
'settings.plugins.empty': '暫無已安裝外掛',
|
||
'settings.plugins.emptyHint': '先在 Claude Code 裡安裝外掛,桌面端就可以在這裡管理。',
|
||
'settings.plugins.back': '返回列表',
|
||
'settings.plugins.noDescription': '這個外掛沒有可用描述。',
|
||
'settings.plugins.errorCount': '{count} 個錯誤',
|
||
'settings.plugins.enable': '啟用',
|
||
'settings.plugins.disable': '禁用',
|
||
'settings.plugins.update': '更新',
|
||
'settings.plugins.uninstall': '解除安裝',
|
||
'settings.plugins.confirmUninstall': '確定解除安裝外掛“{name}”嗎?會刪除當前 scope 下的安裝副本。',
|
||
'settings.plugins.selectionCount': '已選擇 {count} 個',
|
||
'settings.plugins.clearSelection': '清除',
|
||
'settings.plugins.enableSelected': '啟用所選',
|
||
'settings.plugins.disableSelected': '禁用所選',
|
||
'settings.plugins.selectPlugin': '選擇 {name}',
|
||
'settings.plugins.bulkEnableTitle': '啟用已選擇的 {count} 個外掛?',
|
||
'settings.plugins.bulkDisableTitle': '禁用已選擇的 {count} 個外掛?',
|
||
'settings.plugins.bulkEnableBody': '將啟用 {names},並把外掛變更應用到當前桌面端執行時。',
|
||
'settings.plugins.bulkDisableBody': '將禁用 {names},並把外掛變更應用到當前桌面端執行時。',
|
||
'settings.plugins.bulkEnableToast': '已啟用 {count} 個外掛,並應用外掛變更。',
|
||
'settings.plugins.bulkDisableToast': '已禁用 {count} 個外掛,並應用外掛變更。',
|
||
'settings.plugins.author': '作者:{value}',
|
||
'settings.plugins.projectPath': '專案:{value}',
|
||
'settings.plugins.installPath': '安裝位置:{value}',
|
||
'settings.plugins.managedHint': '這個外掛由策略託管,不能在桌面端修改。',
|
||
'settings.plugins.builtinHint': '內建外掛支援在這裡重新應用,但不開放安裝和解除安裝操作。',
|
||
'settings.plugins.errorsTitle': '外掛錯誤',
|
||
'settings.plugins.capabilitiesTitle': '打包能力',
|
||
'settings.plugins.capabilitiesHint': '根據外掛 manifest 和執行時整合解析出的能力列表。',
|
||
'settings.plugins.sharedNavigationDisabled': '先啟用外掛並應用變更,才能在共享管理頁中開啟它的技能、Agent 或 MCP 條目。',
|
||
'settings.plugins.capabilityEmpty': '沒有暴露',
|
||
'settings.plugins.capability.skills': '{count} 個技能',
|
||
'settings.plugins.capability.agents': '{count} 個 Agent',
|
||
'settings.plugins.capability.mcpServers': '{count} 個 MCP 服務',
|
||
'settings.plugins.capabilityLabel.skills': '技能',
|
||
'settings.plugins.capabilityLabel.commands': '命令',
|
||
'settings.plugins.capabilityLabel.agents': 'Agents',
|
||
'settings.plugins.capabilityLabel.hooks': 'Hooks',
|
||
'settings.plugins.capabilityLabel.mcpServers': 'MCP 服務',
|
||
'settings.plugins.capabilityLabel.lspServers': 'LSP 服務',
|
||
|
||
// Settings > About
|
||
'settings.tab.about': '關於',
|
||
'settings.about.version': '版本',
|
||
'settings.about.changelog': '更新日誌',
|
||
'settings.about.repo': 'GitHub 倉庫',
|
||
'settings.about.starHint': '如果這個專案對你有幫助,歡迎給個 Star',
|
||
'settings.about.feedback': '反饋問題',
|
||
'settings.about.feedbackDesc': '遇到 Bug 或使用問題,前往 GitHub Issue 提交反饋',
|
||
'settings.about.author': '作者',
|
||
'settings.about.socialMedia': '社交媒體',
|
||
'settings.about.updates': '應用更新',
|
||
'settings.about.updatesDesc': '檢查 GitHub Releases,下載安裝包,並在安裝後自動重啟。',
|
||
|
||
// Settings > Computer Use
|
||
'settings.tab.computerUse': 'Computer Use',
|
||
'settings.computerUse.title': 'Computer Use',
|
||
'settings.computerUse.description': '允許 Claude 截圖、點選、打字並控制你的電腦。需要 Python 3,macOS 上還需要輔助功能許可權。',
|
||
'settings.computerUse.enabledToggle': '啟用',
|
||
'settings.computerUse.disabledHint': 'Computer Use 已關閉。新會話不會注入 computer-use MCP,也不會把桌面控制工具暴露給 Coding Agent。',
|
||
'settings.computerUse.notSupported': 'Computer Use 僅支援 macOS 和 Windows。',
|
||
'settings.computerUse.python': 'Python 3',
|
||
'settings.computerUse.pythonNotFound': '未安裝,請先安裝 Python 3。',
|
||
'settings.computerUse.pythonFound': '已安裝',
|
||
'settings.computerUse.pythonCustomInvalid': '自定義直譯器不可用',
|
||
'settings.computerUse.pythonPathLabel': 'Python 直譯器路徑',
|
||
'settings.computerUse.pythonPathPlaceholder': '自動檢測,或選擇 python.exe / python3',
|
||
'settings.computerUse.pythonPathHint': '留空則自動檢測;選擇 conda、pyenv 或自定義環境裡的 Python 可執行檔案後會優先使用它建立執行環境。',
|
||
'settings.computerUse.pythonPathBrowse': '選擇',
|
||
'settings.computerUse.pythonPathSave': '應用',
|
||
'settings.computerUse.pythonPathAuto': '自動',
|
||
'settings.computerUse.pythonPathSaved': '已儲存,重新檢測會優先使用這個直譯器。',
|
||
'settings.computerUse.pythonPathSaveFailed': '儲存失敗,請稍後重試。',
|
||
'settings.computerUse.pythonPathDialogTitle': '選擇 Python 直譯器',
|
||
'settings.computerUse.pythonPathDialogFailed': '無法開啟檔案選擇器,請手動貼上路徑。',
|
||
'settings.computerUse.venv': '虛擬環境',
|
||
'settings.computerUse.venvReady': '已就緒',
|
||
'settings.computerUse.venvNotReady': '未建立',
|
||
'settings.computerUse.deps': '依賴包',
|
||
'settings.computerUse.depsReady': '已安裝',
|
||
'settings.computerUse.depsNotReady': '未安裝',
|
||
'settings.computerUse.accessibility': '輔助功能許可權',
|
||
'settings.computerUse.screenRecording': '螢幕錄製許可權',
|
||
'settings.computerUse.permGranted': '已授權',
|
||
'settings.computerUse.permDenied': '未授權 — 請前往「系統設定 > 隱私與安全性」授權',
|
||
'settings.computerUse.permUnknown': '請先安裝環境後檢測',
|
||
'settings.computerUse.permScreenRecordingUnknownSoft': '自動檢測結果不穩定;如果系統設定裡已授權,通常可以直接使用',
|
||
'settings.computerUse.permScreenRecordingManual': '無法自動檢測 — 請在系統設定中手動確認已授權',
|
||
'settings.computerUse.setupBtn': '安裝環境',
|
||
'settings.computerUse.setupRunning': '安裝中...',
|
||
'settings.computerUse.setupSuccess': '環境安裝完成!',
|
||
'settings.computerUse.setupFail': '安裝失敗',
|
||
'settings.computerUse.allReady': '所有檢查透過,Computer Use 已就緒。',
|
||
'settings.computerUse.downloadPython': '下載 Python 3',
|
||
'settings.computerUse.recheckBtn': '重新檢測',
|
||
'settings.computerUse.requirementsLabel': '需要的 Python 包',
|
||
'settings.computerUse.appsTitle': '已授權應用',
|
||
'settings.computerUse.appsDescription': '預先授權 App,Claude 將可以直接控制這些 App,無需執行時彈窗確認。',
|
||
'settings.computerUse.appsLoading': '載入已安裝的 App...',
|
||
'settings.computerUse.appsEmpty': '未找到已安裝的 App,請先安裝環境。',
|
||
'settings.computerUse.appsSearch': '搜尋 App...',
|
||
'settings.computerUse.appsSaved': '已儲存',
|
||
'settings.computerUse.openAccessibility': '開啟輔助功能設定',
|
||
'settings.computerUse.openScreenRecording': '開啟螢幕錄製設定',
|
||
'settings.computerUse.permRestartHint': '授權後需重啟 App 才能生效。',
|
||
'settings.computerUse.flagClipboard': '剪貼簿訪問',
|
||
'settings.computerUse.flagSystemKeys': '系統快捷鍵',
|
||
|
||
// Settings > General - Storage
|
||
'settings.general.modeSwitchTitle': '切換資料儲存位置?',
|
||
'settings.general.modeSwitchConfirm': '儲存並重啟',
|
||
'settings.general.storageTitle': '資料儲存位置',
|
||
'settings.general.storageDescription': '低頻高階設定。切換後,會話記錄、Skills、MCP、外掛、Provider 配置、任務和快取都會從新的目錄讀取。',
|
||
'settings.general.storageSystemTitle': '使用系統目錄',
|
||
'settings.general.storageSystemDescription': '使用 Claude Code 的標準使用者目錄:~/.claude(Windows 上是 %USERPROFILE%\\.claude)。',
|
||
'settings.general.storagePortableTitle': '使用自訂目錄',
|
||
'settings.general.storagePortableDescription': '把桌面端資料寫入你明確選擇的資料夾。必須使用絕對路徑,而且不能放在應用安裝目錄內。',
|
||
'settings.general.storagePortableDirLabel': '自訂資料目錄',
|
||
'settings.general.storagePortableDirPlaceholder': '選擇一個用於儲存 cc-haha 資料的資料夾',
|
||
'settings.general.storageChooseDir': '選擇目錄',
|
||
'settings.general.storageChooseDirTitle': '選擇自訂資料目錄',
|
||
'settings.general.storageApplyPortable': '使用這個目錄並重啟',
|
||
'settings.general.storageActiveDir': '當前實際讀取目錄',
|
||
'settings.general.storageEnvironmentHint': '當前目錄由 CLAUDE_CONFIG_DIR 環境變數控制。應用內切換不會覆蓋這個環境變數;如需回到系統目錄,請先移除啟動環境裡的 CLAUDE_CONFIG_DIR。',
|
||
'settings.general.storageEnvironmentSwitchBlocked': '當前由 CLAUDE_CONFIG_DIR 環境變數控制。請先移除啟動環境裡的 CLAUDE_CONFIG_DIR,再切回系統目錄。',
|
||
'settings.general.storageRestartHint': '已儲存切換請求。請重啟應用,讓新的資料目錄生效。',
|
||
'settings.general.storageMoveHint': '切換模式不會合併兩個目錄。Windows 升級會先驗證並救援舊應用目錄旁的資料;無法確認完整恢復時,安裝程式會停止升級。',
|
||
'settings.general.storageNoDirError': '請先選擇或填寫一個自訂資料目錄。',
|
||
'settings.general.storagePickerError': '無法開啟目錄選擇器,請手動貼上目錄路徑。',
|
||
'settings.general.storageRestartError': '切換已儲存,但自動重啟失敗,請手動重啟應用。',
|
||
'settings.general.storageSwitchPortableBody': '切換後,桌面端會從下面這個目錄讀取和寫入會話、配置、Skills、MCP、外掛、任務和快取。',
|
||
'settings.general.storageSwitchDefaultBody': '切回系統目錄後,桌面端會重新使用 ~/.claude。當前自訂目錄中的資料不會被刪除,也不會自動遷回。',
|
||
'settings.general.storageSwitchRestartBody': '應用將先關閉本地服務和介面卡程序,然後自動重啟。重啟後新目錄才會生效。',
|
||
|
||
// Settings > General
|
||
'settings.general.appearanceTitle': '配色主題',
|
||
'settings.general.appearanceDescription': '在紙、墨、印六套配色之間切換。',
|
||
'settings.general.appearance.paper': '紙墨',
|
||
'settings.general.appearance.warmClassic': '經典暖色',
|
||
'settings.general.appearance.celadon': '青瓷',
|
||
'settings.general.appearance.inkBlue': '墨夜藍',
|
||
'settings.general.appearance.dark': '墨夜',
|
||
'settings.general.appearance.white': '純白',
|
||
'settings.general.appearance.followSystem': '跟隨系統',
|
||
'settings.general.appearance.followSystemHint': '系統切到深色模式時自動換成墨色配色,切回淺色時換回紙色配色。',
|
||
'settings.general.appearance.lightThemeLabel': '淺色模式下使用',
|
||
'settings.general.appearance.darkThemeLabel': '深色模式下使用',
|
||
'settings.general.languageTitle': '語言',
|
||
'settings.general.languageDescription': '選擇應用程式的顯示語言。',
|
||
'settings.general.responseLangTitle': '回覆語言',
|
||
'settings.general.responseLangDescription': '指定 Claude 始終以某種語言回覆。',
|
||
'settings.general.responseLangDefault': '預設(英語)',
|
||
'settings.general.outputStyleTitle': '輸出風格',
|
||
'settings.general.outputStyleDescription': '選擇 Claude 在新會話或重啟後的會話中如何表達。',
|
||
'settings.general.outputStyleBuiltin.default.label': '預設',
|
||
'settings.general.outputStyleBuiltin.default.description': 'Claude 會高效完成編碼任務,並提供簡潔回覆',
|
||
'settings.general.outputStyleBuiltin.explanatory.label': '解釋型',
|
||
'settings.general.outputStyleBuiltin.explanatory.description': 'Claude 會解釋實作選擇和程式碼庫模式',
|
||
'settings.general.outputStyleBuiltin.learning.label': '學習型',
|
||
'settings.general.outputStyleBuiltin.learning.description': 'Claude 會暫停並請你編寫小段程式碼進行實戰練習',
|
||
'settings.general.outputStyleSelectLabel': '選擇輸出風格',
|
||
'settings.general.outputStyleLoading': '正在載入輸出風格...',
|
||
'settings.general.outputStyleSaved': '輸出風格已儲存。',
|
||
'settings.general.outputStyleRestartHint': '正在執行的會話會繼續使用目前提示詞。新建會話、在新程序中繼續,或重啟會話後生效。',
|
||
'settings.general.outputStyleScopeLocal': '目前專案',
|
||
'settings.general.outputStyleScopeUser': '使用者設定',
|
||
'settings.general.outputStyleScopeLocalHint': '已儲存到目前專案的 .claude/settings.local.json。',
|
||
'settings.general.outputStyleScopeUserHint': '目前未選擇專案,因此儲存到使用者設定。',
|
||
'settings.general.outputStyleSourceBuiltIn': '內建',
|
||
'settings.general.outputStyleSourceUser': '使用者風格',
|
||
'settings.general.outputStyleSourceProject': '專案風格',
|
||
'settings.general.outputStyleSourceLocal': '專案本地風格',
|
||
'settings.general.outputStyleSourcePolicy': '受管風格',
|
||
'settings.general.outputStyleSourcePlugin': '外掛風格',
|
||
'settings.general.defaultPermissionTitle': '預設會話權限',
|
||
'settings.general.defaultPermissionDescription': '選擇桌面端新建聊天會話時預設使用的權限模式。',
|
||
'settings.general.defaultPermissionLabel': '新會話權限模式',
|
||
'settings.general.defaultPermissionHint': '每個會話內部仍然可以透過聊天區的權限選擇器單獨修改。',
|
||
'settings.general.defaultPermissionScope': '每個新會話的工作區',
|
||
'settings.general.effortTitle': '推理強度',
|
||
'settings.general.effortDescription': '控制模型使用的計算量。',
|
||
'settings.general.effort.low': '低',
|
||
'settings.general.effort.medium': '中',
|
||
'settings.general.effort.high': '高',
|
||
'settings.general.effort.xhigh': '極高',
|
||
'settings.general.effort.max': '最大',
|
||
'settings.general.thinkingTitle': '思考模式',
|
||
'settings.general.thinkingDescription': '控制新會話是否啟用模型思考。關閉後,DeepSeek 等相容供應商會收到顯式非思考模式引數。',
|
||
'settings.general.thinkingEnabled': '啟用思考模式',
|
||
'settings.general.thinkingHint': '關閉後會以 --thinking disabled 啟動新會話;適合 DeepSeek V4 Flash/Pro 等需要非思考模式的模型。',
|
||
'settings.general.autoDreamTitle': '自動做夢',
|
||
'settings.general.autoDreamDescription': '在累積足夠會話後,背景定期整理和壓縮 auto-memory。',
|
||
'settings.general.autoDreamEnabled': '啟用自動做夢',
|
||
'settings.general.autoDreamHintOn': '符合條件的會話結束後,桌面端可以在背景執行記憶整理。',
|
||
'settings.general.autoDreamHintOff': '預設關閉,因為它可能發起背景模型呼叫。',
|
||
'settings.general.autoDreamConfirmTitle': '啟用自動做夢?',
|
||
'settings.general.autoDreamConfirmKeepRunning': '請保持桌面端處於啟用狀態,這樣符合條件的會話結束後才能啟動背景記憶整理。',
|
||
'settings.general.autoDreamConfirmTokenCost': '自動做夢會在審查和改寫記憶檔案時額外消耗模型 Token。',
|
||
'settings.general.autoDreamConfirmEnable': '啟用自動做夢',
|
||
'settings.general.notificationsTitle': '系統通知',
|
||
'settings.general.notificationsDescription': '使用作業系統原生通知提醒授權確認、Agent 回覆完成和定時任務結果。',
|
||
'settings.general.notificationsEnabled': '啟用系統通知',
|
||
'settings.general.notificationsHintOn': '開啟後會請求系統通知許可權,並透過系統通知中心提醒。',
|
||
'settings.general.notificationsHintOff': '關閉後,授權確認、Agent 回覆和定時任務都不會傳送桌面通知。',
|
||
'settings.general.notificationsStatus': '許可權',
|
||
'settings.general.notificationsStatusGranted': '已授權',
|
||
'settings.general.notificationsStatusDenied': '已被系統設定阻止',
|
||
'settings.general.notificationsStatusDefault': '尚未請求',
|
||
'settings.general.notificationsStatusUnsupported': '當前環境不可用',
|
||
'settings.general.notificationsAuthorize': '授權通知',
|
||
'settings.general.notificationsOpenSettings': '開啟系統設定',
|
||
'settings.general.notificationsTestTitle': 'Claude Code Haha 通知已啟用',
|
||
'settings.general.notificationsTestBody': '後續授權確認和 Agent 回覆完成都會透過系統通知提醒。',
|
||
'settings.general.traceTitle': 'Agent Trace',
|
||
'settings.general.traceDescription': '收集本地會話的模型請求鏈路,用於排查卡住、失敗和異常等待。',
|
||
'settings.general.traceEnabled': '收集 Agent Trace',
|
||
'settings.general.traceHintOn': '新會話會把精簡請求、回應、狀態事件寫入本機 cc-haha traces 目錄。',
|
||
'settings.general.traceHintOff': '關閉後不會寫入新的 Trace;已有記錄仍可在 Trace 列表裡查看。',
|
||
'settings.general.chatSendBehaviorTitle': '訊息傳送方式',
|
||
'settings.general.chatSendBehaviorDescription': '選擇桌面端對話輸入框如何傳送訊息。',
|
||
'settings.general.chatSendBehaviorEnter': 'Enter 傳送',
|
||
'settings.general.chatSendBehaviorEnterDescription': 'Shift+Enter 換行。',
|
||
'settings.general.chatSendBehaviorModifier': 'Ctrl/Cmd+Enter 傳送',
|
||
'settings.general.chatSendBehaviorModifierDescription': 'Enter 和 Shift+Enter 都會換行。',
|
||
'settings.general.h5AccessTitle': 'H5 訪問',
|
||
'settings.general.h5AccessDescription': '在區域網內暴露桌面端 H5 應用。手機透過帶 H5 token 的二維碼快速連線。',
|
||
'settings.general.h5AccessEnabled': '啟用 H5 訪問',
|
||
'settings.general.h5AccessEnabledHint': '桌面服務會監聽區域網地址,並開放桌面會話相關能力。',
|
||
'settings.general.h5AccessStatusEnabled': '已啟用',
|
||
'settings.general.h5AccessTokenPreview': '令牌預覽',
|
||
'settings.general.h5AccessDisabledValue': '未啟用',
|
||
'settings.general.h5AccessDisable': '關閉',
|
||
'settings.general.h5AccessGenerateToken': '生成令牌',
|
||
'settings.general.h5AccessRegenerate': '重新生成令牌',
|
||
'settings.general.h5AccessGeneratedToken': '生成的令牌',
|
||
'settings.general.h5AccessGeneratedTokenHint': '僅顯示一次,請立即複製並像密碼一樣儲存。',
|
||
'settings.general.h5AccessShowToken': '顯示令牌',
|
||
'settings.general.h5AccessCopy': '複製',
|
||
'settings.general.h5AccessCopyUrl': '複製 H5 連結',
|
||
'settings.general.h5AccessCopyLaunchUrl': '複製掃碼連結',
|
||
'settings.general.h5AccessUrlCopied': 'H5 連結已複製。',
|
||
'settings.general.h5AccessLaunchUrlCopied': '掃碼連結已複製。',
|
||
'settings.general.h5AccessHideToken': '隱藏令牌',
|
||
'settings.general.h5AccessTokenNotAvailable': '舊版本的令牌無法找回。重新生成一次後,令牌將長期保存,可隨時查看。',
|
||
'settings.general.h5AccessPublicHost': '訪問主機 / IP',
|
||
'settings.general.h5AccessPublicHostPlaceholder': '192.168.1.100',
|
||
'settings.general.h5AccessCurrentPort': '當前埠',
|
||
'settings.general.h5AccessCurrentPortUnknown': '自動',
|
||
'settings.general.h5AccessFixedPort': '固定埠',
|
||
'settings.general.h5AccessFixedPortPlaceholder': '自動',
|
||
'settings.general.h5AccessFixedPortInvalid': '埠需為 1024-65535 之間且瀏覽器允許存取的整數。',
|
||
'settings.general.h5AccessFixedPortHint': '不設固定埠時會自動沿用上次的埠;反向代理等需要穩定埠的場景建議固定。修改埠後重啟應用程式生效。',
|
||
'settings.general.h5AccessFixedPortRestartNote': '固定埠 {fixedPort} 將在重啟應用程式後生效,目前仍執行在 {activePort}。',
|
||
'settings.general.h5AccessDisconnectGrace': '斷線保活(秒)',
|
||
'settings.general.h5AccessDisconnectGracePlaceholder': '30',
|
||
'settings.general.h5AccessDisconnectGraceInvalid': '需為 5-86400 之間的整數秒。',
|
||
'settings.general.h5AccessDisconnectGraceHint': '手機鎖屏或切後台導致斷線後,正在執行的任務不會被中斷,會在後台跑完、重連即可看到結果;只有任務空閒且無人連線時才在此時長後停止 CLI(預設 30 秒)。外出遠端操作可調大,例如 600。',
|
||
'settings.general.h5AccessPublicUrl': '公開訪問 URL',
|
||
'settings.general.h5AccessPublicUrlPlaceholder': 'https://chat.example.com',
|
||
'settings.general.h5AccessAllowedOrigins': '允許的來源',
|
||
'settings.general.h5AccessAllowedOriginsPlaceholder': 'https://chat.example.com, https://phone.example',
|
||
'settings.general.h5AccessOriginsHint': '每行一個來源,或使用逗號分隔多個來源。',
|
||
'settings.general.h5AccessOpenHint': '普通區域網訪問只改主機 / IP,埠使用當前服務埠。反向代理可直接填完整 URL。',
|
||
'settings.general.h5AccessSave': '儲存 H5 設定',
|
||
'settings.general.h5AccessUrl': 'H5 連結',
|
||
'settings.general.h5AccessQrTitle': '手機連線',
|
||
'settings.general.h5AccessQrHint': '掃碼會直接開啟 H5,並自動帶上 token。',
|
||
'settings.general.h5AccessQrRefreshHint': '點選“生成令牌”後會建立可掃碼的連線。',
|
||
'settings.general.h5AccessQrEmptyHint': '生成令牌後會在這裡顯示二維碼。',
|
||
'settings.general.h5AccessQrAlt': 'H5 訪問二維碼',
|
||
'settings.general.h5AccessSafetyNote': '只在可信網路中啟用。拿到二維碼連結的人可以訪問 H5 暴露的桌面能力。',
|
||
'settings.general.h5AccessConfirmTitle': '啟用區域網 H5 訪問?',
|
||
'settings.general.h5AccessConfirmBody': '這會把桌面 H5 應用暴露到區域網地址和埠。持有二維碼 token 的裝置可以訪問桌面會話和相關控制能力。請只在可信網路中繼續。',
|
||
'settings.general.h5AccessConfirmEnable': '啟用 H5 訪問',
|
||
'settings.general.h5AccessError': '更新 H5 設定失敗。',
|
||
'settings.general.h5AccessStaleHostTitle': '當前儲存的訪問主機已不可達',
|
||
'settings.general.h5AccessStaleHostBody': '儲存的 {storedHost} 不在本機當前的任何網絡卡上。手機掃碼會連不上。建議切到本機當前的區域網 IP。',
|
||
'settings.general.h5AccessStaleHostNoSuggestion': '儲存的 {storedHost} 不在本機當前的任何網絡卡上。手機掃碼會連不上。請檢查本機的網路連線,或改填反向代理 URL。',
|
||
'settings.general.h5AccessStaleHostApply': '切到 {suggestedHost}',
|
||
'settings.general.h5AccessProxyNote': '當前使用的是反向代理 URL,手機掃碼會經公網/隧道返回桌面端。請確認你的反代仍能工作。',
|
||
'settings.general.networkTitle': '網路',
|
||
'settings.general.networkDescription': '控制桌面 AI 會話的對外網路,包括模型服務、登入驗證、MCP 和 Agent 工具。',
|
||
'settings.general.networkProxyModeDirect': '直連',
|
||
'settings.general.networkProxyModeDirectDescription': '明確略過系統代理和程序繼承的代理。',
|
||
'settings.general.networkProxyModeSystem': '系統代理',
|
||
'settings.general.networkProxyModeSystemDescription': '依目標位址動態遵循系統代理或 PAC 規則,系統變更會自動生效;需要代理帳號密碼時請使用手動代理。',
|
||
'settings.general.networkProxyModeManual': '手動代理',
|
||
'settings.general.networkProxyModeManualDescription': '讓會話流量使用下方填寫的 HTTP 或 HTTPS 代理位址。',
|
||
'settings.general.networkProxyUrl': '代理地址',
|
||
'settings.general.networkProxyUrlHint': '支援 HTTP 和 HTTPS 代理,例如 http://127.0.0.1:7890。',
|
||
'settings.general.networkProxyUrlInvalid': '請輸入 HTTP 或 HTTPS 代理地址。',
|
||
'settings.general.networkProxyUrlRequired': '請輸入代理地址。',
|
||
'settings.general.networkTimeout': 'AI 請求超時',
|
||
'settings.general.networkTimeoutValue': '{seconds} 秒',
|
||
'settings.general.networkTimeoutHint': '用於服務商請求、流式首個響應,以及服務商連線測試。支援 30-1800 秒;部分服務商在大上下文下首個流式位元組可能需要等待數分鐘。',
|
||
'settings.general.networkTimeoutUnit': '秒',
|
||
'settings.general.networkTimeoutDecrease': '減少 30 秒',
|
||
'settings.general.networkTimeoutIncrease': '增加 30 秒',
|
||
'settings.general.networkTimeoutRequired': '請輸入超時時間。',
|
||
'settings.general.networkTimeoutRange': '請輸入 {min}-{max} 秒之間的整數。',
|
||
'settings.general.networkSaved': '網路設定已儲存。',
|
||
'settings.general.networkScopeHint': '對新請求生效;進行中的請求維持原路由。應用程式更新使用獨立的代理設定。',
|
||
'settings.general.networkSave': '儲存',
|
||
'settings.general.webFetchPreflightTitle': 'WebFetch 預檢',
|
||
'settings.general.webFetchPreflightDescription': '桌面端預設跳過 Claude 的域名預檢,避免第三方服務商或受限網路下出現誤報失敗。',
|
||
'settings.general.webFetchPreflightEnabled': '跳過 WebFetch 域名預檢',
|
||
'settings.general.webFetchPreflightHint': '只有在你明確需要恢復上游預設安全預檢時,才建議關閉這個選項。',
|
||
'settings.general.webSearchTitle': 'WebSearch',
|
||
'settings.general.webSearchDescription': '配置 Agent 聯網搜尋在 Claude 原生、第三方供應商和本地 fallback key 之間如何選擇。',
|
||
'settings.general.webSearch.mode.auto': '自動',
|
||
'settings.general.webSearch.mode.tavily': 'Tavily',
|
||
'settings.general.webSearch.mode.brave': 'Brave',
|
||
'settings.general.webSearch.mode.anthropic': 'Claude',
|
||
'settings.general.webSearch.mode.disabled': '關閉',
|
||
'settings.general.webSearchTavilyKey': 'Tavily API Key',
|
||
'settings.general.webSearchBraveKey': 'Brave Search API Key',
|
||
'settings.general.webSearchBravePlaceholder': 'Brave Search token',
|
||
'settings.general.webSearchGetApiKey': '獲取 API Key',
|
||
'settings.general.webSearchTavilyApiKeyLink': '獲取 Tavily API Key',
|
||
'settings.general.webSearchBraveApiKeyLink': '獲取 Brave Search API Key',
|
||
'settings.general.webSearchTavilyFreeHint': '註冊賬號即可複製 API Key,免費額度包含 1000 Credits。',
|
||
'settings.general.webSearchBraveFreeHint': '註冊賬號後可建立 Search API Key,免費額度可用於測試。',
|
||
'settings.general.webSearchHint': '自動模式會對 Claude 模型名優先使用原生 WebSearch,失敗或非 Claude 模型時再使用 Tavily/Brave。',
|
||
'settings.general.webSearchSave': '儲存',
|
||
'settings.general.uiZoom': '介面縮放',
|
||
'settings.general.uiZoomDescription': '調整整個介面的顯示大小。',
|
||
'settings.general.uiZoomShortcutHint': '快捷鍵更直接:',
|
||
'settings.general.uiZoomShortcutMac': 'macOS',
|
||
'settings.general.uiZoomShortcutWindows': 'Windows / Linux',
|
||
'settings.general.uiZoomShortcutResetHint': '0 表示恢復到 100%。',
|
||
'settings.general.uiZoomReset': '重置介面縮放到 100%',
|
||
|
||
// ─── Empty Session ──────────────────────────────────────
|
||
'empty.title': '新建會話',
|
||
'empty.subtitle': '開始一個新的編碼會話。Claude 已準備好幫你構建、除錯和設計你的專案。',
|
||
'empty.placeholder': '隨便問點什麼...',
|
||
'empty.addFiles': '新增檔案或圖片',
|
||
'empty.slashCommands': '斜槓命令',
|
||
'empty.failedToCreate': '建立會話失敗',
|
||
'empty.createError.workdirMissing': '專案目錄不存在或不是資料夾。請選擇一個存在的專案後重試。',
|
||
'empty.createError.notGit': '當前專案不是 Git 倉庫,無法選擇分支啟動。可以直接在當前目錄開始,或改選一個 Git 專案。',
|
||
'empty.createError.branchNotFound': '選中的分支已經不存在。請重新整理專案上下文後重新選擇分支。',
|
||
'empty.createError.dirtyWorktree': '當前專案有未提交改動,已阻止直接切換分支。請開啟“獨立工作樹”,或先提交/暫存這些改動。',
|
||
'empty.createError.branchCheckedOut': '該分支已在其他工作樹中檢出。請開啟“獨立工作樹”,或選擇其他分支。',
|
||
'empty.createError.worktreeCreateFailed': '無法建立獨立工作樹。請確認 Git 可以寫入此倉庫後重試。詳情:{detail}',
|
||
'empty.createError.switchFailed': '無法切換當前專案分支。請先確認 Git 錯誤並保護好本地改動後重試。詳情:{detail}',
|
||
'empty.createError.contextFailed': '無法檢查這個 Git 專案。請確認倉庫狀態後重試。',
|
||
|
||
// ─── Repository Launch Controls ──────────────────────────────────────
|
||
'repoLaunch.selectBranch': '選擇分支',
|
||
'repoLaunch.searchBranch': '搜尋分支',
|
||
'repoLaunch.noBranch': '無分支',
|
||
'repoLaunch.noBranchMatch': '沒有匹配的分支',
|
||
'repoLaunch.currentBranch': '當前分支',
|
||
'repoLaunch.localBranch': '本地分支',
|
||
'repoLaunch.remoteBranch': '遠端分支',
|
||
'repoLaunch.checkedOut': '已在其他工作樹中檢出',
|
||
'repoLaunch.worktreeCurrent': '當前工作樹',
|
||
'repoLaunch.worktreeIsolated': '獨立工作樹',
|
||
'repoLaunch.selectWorktree': '選擇工作樹模式',
|
||
'repoLaunch.launchLocation': '執行位置',
|
||
'repoLaunch.branch': '分支',
|
||
'repoLaunch.worktreeBadge': '獨立',
|
||
'repoLaunch.missingWorkdir': '工作目錄不存在。',
|
||
'repoLaunch.dirtyWarning': '檢測到未提交變更,直接切換可能會被阻止;使用獨立工作樹可以繼續,且不會改動當前目錄。',
|
||
'repoLaunch.checkedOutWarning': '選中的分支已在其他工作樹中檢出。直接啟動可能會被 Git 阻止;使用“獨立工作樹”可以避免切換當前目錄。',
|
||
|
||
// ─── Chat Input ──────────────────────────────────────
|
||
'chat.placeholder': '讓 Claude 編輯、除錯或解釋程式碼...',
|
||
'chat.placeholderMissing': '此會話指向的工作目錄缺失。請新建會話或選擇其他專案。',
|
||
'chat.placeholderWorktreeRemoved': '此會話的臨時工作區已清理。請在原專案中新建會話繼續。',
|
||
'chat.addFiles': '新增檔案或圖片',
|
||
'chat.composerTools': '開啟輸入框工具',
|
||
'chat.dropFilesTitle': '鬆手新增檔案',
|
||
'chat.dropFilesHint': '會以檔案路徑附加到當前輸入。',
|
||
'chat.workspaceReferencesOnly': '已新增 {count} 個工作區引用',
|
||
'chat.contextReferencesOnly': '已新增 {count} 個引用',
|
||
'chat.addSelectionToChat': '新增到對話',
|
||
'chat.branchFromHere': 'Fork 一個新對話',
|
||
'chat.branchSuccess': '已 Fork 新對話“{title}”。',
|
||
'chat.branchError': '從該訊息 Fork 新對話失敗。詳情:{detail}',
|
||
'chat.userMessageReference': '使用者訊息',
|
||
'chat.assistantMessageReference': 'AI 回覆',
|
||
'chat.conversationNavigator.label': '對話導覽',
|
||
'chat.conversationNavigator.attachments': '{count} 個附件',
|
||
'chat.slashCommands': '斜槓命令',
|
||
'chat.pendingMessageGuide': '引導',
|
||
'chat.pendingMessageGuideNow': '立即引導',
|
||
'chat.pendingMessageEdit': '編輯排隊訊息',
|
||
'chat.pendingMessageDelete': '刪除排隊訊息',
|
||
'chat.pendingMessageEditInput': '排隊訊息文字',
|
||
'chat.goalEvent.created': '目標已設定',
|
||
'chat.goalEvent.replaced': '目標已設定',
|
||
'chat.goalEvent.statusTitle': '目標狀態',
|
||
'chat.goalEvent.paused': '目標已暫停',
|
||
'chat.goalEvent.resumed': '目標已恢復',
|
||
'chat.goalEvent.completed': '目標已完成',
|
||
'chat.goalEvent.cleared': '目標已清除',
|
||
'chat.goalEvent.continuing': '目標繼續執行',
|
||
'chat.goalEvent.message': '目標更新',
|
||
'chat.goalEvent.objective': '目標:{value}',
|
||
'chat.goalEvent.statusValue': '狀態:{value}',
|
||
'chat.goalEvent.budget': '預算:{value}',
|
||
'chat.goalEvent.continuations': '續作次數:{value}',
|
||
'chat.compactSummary.compacting': '上下文正在壓縮',
|
||
'chat.compactSummary.title': '上下文已壓縮',
|
||
'chat.compactSummary.autoTitle': '上下文已自動壓縮',
|
||
'chat.compactSummary.manualTitle': '上下文已手動壓縮',
|
||
'chat.compactSummary.trigger.manual': '手動',
|
||
'chat.compactSummary.trigger.auto': '自動',
|
||
'chat.compactSummary.tokens': '壓縮前 {count} tokens',
|
||
'chat.compactSummary.messages': '已摘要 {count} 條訊息',
|
||
'chat.activeGoal.title': '當前目標',
|
||
'chat.activeGoal.running': '自迴圈執行中',
|
||
'chat.activeGoal.active': '進行中',
|
||
'chat.activeGoal.paused': '已暫停',
|
||
'chat.activeGoal.completed': '已完成',
|
||
'chat.activeGoal.budget': '預算 {value}',
|
||
'chat.activeGoal.continuations': '續作次數 {value}',
|
||
'chat.activeGoal.elapsed': '已用時 {value}',
|
||
'chat.backgroundAgents.title': '後臺 Agent',
|
||
'chat.backgroundAgents.count': '{count} 個執行中或最近任務',
|
||
'chat.backgroundAgents.agent': 'agent',
|
||
'chat.backgroundTasks.title': '後臺任務',
|
||
'chat.backgroundTasks.runningCountOne': '{count} 個執行中任務',
|
||
'chat.backgroundTasks.runningCountMany': '{count} 個執行中任務',
|
||
'chat.backgroundTasks.finishedCountOne': '{count} 個已完成任務',
|
||
'chat.backgroundTasks.finishedCountMany': '{count} 個已完成任務',
|
||
'chat.backgroundTasks.running': '執行中',
|
||
'chat.backgroundTasks.finished': '已完成',
|
||
'chat.backgroundTasks.clear': '清除',
|
||
'chat.backgroundTasks.close': '關閉後臺任務',
|
||
'chat.backgroundTasks.command': '後臺命令',
|
||
'chat.backgroundTasks.workflow': '後臺工作流',
|
||
'chat.backgroundTasks.task': '後臺任務',
|
||
'chat.backgroundTasks.type.agent': 'Agent',
|
||
'chat.backgroundTasks.type.bash': 'Bash',
|
||
'chat.backgroundTasks.type.workflow': '工作流',
|
||
'chat.backgroundTasks.type.task': '任務',
|
||
'chat.backgroundAgents.tokens': '{count} tokens',
|
||
'chat.backgroundAgents.status.running': '執行中',
|
||
'chat.backgroundAgents.status.completed': '已完成',
|
||
'chat.backgroundAgents.status.failed': '失敗',
|
||
'chat.backgroundAgents.status.stopped': '已停止',
|
||
'chat.duration.seconds': '{seconds} 秒',
|
||
'chat.duration.minutesSeconds': '{minutes} 分 {seconds} 秒',
|
||
'slash.mcp.title': '可用 MCP 工具',
|
||
'slash.mcp.subtitle': '展示當前聊天上下文裡的全域性 MCP 和當前專案 MCP。',
|
||
'slash.mcp.subtitleWithProject': '當前展示全域性 MCP 以及這個專案的 MCP:{path}',
|
||
'slash.mcp.emptyTitle': '沒有可用的 MCP 服務',
|
||
'slash.mcp.emptyBody': '當前聊天上下文裡沒有可用的全域性或專案 MCP 服務。',
|
||
'slash.mcp.projectBadge': '專案:{name}',
|
||
'slash.skills.title': '可用技能',
|
||
'slash.skills.subtitle': '展示當前上下文裡可直接呼叫的技能。',
|
||
'slash.skills.subtitleWithProject': '當前展示專案下的技能:{path}',
|
||
'slash.skills.emptyTitle': '沒有可用技能',
|
||
'slash.skills.emptyBody': '當前上下文裡沒有找到可直接呼叫的技能。',
|
||
'slash.plugins.title': '外掛',
|
||
'slash.plugins.subtitle': '外掛管理後續會接到這個斜槓命令面板裡。',
|
||
'slash.plugins.emptyTitle': '外掛面板即將接入',
|
||
'slash.plugins.emptyBody': '這套共享的斜槓命令面板已經接通,外掛資料下一步接進來。',
|
||
'slash.help.title': '斜槓命令',
|
||
'slash.help.subtitle': '執行 Agent 工作流、檢視會話狀態,或開啟桌面端面板。',
|
||
'slash.help.group.context': '上下文',
|
||
'slash.help.group.project': '專案',
|
||
'slash.help.group.desktop': '桌面端',
|
||
'slash.help.group.more': '更多',
|
||
'slash.help.moreAvailable': '還有 {count} 條命令可用。輸入 / 可以搜尋完整命令列表。',
|
||
'slash.inspector.title': '會話檢查器',
|
||
'slash.inspector.close': '關閉會話檢查器',
|
||
'slash.inspector.loading': '正在載入會話資料',
|
||
'slash.inspector.error.noActiveSession': '當前沒有選中的活躍會話。',
|
||
'slash.inspector.error.unavailable': '會話檢查器資料不可用。請重啟桌面端後端,讓 /api/sessions/:id/inspection 介面生效。',
|
||
'slash.inspector.tab.status': '狀態',
|
||
'slash.inspector.tab.usage': '用量',
|
||
'slash.inspector.tab.context': '上下文',
|
||
'slash.inspector.status.cliStatus': 'CLI 狀態',
|
||
'slash.inspector.status.running': '執行中',
|
||
'slash.inspector.status.notRunning': '未執行',
|
||
'slash.inspector.status.activeModel': '當前模型',
|
||
'slash.inspector.status.unknown': '未知',
|
||
'slash.inspector.status.mcpConnections': 'MCP 連線',
|
||
'slash.inspector.status.connected': '已連線',
|
||
'slash.inspector.status.failed': '失敗',
|
||
'slash.inspector.status.registeredTools': '註冊工具',
|
||
'slash.inspector.status.commands': '條命令',
|
||
'slash.inspector.status.sessionMetadata': '會話後設資料',
|
||
'slash.inspector.status.version': '版本',
|
||
'slash.inspector.status.sessionId': '會話 ID',
|
||
'slash.inspector.status.workingDirectory': '工作目錄',
|
||
'slash.inspector.status.permissionMode': '許可權模式',
|
||
'slash.inspector.status.authToken': '認證令牌',
|
||
'slash.inspector.status.outputStyle': '輸出樣式',
|
||
'slash.inspector.status.default': '預設',
|
||
'slash.inspector.status.mcpServers': 'MCP 服務',
|
||
'slash.inspector.status.refresh': '重新整理',
|
||
'slash.inspector.status.contextWindow': '上下文視窗',
|
||
'slash.inspector.usage.emptyTitle': '暫無用量資料',
|
||
'slash.inspector.usage.emptyBody': 'CLI 會話啟動並完成至少一輪迴復後,這裡會顯示用量。',
|
||
'slash.inspector.usage.contextSnapshotNotice': '當前展示來自上下文快照的 token 用量。上下文資料重新整理後會同步更新。',
|
||
'slash.inspector.usage.transcriptNotice': '當前展示從會話記錄重建的用量。API 耗時只對正在執行的 CLI 程序可用。',
|
||
'slash.inspector.usage.unknownCost': '部分模型價格未知,費用統計可能不準確。',
|
||
'slash.inspector.usage.totalCost': '總費用',
|
||
'slash.inspector.usage.source': '來源',
|
||
'slash.inspector.usage.source.contextSnapshot': '上下文快照',
|
||
'slash.inspector.usage.source.transcript': '會話記錄',
|
||
'slash.inspector.usage.source.currentProcess': '當前程序',
|
||
'slash.inspector.usage.apiDuration': 'API 耗時',
|
||
'slash.inspector.usage.wallDuration': '總耗時',
|
||
'slash.inspector.usage.usageSpan': '用量跨度',
|
||
'slash.inspector.usage.codeChanges': '程式碼改動',
|
||
'slash.inspector.usage.input': '輸入',
|
||
'slash.inspector.usage.output': '輸出',
|
||
'slash.inspector.usage.cacheReadWrite': '快取讀 / 寫',
|
||
'slash.inspector.usage.webSearch': '網頁搜尋',
|
||
'slash.inspector.usage.byModel': '按模型統計',
|
||
'slash.inspector.usage.tokens': 'Tokens',
|
||
'slash.inspector.usage.noModelTitle': '暫無模型用量',
|
||
'slash.inspector.usage.noModelBody': '記錄到模型回覆後,這裡會顯示 token 用量。',
|
||
'slash.inspector.context.loading': '正在載入上下文資料',
|
||
'slash.inspector.context.emptyTitle': '暫無上下文資料',
|
||
'slash.inspector.context.emptyBody': '上下文用量需要活躍的 CLI 會話。',
|
||
'slash.inspector.context.windowUsage': '上下文視窗用量',
|
||
'slash.inspector.context.used': '已使用',
|
||
'slash.inspector.context.free': '剩餘',
|
||
'slash.inspector.context.messages': '訊息',
|
||
'slash.inspector.context.assistant': '助手',
|
||
'slash.inspector.context.toolResults': '工具結果',
|
||
'slash.inspector.context.context': '上下文',
|
||
'slash.inspector.context.categoryTitle': '按類別估算',
|
||
'slash.inspector.context.noCategoriesTitle': '暫無上下文分類',
|
||
'slash.inspector.context.noCategoriesBody': 'CLI 返回上下文分析後,這裡會顯示分類資料。',
|
||
'slash.inspector.context.memoryFiles': '記憶檔案',
|
||
'slash.inspector.context.noMemoryFiles': '當前會話沒有載入記憶檔案。',
|
||
'slash.inspector.context.openMemory': '開啟記憶',
|
||
'contextIndicator.ariaLabel': '上下文用量 {percent}',
|
||
'contextIndicator.pendingAria': '上下文用量待計算',
|
||
'contextIndicator.loadingAria': '上下文用量載入中',
|
||
'contextIndicator.unavailableAria': '上下文用量不可用',
|
||
'contextIndicator.title': '上下文',
|
||
'contextIndicator.modelUnknown': '未知模型',
|
||
'contextIndicator.used': '已使用',
|
||
'contextIndicator.free': '剩餘',
|
||
'contextIndicator.window': '視窗',
|
||
'contextIndicator.loading': '正在載入上下文用量...',
|
||
'contextIndicator.pendingDetail': '會話啟動後計算上下文用量。',
|
||
'contextIndicator.unavailable': '不可用',
|
||
'contextIndicator.unavailableDetail': '此會話暫時無法獲取上下文用量。',
|
||
'contextIndicator.updatedUnknown': '尚未重新整理',
|
||
'contextIndicator.updatedNow': '剛剛更新',
|
||
'contextIndicator.updatedMinutes': '{count} 分鐘前更新',
|
||
'contextIndicator.estimate': '估算',
|
||
'chat.navigate': '導航',
|
||
'chat.select': '選擇',
|
||
'chat.dismiss': '關閉',
|
||
'chat.stopTitle': '停止生成 (Cmd+.)',
|
||
'chat.jumpToLatest': '回到最新',
|
||
'chat.memorySavedTitle': '已儲存 {count} 個記憶檔案',
|
||
'chat.memorySavedFromToolsTitle': '儲存了 {count} 條記憶',
|
||
'chat.memoryReferencedTitle': '{count} 條記憶引用',
|
||
'chat.memoryOpenSettings': '開啟記憶',
|
||
'chat.memoryMoreFiles': '還有 {count} 個',
|
||
'chat.memoryTechnicalDetails': '工具詳情',
|
||
'chat.rewindSuccessWithCode': '已回滾 {count} 條訊息,並恢復相關檔案。',
|
||
'chat.rewindSuccessConversationOnly': '已回滾 {count} 條訊息。這一輪沒有可用的檔案檢查點。',
|
||
'chat.turnChangesTitle': '{count} 個檔案已更改',
|
||
'chat.turnChangesLatestCardLabel': '輪次已更改檔案',
|
||
'chat.turnChangesHistoricalCardLabel': '輪次已更改檔案',
|
||
'chat.turnChangesLatestSubtitle': '當前輪次檢查點',
|
||
'chat.turnChangesHistoricalSubtitle': '歷史輪次檢查點',
|
||
'chat.turnChangesCurrentWorkspaceDiff': '目前工作區差異',
|
||
'chat.turnChangesLatestUndo': '撤銷當前輪次',
|
||
'chat.turnChangesHistoricalUndo': '回滾到這一輪之前',
|
||
'chat.turnChangesUndoing': '正在撤銷...',
|
||
'chat.turnChangesLatestUndoAria': '撤銷當前輪次變更',
|
||
'chat.turnChangesHistoricalUndoAria': '回滾到這一輪之前',
|
||
'chat.turnChangesLatestConfirmTitle': '撤銷當前輪次?',
|
||
'chat.turnChangesHistoricalConfirmTitle': '回滾到這一輪之前?',
|
||
'chat.turnChangesLatestConfirmBody': '這會回滾最近一次助手回覆,並恢復這一輪中被跟蹤的檔案變更。',
|
||
'chat.turnChangesHistoricalConfirmBody': '這會把會話回滾到這一輪之前,並恢復該檢查點對應的檔案變更。',
|
||
'chat.turnChangesLatestConfirmUndo': '撤銷當前輪次',
|
||
'chat.turnChangesHistoricalConfirmUndo': '回滾到這一輪之前',
|
||
'chat.turnChangesOpenInWorkspaceAria': '在工作區開啟 {path}',
|
||
'chat.turnChangesShowMore': '再顯示 {count} 個檔案',
|
||
'chat.turnChangesShowLess': '收起',
|
||
|
||
// ─── Streaming Indicator ──────────────────────────────────────
|
||
'streaming.thinking': '思考中',
|
||
'streaming.running': '執行中',
|
||
'streaming.working': '工作中',
|
||
|
||
// ─── Permission Dialog ──────────────────────────────────────
|
||
'permission.allowEditFile': '允許 Claude {toolName} {fileName}?',
|
||
'permission.allowEditFileGeneric': '允許 Claude {toolName}此檔案?',
|
||
'permission.allowBash': '允許 Claude 執行此命令?',
|
||
'permission.allowTool': '允許 Claude 使用 {toolName}?',
|
||
'permission.awaitingApproval': '等待審批',
|
||
'permission.responded': '已響應',
|
||
'permission.allow': '允許',
|
||
'permission.allowForSession': '本次會話允許',
|
||
'permission.deny': '拒絕',
|
||
'permission.hideDetails': '隱藏詳情',
|
||
'permission.showFullInput': '顯示完整輸入',
|
||
'permission.replacingContent': '替換檔案內容',
|
||
'permission.planReadyTitle': '準備開始編碼?',
|
||
'permission.planPreviewTitle': 'Claude 的計劃',
|
||
'permission.planRequestedPermissions': '請求的權限',
|
||
'permission.planApprove': '批准計劃',
|
||
'permission.planKeepPlanning': '繼續規劃',
|
||
'permission.planFeedbackPlaceholder': '告訴 Claude 需要修改什麼',
|
||
'permission.planEmpty': '暫無計劃內容。',
|
||
'permission.planApproved': '計劃已批准',
|
||
'permission.planRejected': '計劃已拒絕',
|
||
|
||
// ─── Computer Use Approval ──────────────────────────────────────
|
||
'computerUseApproval.titleApps': 'Computer Use 想控制這些應用',
|
||
'computerUseApproval.titleTcc': 'Computer Use 需要 macOS 許可權',
|
||
'computerUseApproval.reason': '請求原因',
|
||
'computerUseApproval.allow': '本次會話允許',
|
||
'computerUseApproval.deny': '拒絕',
|
||
'computerUseApproval.alreadyGranted': '本次會話已授權',
|
||
'computerUseApproval.notInstalled': '應用未安裝',
|
||
'computerUseApproval.sensitiveApp': '該應用屬於高敏感類別,請額外確認後再授權。',
|
||
'computerUseApproval.alsoRequested': '同時請求了',
|
||
'computerUseApproval.hideWhileWorking': 'Claude 工作時會隱藏另外 {count} 個應用。',
|
||
'computerUseApproval.hideWhileWorkingRestore': 'Claude 工作時會隱藏另外 {count} 個應用,結束後會自動恢復。',
|
||
'computerUseApproval.accessibility': '輔助功能',
|
||
'computerUseApproval.screenRecording': '螢幕錄製',
|
||
'computerUseApproval.granted': '已授權',
|
||
'computerUseApproval.notGranted': '未授權',
|
||
'computerUseApproval.openAccessibility': '開啟輔助功能設定',
|
||
'computerUseApproval.openScreenRecording': '開啟螢幕錄製設定',
|
||
'computerUseApproval.tryAgain': '稍後重試',
|
||
'computerUseApproval.tccHint': '先在系統設定裡授予缺失許可權,返回後再點“稍後重試”。',
|
||
'computerUseApproval.tryAgainHint': '“稍後重試”會把控制權交還給 Claude,讓它在 macOS 許可權生效後重新呼叫 request_access。',
|
||
|
||
// ─── Ask User Question ──────────────────────────────────────
|
||
'question.needsInput': 'Claude 需要你的輸入',
|
||
'question.answered': '已回答',
|
||
'question.completed': '已結束',
|
||
'question.customResponse': '或輸入自定義回覆:',
|
||
'question.typePlaceholder': '輸入你的回答...',
|
||
'question.submit': '提交',
|
||
'question.answeredPrefix': '已回答: ',
|
||
'question.resultPrefix': '結果: ',
|
||
|
||
// ─── Thinking Block ──────────────────────────────────────
|
||
'thinking.label': '思考中',
|
||
'thinking.labelDone': '已思考',
|
||
|
||
// ─── Tool Calls ──────────────────────────────────────
|
||
'tool.errorOutput': '錯誤輸出',
|
||
'tool.toolOutput': '工具輸出',
|
||
'tool.toolInput': '工具輸入',
|
||
'tool.partialInput': '部分輸入',
|
||
'tool.writerPreview': 'Writer',
|
||
'tool.writerPreviewLatest': '正在顯示最新 {visible} / {total} 行',
|
||
'tool.contentStats': '{lines} · {chars}',
|
||
'tool.contentStatsLatest': '最新 {visible} / {total} 行 · {chars}',
|
||
'tool.lineCountSingular': '{count} 行',
|
||
'tool.lineCountPlural': '{count} 行',
|
||
'tool.charCountSingular': '{count} 字元',
|
||
'tool.charCountPlural': '{count} 字元',
|
||
'tool.generatingContent': '正在生成內容',
|
||
'tool.preparingEdit': '正在準備編輯',
|
||
'tool.preparingTool': '正在準備工具',
|
||
'tool.stopped': '已停止',
|
||
'tool.readFileContents': '讀取檔案內容',
|
||
'tool.createFile': '建立檔案',
|
||
'tool.updateFileContents': '更新檔案內容',
|
||
'tool.linesChanged': '{count} 行已更改',
|
||
'tool.linesCreated': '{count} 行已建立',
|
||
'tool.linesOutput': '{count} 行輸出',
|
||
'tool.result': '{toolName} 結果',
|
||
'tool.resultGeneric': '工具結果',
|
||
'tool.error': '錯誤',
|
||
'tool.success': '成功',
|
||
'tool.showLess': '收起',
|
||
'tool.showMore': '展開 {count} 個字元',
|
||
|
||
// ─── Tool Group Verbs ──────────────────────────────────────
|
||
'toolGroup.readOne': '讀取了 1 個檔案',
|
||
'toolGroup.readMany': '讀取了 {count} 個檔案',
|
||
'toolGroup.createdOne': '建立了一個檔案',
|
||
'toolGroup.createdMany': '建立了 {count} 個檔案',
|
||
'toolGroup.editedOne': '編輯了一個檔案',
|
||
'toolGroup.editedMany': '編輯了 {count} 個檔案',
|
||
'toolGroup.ranOne': '執行了一條命令',
|
||
'toolGroup.ranMany': '執行了 {count} 條命令',
|
||
'toolGroup.foundFiles': '查詢到檔案',
|
||
'toolGroup.searchedOne': '搜尋了程式碼',
|
||
'toolGroup.searchedMany': '搜尋了 {count} 個模式',
|
||
'toolGroup.agentOne': '派遣了一個代理',
|
||
'toolGroup.agentMany': '派遣了 {count} 個代理',
|
||
'toolGroup.collapseAgent': '收合代理',
|
||
'toolGroup.expandAgent': '展開代理',
|
||
'toolGroup.openRun': '開啟執行紀錄',
|
||
'toolGroup.openRunNamed': '開啟執行紀錄 {title}',
|
||
'agentStatus.starting': '開始中',
|
||
'agentStatus.running': '進行中',
|
||
'agentStatus.done': '完成',
|
||
'agentStatus.failed': '失敗',
|
||
'agentStatus.stopped': '已停止',
|
||
'agentStatus.noActivity': '暫時還沒有工具活動',
|
||
'agentStatus.viewResult': '檢視結果',
|
||
'agentStatus.resultTitle': 'Agent 結果',
|
||
'toolGroup.searchedWeb': '搜尋了網頁',
|
||
'toolGroup.fetchedOne': '獲取了一個頁面',
|
||
'toolGroup.fetchedMany': '獲取了 {count} 個頁面',
|
||
|
||
// ─── Tasks ──────────────────────────────────────
|
||
'tasks.title': '任務',
|
||
'tasks.completed': '已完成的任務',
|
||
'tasks.dismissCompleted': '隱藏已完成任務',
|
||
'tasks.newTask': '+ 新建任務',
|
||
'tasks.emptyTitle': '暫無定時任務',
|
||
'tasks.emptyDesc': '建立定時任務來自動化你的工程工作流。',
|
||
'tasks.createNew': '建立新任務',
|
||
'tasks.totalTasks': '總任務數',
|
||
'tasks.active': '活躍',
|
||
'tasks.disabled': '已禁用',
|
||
|
||
// ─── New Task Modal ──────────────────────────────────────
|
||
'newTask.title': '新建定時任務',
|
||
'newTask.localWarning': '本地任務僅在電腦喚醒時執行。',
|
||
'newTask.fullPermissions': '所有許可權(固定)',
|
||
'newTask.time': '執行時間',
|
||
'newTask.name': '名稱',
|
||
'newTask.namePlaceholder': 'daily-code-review',
|
||
'newTask.description': '描述',
|
||
'newTask.descPlaceholder': '審查昨天的提交併標記可疑之處',
|
||
'newTask.frequency': '頻率',
|
||
'newTask.everyNMinutes': '每 N 分鐘',
|
||
'newTask.everyNHours': '每 N 小時',
|
||
'newTask.daily': '每天',
|
||
'newTask.weekdays': '工作日(週一至週五)',
|
||
'newTask.specificDays': '指定星期幾',
|
||
'newTask.monthly': '每月',
|
||
'newTask.customCron': '自定義 Cron 表示式',
|
||
'newTask.intervalMinutes': '每 {n} 分鐘',
|
||
'newTask.intervalHours': '每 {n} 小時',
|
||
'newTask.atMinute': '在第 :{m} 分鐘',
|
||
'newTask.onMonthDay': '每月第 {d} 天',
|
||
'newTask.cronFormatHint': '格式:分 時 日 月 星期',
|
||
'newTask.invalidCron': '無效的 Cron 表示式',
|
||
'newTask.daySun': '日',
|
||
'newTask.dayMon': '一',
|
||
'newTask.dayTue': '二',
|
||
'newTask.dayWed': '三',
|
||
'newTask.dayThu': '四',
|
||
'newTask.dayFri': '五',
|
||
'newTask.daySat': '六',
|
||
'newTask.delayNote': '定時任務會使用隨機延遲以最佳化伺服器效能。',
|
||
'newTask.create': '建立任務',
|
||
'newTask.promptPlaceholder': '檢視過去 24 小時的提交。總結變更內容,標記有風險的模式或缺失的測試,並記錄值得跟進的事項。',
|
||
'newTask.notification': '通知',
|
||
'newTask.notifyOnComplete': '完成後推送通知',
|
||
'newTask.notifyChannels': '通知渠道',
|
||
'newTask.notifyHint': '任務完成後傳送原生桌面通知或 IM 訊息。',
|
||
'newTask.notifyDesktop': '桌面',
|
||
'newTask.notConfigured': '未配置',
|
||
'newTask.noChannelConfigured': '尚未配置任何 IM 渠道,請前往 設定 → IM 接入 進行配置。',
|
||
'newTask.noChannelSelected': '請至少選擇一個通知渠道。',
|
||
|
||
// ─── Cron 描述 ──────────────────────────────────────
|
||
'cron.everyMinute': '每分鐘執行',
|
||
'cron.everyNMinutes': '每 {n} 分鐘執行',
|
||
'cron.everyHour': '每小時執行',
|
||
'cron.everyNHours': '每 {n} 小時執行',
|
||
'cron.everyNHoursAtMinute': '每 {n} 小時在第 :{m} 分鐘執行',
|
||
'cron.dailyAt': '每天 {time} 執行',
|
||
'cron.weekdaysAt': '工作日 {time} 執行',
|
||
'cron.specificDaysAt': '每{days} {time} 執行',
|
||
'cron.monthlyAt': '每月 {day} 日 {time} 執行',
|
||
'cron.customSchedule': '自定義:{cron}',
|
||
'cron.dow.0': '週日',
|
||
'cron.dow.1': '週一',
|
||
'cron.dow.2': '週二',
|
||
'cron.dow.3': '週三',
|
||
'cron.dow.4': '週四',
|
||
'cron.dow.5': '週五',
|
||
'cron.dow.6': '週六',
|
||
|
||
// ─── 任務操作與日誌 ──────────────────────────────────────
|
||
'tasks.runNow': '立即執行',
|
||
'tasks.confirmRun': '確定要立即執行此任務嗎?',
|
||
'tasks.confirmDisable': '確定要禁用此定時任務嗎?',
|
||
'tasks.confirmEnable': '確定要啟用此定時任務嗎?',
|
||
'tasks.confirmDelete': '確定要永久刪除此任務及其所有日誌嗎?',
|
||
'tasks.running': '執行中...',
|
||
'tasks.viewLogs': '日誌',
|
||
'tasks.moreActions': '更多操作',
|
||
'tasks.logsTitle': '執行記錄',
|
||
'tasks.noLogs': '暫無執行記錄',
|
||
'tasks.runStatus.running': '執行中',
|
||
'tasks.runStatus.completed': '已完成',
|
||
'tasks.runStatus.failed': '失敗',
|
||
'tasks.runStatus.timeout': '超時',
|
||
'tasks.duration': '{s}秒',
|
||
'tasks.viewOutput': '摘要',
|
||
'tasks.hideOutput': '收起',
|
||
'tasks.close': '關閉',
|
||
'tasks.edit': '編輯',
|
||
'tasks.editTitle': '編輯定時任務',
|
||
'tasks.saveChanges': '儲存修改',
|
||
'tasks.openSession': '檢視完整對話',
|
||
'tasks.createdAt': '建立於 ',
|
||
'tasks.lastRunAt': '上次執行 ',
|
||
'tasks.outputHintSession': '點選「檢視完整對話」可在會話中檢視完整輸出。',
|
||
'tasks.noOutputText': '暫無輸出內容。',
|
||
|
||
// ─── Prompt Editor ──────────────────────────────────────
|
||
'promptEditor.worktree': '工作樹',
|
||
'promptEditor.bypassWarning': '跳過模式將授予完整系統訪問許可權',
|
||
'promptEditor.within': '範圍',
|
||
'promptEditor.selectFolder': '— 選擇資料夾以限制範圍',
|
||
|
||
// ─── Permission Mode Selector ──────────────────────────────────────
|
||
'permMode.executionPermissions': '執行許可權',
|
||
'permMode.askPermissions': '詢問許可權',
|
||
'permMode.askPermDesc': 'CLI 請求時確認檔案編輯和高風險命令',
|
||
'permMode.autoAccept': '自動接受編輯',
|
||
'permMode.autoAcceptDesc': 'Claude 無需詢問即可寫入磁碟',
|
||
'permMode.autoMode': '自動模式',
|
||
'permMode.autoModeDesc': 'Claude 會審查工具呼叫,並執行其認為安全的操作',
|
||
'permMode.planMode': '計劃模式',
|
||
'permMode.planModeDesc': '僅架構和推理,不操作檔案',
|
||
'permMode.bypass': '跳過許可權',
|
||
'permMode.bypassDesc': '對 Shell 和檔案系統的完整工具訪問',
|
||
'permMode.dontAsk': '不詢問',
|
||
'permMode.enableBypassTitle': '啟用跳過許可權?',
|
||
'permMode.enableBypassSubtitle': '這將授予對系統的完全訪問許可權',
|
||
'permMode.enableBypassBody': 'Claude 將擁有<strong>不受限制的</strong>許可權來執行 Shell 命令和修改以下目錄中的檔案:',
|
||
'permMode.permReadWrite': '讀取、寫入和刪除任何檔案',
|
||
'permMode.permShell': '執行任意 Shell 命令',
|
||
'permMode.permPackages': '安裝或移除軟體包',
|
||
'permMode.enableBypassBtn': '啟用跳過',
|
||
'permMode.disabledDuringTurn': '工作階段進行中,無法切換權限',
|
||
'permMode.enableAutoTitle': '啟用自動模式?',
|
||
'permMode.enableAutoBody': '自動模式會減少權限詢問,但不能保證絕對安全。',
|
||
'permMode.enableAutoDetail': 'Claude 會檢查工具呼叫中的風險操作和提示詞注入,執行其認為安全的操作,並阻止其認為有風險的操作。請僅在隔離環境中使用。',
|
||
'permMode.enableAutoBtn': '啟用自動模式',
|
||
|
||
// Mode labels (compact, for chips)
|
||
'permMode.label.default': '詢問許可權',
|
||
'permMode.label.acceptEdits': '自動接受',
|
||
'permMode.label.auto': '自動模式',
|
||
'permMode.label.plan': '計劃模式',
|
||
'permMode.label.bypassPermissions': '跳過',
|
||
'permMode.label.dontAsk': '不詢問',
|
||
|
||
// ─── Model Selector ──────────────────────────────────────
|
||
'model.selectModel': '選擇模型',
|
||
'model.configuration': '模型配置',
|
||
'model.effort': '推理強度',
|
||
|
||
// ─── Directory Picker ──────────────────────────────────────
|
||
'dirPicker.selectProject': '選擇專案...',
|
||
'dirPicker.directory': '目錄',
|
||
'dirPicker.recent': '最近',
|
||
'dirPicker.noRecent': '暫無最近專案',
|
||
'dirPicker.chooseFolder': '選擇其他資料夾',
|
||
'dirPicker.chooseProjectFolder': '選擇專案資料夾',
|
||
'dirPicker.useThisFolder': '使用此資料夾',
|
||
'dirPicker.noSubdirs': '無子目錄',
|
||
|
||
// ─── File Search ──────────────────────────────────────
|
||
'fileSearch.searching': '搜尋中...',
|
||
'fileSearch.noMatch': '沒有匹配的檔案',
|
||
'fileSearch.noFiles': '此目錄下無檔案',
|
||
'fileSearch.accessDenied': '無法訪問此目錄',
|
||
'fileSearch.loadFailed': '目錄載入失敗',
|
||
'fileSearch.navigate': '導航',
|
||
'fileSearch.attach': '附加',
|
||
'fileSearch.select': '選擇',
|
||
'fileSearch.open': '開啟目錄',
|
||
'fileSearch.close': '關閉',
|
||
'fileSearch.directory': '目錄',
|
||
'fileSearch.currentDirectory': '當前目錄',
|
||
'fileSearch.folderTag': '目錄',
|
||
'fileSearch.fileTag': '檔案',
|
||
'fileSearch.openFolder': '開啟目錄',
|
||
|
||
// ─── Teams ──────────────────────────────────────
|
||
'teams.backToLeader': '\u2190 返回主控',
|
||
'teams.viewing': '檢視:',
|
||
'teams.transcript': '記錄',
|
||
'teams.noMessages': '暫無訊息',
|
||
'teams.team': '團隊:',
|
||
'teams.members': '名成員',
|
||
'teams.working': '正在工作中...',
|
||
'teams.thinking': '正在思考中...',
|
||
'teams.running': '執行中',
|
||
'teams.leader': '主控',
|
||
'teams.memberPlaceholder': '直接給這個 Agent 發訊息...',
|
||
'teams.memberSessionHint': '這裡傳送的訊息會直接投遞給該 Agent,同時繼續重新整理它的 transcript。',
|
||
|
||
// ─── Session Activity ──────────────────────────────────────
|
||
'session.activity.title': '活動',
|
||
'session.activity.close': '關閉活動',
|
||
'session.activity.clearFinished': '清除已完成',
|
||
'session.activity.openTeamMember': '開啟團隊成員 {name}',
|
||
'session.activity.openRun': '開啟執行 {name}',
|
||
'session.activity.openBackgroundTask': '開啟後台任務 {name}',
|
||
'session.activity.stopBackgroundTask': '停止後台任務 {name}',
|
||
'session.activity.stoppingBackgroundTask': '正在停止後台任務 {name}',
|
||
'session.activity.details.title': '詳情',
|
||
'session.activity.details.type': '類型',
|
||
'session.activity.details.description': '描述',
|
||
'session.activity.details.summary': '摘要',
|
||
'session.activity.details.outputFile': '輸出檔案',
|
||
'session.activity.details.usage': '用量',
|
||
'session.activity.section.tasks': '任務',
|
||
'session.activity.tasksProgress': '任務進度 {completed}/{total}',
|
||
'session.activity.section.team': '團隊',
|
||
'session.activity.section.backgroundTasks': '後台任務',
|
||
'session.activity.section.subagents': 'SubAgent',
|
||
'session.activity.section.sources': '來源',
|
||
'session.activity.empty.tasks': '暫無任務',
|
||
'session.activity.empty.team': '暫無團隊成員',
|
||
'session.activity.empty.backgroundTasks': '暫無後台任務',
|
||
'session.activity.empty.subagents': '暫無 SubAgent',
|
||
'session.activity.empty.sources': '暫無來源',
|
||
'session.activity.task.completed': '任務已完成',
|
||
'session.activity.task.inProgress': '任務進行中',
|
||
'session.activity.task.pending': '任務待處理',
|
||
'session.activity.tasks.earlier': '歷史任務',
|
||
'session.activity.tasks.earlierSummary': '歷史輪次:{completed}/{total} 已完成',
|
||
'session.activity.status.pending': '待處理',
|
||
'session.activity.status.inProgress': '進行中',
|
||
'session.activity.status.completed': '已完成',
|
||
'session.activity.status.running': '執行中',
|
||
'session.activity.status.failed': '失敗',
|
||
'session.activity.status.stopped': '已停止',
|
||
'session.activity.status.idle': '閒置',
|
||
'session.activity.status.error': '錯誤',
|
||
'session.activity.status.unknown': '未知',
|
||
|
||
// ─── SubAgent Run ──────────────────────────────────────
|
||
'subagentRun.refresh': '重新整理 SubAgent 執行',
|
||
'subagentRun.loading': '正在載入 SubAgent 執行...',
|
||
'subagentRun.source': '來源',
|
||
'subagentRun.agent': 'Agent',
|
||
'subagentRun.unknown': '未知',
|
||
'subagentRun.task': '任務',
|
||
'subagentRun.updated': '更新時間',
|
||
'subagentRun.output': '輸出',
|
||
'subagentRun.agentInvocation': 'Agent 呼叫',
|
||
'subagentRun.parentToolInput': '父級 Agent 工具輸入',
|
||
'subagentRun.parentToolCall': '父級 Agent 工具呼叫',
|
||
'subagentRun.transcript': '執行記錄',
|
||
'subagentRun.noTranscript': '沒有擷取到這個 SubAgent 的本地執行記錄。',
|
||
'subagentRun.truncated': '顯示前 50 筆和最新 950 筆記錄',
|
||
'subagentRun.source.transcript': '執行記錄',
|
||
'subagentRun.source.sessionHistory': '會話歷史',
|
||
'subagentRun.source.liveTask': '即時任務',
|
||
'subagentRun.source.none': '無',
|
||
'subagentRun.status.completed': '已完成',
|
||
'subagentRun.status.failed': '失敗',
|
||
'subagentRun.status.stopped': '已停止',
|
||
'subagentRun.status.running': '執行中',
|
||
'subagentRun.status.unknown': '未知',
|
||
'subagentRun.result.completedFallback': 'SubAgent 已完成,但沒有結果內容。',
|
||
'subagentRun.result.failedFallback': 'SubAgent 已失敗,但沒有錯誤內容。',
|
||
'subagentRun.result.stoppedFallback': 'SubAgent 已停止,但沒有結果內容。',
|
||
'subagentRun.result.noneFallback': '暫無結果。',
|
||
|
||
// ─── Scheduled Tasks Pages ──────────────────────────────────────
|
||
'scheduledPage.title': '定時任務',
|
||
'scheduledPage.subtitle': '按計劃或在需要時執行任務。在任意會話中輸入 {code} 即可建立。',
|
||
'scheduledPage.desktopNotice': '定時任務僅在桌面應用開啟時執行。請確保應用持續執行以按時觸發任務。',
|
||
'scheduledPage.oldSubtitle': '管理自動化運維流程和後臺維護任務。',
|
||
'scheduledPage.executionMode': '執行模式',
|
||
'scheduledPage.localMode': '本地模式',
|
||
'scheduledPage.remoteMode': '遠端模式',
|
||
'scheduledPage.nextRun': '下次執行',
|
||
'scheduledPage.systemHealth': '系統健康',
|
||
'scheduledPage.activeSession': '活躍會話',
|
||
'scheduledPage.endOfList': '任務列表結束',
|
||
'scheduledPage.pausedTasks': '另有 9 個任務當前已暫停或因維護而禁用。',
|
||
'scheduledPage.recentLogs': '最近輸出日誌',
|
||
'scheduledPage.viewArtifacts': '檢視完整產物',
|
||
'scheduledPage.resourceAllocation': '資源分配',
|
||
'scheduledPage.cpuCapacity': 'CPU 容量',
|
||
'scheduledPage.memoryLoad': '記憶體負載',
|
||
'scheduledPage.connectedLocal': '已連線到本地節點',
|
||
'scheduledPage.thisMonth': '本月 {count}',
|
||
|
||
// ─── 更新檢查 ──────────────────────────────────────
|
||
'update.available': 'v{version} 可用',
|
||
'update.availableLabel': '可更新版本',
|
||
'update.checking': '正在檢查更新...',
|
||
'update.checkNow': '檢查更新',
|
||
'update.checkedAt': '上次檢查時間 {time}',
|
||
'update.currentVersionUnknown': '未知版本',
|
||
'update.newVersion': '新版本 v{version} 可用',
|
||
'update.downloading': '下載中...',
|
||
'update.downloaded': '更新已下載。方便時重啟即可使用新版。',
|
||
'update.idle': '點選檢查更新,對比當前安裝版本和 GitHub Releases 的最新版本。',
|
||
'update.installAndRestart': '安裝並重啟',
|
||
'update.installing': '正在安裝更新...',
|
||
'update.now': '立即更新',
|
||
'update.later': '稍後',
|
||
'update.progress': '正在下載更新... {progress}%',
|
||
'update.progressBytes': '正在下載更新... 已下載 {downloaded}',
|
||
'update.proxyAdvanced': '高階更新代理',
|
||
'update.proxyModeManual': '手動代理',
|
||
'update.proxyModeManualDescription': '使用你填寫的本地 HTTP 代理地址。',
|
||
'update.proxyModeSystem': '系統代理',
|
||
'update.proxyModeSystemDescription': '自動使用系統 HTTP/HTTPS 代理。',
|
||
'update.proxySave': '儲存',
|
||
'update.proxyScopeHint': '這裡隻影響應用自身的更新檢查和安裝包下載。',
|
||
'update.proxyUrl': '代理地址',
|
||
'update.proxyUrlHint': '支援 HTTP 和 HTTPS 代理,例如 http://127.0.0.1:7890。',
|
||
'update.proxyUrlInvalid': '請輸入 HTTP 或 HTTPS 代理地址。',
|
||
'update.proxyUrlRequired': '請輸入代理地址。',
|
||
'update.releaseNotes': '更新說明',
|
||
'update.readyBody': 'v{version} 已下載。方便時重啟即可使用新版。',
|
||
'update.readyTitle': '更新已準備好',
|
||
'update.restarting': '正在重啟以完成更新...',
|
||
'update.upToDate': '當前已是最新版本 v{version}。',
|
||
'update.failed': '更新失敗: {error}',
|
||
|
||
// ─── 活躍會話 ──────────────────────────────────────
|
||
'session.untitled': '未命名會話',
|
||
'session.active': '會話活躍中',
|
||
'session.lastUpdated': '最後更新 {time}',
|
||
'session.messages': '{count} 條訊息',
|
||
'session.historyLoadFailed': '歷史會話載入失敗。',
|
||
'session.workspaceUnavailable': '工作目錄不可用: {dir}',
|
||
'session.worktreeRemoved': '臨時工作區已清理,歷史記錄仍可查看。請在原專案 {dir} 中新建會話繼續。',
|
||
'session.timeJustNow': '剛剛',
|
||
'session.timeMinutes': '{n}分鐘前',
|
||
'session.timeHours': '{n}小時前',
|
||
'session.timeDays': '{n}天前',
|
||
'trace.open': 'Trace',
|
||
'trace.title': '模型 Trace',
|
||
'trace.loadFailed': 'Trace 載入失敗',
|
||
'trace.apiCalls': 'API 呼叫',
|
||
'trace.failedCalls': '失敗',
|
||
'trace.duration': '耗時',
|
||
'trace.elapsed': '已用時',
|
||
'trace.completed': '完成',
|
||
'trace.wallTime': '牆鐘時間',
|
||
'trace.modelTime': '模型耗時',
|
||
'trace.toolTime': '工具耗時',
|
||
'trace.models': '模型',
|
||
'trace.request': '請求',
|
||
'trace.response': '回應',
|
||
'trace.status': '狀態',
|
||
'trace.live': '即時',
|
||
'trace.updatedAt': '更新',
|
||
'trace.copySessionId': '複製 Session ID',
|
||
'trace.refresh': '重新整理 Trace',
|
||
'trace.openWindow': '在獨立視窗開啟',
|
||
'trace.delete': '刪除 Trace',
|
||
'trace.noResponse': '未捕獲回應正文',
|
||
'trace.emptyTitle': '暫無 Trace 呼叫',
|
||
'trace.emptyBody': '這個會話還沒有捕獲到模型呼叫。新的桌面會話會自動記錄精簡的請求和回應預覽。',
|
||
'trace.tokens': 'Tokens',
|
||
'trace.snapshotEmpty': 'Trace 快照為空。',
|
||
'trace.errors': '錯誤',
|
||
'trace.focus': '關注點',
|
||
'trace.searchSpans': '搜尋 Span',
|
||
'trace.noMatchingSpans': '沒有符合的 Span',
|
||
'trace.filter.aria': '篩選 Span',
|
||
'trace.filter.all': '全部',
|
||
'trace.filter.llm': 'LLM',
|
||
'trace.filter.tools': '工具',
|
||
'trace.filter.errors': '錯誤',
|
||
'trace.sidechain': '子鏈',
|
||
'trace.turnLabel': '第 {index} 輪',
|
||
'trace.waitingForResult': '等待結果',
|
||
'trace.started': '開始',
|
||
'trace.provider': 'Provider',
|
||
'trace.model': '模型',
|
||
'trace.childSpans': '子 Span',
|
||
'trace.requestBody': '請求正文',
|
||
'trace.requestHeaders': '請求頭',
|
||
'trace.responseBody': '回應正文',
|
||
'trace.responseHeaders': '回應頭',
|
||
'trace.toolResult': '工具結果',
|
||
'trace.truncatedShort': '已截斷',
|
||
'trace.noData': '無資料',
|
||
'trace.llmCalls': 'LLM 呼叫',
|
||
'trace.toolCalls': '工具呼叫',
|
||
'trace.status.ok': '正常',
|
||
'trace.status.error': '錯誤',
|
||
'trace.status.pending': '等待中',
|
||
'trace.message.user': '使用者訊息',
|
||
'trace.message.assistant': '助手訊息',
|
||
'trace.message.system': '系統訊息',
|
||
'trace.message.toolRequest': '助手請求工具',
|
||
'trace.message.toolResult': '工具結果',
|
||
'trace.toolError': '工具錯誤',
|
||
'trace.modelCall': '模型呼叫',
|
||
'trace.sessionActivity': '會話活動',
|
||
'trace.diagnosis.modelError': '模型呼叫失敗',
|
||
'trace.diagnosis.toolError': '工具執行失敗',
|
||
'trace.diagnosis.eventError': '鏈路事件失敗',
|
||
'trace.diagnosis.pendingModel': '正在等待模型回應',
|
||
'trace.diagnosis.pendingTool': '正在等待工具結果',
|
||
'trace.diagnosis.waitingForAgent': '使用者訊息尚未進入 agent 步驟',
|
||
'trace.diagnosis.empty': '沒有可診斷事件',
|
||
'trace.diagnosis.healthy': '未發現阻塞點',
|
||
'trace.event.apiCallStarted': 'API 呼叫開始',
|
||
'trace.event.apiCallCompleted': 'API 呼叫完成',
|
||
'trace.event.apiCallFailed': 'API 呼叫失敗',
|
||
'trace.event.apiCallAborted': 'API 呼叫中斷',
|
||
'trace.event.responseCaptureFailed': '回應捕獲失敗',
|
||
'trace.event.upstreamFetchStarted': '上游請求開始',
|
||
'trace.event.upstreamFetchCompleted': '上游請求完成',
|
||
'trace.event.upstreamFetchFailed': '上游請求失敗',
|
||
'trace.section.response': '回應',
|
||
'trace.section.messages': '訊息',
|
||
'trace.section.systemPrompt': '系統提示詞',
|
||
'trace.section.tools': '工具',
|
||
'trace.section.parameters': '參數',
|
||
'trace.section.raw': '原始資料',
|
||
'trace.section.input': '輸入',
|
||
'trace.section.result': '結果',
|
||
'trace.section.meta': '中繼資訊',
|
||
'trace.section.content': '內容',
|
||
'trace.section.event': '事件',
|
||
'trace.section.metadata': '中繼資料',
|
||
'trace.detail.stopReason': '停止原因',
|
||
'trace.detail.streaming': '等待模型回應...',
|
||
'trace.detail.aborted': '請求在回應完成前被中斷(逾時或取消)。',
|
||
'trace.status.aborted': '已中斷',
|
||
'trace.detail.legacyTruncated': '此記錄為舊格式截斷資料,無法解析語意檢視,請查看下方原始資料。',
|
||
'trace.detail.fetchFailed': '完整記錄載入失敗,以下顯示截斷預覽。',
|
||
'trace.detail.earlierMessages': '展開更早的 {count} 則訊息',
|
||
'trace.detail.chars': '{count} 字元',
|
||
'trace.detail.thinking': '思考',
|
||
'trace.detail.toolUseId': 'Tool use ID',
|
||
'trace.detail.phase': '階段',
|
||
'trace.detail.severity': '層級',
|
||
'trace.detail.message': '訊息',
|
||
'trace.tree.aria': 'Trace 時間軸',
|
||
'trace.tree.toggleTurn': '摺疊/展開輪次',
|
||
'trace.list.eyebrow': 'Agent Trace',
|
||
'trace.list.title': 'Trace 列表',
|
||
'trace.list.collecting': '正在收集',
|
||
'trace.list.paused': '已暫停',
|
||
'trace.list.settings': 'Trace 設定',
|
||
'trace.list.sessions': '會話',
|
||
'trace.list.searchPlaceholder': '搜尋標題、Session ID 或專案路徑',
|
||
'trace.list.emptyTitle': '還沒有 Trace 記錄',
|
||
'trace.list.emptyBody': '開啟收集後,新的桌面會話會把模型呼叫鏈路寫入本地 traces 目錄。',
|
||
'trace.list.loadFailed': 'Trace 列表載入失敗',
|
||
'trace.list.loadedCount': '已顯示 {shown} / {total}',
|
||
'trace.list.loadMore': '載入更多',
|
||
'trace.list.deleteConfirmTitle': '刪除 Trace 會話',
|
||
'trace.list.deleteConfirmBody': '刪除「{title}」的 Trace 資料?聊天記錄不會被刪除。',
|
||
'trace.list.deleteFailed': 'Trace 會話刪除失敗',
|
||
|
||
// ─── 應用外殼 ──────────────────────────────────────
|
||
'app.serverFailed': '本地服務啟動失敗',
|
||
'app.serverFailedHint': '反饋這個問題時,請把這塊診斷資訊截圖一起發到 issue 裡。',
|
||
'app.startupError': '啟動錯誤',
|
||
'app.serverLogs': '服務日誌',
|
||
'app.copyDiagnostics': '複製診斷資訊',
|
||
'app.copiedDiagnostics': '已複製',
|
||
'app.launching': '正在啟動本地工作區...',
|
||
|
||
// ─── Error Codes ──────────────────────────────────────
|
||
'error.CLI_NOT_RUNNING': 'CLI 程序未執行。會話可能已結束或程序已崩潰。',
|
||
'error.CLI_START_FAILED': 'CLI 程序啟動失敗。',
|
||
'error.CLI_AUTH_REQUIRED': '需要認證。請先登入。',
|
||
'error.CLI_SESSION_CONFLICT': '會話已被其他程序佔用。',
|
||
'error.CLI_SPAWN_FAILED': 'CLI 子程序啟動失敗。',
|
||
'error.CLI_ERROR': '處理過程中發生錯誤。',
|
||
'error.WORKDIR_INVALID': '工作目錄無效或不存在。',
|
||
'error.PARSE_ERROR': '訊息格式無效。',
|
||
'error.UNKNOWN_TYPE': '未知的訊息型別。',
|
||
'error.BAD_REQUEST': '請求無效。',
|
||
'error.NOT_FOUND': '資源未找到。',
|
||
'error.INTERNAL_ERROR': '內部伺服器錯誤。',
|
||
|
||
// ─── 業務錯誤 ──────────────────────────────────────
|
||
'businessError.pdf_too_large': '這個 PDF 超出了當前模型可處理的大小。請先轉成文字,或換一個更小的 PDF。',
|
||
'businessError.pdf_password_protected': '這個 PDF 有密碼保護。請先解鎖或轉換後再傳送。',
|
||
'businessError.pdf_invalid': '這個 PDF 檔案無效。請先轉成文字,或換一個檔案傳送。',
|
||
'businessError.image_too_large': '這張圖片超出了當前模型可處理的大小。請壓縮圖片,或換一張更小的圖片。',
|
||
'businessError.image_unsupported': '當前模型不支援圖片。請繼續使用文字,或切換到支援視覺的模型後重新傳送圖片。',
|
||
'businessError.request_too_large': '這次請求超出了當前模型可處理的大小。請移除大檔案,或縮短訊息後重試。',
|
||
'businessError.prompt_too_long': '當前上下文超出了模型限制。請先壓縮會話,或減少上下文後重試。',
|
||
'businessError.auto_mode_unavailable': '當前套餐不支援自動模式。',
|
||
|
||
// ─── Server Status Verbs ──────────────────────────────────────
|
||
'serverVerb.Thinking': '思考中',
|
||
'serverVerb.Compacting conversation': '正在壓縮上下文',
|
||
'serverVerb.Running': '執行中',
|
||
'serverVerb.Working': '處理中',
|
||
'serverVerb.Creating worktree': '正在建立工作樹',
|
||
'serverVerb.Task started': '任務已啟動',
|
||
'serverVerb.Task in progress': '任務進行中',
|
||
'chat.retry.title': '請求失敗,正在重試',
|
||
'chat.retry.attempt': '第 {attempt}/{max} 次',
|
||
'chat.retry.httpStatus': 'HTTP {status}',
|
||
'chat.retry.networkError': '網路錯誤',
|
||
'chat.retry.waiting': '等待 {seconds}s',
|
||
'chat.retry.retrying': '正在重試…',
|
||
'chat.fallback.title': '網路波動,已切換為非串流請求',
|
||
'chat.fallback.detail': '回應將一次性返回,可能需要較長時間',
|
||
|
||
|
||
// ─── Tabs ──────────────────────────────────────
|
||
'tabs.close': '關閉',
|
||
'tabs.closeOthers': '關閉其他',
|
||
'tabs.closeLeft': '關閉左側',
|
||
'tabs.closeRight': '關閉右側',
|
||
'tabs.closeAll': '關閉所有',
|
||
'tabs.closeConfirmTitle': '會話執行中',
|
||
'tabs.closeConfirmMessage': '此會話仍在執行,你想要怎麼做?',
|
||
'tabs.closeConfirmKeep': '保持執行',
|
||
'tabs.closeConfirmStop': '停止並關閉',
|
||
'tabs.closeAllConfirmTitle': '多個會話執行中',
|
||
// ─── Slash Command Descriptions ──────────────────────────────────────
|
||
'slashCmd.agent.description': '使用指定 Agent 執行提示',
|
||
'slashCmd.mcp.description': '開啟當前聊天上下文中可用的 MCP 工具',
|
||
'slashCmd.skills.description': '瀏覽當前上下文中可直接呼叫的技能',
|
||
'slashCmd.help.description': '檢視可用的桌面端與 Agent 命令',
|
||
'slashCmd.status.description': '檢視會話狀態、用量和上下文',
|
||
'slashCmd.cost.description': '檢視會話用量和費用',
|
||
'slashCmd.context.description': '檢視當前上下文用量',
|
||
'slashCmd.plugin.description': '在設定中開啟外掛管理',
|
||
'slashCmd.memory.description': '在設定中開啟專案記憶檔案',
|
||
'slashCmd.doctor.description': '在診斷中開啟 Doctor',
|
||
'slashCmd.compact.description': '壓縮會話上下文',
|
||
'slashCmd.clear.description': '清空會話歷史',
|
||
'slashCmd.goal.description': '設定完成目標',
|
||
'slashCmd.review.description': '審查程式碼變更',
|
||
'slashCmd.commit.description': '建立 git 提交',
|
||
'slashCmd.pr.description': '建立 Pull Request',
|
||
'slashCmd.init.description': '初始化專案 CLAUDE.md',
|
||
'slashCmd.bug.description': '報告 Bug',
|
||
'slashCmd.config.description': '開啟配置',
|
||
'slashCmd.login.description': '切換 Anthropic 賬戶',
|
||
'slashCmd.logout.description': '登出當前賬戶',
|
||
'slashCmd.model.description': '切換 AI 模型',
|
||
'slashCmd.permissions.description': '檢視或管理工具許可權',
|
||
'slashCmd.terminal-setup.description': '設定終端整合',
|
||
'slashCmd.vim.description': '切換 vim 編輯模式',
|
||
|
||
'tabs.closeAllConfirmMessage': '仍有 {count} 個會話正在執行。關閉這些標籤前是否停止它們?',
|
||
'tabs.closeAllConfirmStop': '全部停止並關閉',
|
||
'tabs.sessionRunning': '會話執行中',
|
||
'tabs.openTerminal': '開啟終端',
|
||
'tabs.showWorkspace': '顯示工作區',
|
||
'tabs.hideWorkspace': '隱藏工作區',
|
||
'tabs.showBrowser': '顯示瀏覽器',
|
||
'tabs.hideBrowser': '隱藏瀏覽器',
|
||
'tabs.scrollLeft': '分頁向左捲動',
|
||
'tabs.scrollRight': '分頁向右捲動',
|
||
'tabs.closeTab': '關閉 {title}',
|
||
'tabs.untitled': '未命名',
|
||
|
||
// 技能市集
|
||
'sidebar.market': '技能市集',
|
||
'market.title': '技能市集',
|
||
'market.subtitle': '瀏覽、預覽並安裝來自 ClawHub 與 SkillHub 的技能。',
|
||
'market.searchPlaceholder': '依名稱、關鍵字搜尋技能…',
|
||
'market.clearSearch': '清除搜尋',
|
||
'market.resultCount': '{count} 個技能',
|
||
'market.loadMore': '載入更多',
|
||
'market.loadingMore': '正在載入更多…',
|
||
'market.loadMoreError': '載入更多技能失敗',
|
||
'market.installedSkills': '已安裝技能',
|
||
'market.installedSkillsHint': '查看本機已安裝的技能',
|
||
'market.loading': '正在載入技能…',
|
||
'market.empty': '暫無可用技能',
|
||
'market.emptyHint': '兩個來源都沒有回傳結果,請檢查上方的來源狀態。',
|
||
'market.emptySearch': '沒有符合的技能',
|
||
'market.emptySearchHint': '換個關鍵字試試,或清除篩選條件。',
|
||
'market.error.list': '技能市集載入失敗',
|
||
'market.retry': '重試',
|
||
'market.filter.source': '來源',
|
||
'market.filter.security': '安全狀態',
|
||
'market.filter.installed': '安裝狀態',
|
||
'market.source.all': '全部來源',
|
||
'market.source.clawhub': 'ClawHub',
|
||
'market.source.skillhub': 'SkillHub',
|
||
'market.security.all': '全部安全狀態',
|
||
'market.security.verified': '已認證',
|
||
'market.security.benign': '掃描無風險',
|
||
'market.security.unknown': '未稽核',
|
||
'market.security.flagged': '存在風險',
|
||
'market.securityHint.verified': '發布者已認證,且通過來源方安全掃描。',
|
||
'market.securityHint.benign': '來源方安全掃描未發現風險。',
|
||
'market.securityHint.unknown': '來源方未提供安全審計資料,安裝前請自行檢查檔案內容。',
|
||
'market.securityHint.flagged': '來源方安全掃描標記該技能存在潛在風險。',
|
||
'market.disclaimer.title': '第三方技能,謹慎使用。',
|
||
'market.disclaimer.body': '技能來自社群第三方來源,本應用不對其內容做安全審計。安裝前請先查看技能檔案,建議先讓 AI 掃描一遍、確認安全後再使用。',
|
||
'market.disclaimer.dismiss': '關閉免責聲明',
|
||
'market.installedFilter.all': '全部技能',
|
||
'market.installedFilter.installed': '已安裝',
|
||
'market.installedFilter.installable': '未安裝',
|
||
'market.sourceStatus.ok': '正常',
|
||
'market.sourceStatus.degraded': '降級',
|
||
'market.sourceStatus.failed': '不可用',
|
||
'market.sourceStatus.cached': '快取',
|
||
'market.sourceStatus.cachedAt': '快取於 {time}',
|
||
'market.card.by': '作者 {author}',
|
||
'market.card.moreTags': '+{count}',
|
||
'market.install.state.installed': '已安裝',
|
||
'market.install.state.installable': '可安裝',
|
||
'market.install.state.notInstallable': '不可安裝',
|
||
'market.install.action': '安裝',
|
||
'market.install.installing': '安裝中…',
|
||
'market.uninstall.action': '解除安裝',
|
||
'market.uninstall.uninstalling': '解除安裝中…',
|
||
'market.uninstall.confirmTitle': '解除安裝技能',
|
||
'market.uninstall.confirmMessage': '確定從本機移除「{name}」嗎?{path} 下的檔案將被刪除。',
|
||
'market.uninstall.success': '「{name}」已解除安裝。',
|
||
'market.reason.empty-file-list': '該技能沒有可安裝的檔案(缺少 SKILL.md)。',
|
||
'market.reason.file-too-large': '該技能包含超過大小限制的檔案。',
|
||
'market.reason.too-many-files': '該技能檔案數量過多,無法安全安裝。',
|
||
'market.reason.invalid-name': '技能名稱無法作為本機目錄名稱使用。',
|
||
'market.reason.name-conflict': '本機已存在同名技能,請先重新命名或刪除後再安裝。',
|
||
'market.reason.source-unavailable': '該技能所屬的來源目前不可用。',
|
||
'market.detail.back': '返回市集',
|
||
'market.detail.overview': '概覽',
|
||
'market.detail.files': '檔案',
|
||
'market.detail.author': '作者',
|
||
'market.detail.version': '版本',
|
||
'market.detail.updated': '更新時間',
|
||
'market.detail.category': '分類',
|
||
'market.detail.license': '授權條款',
|
||
'market.detail.downloads': '下載量',
|
||
'market.detail.installs': '安裝量',
|
||
'market.detail.stars': '收藏',
|
||
'market.detail.securityReport': '安全報告',
|
||
'market.detail.viewReport': '檢視報告',
|
||
'market.detail.mirror': '也收錄於 {source}',
|
||
'market.detail.requiresApiKey': '需要 API Key',
|
||
'market.detail.loadError': '技能詳情載入失敗',
|
||
'market.detail.noDescription': '該技能未提供說明。',
|
||
'market.detail.metadata': '中繼資訊',
|
||
'market.detail.metadataCollapse': '收合',
|
||
'market.detail.metadataExpand': '展開',
|
||
'market.file.empty': '在左側選擇一個檔案進行預覽。',
|
||
'market.file.truncated': '預覽已截斷——檔案超出預覽大小限制。',
|
||
'market.file.loadError': '檔案載入失敗',
|
||
'market.file.noFiles': '該技能暫無可預覽檔案。',
|
||
'market.installConfirm.title': '安裝技能',
|
||
'market.installConfirm.message': '確定從 {source} 安裝「{name}」嗎?',
|
||
'market.installConfirm.location': '安裝位置',
|
||
'market.installConfirm.effectNote': '安裝完成後,技能將在新會話中生效。',
|
||
'market.installConfirm.riskBenign': '安全掃描未發現該技能存在風險。',
|
||
'market.installConfirm.riskVerified': '該技能來自已認證發布者,並通過了安全掃描。',
|
||
'market.installConfirm.riskUnknown': '該技能未經過安全稽核,安裝前請先檢查其檔案內容。',
|
||
'market.installConfirm.riskFlagged': '安全掃描標記該技能存在潛在風險,僅在您信任它時安裝。',
|
||
'market.installConfirm.confirm': '安裝',
|
||
'market.installConfirm.cancel': '取消',
|
||
'market.installSuccess': '「{name}」安裝成功,將在新會話中生效。',
|
||
'market.installError.network': '安裝失敗:無法連線技能來源,請檢查網路後重試。',
|
||
'market.installError.checksum': '安裝已中止:下載檔案未通過完整性驗證。在確認來源可信前請勿重試。',
|
||
'market.installError.exists': '安裝失敗:該技能已安裝或正在安裝中。',
|
||
'market.installError.disk': '安裝失敗:寫入磁碟失敗,請檢查權限與剩餘空間。',
|
||
'market.installError.notInstallable': '安裝失敗:該技能不可安裝。',
|
||
'market.installError.generic': '安裝失敗:{message}',
|
||
|
||
// ─── Window controls / diagram + code viewers ──────────────────────────────────────
|
||
'windowControls.minimize': '最小化視窗',
|
||
'windowControls.maximize': '最大化視窗',
|
||
'windowControls.restore': '還原視窗',
|
||
'windowControls.close': '關閉視窗',
|
||
'mermaid.preview': '預覽',
|
||
'mermaid.zoomOut': '縮小',
|
||
'mermaid.zoomIn': '放大',
|
||
'mermaid.fit': '適應',
|
||
'mermaid.fitDiagram': '縮放至適應圖表',
|
||
'codeViewer.collapse': '收合',
|
||
'codeViewer.showMoreLines': '顯示其餘 {count} 行',
|
||
|
||
// ─── Browser Panel ──────────────────────────────────────
|
||
'browser.back': '上一頁',
|
||
'browser.forward': '下一頁',
|
||
'browser.reload': '重新整理',
|
||
'browser.addressPlaceholder': '輸入網址...',
|
||
'browser.loading': '載入中',
|
||
'browser.zoomControls': '預覽縮放控制',
|
||
'browser.zoomOut': '縮小預覽',
|
||
'browser.zoomIn': '放大預覽',
|
||
'browser.zoomReset': '重設預覽縮放',
|
||
'browser.capture': '螢幕截圖',
|
||
'browser.pickElement': '選取元素',
|
||
}
|