/** Traditional Chinese UI copy. Keep keys stable when adding another locale. */ export const zhTW = { search: "搜尋", sharedComputer: "共用電腦", privateComputer: "私人電腦", stopped: "已關閉", booting: "啟動中", running: "執行中", suspended: "休眠中", error: "發生錯誤", openComputer: "開啟電腦", stopTask: "停止任務", takeControl: "取得控制", takeOverNow: "接手操作", releaseControl: "釋放控制", done: "完成", skip: "略過", localWorkspace: "本機工作區", pinned: "已釘選", agentGroup: "Agent", operationFailed: "操作失敗", loadFailed: "載入失敗", settingsFailed: "設定失敗", loginFailed: "登入失敗", rememberFailed: "無法記住這則訊息", clipboardWriteBlocked: "瀏覽器封鎖剪貼簿寫入。", newConversation: "新對話", workTools: "工作工具", computer: "電腦", memory: "記憶", plugins: "外掛程式", pluginShort: "外掛", botSettings: "機器人設定", add: "新增", addBot: "新增機器人", addGroup: "新增群組", groups: "群組", unreadMessages: "{count} 則未讀訊息", members: "{count} 位成員", hideHiddenItems: "隱藏已隱藏項目", showHiddenItems: "顯示已隱藏項目", mcpConnected: "{count} 個 MCP 已連線", connectMcpServer: "接入 MCP server", openOnPhone: "在手機開啟", settings: "設定", about: "關於", helpCenter: "說明中心", sendFeedback: "傳送意見回饋", logout: "登出", workspaceMenu: "工作區選單", chooseBot: "選擇一個機器人", startRoomDiscussion: "和 {name} 開始討論", startBotWork: "和 {name} 開始工作", roomWillReply: "{names} 會一起回覆。", botWelcome: "傳送訊息,讓它在自己的電腦上完成任務。", remembered: "已記住", remember: "記住", working: "{name} 正在工作…", copyCode: "複製程式碼", copiedCode: "已複製", copyMessage: "複製", copiedMessage: "已複製", anotherConversationQueued: "另一則對話正在執行,這則會排隊。", workingStep: "{name} 正在工作… {step}", queuedMessages: "還有 {count} 則訊息排隊中", pausedUserControl: "你正在操控畫面,{name} 已暫停。完成後按「釋放控制」,它會從目前畫面接著做(排隊中的訊息也會一起處理)。", pausedNeedsUser: "{name} 需要你接手畫面(例如登入或驗證)。按「接手操作」處理,完成後再「釋放控制」。", releaseAndContinue: "釋放控制並繼續", attachFile: "附加檔案", attachFileHint: "圖片會直接給模型看;其他檔案放到電腦 inbox,兩小時後刪除", attachTooMany: "一次最多 4 個附件", attachTooLarge: "單檔不能超過 10 MB", attachType: "這個檔案類型不能附加", attachRemove: "移除 {name}", attachedFile: "附件 {name}", attachDrop: "放到這裡附加", teachTask: "教它一項任務", teachTaskHint: "你示範一次,它學成技能", teachNeedsBot: "先選擇一個機器人", taughtSkills: "已學會的技能", goalCommandHint: "持續規劃並執行,直到驗證完成或需要你介入", searchSkills: "搜尋技能", noMatchingSkills: "沒有符合的技能", teachDialogLead: "接下來畫面交給你操作,{name} 會在旁邊看:記錄你點了哪些控制項、輸入了什麼、去了哪些頁面,之後整理成一個「知道目的與流程」的技能,而不是死記座標。", teachGoalLabel: "你要示範什麼?(一句話說目標)", teachGoalPlaceholder: "例如:到 STAR 訓練系統,把指定課程的影片看完並完成測驗", teachTip1: "用平常的方式操作即可,不用刻意放慢;多餘的點擊會被忽略。", teachTip2: "會變動的值(搜尋字、名稱、日期)之後可以當作參數,做的時候先用實際例子。", teachTip3: "密碼欄位不會被記錄;遇到登入請先登好再開始示範。", startDemo: "開始示範", finishDemo: "完成示範", teachingBadge: "示範中", teachingComposerHint: "示範中:做完按「完成示範」再送訊息", teachingLive: "正在學:{goal}", teachingHint: "畫面已交給你,直接在右側(或放大)操作;做完按「完成示範」。", teachingCaptured: "已記錄 {count} 個動作", distilling: "正在把「{goal}」的示範整理成技能…", skillDraftTitle: "新技能草稿", skillDraftFrom: "從 {count} 個動作整理而來", skillName: "技能名稱", skillNamePlaceholder: "例如:完成 STAR 訓練課程", skillInputs: "可變輸入", skillSteps: "步驟(依意圖描述,可修改)", moreSteps: "…還有 {count} 步", editSteps: "編輯步驟", skillCheck: "怎麼確認完成", skillDistillFailed: "模型整理失敗,這是依動作直接列出的版本,建議修改後再儲存。", discard: "捨棄", testRun: "試跑", saveSkill: "儲存技能", messageTo: "傳訊息給 {name}", chooseConversationFirst: "先選擇對話", stopConversation: "停止對話", editSkill: "編輯技能", editSkillFull: "完整編輯", runSkillNamed: "執行「{name}」", skillEditLead: "寫給機器人看的說明,用意圖與畫面上的文字描述,不要寫座標。每行一項。", skillIntent: "意圖(這個技能要達成什麼)", skillWhenToUse: "使用時機", skillInputsLabel: "可變輸入(每行:名稱:說明|例:範例值)", skillInputsPlaceholder: "courseName:課程名稱|例:【TW】Workplace Bullying Prevention (2026)", skillPreconditions: "前提(開始前要成立的條件)", skillStepsLabel: "步驟(每行一步,可用 → 接上預期看到的畫面)", skillStepsPlaceholder: "點「Next」翻頁 → 頁碼加一;若 Next 鎖住就等它啟用", skillHowToCheck: "怎麼確認完成", skillWhatToReturn: "做完要回報什麼", skillCautions: "注意事項(每行一項)", deleteSkill: "刪除技能", deleteSkillConfirm: "確定刪除技能「{name}」?機器人之後就不會再認得它。", skillSaved: "已儲存", exportSkill: "匯出", exportSkillHint: "下載成 JSON,之後可以匯入到其他機器人", importSkill: "匯入技能", importSkillHint: "從先前匯出的 JSON 檔加入技能", skillImportInvalid: "這不是有效的技能檔。請選擇先前匯出的 JSON。", collapseSidebar: "收合側欄", botComputer: "{name} 的電腦", dedicatedScreen: "獨立螢幕", enlarge: "放大", userControlling: "你正在控制", aiReadOnly: "AI 操作中(唯讀)", readOnly: "唯讀", pasteClipboard: "貼上剪貼簿", copyDesktopClipboard: "複製桌面剪貼簿", moreActions: "更多操作", unpin: "取消釘選", pin: "釘選", markUnread: "標示為未讀", enterGroupName: "輸入分組名稱", changeGroup: "變更分組", createOrMoveGroup: "建立/移入分組", removeFromGroup: "移出分組", unhide: "取消隱藏", hide: "隱藏", delete: "刪除", chooseConversation: "選擇對話", deleteConversation: "刪除對話", clearConversation: "清除此對話", clearConversationTitle: "清除此對話?", clearConversationDescription: "訊息會刪除。這個 Agent 的長期記憶會保留。", cancel: "取消", clearMessages: "清除訊息", deleteConversationTitle: "刪除這則對話?", deleteConversationDescription: "這則對話會從列表消失。這個 Agent 的長期記憶會保留。", avatarAppearance: "頭像外觀", avatarAppearanceHint: "顏色、形狀、表情與背景都可選,眼睛會跟著游標", color: "顏色", chooseColor: "選擇 {value}", customColor: "自訂顏色", shape: "形狀", expression: "表情", background: "背景", bgNone: "無", bgCircle: "圓", bgSquircle: "方圓", bgSquare: "方", exprIdle: "閒置", exprHappy: "開心", exprSad: "難過", exprMad: "生氣", exprSurprised: "驚訝", exprWink: "眨眼", exprSleepy: "想睡", exprSmug: "得意", exprUnsure: "猶豫", exprScared: "害怕", exprLove: "喜歡", exprShy: "害羞", exprSick: "不適", exprThinking: "思考", name: "名稱", tags: "標籤", tagsPlaceholder: "研究、設計、客服(用逗號分隔)", tagsLimit: "最多儲存 6 個標籤", shortTitle: "簡短標題", shortTitlePlaceholder: "例如:產品研究助理", description: "說明", descriptionPlaceholder: "說明這個機器人的用途與工作範圍", saving: "儲存中…", saveSettings: "儲存設定", deleteBot: "刪除機器人", memoryHelp: "清除對話不會刪這些。只存明確偏好或事實,不要存密碼。", enableLongTermMemory: "啟用長期記憶", addMemory: "新增記憶", memoryPlaceholder: "只儲存明確偏好或事實;密碼與 token 會被拒絕。", memorySearch: "搜尋", filterMemory: "過濾記憶", noMemory: "還沒有長期記憶。對話裡講過的偏好,可以叫 Agent 記住,或你在這裡新增。", noMatchingMemory: "沒有符合的記憶。", save: "儲存", edit: "編輯", clearAllMemoryConfirm: "確定清除全部記憶?", clearMemoryConfirm: "確定清除", clearAll: "全部清除", mcpHelp: "點「選擇 MCP」從市集接入。標了需要金鑰的,先填 token 才能連。本機 stdio 會在 API 容器裡啟動。", mcpNamePlaceholder: "例如:github", mcpConnectFailed: "接入失敗,請檢查金鑰或稍後重試。", command: "Command", commandPlaceholder: "npx 或 uvx 或完整路徑", arguments: "參數", environmentVariables: "環境變數 KEY=value", headers: "Headers KEY=value", connecting: "連線中…", connectMcp: "接入 MCP", chooseMcp: "選擇 MCP", mcpPickerTitle: "選擇 MCP", mcpPickerLead: "從精選或官方市集挑一個,點下去接入。所有 Agent 都能用它的工具。", searchMcp: "搜尋 MCP", mcpRemote: "遠端", mcpLocal: "本機", mcpAdded: "已接入", mcpNeedsKey: "需要金鑰", mcpNoResults: "找不到符合的 MCP。換個關鍵字,或改用自訂接入。", mcpCustom: "自訂接入", mcpBackToList: "回到列表", mcpConnectNamed: "接入 {name}", mcpKeyHint: "這個 MCP 需要憑證才能連。", noMcp: "還沒有 MCP。點上面的「選擇 MCP」從市集接入。", toolsCount: "{count} 個工具", disabled: "已關閉", disconnected: "未連線", noTools: "沒有可用工具", reconnect: "重新連線", disable: "停用", enable: "啟用", preparingDesktop: "正在準備 Agent 的獨立桌面…", computerPreviewHint: "開啟電腦後,畫面會顯示在這裡。", bootingProgress: "啟動中…", restartComputer: "重啟", shutDownComputer: "關閉電腦", computerPower: "電腦選單", sharedPowerHint: "此為共用電腦,操作會影響使用它的所有 Agent。", stopAndTakeOver: "停止並接管", hudBooting: "電腦啟動中…", hudWaking: "喚醒中…", hudConnecting: "連線中…", hudHandoff: "換手中…", pasteToRemoteComputer: "貼到遠端電腦", pasteRemoteHelp: "把外面的文字貼在這裡,再送進 VNC。這個方式在區網 HTTP 也能使用。", pasteTextPlaceholder: "在此貼上文字…", pasteIntoVnc: "貼入 VNC", botNamePlaceholder: "例如:研究助理", sharedComputerHint: "與其他機器人共用環境", privateComputerHint: "全新的獨立 Docker", create: "建立", groupDescription: "拉進群組會開一個對話,選中的 Agent 都會在裡面發言。", groupName: "群組名稱", groupNamePlaceholder: "例如:產品研究", chooseBots: "選擇機器人(至少兩位)", creating: "建立中…", createGroup: "建立群組", deleteGroup: "刪除群組", deleteNamed: "刪除 {name}?", deleteGroupDescription: "群組對話會刪除。裡面的機器人與他們自己的對話、記憶都會保留。", deleteDedicatedBotDescription: "對話、私人電腦與其中的檔案都會永久刪除。", deleteSharedBotDescription: "對話會刪除,但共用電腦與其中的檔案會保留。", phoneAccessDescription: "同一區網的手機用瀏覽器打開這個網址,再用同一個存取 token 登入。", localAddressWarning: "這是本機位址,手機打不開。請改成這台電腦的區網 IP,例如 http://192.168.x.x:3101。", close: "關閉", copied: "已複製", copyUrl: "複製網址", workspaceName: "工作區名稱", showHiddenBots: "顯示已隱藏的機器人", collapseRightSidebar: "收合右側欄", workspaceSettingsHint: "機器人外觀、記憶與 MCP 外掛在右側分頁。這裡只改這個工作區的顯示。", modelSettings: "模型", modelSettingsHint: "這裡的供應商與模型會套用到還沒單獨指定模型的機器人。", modelProvider: "模型供應商", providerXai: "xAI", providerOpencodeGo: "OpenCode Go", providerOpenaiCompatible: "OpenAI 相容", providerXaiHint: "Grok。金鑰從 console.x.ai 取得。", providerOpencodeGoHint: "OpenCode Go 訂閱。金鑰從 opencode.ai/auth 取得。", providerOpenaiCompatibleHint: "自架 vLLM、Ollama、LiteLLM 或其他 OpenAI 相容端點。", apiKey: "API 金鑰", apiKeyPlaceholder: "sk-…", apiKeyStored: "已儲存金鑰,留空表示沿用。", usingEnvKey: "目前會用環境變數 {name}。", clearApiKey: "清除已存金鑰", modelId: "模型", modelIdPlaceholder: "例如:qwen2.5 或 llama3.1", reloadModels: "重新載入模型列表", baseUrl: "Base URL", baseUrlPlaceholder: "http://127.0.0.1:11434/v1", baseUrlHint: "API 跑在 Docker 時,本機服務請填 host.docker.internal 而不是 localhost。", workspaceModelHint: "先選供應商,再填金鑰與模型。OpenAI 相容需要自己填端點。", aboutDescription: "本機多 Agent 工作區。每個機器人有自己的 Linux 電腦,也可以拉進群組一起討論,並接入 MCP 工具。", apiStatus: "API 狀態:{status}", statusNormal: "正常", statusUnavailable: "無法連線", statusChecking: "檢查中…", helpBotsTitle: "機器人", helpBots: "左上角 + 新增機器人。點左側列進入對話。右鍵可以釘選、隱藏或刪除。", helpGroupsTitle: "群組", helpGroups: "+ → 新增群組,選至少兩位。傳一句話,裡面的 Agent 都會回。", helpComputerTitle: "電腦", helpComputer: "右側「電腦」是這個 Agent 的獨立桌面。可以啟動、接管滑鼠鍵盤,或讓它自己操作。", helpMemoryTitle: "記憶", helpMemory: "清除對話不會刪長期記憶。可以叫 Agent 記住,或在右側「記憶」手動新增。", helpMcpTitle: "MCP 外掛", helpMcp: "左下「外掛程式」接入 MCP server。連上的工具會顯示在畫面上,對話時 Agent 可以使用。", helpSkillsTitle: "技能", helpSkills: "+ → 教它一項任務,示範一次就會整理成技能。示範結束後可以匯出 JSON,或把別人的技能檔匯入,換一個機器人也適用。", helpAttachTitle: "附件", helpAttach: "+ → 附加檔案。圖片這則訊息就會給模型看,不會存進對話紀錄。若機器人電腦要打開原檔,會暫放 inbox/,兩小時後自動刪,避免把磁碟塞滿。", helpShortcutsTitle: "快捷鍵", helpShortcuts: "Enter 送出,Shift+Enter 換行。正在回覆時送出鈕會變成停止。通話中空白鍵插話,Esc 掛斷。", helpVoiceTitle: "語音通話", helpVoice: "1:1 對話標題列的電話可以打給機器人。用說話下指令,它會去操作自己的電腦;能不能做會立刻用聲音回你,中途可以插嘴改指令。", call: "通話", hangUp: "掛斷", interrupt: "插話", listening: "正在聽你說…", speaking: "正在說話…", callConnecting: "連線中…", workingOnComputer: "正在電腦上做…", callPrompt: "直接說要做什麼。沉默一下就會送出。", callShortcuts: "空白鍵插話 · Esc 掛斷", callFailed: "通話中斷了。", micDenied: "需要麥克風權限才能通話。", micFailed: "麥克風打不開。", callAudioFailed: "通話聲音出問題了,請掛斷後重打。", takeOverToContinue: "需要你接手畫面。", setUpVoiceToCall: "先設定語音才能通話", voiceEnabled: "啟用語音通話", voiceEnabledHint: "預設關閉。開啟並儲存後,才能使用通話按鈕。", voiceDisabledHint: "語音通話尚未啟用,請到「設定 → 語音」開啟。", voiceSettings: "語音", voiceSettingsHint: "語音跟文字模型分開。xAI 若已有聊天金鑰,通常不用再填一次。按分鐘計費。", voiceProvider: "語音供應商", voiceModel: "語音模型", voiceName: "聲音", providerOpenai: "OpenAI", providerXaiVoiceHint: "Grok Voice。即時通話,可插嘴,並把電腦工作交給文字模型去做。", providerOpenaiVoiceHint: "OpenAI Realtime。同一套通話介面,之後可切換。", voiceReusesTextKey: "目前會重用文字模型已存的 xAI 金鑰。", feedbackDescription: "寫下問題、想法或想要的功能。這是本機工作區,內容會複製到剪貼簿,方便你貼到 issue 或訊息裡。", feedbackPlaceholder: "例如:群組對話希望可以指定誰先發言…", copyContent: "複製內容", loginTitle: "登入 LazyBoy", loginDescription: "輸入伺服器設定的共享存取 token。", accessToken: "存取 token", verifying: "驗證中…", login: "登入", agentComputer: "Agent 電腦", url: "URL", stdio: "stdio", http: "HTTP", sse: "SSE", argumentsPlaceholder: "-y @modelcontextprotocol/server-github", environmentVariablesPlaceholder: "GITHUB_TOKEN=…", urlPlaceholder: "https://mcp.example.com/mcp", headersPlaceholder: "Authorization=Bearer …", back: "返回", accounts: "帳號", accountsHelp: "存在這台機器人自己的保險箱。密碼只在這裡填,不會進聊天、也不會給模型看。排程碰到登入牆時會自動填表。", accountSite: "站名", accountSitePlaceholder: "例如:Gmail", accountHost: "網址或網域", accountHostPlaceholder: "mail.google.com", accountUsername: "帳號", accountPassword: "密碼", accountPasswordKeep: "留空表示不改密碼", accountNotes: "備註", accountNotesPlaceholder: "選填,例如:公司信箱", addAccount: "新增帳號", noAccounts: "還沒有已存帳號。排程若要自動登入,先在這裡加一筆。", loginNeedsYou: "需要你在鍵盤上登入", loginOpenScreen: "打開它的畫面", loginWhy: "登入之後:{why}", scheduleChip: "已排程", scheduleRunChip: "排程執行", schedules: "排程", schedule: "排程", schedCreate: "新增排程", schedEmpty: "還沒有排程。對話裡說「以後每天 9 點…」或按+。", schedPaused: "已暫停", schedRunNow: "立刻跑", schedRunning: "執行中…", schedActive: "啟用", schedNamePlaceholder: "例如:早報摘要", schedInstruction: "每次要做什麼", schedInstructionPlaceholder: "例如:打開信箱,把未讀摘要寫回對話。", schedWhen: "何時執行", schedEveryHour: "每小時", schedEveryDay: "每天", schedWeekdays: "工作日", schedEveryWeek: "每週一", schedEveryMonth: "每月", schedInterval: "間隔", schedAdvanced: "進階 cron", schedMinutes: "分鐘", schedHours: "小時", schedDays: "天", computerLoginHint: "在這台機器人自己的瀏覽器登入。Session 留在它的電腦,不要把密碼打在聊天裡。", language: "介面語言", languageZh: "繁體中文", languageEn: "English", languageHint: "介面語言。對話內容與 Agent 回覆不會自動翻譯。", helpLanguageTitle: "語言", helpLanguage: "在左下角工作區選單的設定裡,可切換繁體中文與英文。", clipboardSynced: "剪貼簿已同步", clipboardSyncBlocked: "瀏覽器未允許同步,請按複製按鈕", clipboardPasted: "已貼上文字", clipboardPasteFailed: "貼上失敗,請確認已接管電腦後重試", clipboardCopiedSelection: "已複製選取文字", clipboardCopyFailed: "複製未同步;請按複製按鈕,或在遠端使用 Ctrl+Shift+C", slashMode: "執行模式", slashFileSkill: "檔案技能", slashList: "指令與技能", schedIntervalHint: "固定經過時間;一天為 24 小時,不因月底或日光節約時間重置。", schedInvalidInterval: "間隔必須為 1–365 的整數", schedHumanDaily: "每天 {time}", schedHumanWeekdays: "工作日 {time}", schedHumanWeekly: "每週一 {time}", schedHumanMonthly: "每月 {time}", schedHumanInterval: "每 {n} {unit}", stepThinking: "思考中", stepWatchingScreen: "看畫面", stepUsingSkill: "讀取技能 {name}", stepFillingLogin: "填入已存帳號", stepListingAccounts: "列出已存帳號", stepScheduling: "排程 {name}", stepListingSchedules: "列出排程", stepCancelingSchedule: "取消排程", stepRecheckingScreen: "重新確認畫面", schedEveryMinute: "每分鐘", schedHumanEveryMinutes: "每 {n} 分鐘", schedHumanEveryHours: "每 {n} 小時", schedHumanMonthlyDay: "每月 1 日 {time}", schedHumanElapsed: "每隔 {n} 分鐘(固定間隔)", schedCalendar: "日曆排程:{expr}", teachInProgress: "示範進行中:先按「完成示範」或「取消」,再送訊息。", aiTimeout: "AI 回應逾時(120 秒)", } as const;