[Init] Initial commit - NetMesh terminal manager
Some checks failed
build-packages / resolve bundled mosh-client (push) Has been cancelled
build-packages / resolve bundled et-client (push) Has been cancelled
build-packages / build-macos (push) Has been cancelled
build-packages / build-windows (push) Has been cancelled
build-packages / build-linux-x64 (push) Has been cancelled
build-packages / build-linux-arm64 (push) Has been cancelled
build-packages / release (push) Has been cancelled
build-packages / update Nix release metadata (push) Has been cancelled
build-packages / bump homebrew tap (push) Has been cancelled
test / lint-and-test (push) Has been cancelled
AI automation / Route event (push) Has been cancelled
AI automation / Hand reopened issue to maintainers (push) Has been cancelled
AI automation / Clean source issue state (push) Has been cancelled
AI automation / Reconcile handoffs (push) Has been cancelled
AI automation / Classify issue (push) Has been cancelled
AI automation / Claude Code smoke (push) Has been cancelled
AI automation / Review issue follow-up (push) Has been cancelled
AI automation / Publish issue follow-up (push) Has been cancelled
AI automation / Implement with Claude Code (push) Has been cancelled
AI automation / Publish implement PR (push) Has been cancelled
AI automation / Continue queued issue comments (push) Has been cancelled
AI automation / Codex review loop (push) Has been cancelled
AI automation / Publish Codex fix (push) Has been cancelled
AI automation / Clear Codex dispatch marker (push) Has been cancelled
AI automation / Own PR re-request Codex (push) Has been cancelled
AI automation / External PR re-request Codex (push) Has been cancelled
AI automation / Poll Codex reaction / retry (push) Has been cancelled
build-et-binaries / build-linux-x64 (push) Has been cancelled
build-et-binaries / build-linux-arm64 (push) Has been cancelled
build-et-binaries / build-macos-universal (push) Has been cancelled
build-et-binaries / build-windows-x64 (push) Has been cancelled
build-et-binaries / release (push) Has been cancelled

This commit is contained in:
2026-09-13 18:24:01 +08:00
commit 3c72efcb7f
3255 changed files with 907009 additions and 0 deletions

View File

@@ -0,0 +1,671 @@
import type { Messages } from '../types';
export const zhTWAiMessages: Messages = {
// AI Settings
'ai.agentSettings': 'Agent 設定',
'ai.chat.preparing': '準備中…',
'ai.chat.compactingContext': '正在壓縮較早的上下文…',
'ai.chat.compactingStep': '正在為下一步整理上下文…',
'ai.chat.compactionRetry': '請求過大,正在壓縮上下文並重試…',
'ai.chat.compactionBanner': '上下文已壓縮:{before}K → {after}K tokens',
'ai.chat.contextUsage': '上下文使用:{used} / {max} tokens',
'ai.chat.activity.title': 'Agent 活動',
'ai.chat.activity.plan': '計畫',
'ai.chat.activity.webSearch': '網頁搜尋',
'ai.chat.activity.fileChanges': '檔案變更',
'ai.chat.activity.status.running': '進行中',
'ai.chat.activity.status.completed': '已完成',
'ai.chat.activity.status.failed': '失敗',
'ai.chat.activity.file.add': '新增',
'ai.chat.activity.file.update': '修改',
'ai.chat.activity.file.delete': '刪除',
'ai.chat.activity.usage': 'Token',
'ai.chat.activity.usage.input': '輸入',
'ai.chat.activity.usage.output': '輸出',
'ai.chat.activity.usage.cached': '快取',
'ai.chat.activity.usage.reasoning': '推理',
'ai.title': 'AI',
'ai.description': '設定 AI 供應商、Agent 和安全設定',
'ai.providers': '供應商',
'ai.agents': 'Agent',
'ai.providers.empty': '尚未設定供應商。新增一個供應商以開始使用。',
'ai.providers.add': '新增供應商',
'ai.providers.active': '使用中',
'ai.providers.apiKeyConfigured': 'API Key 已設定',
'ai.providers.noApiKey': '未設定 API Key',
'ai.providers.configure': '設定',
'ai.providers.remove': '移除',
'ai.providers.name': '顯示名稱',
'ai.providers.name.placeholder': '例如 我的供應商',
'ai.providers.style': '協定風格',
'ai.providers.style.anthropic': 'Anthropic 相容',
'ai.providers.style.openai': 'OpenAI 相容',
'ai.providers.style.google': 'Google 相容',
'ai.providers.style.inherited': '預設',
'ai.providers.style.help': '決定請求使用哪種 API 格式。當第三方端點的協定與其供應商型別不一致時,可手動覆蓋。',
'ai.providers.openaiApi': 'OpenAI 請求格式',
'ai.providers.openaiApi.chat': 'Chat Completions',
'ai.providers.openaiApi.responses': 'Responses',
'ai.providers.openaiApi.help': '預設 Chat Completions相容大多數 OpenAI 相容介面。部分中繼站在 Responses/v1/responses上快取命中率較高。',
'ai.providers.icon.change': '修改圖示',
'ai.providers.icon.upload': '上傳圖片',
'ai.providers.icon.reset': '恢復預設',
'ai.providers.icon.close': '收起',
'ai.providers.icon.uploadedNote': '自訂圖示64×64 WebP',
'ai.providers.icon.errorType': '請選擇圖片檔案。',
'ai.providers.apiKey': 'API Key',
'ai.providers.apiKey.placeholder': '輸入 API Key',
'ai.providers.apiKey.decrypting': '解密中...',
'ai.providers.baseUrl': 'Base URL',
'ai.providers.baseUrl.anthropicHelp': 'Anthropic 相容:可填不帶或帶 /v1 的主機(例如 https://gateway.example 或 https://gateway.example/v1。偵測與聊天都會請求 /v1/models、/v1/messages。',
'ai.providers.baseUrl.ollamaHelp': '本機 Ollamahttp://localhost:11434/v1不需 API Key。Ollama Cloudhttps://ollama.com/v1並填寫 Cloud API Key。',
'ai.providers.skipTLSVerify': '跳過 TLS 憑證驗證(用於自我簽署憑證)',
'ai.providers.defaultModel': '預設模型',
'ai.providers.defaultModel.placeholder': '例如 gpt-4o, claude-sonnet-4-20250514',
'ai.providers.contextWindow': '上下文視窗',
'ai.providers.contextWindow.placeholder': '例如 128000',
'ai.providers.contextWindow.help': '留空時優先使用模型列表傳回的值如果沒有NetMesh 會使用安全預設值。',
'ai.providers.contextWindow.error': '請輸入正整數,或留空。',
'ai.providers.refreshModels': '重新整理模型列表',
'ai.providers.test': '檢測',
'ai.providers.test.testing': '檢測中…',
'ai.providers.test.ok': '連線正常({latency} ms',
'ai.providers.test.warn': '已連通,但回應不完整({latency} ms',
'ai.providers.test.warnSlow': '已連通,但較慢({latency} ms',
'ai.providers.test.error': '檢測失敗({detail}',
'ai.providers.test.missingBaseUrl': '請先填寫 Base URL',
'ai.providers.test.missingApiKey': '請先填寫 API Key',
'ai.providers.test.unavailable': '目前環境無法進行連線檢測',
'ai.providers.searchModel': '搜尋或輸入模型 ID...',
'ai.providers.filterModels': '篩選模型...',
'ai.providers.loadingModels': '載入模型中...',
'ai.providers.noMatchingModels': '沒有相符的模型',
'ai.providers.clickToLoadModels': '點選載入模型',
'ai.providers.showingModels': '顯示前 100 個,共 {count} 個模型。輸入以篩選。',
'ai.providers.advancedParams': '高階引數',
'ai.providers.advancedParams.hint': '留空則使用供應商預設值。',
'ai.providers.advancedParams.maxTokens.placeholder': '例如 4096',
'ai.providers.advancedParams.default': '供應商預設',
// AI Codex
'ai.codex': 'Codex',
'ai.codex.title': 'Codex CLI',
'ai.codex.description': '介接 OpenAI Codex。可以在這裡登入 ChatGPT也可以在設定裡啟用相容 OpenAI 的 API Key 和自訂介面位址。',
'ai.codex.appServer.title': '使用 Codex App Server',
'ai.codex.appServer.experimental': '實驗性',
'ai.codex.appServer.description': '使用持久化 Codex 協定,提供原生核准、沙箱控制、動態模型和對話中提問。預設仍使用 SDK。',
'ai.codex.appServer.checking': '正在檢查 App Server 支援…',
'ai.codex.appServer.available': '目前 Codex CLI 支援 App Server。',
'ai.codex.appServer.modelCatalogWarning': 'Codex 動態模型目錄暫時無法使用,目前將使用內建模型清單。',
'ai.codex.appServer.approval.allowSession': '本工作階段允許',
'ai.codex.appServer.userInput.title': 'Codex 需要你的輸入',
'ai.codex.appServer.userInput.description': '回答以下問題以繼續目前任務。',
'ai.codex.appServer.userInput.other': '輸入其他答案',
'ai.codex.appServer.userInput.autoResolve': '若未及時回答Codex 將自動繼續。',
'ai.codex.appServer.userInput.skip': '略過',
'ai.codex.appServer.userInput.submit': '繼續',
'ai.codex.steer.addInstruction': '補充指令',
'ai.codex.steer.sending': '正在補充指令…',
'ai.codex.steer.placeholder': '在 Codex 工作時補充指令…',
'ai.codex.steer.notSteerableReview': '目前 Codex 審查任務無法接收補充指令,草稿已保留。',
'ai.codex.steer.notSteerableCompact': '目前 Codex 壓縮任務無法接收補充指令,草稿已保留。',
'ai.codex.steer.busy': '已有一則補充指令正在傳送給 Codex。',
'ai.codex.steer.inactive': '目前 Codex 任務已經結束,草稿已保留。',
'ai.codex.steer.unsupported': '執行中補充指令僅支援 Codex App Server。',
'ai.codex.steer.failed': 'Codex 無法接收補充指令,草稿已保留。',
'ai.codex.detecting': '偵測中...',
'ai.codex.notFound': '未找到',
'ai.codex.awaitingLogin': '等待登入',
'ai.codex.connectedChatGPT': '已透過 ChatGPT 連線',
'ai.codex.connectedApiKey': '已透過 API Key 連線',
'ai.codex.connectedCustomConfig': '使用 ~/.codex/config.toml 自訂 provider',
'ai.codex.customConfigIncomplete': '偵測到自訂設定(缺少環境變數)',
'ai.codex.customConfigHint': '使用 ~/.codex/config.toml 中設定的自訂 provider "{provider}",無需 ChatGPT 登入。',
'ai.codex.customConfigMissingEnvKey': '警告:環境變數 {envKey} 未在目前 shell 中設定。請 export 它(或從包含該變數的 shell 啟動 NetMesh否則 Codex 無法完成認證。',
'ai.codex.notConnected': '未連線',
'ai.codex.statusUnknown': '狀態未知',
'ai.codex.path': '路徑:',
'ai.codex.notFoundHint': '在 PATH 中未找到 codex。請安裝或在下方指定執行檔路徑。',
'ai.codex.customPathPlaceholder': '例如 /usr/local/bin/codex',
'ai.codex.check': '檢查',
'ai.codex.resetPath': '重設',
'ai.codex.openLogin': '開啟登入',
'ai.codex.logout': '登出',
'ai.codex.connectChatGPT': '連線 ChatGPT',
'ai.codex.refreshStatus': '重新整理狀態',
// AI Claude Code
'ai.claude.title': 'Claude Code',
'ai.claude.description': 'Anthropic 的智慧程式設計助手。需要系統中已安裝 Claude Code CLI。',
'ai.claude.detecting': '偵測中...',
'ai.claude.detected': '已偵測到',
'ai.claude.notFound': '未找到',
'ai.claude.path': '路徑:',
'ai.claude.notFoundHint': '在 PATH 中未找到 claude。請安裝或在下方指定執行檔路徑。',
'ai.claude.customPathPlaceholder': '例如 /usr/local/bin/claude',
'ai.claude.configSection': '認證與設定(可選)',
'ai.claude.configDir': '設定目錄',
'ai.claude.configDir.placeholder': '~/.claude留空用預設',
'ai.claude.configDir.hint': '設定 CLAUDE_CONFIG_DIR —— 指向你已執行 `claude` 登入的目錄(含 settings.json 和憑證)。',
'ai.claude.settings': 'Settings 檔案',
'ai.claude.settings.placeholder': '~/team-settings.json路徑或內聯 {"model":"..."}',
'ai.claude.settings.hint': '可選。settings.json 路徑或內聯 JSON作為 SDK 的 `settings` 傳入。與上面的「設定目錄」互補且獨立(疊加合併,不是替換)。',
'ai.claude.envVars': '環境變數',
'ai.claude.envVars.placeholder': 'ANTHROPIC_BASE_URL=https://...\nANTHROPIC_MODEL=...',
'ai.claude.envVars.hint': '每行一個 KEY=VALUE傳給 Claude agent。明文存在本機——API key憑證建議用上面的「設定目錄」claude 登入),不要放這裡。',
'ai.claude.check': '檢查',
'ai.claude.resetPath': '重設',
// AI GitHub Copilot CLI
'ai.copilot.title': 'GitHub Copilot CLI',
'ai.copilot.description': '介接 GitHub Copilot CLI。偵測到後即可作為外部程式設計 Agent 使用。',
'ai.copilot.detecting': '偵測中...',
'ai.copilot.detected': '已偵測到',
'ai.copilot.notFound': '未找到',
'ai.copilot.path': '路徑:',
'ai.copilot.notFoundHint': '在 PATH 中未找到 copilot。請安裝或在下方指定執行檔路徑。',
'ai.copilot.customPathPlaceholder': '例如 /usr/local/bin/copilot',
'ai.copilot.check': '檢查',
'ai.copilot.resetPath': '重設',
// AI Cursor SDK
'ai.cursor.title': 'Cursor',
'ai.cursor.description': '使用 Cursor SDK 或本機 Agent CLI 登入。',
'ai.cursor.detecting': '偵測中...',
'ai.cursor.detected': '可用',
'ai.cursor.notFound': '不可用',
'ai.cursor.path': '執行環境:',
'ai.cursor.notFoundHint': '填寫 API Key或切換到 CLI 登入模式。',
'ai.cursor.notInstalledHint': '未偵測到 Cursor SDK / Agent CLI。',
'ai.cursor.installStatus': 'Cursor 執行環境',
'ai.cursor.installed': '已偵測到',
'ai.cursor.notInstalled': '未偵測到',
'ai.cursor.modeCli': 'CLI 登入',
'ai.cursor.modeApiKey': 'API Key',
'ai.cursor.modeCliHint': '使用本機 `cursor-agent login` 工作階段與訂閱 Auto 額度。已儲存的 API Key 會保留,但此模式不會使用。',
'ai.cursor.modeApiKeyHint': '走 Cursor 計量 API。此模式下不會使用 CLI 登入。',
'ai.cursor.cliLoginStatus': 'CLI 登入',
'ai.cursor.cliLoginOk': '已登入',
'ai.cursor.cliLoginAs': '已登入為 {{email}}',
'ai.cursor.cliLoginMissing': '未登入',
'ai.cursor.cliLoginHint': '在終端機執行 `cursor-agent login`,然後點「檢查」。',
'ai.cursor.apiKeyStatus': 'API Key',
'ai.cursor.apiKeyConfigured': '已填寫',
'ai.cursor.apiKeyMissing': '未填寫',
'ai.cursor.apiKeyFromEnv': '來自環境變數',
'ai.cursor.apiKey': 'API Key',
'ai.cursor.apiKeyPlaceholder': '輸入 Cursor API Key',
'ai.cursor.apiKeyPlaceholder.env': '已使用 CURSOR_API_KEY填寫後會覆蓋',
'ai.cursor.apiKeyEnvHint': '已偵測到本機 CURSOR_API_KEY。留空即可繼續使用填寫儲存後會覆蓋它。',
'ai.cursor.apiKeyOverrideHint': '目前優先使用這裡儲存的 Key清空儲存後會回到 CURSOR_API_KEY。',
'ai.cursor.saveApiKey': '儲存',
'ai.cursor.saved': '已儲存',
'ai.cursor.showApiKey': '顯示 API Key',
'ai.cursor.hideApiKey': '隱藏 API Key',
'ai.cursor.customPathPlaceholder': '例如 /usr/local/bin/cursor',
'ai.cursor.check': '檢查',
// AI CodeBuddy Code
'ai.codebuddy.title': 'CodeBuddy Code',
'ai.codebuddy.description': '透過官方 Agent SDK`@tencent-ai/agent-sdk`)介接 CodeBuddy Code。偵測到後即可作為外部程式設計 Agent 使用。',
'ai.codebuddy.detecting': '偵測中...',
'ai.codebuddy.detected': '已偵測到',
'ai.codebuddy.notFound': '未找到',
'ai.codebuddy.path': '路徑:',
'ai.codebuddy.notFoundHint': '在 PATH 中未找到 codebuddy。請安裝或在下方指定執行檔路徑。',
'ai.codebuddy.customPathPlaceholder': '例如 /usr/local/bin/codebuddy',
'ai.codebuddy.check': '檢查',
'ai.codebuddy.resetPath': '重設',
'ai.codebuddy.configSection': '認證與設定(可選)',
'ai.codebuddy.internetEnv': '網路環境',
'ai.codebuddy.internetEnv.default': '預設(海外)',
'ai.codebuddy.internetEnv.internal': 'Internal',
'ai.codebuddy.internetEnv.ioa': 'IOA',
'ai.codebuddy.internetEnv.hint': '設定 CODEBUDDY_INTERNET_ENVIRONMENT —— 受限網路環境請選擇 Internal 或 IOA。',
'ai.codebuddy.envVars': '環境變數',
'ai.codebuddy.envVars.placeholder': 'CODEBUDDY_API_KEY=...\nCODEBUDDY_AUTH_TOKEN=...\nOTHER_VAR=...',
'ai.codebuddy.envVars.hint': '每行一個 KEY=VALUE傳給 CodeBuddy agent。可在此設定 CODEBUDDY_API_KEY 或 CODEBUDDY_AUTH_TOKEN 完成認證。明文存在本機。',
'ai.codebuddy.advancedSection': '進階選項SDK 0.3.230',
'ai.codebuddy.effort': '推理力度',
'ai.codebuddy.effort.default': '預設',
'ai.codebuddy.effort.low': 'Low',
'ai.codebuddy.effort.medium': 'Medium',
'ai.codebuddy.effort.high': 'High',
'ai.codebuddy.effort.xhigh': 'XHigh',
'ai.codebuddy.effort.hint': '控制模型推理深度。簡單命令用 Low 節省 token複雜診斷用 High/XHigh。',
'ai.codebuddy.maxTurns': '最大輪次',
'ai.codebuddy.maxTurns.hint': '限制每次請求的最大對話輪次,防止 AI 失控循環。留空使用預設值。',
'ai.codebuddy.maxBudget': '預算上限 (USD)',
'ai.codebuddy.maxBudget.hint': '每次請求的最大花費(美元)。超出後自動停止。留空不限制。',
'ai.codebuddy.sandbox': '沙箱模式',
'ai.codebuddy.sandbox.hint': '在沙箱中執行工具呼叫,限制檔案系統和網路存取。',
'ai.codebuddy.fileCheckpointing': '檔案檢查點',
'ai.codebuddy.fileCheckpointing.hint': '啟用檔案操作檢查點AI 修改檔案後可回滾。',
'ai.codebuddy.elicitation.title': 'CodeBuddy 需要你的輸入',
'ai.codebuddy.elicitation.description': '請確認或填寫請求內容以繼續目前輪次。',
'ai.codebuddy.elicitation.select': '請選擇',
'ai.codebuddy.elicitation.yes': '是',
'ai.codebuddy.elicitation.no': '否',
'ai.codebuddy.elicitation.decline': '拒絕',
'ai.codebuddy.elicitation.accept': '繼續',
'ai.codebuddy.elicitation.validation.required': '{field} 為必填項。',
'ai.codebuddy.elicitation.validation.invalidType': '{field} 的值無效。',
'ai.codebuddy.elicitation.validation.integer': '{field} 必須是整數。',
'ai.codebuddy.elicitation.validation.notInteger': '{field} 必須是整數。',
'ai.codebuddy.elicitation.validation.minimum': '{field} 不能小於 {limit}。',
'ai.codebuddy.elicitation.validation.maximum': '{field} 不能大於 {limit}。',
'ai.codebuddy.elicitation.validation.minLength': '{field} 至少需要 {limit} 個字元。',
'ai.codebuddy.elicitation.validation.maxLength': '{field} 最多允許 {limit} 個字元。',
'ai.codebuddy.elicitation.validation.minItems': '{field} 至少選擇 {limit} 項。',
'ai.codebuddy.elicitation.validation.maxItems': '{field} 最多選擇 {limit} 項。',
'ai.codebuddy.elicitation.validation.format': '{field} 必須符合 {format} 格式。',
'ai.codebuddy.elicitation.validation.option': '請為 {field} 選擇有效選項。',
// AI OpenCode
'ai.opencode.title': 'OpenCode',
'ai.opencode.description': '透過官方 SDK 介接 OpenCode。先在 OpenCode 裡設定 provider 和金鑰,偵測到後即可作為外部程式設計 Agent 使用。',
'ai.opencode.detecting': '偵測中...',
'ai.opencode.detected': '已偵測到',
'ai.opencode.notFound': '未找到',
'ai.opencode.path': '路徑:',
'ai.opencode.notFoundHint': '在 PATH 中未找到 opencode。請安裝或在下方指定執行檔路徑。',
'ai.opencode.customPathPlaceholder': '例如 /usr/local/bin/opencode',
'ai.opencode.check': '檢查',
'ai.opencode.resetPath': '重設',
// AI Grok Build應用內託管 Agent與 External MCP「新增到 Grok」不同
'ai.grok.title': 'Grok Build',
'ai.grok.description': 'xAI 的 Grok Build 程式設計 Agent CLI。安裝 Grok CLI使用 `grok login` 登入或設定 XAI_API_KEY 後,即可作為外部 Agent 選擇。',
'ai.grok.detecting': '偵測中...',
'ai.grok.detected': '已偵測到',
'ai.grok.notFound': '未找到',
'ai.grok.path': '路徑:',
'ai.grok.notFoundHint': '在 PATH 中未找到 grok。請安裝 Grok Build CLI 或在下方指定執行檔路徑。',
'ai.grok.customPathPlaceholder': '例如 /usr/local/bin/grok',
'ai.grok.check': '檢查',
'ai.grok.resetPath': '重設',
'ai.grok.runtime.acp.title': '使用 Grok ACPagent stdio',
'ai.grok.runtime.acp.default': '預設',
'ai.grok.runtime.acp.description':
'透過 Agent Client Protocolgrok agent stdio接入 Grok。在 session/new 注入 NetMesh MCP。關閉後使用原始 headless streaming-json CLI 路徑。',
'ai.grok.runtime.streamingJson.hint':
'目前為 headless streaming-jsongrok -p --output-format streaming-json。MCP 透過專案 .grok/config.toml 注入。',
// AI Default Agent
'ai.defaultAgent': '預設 Agent',
'ai.defaultAgent.description': '建立新 AI 工作階段時使用的 Agent',
'ai.defaultAgent.catty': 'Catty內建',
'ai.toolAccess.title': '工具介接',
'ai.toolAccess.mode': 'NetMesh 介接模式',
'ai.toolAccess.description': '選擇外部 Agent 存取 NetMesh 工作階段的方式。MCP 會公開內建伺服器Skills + CLI 會引導 Agent 讀取本機 Skill 並呼叫 NetMesh CLI。',
'ai.toolAccess.mode.mcp': 'MCP',
'ai.toolAccess.mode.skills': 'Skills + CLI',
'ai.toolAccess.mcpPrompt.title': '餵給 AI 的接入提示詞',
'ai.toolAccess.mcpPrompt.description': '把這段提示詞貼到你的 AI 用戶端Codex、Claude Code 等),它就會幫你完成 NetMesh MCP 的註冊。',
'ai.toolAccess.mcpPrompt.enableHint': '先在下方開啟對外 MCP 開關,提示詞中才會包含 launcher 路徑。',
'ai.toolAccess.skills.file': 'Skill 檔案',
'ai.toolAccess.skills.description': 'Skills + CLI 模式下Agent 會自動被指向這個本機 Skill 檔案。NetMesh CLI 啟動路徑會在每個工作階段提供給 Agent。',
'ai.toolAccess.skills.unavailable': '暫時無法取得 Skill 檔案路徑',
'ai.externalMcp.title': '對外 MCP',
'ai.externalMcp.description': '將 NetMesh 作為 MCP 伺服器暴露給 Codex、Claude Code、Cursor、Grok 等外部用戶端。工具面與應用內 Agent 相同。用戶端連線期間請保持 NetMesh 執行。',
'ai.externalMcp.sessionsExposed': '作用域內工作階段:{count}',
'ai.externalMcp.mode': '可用模式',
'ai.externalMcp.mode.temporary': '暫時',
'ai.externalMcp.mode.persistent': '常開',
'ai.externalMcp.mode.description': '暫時模式會在閒置逾時後自動關閉;常開模式會在 NetMesh 啟動時還原對外 MCP。',
'ai.externalMcp.idleTimeout': '閒置逾時',
'ai.externalMcp.idleTimeout.description': '暫時模式下,若超過該分鐘數沒有 MCP 操作,將自動關閉對外 MCP。',
'ai.externalMcp.idleTimeout.minutes': '分鐘',
'ai.externalMcp.focusOnHostOpen': 'host_open 時啟用視窗',
'ai.externalMcp.focusOnHostOpen.description': '當 MCP 用戶端開啟主機連線時,將主視窗切換到前景。關閉後可不受打擾地繼續目前工作。',
'ai.externalMcp.silentSessions': 'AI 工作階段靜默執行',
'ai.externalMcp.silentSessions.description': 'AI 開啟的工作階段不會出現在分頁列,重新啟動後也不會還原。可隨時在系統匣面板中查看。',
'ai.externalMcp.sessionIdleTimeout': '已開啟工作階段閒置逾時',
'ai.externalMcp.sessionIdleTimeout.description': 'AI 開啟的工作階段若超過該分鐘數沒有終端或檔案操作,將自動關閉。',
'ai.externalMcp.usage.title': '使用說明',
'ai.externalMcp.usage.keepRunning': '1. 開啟對外 MCP 開關,並保持 NetMesh 執行。',
'ai.externalMcp.usage.localhost': '2. 用戶端透過本機 launcher 連線(僅 127.0.0.1)。關閉開關後會刪除 discovery。',
'ai.externalMcp.usage.permissions': '3. 寫入操作遵循「設定 → AI → 安全」以及命令黑名單。',
'ai.externalMcp.usage.capabilities': '4. 完整 catalog 工具可用終端機、SFTP、Vault、連接埠轉發。密碼 / 私鑰不會回傳。',
'ai.externalMcp.help.ariaLabel': '對外 MCP 使用說明',
'ai.externalMcp.security': '安全',
'ai.externalMcp.security.description': '僅監聽 127.0.0.1,使用輪替 token寫入操作重用 AI 權限模式,關閉時刪除 discovery。',
'ai.externalMcp.permissionMode': '目前權限模式:{mode}',
'ai.externalMcp.permissionMode.label': '寫入權限模式',
'ai.externalMcp.permissionMode.hint': '與「設定 → AI → 安全」為同一項。自動NetMesh 寫入操作不再彈本應用核准確認每次詢問。外部用戶端Codex / Claude / Grok仍可能有自己的工具核准介面。',
'ai.externalMcp.permissionMode.unknown': '未知',
'ai.externalMcp.discovery': 'Discovery',
'ai.externalMcp.launcher': 'Launcher',
'ai.externalMcp.unavailable': '無法使用',
'ai.externalMcp.bridgeUnavailable': '對外 MCP 橋接無法使用',
'ai.externalMcp.copy': '複製',
'ai.externalMcp.copied': '已複製',
'ai.externalMcp.copyFailed': '複製失敗,請手動複製。',
'ai.externalMcp.refresh': '重新整理',
'ai.externalMcp.clientConfiguration': '用戶端設定',
'ai.externalMcp.clientConfiguration.description': '選擇用戶端一鍵安裝,或複製 CLI / 設定片段。',
'ai.externalMcp.client.codex': 'Codex',
'ai.externalMcp.client.claude': 'Claude Code',
'ai.externalMcp.client.grok': 'Grok',
'ai.externalMcp.client.cursor': 'Cursor',
'ai.externalMcp.cliCommand': 'CLI 命令',
'ai.externalMcp.configSnippet': '設定片段',
'ai.externalMcp.addToCodex': '新增到 Codex',
'ai.externalMcp.addToClaude': '新增到 Claude Code',
'ai.externalMcp.addToGrok': '新增到 Grok',
'ai.externalMcp.codexAdded': '已新增 Codex MCP 項目。請重新啟動 Codex 或開啟新工作階段。',
'ai.externalMcp.claudeAdded': '已新增 Claude Code MCP 項目。請重新啟動 Claude Code 或開啟新工作階段。',
'ai.externalMcp.grokAdded': '已新增 Grok MCP 項目。請重新啟動 Grok 或開啟新工作階段。',
'ai.externalMcp.installCodex': '請先另外安裝 Codex然後按重新整理。',
'ai.externalMcp.installClaude': '請先另外安裝 Claude Code然後按重新整理。',
'ai.externalMcp.installGrok': '請先另外安裝 Grok CLI然後按重新整理。',
'ai.externalMcp.conflict.description': '已存在指向其他位置的 NetMesh-external 項目,請手動刪除或修改。',
'ai.externalMcp.enableForLauncher': '請先啟用對外 MCP以取得可用的 launcher 路徑。',
'ai.externalMcp.cursor.title': 'Cursor / 其他用戶端',
'ai.externalMcp.cursor.description': '合併到 MCP 設定檔(例如 ~/.cursor/mcp.json。若已有其他伺服器請勿整檔覆蓋。',
'ai.externalMcp.status.unavailable': '無法使用',
'ai.externalMcp.status.disabled': '已關閉',
'ai.externalMcp.status.running': '執行中',
'ai.externalMcp.status.starting': '啟動中',
'ai.externalMcp.status.error': '錯誤',
'ai.externalMcp.status.configured': '已設定',
'ai.externalMcp.status.notConfigured': '未設定',
'ai.externalMcp.status.checking': '檢查中',
'ai.externalMcp.status.codexNotFound': '找不到 Codex',
'ai.externalMcp.status.claudeNotFound': '找不到 Claude Code',
'ai.externalMcp.status.grokNotFound': '找不到 Grok',
'ai.externalMcp.status.conflict': '衝突',
'ai.userSkills.title': '使用者 Skills',
'ai.userSkills.description': '開啟 NetMesh 的 Skills 資料夾以新增你自己的技能目錄。NetMesh 會自動掃描這些 skills預設只注入輕量索引只有在請求明顯命中某個 skill 時才展開正文。',
'ai.userSkills.openFolder': '開啟 Skills 資料夾',
'ai.userSkills.reload': '重新載入 Skills',
'ai.userSkills.location': '位置',
'ai.userSkills.loading': '正在掃描使用者 skills...',
'ai.userSkills.summary': '已就緒 {ready} 個,警告 {warnings} 個',
'ai.userSkills.empty': '暫未發現使用者 skills。開啟資料夾後可新增包含 SKILL.md 的技能目錄。',
'ai.userSkills.unavailable': '目前環境不支援使用者 skills。',
'ai.userSkills.status.ready': '正常',
'ai.userSkills.status.warning': '警告',
// AI Quick Messages
'ai.quickMessages.title': '快捷訊息',
'ai.quickMessages.description': '建立常用提示詞,在 AI 聊天框輸入 / 或點選快捷按鈕即可插入到輸入框。與使用者 Skills 不同,快捷訊息會直接填入訊息內容。',
'ai.quickMessages.add': '新增快捷訊息',
'ai.quickMessages.createTitle': '新增快捷訊息',
'ai.quickMessages.editTitle': '編輯快捷訊息',
'ai.quickMessages.name': '名稱',
'ai.quickMessages.name.placeholder': '例如:檢查磁碟空間',
'ai.quickMessages.slug': '指令',
'ai.quickMessages.slug.placeholder': 'disk-check',
'ai.quickMessages.descriptionField': '說明(可選)',
'ai.quickMessages.descriptionField.placeholder': '簡短描述這條快捷訊息的用途',
'ai.quickMessages.content': '訊息內容',
'ai.quickMessages.content.placeholder': '輸入選擇後要插入的完整提示詞...',
'ai.quickMessages.empty': '還沒有快捷訊息。新增幾條常用提示,聊天時就能一鍵插入。',
'ai.quickMessages.confirmDelete': '確定刪除快捷訊息「{name}」嗎?',
'ai.quickMessages.error.nameRequired': '請填寫名稱。',
'ai.quickMessages.error.invalidSlug': '指令只能包含小寫字母、數字和連字元。',
'ai.quickMessages.error.contentRequired': '請填寫訊息內容。',
'ai.quickMessages.error.slugTaken': '該指令已被其他快捷訊息使用。',
'ai.quickMessages.error.slugConflictsWithSkill': '該指令與使用者 Skill「/{slug}」衝突,請換一個指令。',
'ai.quickMessages.error.maxItems': '最多只能儲存 {max} 條快捷訊息。',
// AI Chat
'ai.chat.noProvider': '尚未設定 AI 供應商。請前往 **設定 → AI → 供應商** 新增並啟用一個供應商。',
'ai.chat.toolDenied': '操作已被使用者拒絕。',
'ai.chat.toolApproved': '已核准',
'ai.chat.toolApprovalHint': 'Enter 允許 · Esc 拒絕',
'ai.chat.approve': '核准',
'ai.chat.approveOnce': '允許',
'ai.chat.alwaysAllow': '始終',
'ai.chat.slashStopDesc': '停止目前 AI 回合並取消進行中的工具',
'ai.chat.slashCompactDesc': '壓縮較早的對話上下文',
'ai.chat.reject': '拒絕',
'ai.chat.toolLabel': '工具',
'ai.chat.targetLabel': '目標',
'ai.chat.rawCommand': '指令',
'ai.chat.copyCommand': '複製',
'ai.chat.commandCopied': '已複製',
'ai.chat.approvalSession': '工作階段',
'ai.chat.approvalShell': 'Shell',
'ai.chat.approvalCwd': '目錄',
'ai.chat.approvalReason': '原因',
'ai.chat.approvalInvocation': '呼叫詳情',
'ai.chat.permissionRequired': '需要權限',
'ai.chat.permissionDescription': 'AI Agent 希望執行一個需要你核准的工具呼叫。',
'ai.chat.commandBlocked': '此指令已被安全策略攔截,無法執行。',
'ai.chat.recommendAllow': '允許',
'ai.chat.recommendConfirm': '確認',
'ai.chat.recommendDeny': '拒絕',
'ai.chat.exportConversation': '匯出對話',
'ai.chat.exportAs': '匯出為',
'ai.chat.exportMarkdown': 'Markdown',
'ai.chat.exportJSON': 'JSON',
'ai.chat.exportPlainText': '純文字',
'ai.chat.thinking': '思考中',
'ai.chat.thoughtFor': '思考了 {duration}',
'ai.chat.thought': '思考',
'ai.chat.agents': 'Agents',
'ai.chat.detectedOnMachine': '在本機偵測到',
'ai.chat.rescan': '重新掃描',
'ai.chat.permObserver': '觀察',
'ai.chat.permConfirm': '確認',
'ai.chat.permAuto': '自動',
'ai.chat.permObserverDesc': '只讀',
'ai.chat.permConfirmDesc': '寫入前確認',
'ai.chat.permAutoDesc': '自由執行',
'ai.chat.emptyHint': '詢問伺服器相關問題、執行指令或取得設定協助。',
'ai.chat.placeholder': '向 {agent} 傳送訊息 — @ 引用上下文,/ 使用指令',
'ai.chat.placeholderDefault': '向 Catty Agent 傳送訊息...',
'ai.chat.noModel': '未選擇模型',
'ai.chat.noProviderModel': '未設定預設模型——前往 設定 → AI → 供應商 設定。',
'ai.chat.selectProvider': '選擇供應商',
'ai.chat.selectProviderAndModel': '選擇供應商與模型',
'ai.chat.selectModel': '選擇模型',
'ai.chat.searchModels': '搜尋模型',
'ai.chat.providers': '供應商',
'ai.chat.models': '模型',
'ai.chat.pinned': '已釘選',
'ai.chat.useCustomModel': '使用「{id}」',
'ai.chat.thinkingLevel': '思考強度',
'ai.chat.thinkingOff': '關閉',
'ai.chat.pinModel': '釘選模型',
'ai.chat.unpinModel': '取消釘選',
'ai.chat.loadingModels': '正在載入模型...',
'ai.chat.noMatchingModels': '沒有符合的模型',
'ai.chat.recent': '最近',
'ai.chat.viewAll': '檢視全部',
'ai.chat.untitled': '無標題',
'ai.chat.justNow': '剛剛',
'ai.chat.minutesAgo': '{n}分鐘前',
'ai.chat.hoursAgo': '{n}小時前',
'ai.chat.daysAgo': '{n}天前',
'ai.chat.newChat': '新對話',
'ai.chat.allSessions': '所有工作階段',
'ai.chat.loadEarlierMessages': '載入更早的訊息(還有 {n} 條)',
'ai.chat.jumpNav': '跳轉到訊息',
'ai.chat.jumpUntitled': '(空訊息)',
'ai.chat.usedTools': '已使用 {n} 個工具',
'ai.chat.loadMoreSessions': '載入更多工作階段(還有 {n} 條)',
'ai.chat.noSessions': '沒有歷史工作階段',
'ai.chat.retryHint': '你可以重新發送訊息來重試。',
'ai.chat.approvalTimeout': '工具核准已超時5 分鐘)。你可以重新發送訊息來重試。',
'ai.chat.menuHosts': '主機',
'ai.chat.menuContext': '上下文',
'ai.chat.menuFiles': '檔案',
'ai.chat.menuImage': '圖片',
'ai.chat.menuMentionHost': '提及主機',
'ai.chat.menuMentionNote': '提及筆記',
'ai.chat.mentionNoteSearch': '搜尋筆記…',
'ai.chat.mentionNoteEmpty': '沒有符合的筆記',
'ai.chat.mentionNoteUnavailable': '目前連線方式下,此 AI 無法讀取保險箱筆記。',
'ai.chat.mentionNoteTooMany': '這些筆記無法一起引用,請減少選擇。',
'ai.chat.mentionNoteInvalid': '無法附加「{{title}}」:筆記的識別碼無效。',
'ai.chat.untitledNote': '未命名筆記',
'ai.chat.menuUserSkills': '使用者 Skills',
'ai.chat.menuSlashCommands': '快捷指令',
'ai.chat.slashCommands': '快捷指令',
'ai.chat.slashSystemCommands': '系統指令',
'ai.chat.slashQuickMessages': '快捷訊息',
'ai.chat.slashUserSkills': '使用者 Skills',
'ai.chat.quickMessages': '快捷指令',
'ai.chat.slashNoResults': '沒有相符的指令',
'ai.chat.slashEmptyHint': '可在 設定 → AI → 快捷訊息 中新增常用提示詞。',
// AI 聊天快捷入口
'ai.chatShortcuts.title': '聊天快捷入口',
'ai.chatShortcuts.selectionAction': '選取終端內容時顯示「新增到對話」',
'ai.chatShortcuts.selectionAction.description': '在終端裡選取文字後顯示 AI 快捷按鈕。',
// AI Error
'ai.codex.bridgeError': 'Codex 主程序處理器尚未載入。請完全重新啟動 NetMesh 或重新啟動 Electron 開發程序,然後重試。',
// AI Web Search
'ai.webSearch.title': '網路搜尋',
'ai.webSearch.enable': '啟用網路搜尋',
'ai.webSearch.enable.description': '允許 AI 代理搜尋網際網路取得最新資訊。',
'ai.webSearch.provider': '搜尋供應商',
'ai.webSearch.provider.description': '選擇一個網路搜尋 API 供應商。',
'ai.webSearch.apiKey': 'API 金鑰',
'ai.webSearch.apiKey.description': '所選搜尋供應商的 API 金鑰。',
'ai.webSearch.apiKey.placeholder': '輸入 API 金鑰...',
'ai.webSearch.apiHost': 'API 位址',
'ai.webSearch.apiHost.description': '自訂 API 端點。除非使用代理,否則保持預設值。',
'ai.webSearch.apiHost.searxngDescription': 'SearXNG 例項的 URL必填。',
'ai.webSearch.maxResults': '最大結果數',
'ai.webSearch.maxResults.description': '搜尋傳回的最大結果數1-20。',
// AI Safety Settings
'ai.safety.title': '安全',
'ai.safety.permissionMode': '權限模式',
'ai.safety.permissionMode.description': '控制 AI 透過 NetMesh 存取終端工作階段的方式。觀察者模式會阻止經由 NetMesh 的寫操作;外部 Agent CLI 可能仍有自己的本機工具和核准流程。',
'ai.safety.permissionMode.observer': '觀察者 - 只讀,禁止操作',
'ai.safety.permissionMode.confirm': '確認 - 操作前詢問',
'ai.safety.permissionMode.auto': '自動 - 自由執行',
'ai.safety.commandTimeout': '指令超時',
'ai.safety.commandTimeout.description': '透過 NetMesh 執行指令時允許執行的最長秒數,超時將被終止。',
'ai.safety.commandTimeout.unit': '秒',
'ai.safety.responseIdleTimeout': '內建 AI 回應等待時間',
'ai.safety.responseIdleTimeout.description': '內建 AI 請求連續這麼多秒沒有收到新回應時會被取消。此設定不控制整段回應總時長,也不影響指令超時。',
'ai.safety.responseIdleTimeout.unit': '秒',
'ai.safety.maxIterations': '最大迭代次數',
'ai.safety.maxIterations.description': '防止 AI 失控執行的最大工具呼叫迴圈次數。外部 Agent 可能有自己的內部迭代限制,以其為準。',
'ai.safety.blocklist': '指令黑名單',
'ai.safety.blocklist.description': '用於攔截透過 NetMesh 執行的危險指令的正規表示式。',
'ai.safety.blocklist.placeholder': '正規表示式...',
'ai.safety.blocklist.reset': '恢復預設',
'ai.safety.blocklist.add': '新增規則',
'ai.safety.grants.title': '許可記憶表',
'ai.safety.grants.heading': 'Confirm 模式放行規則',
'ai.safety.grants.description': 'Confirm 模式會先詢問再執行;儲存為規則後,相符的同類操作會自動放行。規則對所有終端節點/工作階段生效,也可手動編輯。',
'ai.safety.grants.empty': '尚無規則。可在核准時選擇「一律許可」,或手動新增。',
'ai.safety.grants.capability': '能力',
'ai.safety.grants.sessionPattern': '節點/工作階段模式',
'ai.safety.grants.commandPattern': '指令模式(可選)',
'ai.safety.grants.note': '備註(可選)',
'ai.safety.grants.add': '新增規則',
'ai.safety.grants.remove': '刪除',
'ai.safety.grants.export': '匯出 JSON',
'ai.safety.grants.import': '匯入 JSON',
'ai.safety.note': '這些安全設定會約束經由 NetMesh 執行的操作。外部 Agent CLI 也可能提供本機工具,那部分由 Agent 自己的控制規則約束。',
// 統一終端工作區和頂部標籤的 tooltip 文案 (issue #954)
'terminal.layer.addTerminal': '新增終端',
'terminal.layer.switchToSplitView': '切換到分割檢視',
'terminal.layer.sftp': '檔案傳輸',
'terminal.layer.scripts': '指令碼',
'terminal.layer.history': '指令歷史',
'terminal.layer.theme': '主題',
'terminal.layer.notes': '筆記',
'terminal.layer.aiChat': 'AI 助手',
'terminal.layer.movePanelLeft': '面板移至左側',
'terminal.layer.movePanelRight': '面板移至右側',
'terminal.layer.closePanel': '關閉面板',
'terminal.layer.closePane': '關閉分割',
'terminal.layer.resizeSplit': '調整分割大小',
'terminal.layer.splitHorizontal': '上下分割',
'terminal.layer.splitVertical': '左右分割',
'terminal.layer.openInNewSplit': '在新分割中開啟',
'terminal.layer.hostTree.search': '搜尋主機...',
'terminal.layer.hostTree.searchButton': '搜尋',
'terminal.layer.hostTree.tagsButton': '按標籤篩選',
'terminal.layer.hostTree.newHost': '新增主機',
'terminal.layer.hostTree.newHostInGroup': '在此群組中新增主機',
'terminal.layer.hostTree.editHost': '編輯主機',
'terminal.layer.hostTree.hostSavedNextConnection': '主機已更新,連線設定將在下次連線時生效。',
'terminal.layer.hostTree.newGroup': '新增群組',
'terminal.layer.hostTree.localShell': '本機 Shell',
'terminal.layer.hostTree.tagsEmpty': '暫無標籤',
'terminal.layer.hostTree.clearTags': '清除篩選',
'terminal.layer.hostTree.collapse': '收起主機列表',
'terminal.layer.hostTree.expand': '展開主機列表',
'terminal.layer.hostTree.empty': '沒有相符的主機',
'terminal.layer.hostTree.details.host': '主機',
'terminal.layer.hostTree.details.user': '使用者',
'terminal.layer.hostTree.details.port': '埠',
'terminal.layer.hostTree.details.protocol': '協定',
'terminal.layer.hostTree.details.group': '群組',
'terminal.layer.hostTree.details.tags': '標籤',
'terminal.layer.hostTree.details.lastConnected': '最近連線',
'topTabs.openQuickSwitcher': '開啟快速切換',
'topTabs.moreTabs': '更多分頁',
'topTabs.aiAssistant': 'AI 助手',
'topTabs.newLocalTerminal': '新增本機終端',
'topTabs.controlPanel': '快捷控制',
'topTabs.controlPanel.externalMcp': '對外 MCP',
'topTabs.controlPanel.theme': '主題',
'topTabs.controlPanel.theme.light': '淺色',
'topTabs.controlPanel.theme.dark': '深色',
'topTabs.controlPanel.theme.system': '系統',
'topTabs.externalMcp.enable': '啟用對外 MCP',
'topTabs.externalMcp.disable': '停用對外 MCP',
'topTabs.windowOpacity': '視窗透明度',
'topTabs.openSettings': '開啟設定',
'ai.chat.sessionHistory': '工作階段歷史',
'ai.chat.resizeInput': '拖曳調整訊息輸入框高度',
'ai.chat.attach': '附件',
'ai.chat.terminalSelectionAttachment': '終端選區',
'ai.chat.terminalSelectionLines': '{count} 行',
'ai.chat.collapse': '收起',
'ai.chat.expand': '展開',
'ai.chat.enableAgent': '啟用 {name}',
'ai.chat.artifact.noteFallback': 'Vault 筆記',
'ai.chat.artifact.openNotes': '開啟筆記',
'ai.chat.artifact.openHosts': '開啟主機',
'ai.chat.artifact.notesSummary': 'Vault 中有 {count} 條筆記',
'ai.chat.artifact.hostsSummary': 'Vault 中有 {count} 台主機',
'ai.chat.artifact.hostsAdded': '已新增 {count} 台主機',
'ai.chat.artifact.hostsPreview': '預覽 {count} 台主機',
'ai.chat.artifact.failed': 'Vault 操作失敗',
'ai.chat.artifact.unavailableTitle': '不可用',
'ai.chat.artifact.noteMissing': '該筆記已不在 Vault 中。',
'ai.chat.artifact.hostMissing': '該主機已不在 Vault 中。',
'ai.chat.artifact.snippetMissing': '該 Snippet 或指令碼已不在 Vault 中。',
'ai.chat.artifact.openSnippets': '開啟 Snippets',
'ai.chat.artifact.snippetsSummary': 'Vault 中有 {count} 個 Snippet',
'ai.chat.artifact.scriptsSummary': 'Vault 中有 {count} 個指令碼',
'ai.chat.artifact.snippetFallback': 'Vault Snippet',
'ai.chat.artifact.scriptFallback': '自動化指令碼',
'ai.chat.artifact.scriptLanguage': '{language} 指令碼',
'ai.chat.artifact.snippetDeleted': 'Snippet 已刪除',
'ai.chat.artifact.scriptDeleted': '指令碼已刪除',
'ai.chat.artifact.snippetRan': 'Snippet 已執行',
'ai.chat.artifact.scriptStarted': '指令碼執行已啟動',
'ai.chat.artifact.scriptRunStatus': '指令碼執行 {status}',
'ai.chat.artifact.scriptRunsSummary': '{count} 個指令碼執行',
'ai.chat.artifact.scriptRunStopped': '指令碼執行已停止',
'ai.chat.artifact.scriptRunPaused': '指令碼執行已暫停',
'ai.chat.artifact.scriptRunResumed': '指令碼執行已恢復',
'ai.chat.artifact.scriptReference': 'nct API 參考',
'zmodem.waitingForRemote': '等待遠端...',
'zmodem.uploading': '上傳中',
'zmodem.downloading': '下載中',
'zmodem.cancelTransfer': '取消傳輸 (Ctrl+C)',
'zmodem.overwrite.title': '遠端已存在同名檔案',
'zmodem.overwrite.applyToRest': '套用到其餘衝突檔案',
'zmodem.overwrite.overwrite': '覆蓋',
'zmodem.overwrite.skip': '跳過',
'zmodem.overwrite.cancel': '取消',
'settings.shortcuts.resetToDefault': '重設為預設值',
};

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,133 @@
export const zhTWScriptsMessages = {
'scripts.meta.name': '名稱',
'scripts.meta.language': '語言',
'scripts.meta.description': '描述',
'scripts.meta.descriptionPlaceholder': '可選,指令碼的簡要說明',
'scripts.meta.trigger': '觸發方式',
'scripts.meta.triggerPattern': '輸出比對(正規表示式)',
'scripts.meta.code': '指令碼程式碼',
'scripts.trigger.manual': '手動執行',
'scripts.trigger.onConnect': '連線時執行',
'scripts.trigger.onOutput': '輸出比對時執行',
'scripts.trigger.onOutputHint': '僅在伺服器端輸出比對到正規表示式時觸發(會忽略本機按鍵回顯)。未設定目標主機時,對目前已連線的工作階段生效;設定目標後僅監聽對應主機。進入備用畫面的應用程式(如 vim、htop期間不會觸發。本 session 有其他指令碼執行期間會抑制;指令碼結束後再檢查 buffer。流程內等待一般文字用 nct.screen.waitForText正規表示式用 nct.screen.waitForRegex。',
'scripts.actions.save': '儲存',
'scripts.actions.runNow': '立即執行',
'scripts.actions.openEditor': '彈出視窗編輯',
'scripts.actions.openEditorHint': '在更大的視窗中編輯指令碼',
'scripts.editor.modalTitle': '指令碼編輯器',
'scripts.editor.modalSubtitle': '在更大的工作區中編輯指令碼的中繼資料與程式碼。',
'scripts.editor.lineCount': '{count} 行',
'scripts.editor.resize': '調整編輯器高度',
'scripts.targets.hint': '所選群組會動態比對,之後加入群組的主機也會自動生效。',
'scripts.targets.connectOrderHint': '連線指令碼的執行順序請在主機詳情 → 自動化 中調整。',
'scripts.targets.currentHostMismatch': '此指令碼未分配給目前主機。',
'hostDetails.automation.groupScripts': '群組繼承指令碼',
'hostDetails.automation.groupScriptsHint': '這些指令碼會動態跟隨主機所在群組,並在主機專屬佇列之前執行。',
'scripts.actions.runNowHint': '在所選目標主機上執行;勾選「對所有主機生效」時在所有可連線的主機上執行。',
'scripts.actions.runParallel': '在所有分頁並行執行',
'scripts.actions.runSequential': '在所有分頁依序執行',
'scripts.actions.runOnAllTabs': '在所有分頁執行',
'scripts.actions.skippedConnectingSessions': '有 {count} 個分頁仍在連線中,已跳過',
'scripts.actions.skippedSensitiveSessions': '有 {count} 個分頁處於密碼/敏感輸入,已跳過',
'scripts.actions.noRunnableHosts': '沒有與指令碼目標相符的可連線主機',
'scripts.sidePanel.library': '指令碼庫',
'scripts.sidePanel.running': '執行中',
'scripts.sidePanel.newScript': '新增指令碼',
'scripts.running.empty': '目前工作階段沒有正在執行的指令碼。',
'scripts.running.unnamed': '未命名指令碼',
'scripts.running.status.running': '執行中',
'scripts.running.status.paused': '已暫停',
'scripts.running.status.completed': '已完成',
'scripts.running.status.failed': '失敗',
'scripts.running.waitingFor': '等待 {pattern}',
'scripts.running.waitingForLabel': '等待',
'scripts.running.waitingForShellPrompt': 'Shell 提示字元(# 或 $',
'scripts.running.lastSent': '已傳送:{command}',
'scripts.recording.start': '開始錄製',
'scripts.recording.active': '停止錄製',
'scripts.recording.startHint': '在目前終端工作階段中錄製操作,自動產生 nct 指令碼程式碼',
'scripts.recording.unavailableHint': '此入口不支援錄製,請用終端右側的指令碼側欄',
'scripts.recording.activeHint': '正在錄製目前終端。在終端中正常輸入指令;點「停止錄製」或終端工具列的 REC 結束並儲存。',
'scripts.recording.started': '已開始錄製,請在終端中操作',
'scripts.recording.noSession': '請先連線終端(單一分頁或工作區皆可)',
'scripts.recording.alreadyActive': '已有其他終端正在錄製',
'scripts.recording.stop': '停止錄製',
'scripts.recording.pause': '暫停錄製',
'scripts.recording.resume': '繼續錄製',
'scripts.recording.saveTitle': '儲存錄製的指令碼',
'scripts.recording.namePlaceholder': '指令碼名稱',
'scripts.recording.packagePlaceholder': '儲存到資料夾',
'scripts.recording.rootPackage': '根目錄',
'scripts.recording.save': '儲存',
'scripts.recording.saveAndEdit': '儲存並編輯',
'scripts.recording.helpTitle': '如何錄製指令碼',
'scripts.recording.helpIntro': '錄製會把你在終端裡的操作自動轉成可重複執行的自動化指令碼,適合部署、巡檢等重複性任務。',
'scripts.recording.helpStep1': '連線主機。單一終端分頁或工作區裡的終端都可以,開啟右側的指令碼側欄即可。',
'scripts.recording.helpStep2': '點選「開始錄製」。終端工具列出現紅色 REC 表示已開始。',
'scripts.recording.helpStep3': '在終端裡像平常一樣輸入指令,按 Enter 執行。每次按 Enter 都會記為一步。',
'scripts.recording.helpStep4': '全部操作完成後,點選「停止錄製」,或點終端工具列 REC 旁的停止按鈕。',
'scripts.recording.helpStep5': '填寫指令碼名稱並儲存。需要微調時可選「儲存並編輯」,在指令碼編輯器裡修改產生的程式碼。',
'scripts.recording.helpTipsTitle': '小提示',
'scripts.recording.helpTip1': '兩次操作之間停頓超過 1 秒,會自動加入等待時間,避免回放太快。',
'scripts.recording.helpTip2': '每條指令後會等待 shell 提示字元(如 $ 或 #)出現,再記錄下一步,減少亂序。',
'scripts.recording.helpTip3': '密碼輸入會被標記為敏感內容,不會以明文寫入指令碼。',
'scripts.recording.helpTip4': 'vim、互動式選單等複雜操作建議先錄主幹指令再在編輯器裡手動補充。',
'scripts.dialog.title': '指令碼',
'scripts.dialog.ok': '確定',
'scripts.dialog.required': '必填',
'scripts.dialog.numberInvalid': '請輸入有效數字',
'scripts.dialog.numberMin': '不能小於 {min}',
'scripts.dialog.numberMax': '不能大於 {max}',
'scripts.dialog.numberStep': '步進必須為 {step} 的倍數',
'scripts.dialog.waitForTimeoutTitle': '等待逾時',
'scripts.dialog.retry': '重試',
'scripts.dialog.skip': '跳過',
'scripts.dialog.abort': '終止',
'scripts.running.stepProgress': '步驟 {current} / {total}',
'scripts.running.determinateProgress': '{label} {current}/{total}',
'scripts.running.progressFallback': '進度',
'scripts.running.operationsCount': '已執行 {count} 個操作',
'scripts.running.opsPrefix': '已執行 ',
'scripts.running.opsSuffix': ' 個操作',
'scripts.running.elapsedLabel': '耗時',
'scripts.running.lastSentLabel': '已傳送:',
'scripts.running.elapsed': '耗時 {elapsed}',
'scripts.running.completedSummary': '已完成 · 共 {count} 個操作 · {elapsed}',
'scripts.running.dismissHint': '點選關閉',
'scripts.running.dismiss': '關閉',
'scripts.running.viewLogs': '檢視日誌',
'scripts.running.logTitle': '{name} · 執行日誌',
'scripts.running.logEmpty': '暫無日誌輸出',
'scripts.running.pause': '暫停',
'scripts.running.resume': '繼續',
'scripts.running.stop': '停止',
'scripts.recording.saved': '指令碼已儲存',
'scripts.recording.savedNamed': '已儲存「{name}」',
'scripts.observer.blocked': 'Observer 模式禁止執行會寫入終端的指令碼。',
'vault.section.scripts': '指令碼',
'vault.nav.scripts': '指令碼',
'snippets.action.newScript': '新增自動化指令碼',
'hostDetails.section.automation': '自動化',
'hostDetails.automation.loginScript': '登入指令碼',
'hostDetails.automation.loginScriptPlaceholder': '選擇指令碼',
'hostDetails.automation.none': '無',
'hostDetails.automation.outputTriggers': '輸出觸發器',
'hostDetails.automation.addTrigger': '新增觸發器',
'hostDetails.automation.triggerPatternPlaceholder': '正規表示式',
'hostDetails.automation.linkedScripts': '已關聯指令碼',
'hostDetails.automation.linkedScriptsEmpty': '尚未關聯任何指令碼。',
'hostDetails.automation.linkScriptPlaceholder': '關聯既有指令碼…',
'hostDetails.automation.unlink': '取消關聯',
'hostDetails.automation.equivalenceHint': '此處關聯會將本主機加入 Scripts 中該指令碼的目標列表,兩側檢視同步。',
'hostDetails.automation.queueHint': '連線本主機時依序執行指令碼。全域指令碼最先執行,再執行下方佇列。',
'hostDetails.automation.globalScripts': '全域連線指令碼',
'hostDetails.automation.globalScriptsHint': '每次連線時最先執行。順序在指令碼庫排序中調整。',
'hostDetails.automation.connectQueue': '本主機執行佇列',
'hostDetails.automation.connectQueueEmpty': '尚未為本主機設定連線指令碼佇列。',
'hostDetails.automation.addToQueuePlaceholder': '新增指令碼到佇列…',
'hostDetails.automation.moveUp': '上移',
'hostDetails.automation.moveDown': '下移',
'hostDetails.automation.removeFromQueue': '從佇列移除',
'hostDetails.automation.dragHandle': '拖曳排序',
'hostDetails.automation.queueDragHint': '拖動項目即可調整連線時的執行順序。',
};

View File

@@ -0,0 +1,261 @@
import type { Messages } from '../types';
export const zhTwSystemManagerMessages: Messages = {
'terminal.layer.system': '系統',
'systemManager.noSession': '沒有使用中的終端工作階段。',
'systemManager.notConnected': '請先連線到主機以管理程序與服務。',
'systemManager.empty': '暫無資料。',
'systemManager.tabs.overview': '概覽',
'systemManager.tabs.processes': '程序',
'systemManager.tabs.ports': '連接埠',
'systemManager.tabs.services': '服務',
'systemManager.tabs.tmux': 'tmux',
'systemManager.tabs.docker': 'Docker',
'systemManager.tabs.gpu': 'GPU',
'systemManager.tabs.ariaLabel': '系統管理分區',
'systemManager.popup.loading': '正在開啟終端…',
'systemManager.popup.startupFailed': '啟動指令未順利完成。請確認目標仍可使用後再試一次。',
'systemManager.errors.loadProcesses': '載入程序列表失敗',
'systemManager.errors.loadTmux': '載入 tmux 工作階段失敗',
'systemManager.errors.loadTmuxWindows': '載入 tmux 視窗失敗',
'systemManager.errors.loadTmuxPanes': '載入 tmux 窗格失敗',
'systemManager.errors.loadTmuxClients': '載入 tmux 用戶端失敗',
'systemManager.errors.actionFailed': '操作失敗',
'systemManager.errors.loadDocker': '載入容器列表失敗',
'systemManager.errors.loadDockerStats': '載入容器效能資料失敗',
'systemManager.errors.loadDockerImages': '載入映像列表失敗',
'systemManager.errors.loadOverview': '載入系統概覽失敗',
'systemManager.errors.loadGpu': '載入 GPU / NPU 狀態失敗',
'systemManager.errors.loadPorts': '載入監聽連接埠失敗',
'systemManager.errors.loadServices': '載入 systemd 服務失敗',
'systemManager.errors.sshChannelUnavailable': '伺服器拒絕開啟新的執行通道。請稍後重試,或重新連線目前主機。',
'systemManager.overview.empty': '暫無系統概覽資料。',
'systemManager.overview.loading': '正在載入系統概覽…',
'systemManager.overview.memory': '記憶體',
'systemManager.overview.disk': '磁碟',
'systemManager.overview.network': '網路',
'systemManager.overview.rx': '下行',
'systemManager.overview.tx': '上行',
'systemManager.overview.cores': '{{count}} 核心',
'systemManager.overview.load': '負載',
'systemManager.overview.uptime': '執行時間',
'systemManager.overview.duration.daysHours': '{{days}}天 {{hours}}小時',
'systemManager.overview.duration.hoursMinutes': '{{hours}}小時 {{minutes}}分鐘',
'systemManager.overview.duration.minutes': '{{minutes}}分鐘',
'systemManager.overview.system': '系統',
'systemManager.overview.kernel': '核心',
'systemManager.overview.swap': '交換區',
'systemManager.overview.latency': 'SSH 網路延遲',
'systemManager.overview.cpuCores': 'CPU 核心',
'systemManager.overview.disks': '磁碟',
'systemManager.overview.interfaces': '網路介面',
'systemManager.overview.topProcesses': '記憶體佔用最高程序',
'systemManager.overview.noData': '暫無資料',
'systemManager.overview.noDisks': '暫無磁碟資料',
'systemManager.overview.noInterfaces': '暫無網路卡資料',
'systemManager.overview.noTopProcesses': '暫無程序資料',
'systemManager.processes.search': '搜尋程序…',
'systemManager.processes.command': '指令',
'systemManager.processes.user': '使用者',
'systemManager.processes.term': '終止',
'systemManager.processes.kill': '強制終止',
'systemManager.processes.stop': '暫停 (SIGSTOP)',
'systemManager.processes.cont': '繼續 (SIGCONT)',
'systemManager.processes.hup': '掛斷 (SIGHUP)',
'systemManager.processes.renice': '調整優先順序',
'systemManager.processes.renicePrompt': 'Nice 值 (-20 到 19)',
'systemManager.processes.reniceInvalid': 'Nice 值必須在 -20 到 19 之間',
'systemManager.processes.confirmKill': '向程序 {{pid}} 傳送 SIGKILL',
'systemManager.processes.confirmSignal': '向程序 {{pid}} 傳送 SIG{{signal}}',
'systemManager.processes.filter.all': '全部',
'systemManager.processes.filter.running': '執行中',
'systemManager.processes.ppid': '父程序 PID',
'systemManager.processes.rss': '實體記憶體',
'systemManager.processes.vsz': '虛擬記憶體',
'systemManager.processes.elapsed': '執行時長',
'systemManager.processes.stat': '狀態',
'systemManager.processes.meta': '{{count}} 個程序',
'systemManager.processes.loading': '正在載入程序…',
'systemManager.processes.loadingMore': '正在載入更多程序…',
'systemManager.processes.state.running': '執行中',
'systemManager.processes.state.sleeping': '睡眠',
'systemManager.processes.state.stopped': '已暫停',
'systemManager.processes.state.zombie': '殭屍',
'systemManager.processes.sort.cpu': 'CPU',
'systemManager.processes.sort.mem': '記憶體',
'systemManager.processes.sort.pid': 'PID',
'systemManager.processes.sort.command': '指令',
'systemManager.processes.sort.user': '使用者',
'systemManager.common.dismiss': '關閉',
'systemManager.common.checkingAvailability': '正在檢查可用狀態…',
'systemManager.common.loading': '正在載入…',
'systemManager.common.loadingDetails': '正在載入詳情…',
'systemManager.common.loadingStats': '正在載入效能資料…',
'systemManager.tmux.new': '新增',
'systemManager.tmux.search': '搜尋工作階段…',
'systemManager.tmux.newSessionTitle': '新增 tmux 工作階段',
'systemManager.tmux.newSessionDesc': '為工作階段命名,並可選在啟動時執行指令碼。',
'systemManager.tmux.newSessionTabCustom': '自訂指令',
'systemManager.tmux.newSessionTabSnippet': '從程式碼片段',
'systemManager.tmux.pickSnippet': '從程式碼片段選擇',
'systemManager.tmux.pickSnippetEmpty': '暫無程式碼片段,可在指令碼側欄或倉庫中新增。',
'systemManager.tmux.selectedSnippet': '已選片段:{{label}}',
'systemManager.tmux.newSessionName': '工作階段名稱',
'systemManager.tmux.newSessionCommand': '啟動指令',
'systemManager.tmux.newSessionCommandPlaceholder': '例如 htop 或 npm run dev可選',
'systemManager.tmux.newSessionCommandHint': '留空則建立預設 shell 工作階段。',
'systemManager.tmux.creating': '建立中…',
'systemManager.tmux.newSessionPlaceholder': 'my-session',
'systemManager.tmux.newSessionRequired': '請先輸入工作階段名稱',
'systemManager.tmux.empty': '沒有 tmux 工作階段',
'systemManager.tmux.attach': '附加',
'systemManager.tmux.attached': '已附加',
'systemManager.tmux.detached': '未附加',
'systemManager.tmux.windows': '{{count}} 個視窗',
'systemManager.tmux.created': '建立時間',
'systemManager.tmux.activity': '活動時間',
'systemManager.tmux.rename': '重新命名',
'systemManager.tmux.detach': '全部分離',
'systemManager.tmux.killSession': '結束工作階段',
'systemManager.tmux.killServer': '結束 tmux 伺服器',
'systemManager.tmux.loadingDetails': '正在載入詳情…',
'systemManager.tmux.clients': '已附加用戶端',
'systemManager.tmux.windowList': '視窗',
'systemManager.tmux.newWindow': '新增視窗',
'systemManager.tmux.newWindowPlaceholder': '視窗名稱(可選)',
'systemManager.tmux.noWindows': '沒有視窗',
'systemManager.tmux.unavailable': '此主機未偵測到 tmux',
'systemManager.docker.unavailable': '此主機未偵測到 Docker',
'systemManager.tmux.windowsMismatch': '工作階段顯示有 {{count}} 個視窗,但 list-windows 未傳回任何視窗',
'systemManager.tmux.lastCommand': '最後執行的指令:{{command}}',
'systemManager.tmux.noPanes': '沒有窗格',
'systemManager.tmux.panes': '{{count}} 個窗格',
'systemManager.tmux.active': '使用中',
'systemManager.tmux.unnamedWindow': '未命名視窗',
'systemManager.tmux.unnamedPane': '未命名窗格',
'systemManager.tmux.attachWindow': '附加到視窗',
'systemManager.tmux.selectWindow': '選擇視窗',
'systemManager.tmux.killWindow': '關閉視窗',
'systemManager.tmux.killPane': '關閉窗格',
'systemManager.tmux.splitHorizontal': '水平分割',
'systemManager.tmux.splitVertical': '垂直分割',
'systemManager.tmux.sendKeys': '傳送按鍵',
'systemManager.tmux.sendKeysTo': '向視窗 {{window}} 窗格 {{pane}} 傳送按鍵',
'systemManager.tmux.sendKeysPlaceholder': '指令或文字…',
'systemManager.tmux.renameSessionPrompt': '重新命名工作階段',
'systemManager.tmux.renameWindowPrompt': '重新命名視窗',
'systemManager.tmux.windowName': '視窗名稱',
'systemManager.tmux.confirmKillSession': '確定結束 tmux 工作階段「{{name}}」?',
'systemManager.tmux.confirmDetachSession': '確定將所有用戶端從「{{name}}」分離?',
'systemManager.tmux.confirmKillWindow': '確定關閉視窗「{{name}}」?',
'systemManager.tmux.confirmKillPane': '確定關閉窗格 #{{index}}',
'systemManager.tmux.confirmKillServer': '確定結束 tmux 伺服器?所有工作階段將被終止。',
'systemManager.tmux.meta': '{{count}} 個工作階段',
'systemManager.docker.title': '容器',
'systemManager.docker.subTabs.containers': '容器',
'systemManager.docker.subTabs.images': '映像',
'systemManager.docker.empty': '未找到容器',
'systemManager.docker.imagesEmpty': '未找到映像',
'systemManager.docker.search': '搜尋容器…',
'systemManager.docker.searchImages': '搜尋映像…',
'systemManager.docker.filter.all': '全部',
'systemManager.docker.filter.running': '執行中',
'systemManager.docker.filter.stopped': '已停止',
'systemManager.docker.filter.paused': '已暫停',
'systemManager.docker.shell': 'Shell',
'systemManager.docker.logs': '日誌',
'systemManager.docker.details': '詳情',
'systemManager.docker.inspect': 'Inspect',
'systemManager.docker.imageInspect': '映像 Inspect',
'systemManager.docker.confirmRemove': '確定刪除此容器?',
'systemManager.docker.confirmKill': '確定強制終止此容器?',
'systemManager.docker.confirmRemoveImage': '確定刪除映像「{{name}}」?',
'systemManager.docker.confirmPrune': '確定清理懸空映像?',
'systemManager.docker.confirmPruneAll': '確定清理所有未使用映像?',
'systemManager.docker.pause': '暫停',
'systemManager.docker.unpause': '恢復',
'systemManager.docker.restart': '重新啟動',
'systemManager.docker.kill': '強制終止',
'systemManager.docker.renamePrompt': '容器名稱',
'systemManager.docker.prune': '清理懸空',
'systemManager.docker.pruneAll': '清理全部',
'systemManager.docker.tag': '標記',
'systemManager.docker.tagRepoPrompt': '儲存庫名稱',
'systemManager.docker.tagNamePrompt': '標籤名稱',
'systemManager.docker.meta': '{{count}} 個容器',
'systemManager.docker.imagesMeta': '{{count}} 個映像',
'systemManager.docker.start': '啟動',
'systemManager.docker.stop': '停止',
'systemManager.ports.unavailable': '此主機未偵測到連接埠工具ss / netstat。',
'systemManager.ports.loading': '正在載入監聽連接埠…',
'systemManager.ports.empty': '暫無監聽連接埠。',
'systemManager.ports.search': '搜尋連接埠…',
'systemManager.ports.meta': '{{count}} 個監聽',
'systemManager.ports.filter.all': '全部',
'systemManager.ports.unknownProcess': '未知程序',
'systemManager.ports.terminate': '結束程序',
'systemManager.ports.confirmTerminate': '向佔用該連接埠的程序 {{pid}} 傳送 SIGTERM',
'systemManager.services.unavailable': '此主機未偵測到 systemctl。',
'systemManager.services.loading': '正在載入 systemd 服務…',
'systemManager.services.empty': '暫無 systemd 服務。',
'systemManager.services.search': '搜尋服務…',
'systemManager.services.meta': '{{count}} 個服務',
'systemManager.services.filter.all': '全部',
'systemManager.services.filter.running': '執行中',
'systemManager.services.filter.failed': '失敗',
'systemManager.services.filter.inactive': '未執行',
'systemManager.services.start': '啟動',
'systemManager.services.stop': '停止',
'systemManager.services.restart': '重新啟動',
'systemManager.services.enable': '開機啟用',
'systemManager.services.disable': '停用開機',
'systemManager.services.reload': '重新載入',
'systemManager.services.scope.user': '使用者',
'systemManager.services.confirmAction': '確認對 {{name}} 執行「{{action}}」?',
'systemManager.gpu.unavailable': '此主機未偵測到 NVIDIA GPU 或昇騰 NPU 工具。',
'systemManager.gpu.loading': '正在載入加速卡狀態…',
'systemManager.gpu.empty': '已偵測到加速卡工具,但未回傳裝置資訊。',
'systemManager.gpu.meta': '{{devices}} 張卡 · {{processes}} 個程序',
'systemManager.gpu.devices': '裝置',
'systemManager.gpu.processes': '計算程序',
'systemManager.gpu.noProcesses': '目前沒有計算程序。',
'systemManager.gpu.vendor.nvidia': 'NVIDIA',
'systemManager.gpu.vendor.ascend': '昇騰',
'systemManager.gpu.util': '使用率',
'systemManager.gpu.memory': '顯示記憶體',
'systemManager.gpu.hbm': 'HBM',
'systemManager.gpu.temperature': '溫度',
'systemManager.gpu.power': '功耗',
'systemManager.gpu.fan': '風扇 {{value}}%',
'systemManager.gpu.driver': '驅動 {{version}}',
'systemManager.inspect.status': '狀態',
'systemManager.inspect.image': '映像',
'systemManager.inspect.created': '建立時間',
'systemManager.inspect.started': '啟動時間',
'systemManager.inspect.restartPolicy': '重新啟動原則',
'systemManager.inspect.command': '啟動指令',
'systemManager.inspect.ports': '連接埠',
'systemManager.inspect.networks': '網路',
'systemManager.inspect.mounts': '掛載',
'systemManager.inspect.env': '環境變數',
'systemManager.inspect.labels': '標籤',
'systemManager.inspect.tags': '映像標籤',
'systemManager.inspect.digests': '摘要',
'systemManager.inspect.size': '大小',
'systemManager.inspect.platform': '平台',
'systemManager.inspect.workdir': '工作目錄',
'systemManager.inspect.exposedPorts': '對外開放的連接埠',
'systemManager.inspect.showRaw': 'JSON',
'systemManager.inspect.hideRaw': '收起 JSON',
};

View File

@@ -0,0 +1,940 @@
import type { Messages } from '../types';
export const zhTWTerminalMessages: Messages = {
'terminal.sudoHint.pressEnter': '按 Enter 貼上已儲存的密碼',
'terminal.passwordPicker.title': '已儲存的密碼',
'terminal.passwordPicker.empty': '沒有已儲存的密碼',
// Network Device Mode auto-detection tip (session header)
'terminal.networkDevice.tip.message': '此主機疑似為網路裝置。啟用網路裝置模式後,指令將原樣傳送(不做 Shell 包裝)。',
'terminal.networkDevice.tip.action': '啟用',
'terminal.networkDevice.tip.dismiss': '忽略',
'terminal.networkDevice.tip.enabled': '已為 {host} 啟用網路裝置模式',
'terminal.menu.rename': '重新命名',
'terminal.menu.uploadClipboardImage': '上傳剪貼簿圖片',
'terminal.clipboardImageUpload.noImage': '剪貼簿中沒有圖片',
'terminal.clipboardImageUpload.failed': '無法上傳剪貼簿圖片',
'terminal.toolbar.configureOsc7': '設定目錄追蹤',
'terminal.toolbar.detach': '移出到獨立分頁',
'terminal.toolbar.dragPane': '拖動終端窗格',
'terminal.toolbar.showActions': '顯示終端操作',
'terminal.menu.detach': '從工作區移出',
'terminal.osc7Setup.title': '設定目錄追蹤',
'terminal.osc7Setup.desc': 'NetMesh 會為目前遠端使用者新增 OSC 7 提示字元設定。這樣在 sudo 或 su 之後SFTP 也能繼續跟隨終端目錄。',
'terminal.osc7Setup.targets': '可能寫入的檔案',
'terminal.osc7Setup.command': '將執行的指令',
'terminal.osc7Setup.run': '執行設定',
'terminal.osc7Setup.running': '正在設定...',
'terminal.osc7Setup.configured': '目錄追蹤已設定',
'terminal.osc7Setup.failed': '目錄追蹤設定失敗',
'terminal.osc7Setup.sent': '目錄追蹤設定已傳送到終端',
'terminal.toolbar.timestampsEnable': '顯示時間戳',
'terminal.toolbar.timestampsDisable': '隱藏時間戳',
'terminal.progress.enterReconnectHint': '按 Enter 重新連線',
'terminal.progress.reconnecting': '正在重新連線...',
'terminal.progress.autoReconnectScheduled': '連線已斷開,將在 {seconds} 秒後自動重連(第 {attempt} 次)。',
'terminal.progress.autoReconnectAttempt': '正在自動重連(第 {attempt} 次)...',
'terminal.connection.protocol.et': 'EternalTerminal',
'terminal.connection.protocol.plugin': '外掛連線',
'terminal.et.proxyUnsupported': 'EternalTerminal 目前不支援 NetMesh 的代理設定。請改用 SSH或移除該主機的代理。',
'terminal.et.multiJumpUnsupported': 'EternalTerminal 目前在 NetMesh 中最多支援一個跳板機。',
// Command history side panel
'history.scope.label': '歷史範圍',
'history.tab.host': '主機',
'history.tab.global': '全域',
'history.searchPlaceholder': '搜尋歷史指令...',
'history.loading': '正在讀取遠端歷史...',
'history.meta.count': '{count} 條',
'history.empty.noSession': '請先開啟一個遠端工作階段以檢視其指令歷史。',
'history.empty.unsupportedProtocol': '僅 SSH/Mosh/ET 工作階段支援指令歷史。',
'history.empty.noHistory': '該主機上未找到指令歷史。',
'history.empty.noGlobalHistory': '暫無全域指令歷史。你執行的指令會記錄在這裡。',
'history.action.refresh': '重新整理',
'history.action.retry': '重試',
'history.action.paste': '貼上到終端',
'history.action.run': '在終端執行',
'history.action.saveAsSnippet': '儲存為程式碼片段',
'history.action.delete': '從歷史記錄中刪除',
// SFTP File Opener
'sftp.context.copyPath': '複製檔案路徑',
'sftp.context.openWith': '開啟方式...',
'sftp.context.edit': '編輯',
'sftp.context.preview': '預覽',
'sftp.opener.title': '開啟方式',
'sftp.opener.desc': '選擇一個應用程式來開啟此檔案',
'sftp.opener.builtInEditor': '內建編輯器',
'sftp.opener.editDescription': '編輯文字檔案',
'sftp.opener.builtInImageViewer': '內建圖片預覽',
'sftp.opener.previewDescription': '預覽圖片',
'sftp.opener.systemApp': '選擇應用程式...',
'sftp.opener.systemAppDescription': '從本機選擇一個應用程式',
'sftp.opener.onlySystemApp': '此檔案只能用外部應用程式開啟',
'sftp.opener.noAppsAvailable': '無可用應用程式',
'sftp.opener.noExtension': '無副檔名檔案',
'sftp.opener.setDefault': '始終使用此方式開啟 {ext} 檔案',
'sftp.opener.confirmTitle': '設為預設?',
'sftp.opener.confirmDescription': '是否始終使用 {app} 開啟 {ext} 檔案?',
'sftp.opener.yesRemember': '是,記住此選擇',
'sftp.opener.justOnce': '僅此一次',
'sftp.opener.confirm.title': '設定預設應用程式',
'sftp.opener.confirm.desc': '是否始終使用此應用程式開啟 .{ext} 檔案?',
'sftp.editor.title': '文字編輯器',
'sftp.editor.save': '儲存到遠端',
'sftp.editor.saving': '儲存中...',
'sftp.editor.saved': '儲存成功',
'sftp.editor.saveFailed': '儲存檔案失敗',
'sftp.editor.unsavedChanges': '你有未儲存的更改。確定要關閉嗎?',
'sftp.editor.syntaxHighlight': '語法標示',
'sftp.preview.title': '圖片預覽',
'sftp.preview.zoomIn': '放大',
'sftp.preview.zoomOut': '縮小',
'sftp.preview.resetZoom': '重設縮放',
'sftp.preview.fitToWindow': '適應視窗',
// Settings > SFTP File Associations
'settings.tab.sftpFileAssociations': 'SFTP',
'settings.sftp.transferConcurrency': '傳輸併發數',
'settings.sftp.transferConcurrency.desc': '同一目標同時傳輸的檔案數量上限,包括資料夾內檔案和單獨多選的檔案。較高的值可能提高速度,但可能導致某些伺服器過載。',
'settings.sftp.transferPoolIdleTtl': '傳輸連線保活時間',
'settings.sftp.transferPoolIdleTtl.desc': '專用傳輸 SFTP 連線閒置多久後關閉。時間更長可減少下次上傳/下載的冷啟動等待;進行中的傳輸不會被關閉。',
'settings.sftp.transferPoolIdleTtl.1m': '1 分鐘',
'settings.sftp.transferPoolIdleTtl.5m': '5 分鐘',
'settings.sftp.transferPoolIdleTtl.15m': '15 分鐘',
'settings.sftp.transferPoolIdleTtl.30m': '30 分鐘',
'settings.sftp.transferPoolIdleTtl.never': '直到結束應用',
'settings.ssh.transportIdleTtl': 'SSH 連線保活時間',
'settings.ssh.transportIdleTtl.desc': '最後一個終端、SFTP 瀏覽、批次傳輸或連接埠轉發釋放後,共享 SSH 連線再保留多久。保留期間再次開啟同主機可略過重新驗證(含 MFA進行中的工作階段與傳輸不會被關閉。',
'settings.ssh.transportIdleTtl.1m': '1 分鐘',
'settings.ssh.transportIdleTtl.5m': '5 分鐘',
'settings.ssh.transportIdleTtl.15m': '15 分鐘',
'settings.ssh.transportIdleTtl.30m': '30 分鐘',
'settings.ssh.transportIdleTtl.never': '直到結束應用',
'settings.sftp.defaultOpener': '預設檔案開啟方式',
'settings.sftp.defaultOpener.desc': '選擇沒有特定檔案關聯時的預設開啟方式',
'settings.sftp.defaultOpener.ask': '每次詢問',
'settings.sftp.defaultOpener.askDesc': '每次開啟檔案時彈出選擇對話方塊',
'settings.sftp.defaultOpener.builtInDesc': '預設使用內建編輯器開啟文字檔案',
'settings.sftp.defaultOpener.systemApp': '選擇應用程式...',
'settings.sftp.defaultOpener.systemAppDesc': '預設使用指定的外部應用程式開啟檔案',
'settings.sftpFileAssociations.title': 'SFTP 檔案關聯',
'settings.sftpFileAssociations.desc': '設定按副檔名開啟檔案的預設應用程式',
'settings.sftpFileAssociations.extension': '副檔名',
'settings.sftpFileAssociations.application': '應用程式',
'settings.sftpFileAssociations.noAssociations': '未設定檔案關聯',
'settings.sftpFileAssociations.remove': '移除',
'settings.sftpFileAssociations.removeConfirm': '確定移除 .{ext} 的關聯嗎?',
// Settings > SFTP Behavior
'settings.sftp.doubleClickBehavior': '雙擊行為',
'settings.sftp.doubleClickBehavior.desc': '選擇在 SFTP 檢視中雙擊檔案時的操作',
'settings.sftp.doubleClickBehavior.open': '開啟檔案',
'settings.sftp.doubleClickBehavior.transfer': '傳輸到另一側',
'settings.sftp.doubleClickBehavior.openDesc': '使用預設應用程式開啟檔案',
'settings.sftp.doubleClickBehavior.transferDesc': '將檔案傳輸到另一窗格的使用中主機',
'settings.sshDeepLink.title': 'SSH 和 Telnet 連結',
'settings.sshDeepLink.enable': '用 NetMesh 開啟 ssh:// 和 telnet:// 連結',
'settings.sshDeepLink.enableDesc': '允許 NetMesh 接管來自瀏覽器和其他應用程式的 ssh://、telnet:// 連結,以及堡壘機常用的 PuTTY 啟動參數(例如 -ssh user@host -P 22 -pw password。',
'settings.explorerContextMenu.title': 'Windows 檔案總管',
'settings.explorerContextMenu.enable': '在資料夾右鍵選單中顯示 “Open in NetMesh”',
'settings.explorerContextMenu.enableDesc': '為資料夾與資料夾空白處加入右鍵項目,可直接在該目錄開啟本機終端機。開關立即生效,無需重裝。',
'settings.jmsDeepLink.title': 'JumpServer 連結',
'settings.jmsDeepLink.enable': '處理 jms:// 連結',
'settings.jmsDeepLink.enableDesc': '將 NetMesh 註冊為 JumpServer jms:// 用戶端連結的處理程式,可能與官方 JumpServer 用戶端衝突。',
// Settings > SFTP Auto Sync
'settings.sftp.autoSync': '自動同步到遠端',
'settings.sftp.autoSync.desc': '使用外部應用程式開啟檔案時,自動將檔案更改同步回遠端伺服器',
'settings.sftp.autoSync.enable': '啟用自動同步',
'settings.sftp.autoSync.enableDesc': '在外部應用程式中儲存檔案時,更改將自動上傳到遠端伺服器',
// Settings > SFTP 自動開啟側欄
'settings.sftp.autoOpenSidebar': '連線時自動開啟側欄',
'settings.sftp.autoOpenSidebar.desc': '連線到主機時自動開啟 SFTP 檔案瀏覽器側欄',
'settings.sftp.autoOpenSidebar.enable': '啟用自動開啟側欄',
'settings.sftp.autoOpenSidebar.enableDesc': '當終端工作階段連線到遠端主機時SFTP 側欄將自動開啟',
'settings.sftp.followTerminalCwd': '追隨終端目錄',
'settings.sftp.followTerminalCwd.desc': '在側欄 SFTP 中自動跟隨終端目前工作目錄變化(可在工具欄切換)',
'settings.sftp.followTerminalCwd.enable': '預設開啟追隨終端目錄',
'settings.sftp.followTerminalCwd.enableDesc': '開啟側欄 SFTP 時預設啟用追隨模式,終端執行 cd 後檔案瀏覽器會自動跳轉',
'settings.sftp.defaultViewMode': '預設檢視模式',
'settings.sftp.defaultViewMode.desc': '選擇開啟新 SFTP 分頁時的預設檢視模式。每個主機的偏好設定會覆蓋此全域設定。',
'settings.sftp.defaultViewMode.list': '列表檢視',
'settings.sftp.defaultViewMode.listDesc': '以平面列表顯示目前目錄的檔案',
'settings.sftp.defaultViewMode.tree': '樹形檢視',
'settings.sftp.defaultViewMode.treeDesc': '以層級樹形結構顯示檔案',
'sftp.autoSync.success': '檔案已同步到遠端:{fileName}',
'sftp.autoSync.error': '同步檔案失敗:{error}',
// SFTP Folder Upload Progress
'sftp.upload.progress': '正在上傳 {current}/{total} 個檔案...',
'sftp.upload.uploading': '正在上傳...',
'sftp.upload.compressing': '正在壓縮...',
'sftp.upload.extracting': '正在解壓...',
'sftp.upload.scanning': '正在掃描檔案...',
'sftp.upload.completed': '已完成',
'sftp.upload.compressed': '壓縮傳輸',
'sftp.upload.currentFile': '目前: {fileName}',
'sftp.upload.cancelled': '上傳已取消',
'sftp.upload.noFiles': '沒有可上傳的檔案',
'sftp.upload.partialSuccess': '已上傳 {success} 個檔案,{failed} 個失敗',
'sftp.upload.cancel': '取消',
'sftp.upload.completedToPath': '已上傳至 {path}',
// SFTP Download
'sftp.download.completed': '已下載',
'sftp.download.cancelled': '下載已取消',
// SFTP Reconnecting
'sftp.reconnecting.title': '正在重連...',
'sftp.reconnecting.desc': '連線已斷開,正在嘗試重新連線',
'sftp.reconnected': '連線已恢復',
'sftp.error.reconnectFailed': '重連失敗,請重試。',
'sftp.error.connectionLostManual': '連線已斷開,請手動重新連線。',
'sftp.error.connectionLostReconnecting': '連線已斷開,正在重連...',
'sftp.error.sessionLost': 'SFTP 工作階段已斷開,請重新連線。',
// Settings > SFTP Show Hidden Files
'settings.sftp.showHiddenFiles': '顯示隱藏檔案',
'settings.sftp.showHiddenFiles.desc': '在 SFTP 檔案瀏覽器中顯示隱藏檔案Unix/macOS 點檔案和 Windows 隱藏屬性檔案)。',
'settings.sftp.showHiddenFiles.enable': '顯示隱藏檔案',
'settings.sftp.showHiddenFiles.enableDesc': '瀏覽本機和遠端檔案系統時顯示隱藏檔案',
// Settings > SFTP Compressed Upload
'settings.sftp.compressedUpload': '資料夾壓縮傳輸',
'settings.sftp.compressedUpload.desc': '上傳前壓縮資料夾,可大幅減少傳輸時間。',
'settings.sftp.compressedUpload.enable': '啟用資料夾壓縮',
'settings.sftp.compressedUpload.enableDesc': '自動使用 tar 壓縮資料夾後再傳輸。需要伺服器支援 tar 指令,不支援時自動改用一般傳輸。',
'settings.sftp.skipUnchanged.enable': '跳過未改檔案',
'settings.sftp.skipUnchanged.enableDesc': '當目標檔案的大小與修改時間已與來源一致時跳過傳輸(類似 rsync。替換到暫存路徑時自動停用。',
// Settings > Terminal
'settings.terminal.section.theme': '終端主題',
'settings.terminal.themeModal.title': '選擇主題',
'settings.terminal.themeModal.darkThemes': '深色主題',
'settings.terminal.themeModal.lightThemes': '淺色主題',
'settings.terminal.theme.selectButton': '選擇主題',
'settings.terminal.theme.followApp': '跟隨應用程式主題',
'settings.terminal.theme.followApp.desc': '終端背景色自動配合目前應用程式主題,保持視覺一致性。',
'settings.terminal.theme.darkTheme': '深色模式終端主題',
'settings.terminal.theme.lightTheme': '淺色模式終端主題',
'settings.terminal.theme.auto': '自動(跟隨介面主題)',
'settings.terminal.theme.autoDesc': '跟隨目前介面主題預設',
'settings.terminal.section.font': '字型',
'settings.terminal.section.cursor': '游標',
'settings.terminal.section.keyboard': '鍵盤',
'settings.terminal.section.accessibility': '無障礙',
'settings.terminal.section.behavior': '行為',
'settings.terminal.section.scrollback': '捲動緩衝區',
'settings.terminal.section.keywordHighlight': '關鍵字標示',
'settings.terminal.font.family': '字型',
'settings.terminal.font.family.desc': '終端字型',
'settings.terminal.font.cjk': '中文 / CJK 字型',
'settings.terminal.font.cjk.desc': '用於渲染中 / 日 / 韓字元的字型;"Auto" 會按主字型智慧搭配',
'settings.terminal.font.cjk.option.auto': 'Auto · 按主字型智慧搭配',
'settings.terminal.font.cjk.option.sarasaSC': 'Sarasa Mono SC (更紗黑體 簡)',
'settings.terminal.font.cjk.option.sarasaTC': 'Sarasa Mono TC (更紗黑體 繁)',
'settings.terminal.font.cjk.option.mapleCN': 'Maple Mono CN',
'settings.terminal.font.cjk.option.sourceHan': 'Source Han Mono SC (思源等寬)',
'settings.terminal.font.cjk.option.notoCJK': 'Noto Sans Mono CJK SC',
'settings.terminal.font.cjk.option.lxgwWenkai': 'LXGW WenKai Mono (霞鶩文楷等寬)',
'settings.terminal.font.cjk.option.simSun': 'SimSun (宋體)',
'settings.terminal.font.cjk.option.legacy': '{font} · 不推薦(非等寬字型)',
'settings.terminal.font.cjk.option.recommended': '推薦用於終端對齊',
'settings.terminal.font.cjk.option.installed': '本機已安裝字型',
'settings.terminal.font.cjk.option.unverified': '暫時無法檢查是否安裝',
'settings.terminal.font.cjk.option.unavailable': '本機未安裝',
'settings.terminal.font.cjk.searchPlaceholder': '搜尋本機字型…',
'settings.terminal.font.cjk.empty': '沒有符合的本機字型',
'settings.terminal.font.cjk.useCustom': '使用字型',
'settings.terminal.font.cjk.refresh': '重新整理本機字型',
'settings.terminal.font.cjk.alignmentWarning': '這個字型尚未確認是等寬字型,請透過預覽檢查文字是否對齊。',
'settings.terminal.font.cjk.unavailableWarning': '本機沒有安裝這個字型。NetMesh 會保留設定,並使用安全字型繼續顯示。',
'settings.terminal.font.size': '字型大小',
'settings.terminal.font.size.desc': '終端文字大小',
'settings.terminal.font.weight': '字重',
'settings.terminal.font.weight.desc': '常規文字字重 (100-900)',
'settings.terminal.font.weight.thin': '極細',
'settings.terminal.font.weight.extraLight': '特細',
'settings.terminal.font.weight.light': '細',
'settings.terminal.font.weight.normal': '常規',
'settings.terminal.font.weight.medium': '中等',
'settings.terminal.font.weight.semiBold': '半粗',
'settings.terminal.font.weight.bold': '粗',
'settings.terminal.font.weight.extraBold': '特粗',
'settings.terminal.font.weight.black': '黑體',
'settings.terminal.font.weightBold': '粗體字重',
'settings.terminal.font.weightBold.desc': '粗體文字字重 (100-900)',
'settings.terminal.font.smoothing': '字型平滑',
'settings.terminal.font.smoothing.desc': '使用 macOS 原生字型抗鋸齒',
'settings.terminal.font.linePadding': '行間距',
'settings.terminal.font.linePadding.desc': '行之間的額外間距 (0-10)',
'settings.terminal.font.emulationType': '終端模擬型別',
'settings.terminal.cursor.style': '游標樣式',
'settings.terminal.cursor.style.block': '塊',
'settings.terminal.cursor.style.bar': '豎線',
'settings.terminal.cursor.style.underline': '下劃線',
'settings.terminal.cursor.blink': '游標閃爍',
'settings.terminal.cursor.highlightLine': '高亮目前行',
'settings.terminal.cursor.highlightLine.desc': '為游標所在行加上淡色背景,方便定位目前輸入位置',
'settings.terminal.keyboard.altAsMeta': '將 Option 作為 Meta 鍵',
'settings.terminal.keyboard.altAsMeta.desc': '使用 Option (Alt) 作為 Meta 鍵,而不是用於輸入特殊字元',
'settings.terminal.keyboard.optionArrowWordJump': 'Option+←/→ 按單字跳轉',
'settings.terminal.keyboard.optionArrowWordJump.desc': '按 Option+左/右 時傳送 Meta-b / Meta-f讓 Shell 按單字移動游標(而非預設的 ^[[1;3D / ^[[1;3C',
'settings.terminal.keyboard.kittyProtocol': 'Kitty 鍵盤協定',
'settings.terminal.keyboard.kittyProtocol.desc': '啟用 Kitty 鍵盤協定支援。',
'settings.terminal.accessibility.minimumContrastRatio': '最小對比度',
'settings.terminal.accessibility.minimumContrastRatio.desc': '調整顏色以滿足對比度要求 (1 = 停用, 21 = 最大)',
'settings.terminal.behavior.rightClick': '右鍵行為',
'settings.terminal.behavior.rightClick.desc': '在終端中右鍵時執行的操作',
'settings.terminal.behavior.rightClick.fullscreenMenu': '在全螢幕應用中也顯示選單',
'settings.terminal.behavior.rightClick.fullscreenMenu.desc':
'即使 tmux、vim 等全螢幕應用接管了滑鼠也顯示右鍵選單。關閉時右鍵會交給應用處理Shift+右鍵仍可開啟選單)。',
'settings.terminal.behavior.autoCloseOnExit': '結束後自動關閉終端',
'settings.terminal.behavior.autoCloseOnExit.desc': '允許終端分頁和視窗在工作階段結束後自動關閉。關閉此項後,無論結束結果如何都會保留。',
'settings.terminal.behavior.disconnectedNotice': '連線中斷時',
'settings.terminal.behavior.disconnectedNotice.desc': '已連線的工作階段中斷後,可在終端內顯示簡短提示,或繼續使用完整對話框。首次連線失敗仍使用對話框。',
'settings.terminal.behavior.disconnectedNotice.terminal': '終端內提示',
'settings.terminal.behavior.disconnectedNotice.dialog': '對話框提示',
'settings.terminal.behavior.rightClick.menu': '顯示選單',
'settings.terminal.behavior.rightClick.paste': '貼上',
'settings.terminal.behavior.rightClick.selectWord': '選擇單字',
'settings.terminal.behavior.copyOnSelect': '選擇即複製',
'settings.terminal.behavior.copyOnSelect.desc': '自動複製選取的文字。在 tmux/vim 滑鼠模式下macOS 按住 OptionWindows/Linux 按住 Shift 拖選即可選取文字',
'settings.terminal.behavior.normalizeTextOnCopy': '複製時正規化終端文字',
'settings.terminal.behavior.normalizeTextOnCopy.desc':
'複製終端內容時去除僅供顯示的行尾填充空白,並拼接軟換行,使貼上結果更接近邏輯文字。關閉後依螢幕選取原樣複製(含 TUI 填充空白與視覺折行)。',
'settings.terminal.behavior.middleClickPaste': '中鍵貼上',
'settings.terminal.behavior.middleClickPaste.desc': '中鍵點選時貼上剪貼簿內容',
'settings.terminal.behavior.middleClick': '中鍵行為',
'settings.terminal.behavior.middleClick.desc': '在終端中點選滑鼠中鍵時執行的操作',
'settings.terminal.behavior.middleClick.menu': '顯示選單',
'settings.terminal.behavior.middleClick.paste': '貼上',
'settings.terminal.behavior.middleClick.disabled': '無動作',
'settings.terminal.behavior.wordSeparators': '單字分隔符',
'settings.terminal.behavior.wordSeparators.desc':
'雙擊選取文字時作為邊界的字元。空格也算;可加入 =、逗號或 :,方便選取 uid=name 裡的部分內容。',
'settings.terminal.behavior.bracketedPaste': '括號貼上模式',
'settings.terminal.behavior.bracketedPaste.desc':
'貼上文字時使用轉義序列包裹,以便終端區分貼上和鍵入。如果出現 ^[[200~ 字樣請關閉此選項。',
'settings.terminal.behavior.autoUploadClipboardImage': '貼上時自動上傳剪貼簿圖片',
'settings.terminal.behavior.autoUploadClipboardImage.desc':
'當剪貼簿包含圖片時,在遠端工作階段中貼上會透過 SFTP 將圖片上傳到遠端目前目錄的 .NetMesh-paste-images/ 資料夾,並在終端輸入遠端路徑,而不是貼上文字。',
'settings.terminal.behavior.shiftEnterNewline': 'Shift+Enter 傳送文字',
'settings.terminal.behavior.shiftEnterNewline.desc':
'在終端中按 Shift+Enter 時傳送設定的文字,而不是一般 Enter。',
'settings.terminal.behavior.shiftEnterNewlineText': '傳送內容',
'settings.terminal.behavior.shiftEnterNewlineText.desc':
'使用 \\n 表示換行,\\t 表示 Tab\\\\ 表示反斜線。',
'settings.terminal.behavior.clearWipesScrollback': '`clear` 同時清空捲動緩衝',
'settings.terminal.behavior.clearWipesScrollback.desc':
'`clear` 指令同時清空捲動緩衝POSIX 預設行為)。關閉則保留歷史。',
'settings.terminal.behavior.preserveSelectionOnInput': '輸入時保留選區',
'settings.terminal.behavior.preserveSelectionOnInput.desc':
'鍵盤輸入時不清除滑鼠選取的文字,方便選取路徑後輸入 `sz ` 之類指令再貼上。',
'settings.terminal.behavior.forcePromptNewLine': '提示字元另起一行',
'settings.terminal.behavior.forcePromptNewLine.desc':
'當指令輸出的最後一行未以換行符結束時,將識別到的 shell 提示字元移動到下一行顯示。',
'settings.terminal.behavior.dynamicTabTitle': '動態分頁標題',
'settings.terminal.behavior.dynamicTabTitle.desc':
'選擇分頁什麼時候跟隨 Shell 報告的視窗標題,並更新編程 CLI 圖示。關閉時也會停止即時圖示識別。',
'settings.terminal.behavior.dynamicTabTitle.off': '關閉',
'settings.terminal.behavior.dynamicTabTitle.agent': '僅 Agent',
'settings.terminal.behavior.dynamicTabTitle.all': '全部工作階段',
'settings.terminal.behavior.oscNotifications': 'OSC 桌面通知',
'settings.terminal.behavior.oscNotifications.desc':
'當程式發出 OSC 9、OSC 777 notify 或 kitty OSC 99 時顯示系統通知。Codex 等 Agent 會用它提示回合完成或等待核准。',
'settings.terminal.behavior.oscNotifications.off': '關閉',
'settings.terminal.behavior.oscNotifications.unfocused': '未聚焦時',
'settings.terminal.behavior.oscNotifications.always': '一律',
'settings.terminal.behavior.osc52Clipboard': 'OSC-52 剪貼簿',
'settings.terminal.behavior.osc52Clipboard.desc':
'允許遠端程式tmux、vim 等)透過 OSC-52 轉義序列存取本機剪貼簿。',
'settings.terminal.behavior.osc52Clipboard.off': '關閉',
'settings.terminal.behavior.osc52Clipboard.writeOnly': '僅寫入',
'settings.terminal.behavior.osc52Clipboard.readWrite': '讀寫',
'settings.terminal.behavior.osc52Clipboard.prompt': '寫入 + 讀取時詢問',
'terminal.osc52.readPrompt.title': '剪貼簿讀取請求',
'terminal.osc52.readPrompt.desc': '遠端程式正在請求讀取你的剪貼簿,是否允許?',
'terminal.osc52.readPrompt.allow': '允許',
'terminal.osc52.readPrompt.deny': '拒絕',
'settings.terminal.behavior.scrollOnInput': '輸入時自動捲動',
'settings.terminal.behavior.scrollOnInput.desc': '輸入時將終端捲動到底部',
'settings.terminal.behavior.scrollOnOutput': '輸出時自動捲動',
'settings.terminal.behavior.scrollOnOutput.desc': '有新輸出時將終端捲動到底部',
'settings.terminal.behavior.scrollOnKeyPress': '按鍵時自動捲動',
'settings.terminal.behavior.scrollOnKeyPress.desc': '按鍵(例如 Enter時將終端捲動到底部',
'settings.terminal.behavior.scrollOnPaste': '貼上時自動捲動',
'settings.terminal.behavior.scrollOnPaste.desc': '貼上文字時將終端捲動到底部',
'settings.terminal.behavior.smoothScrolling': '平滑捲動',
'settings.terminal.behavior.smoothScrolling.desc': '捲動終端可視區域時使用平滑動畫',
'settings.terminal.behavior.linkModifier': '連結修飾鍵',
'settings.terminal.behavior.linkModifier.desc': '按住此鍵再點選終端中的連結',
'settings.terminal.behavior.linkModifier.none': '無(直接點選)',
'settings.terminal.behavior.linkModifier.ctrl': 'Ctrl',
'settings.terminal.behavior.linkModifier.alt': 'Alt / Option',
'settings.terminal.behavior.linkModifier.meta': 'Cmd / Win',
'settings.terminal.scrollback.desc': '限制終端行數。設為 0 表示不限制。',
'settings.terminal.scrollback.rows': '行數 *',
'settings.terminal.section.startupCommand': '啟動指令',
'settings.terminal.startupCommandDelay.label': '啟動指令延遲(毫秒)',
'settings.terminal.startupCommandDelay.desc': '連線建立後等待多久再發送啟動指令;啟動指令為多行時,行與行之間也使用該間隔。慢連線可調大。',
'settings.terminal.keywordHighlight.title': '關鍵字標示',
'settings.terminal.keywordHighlight.resetColors': '重設為預設顏色',
'settings.terminal.keywordHighlight.resetDefaults': '把內建規則恢復為預設',
'settings.terminal.keywordHighlight.resetBuiltIn': '恢復內建標籤與正規表示式',
'settings.terminal.keywordHighlight.addCustom': '新增自訂規則',
'settings.terminal.keywordHighlight.editCustom': '編輯規則',
'settings.terminal.keywordHighlight.editBuiltIn': '編輯內建規則',
'settings.terminal.keywordHighlight.labelField': '標籤與顏色',
'settings.terminal.keywordHighlight.labelPlaceholder': '標籤(如 Down',
'settings.terminal.keywordHighlight.patternField': '正規表示式',
'settings.terminal.keywordHighlight.patternPlaceholder': '每行一個正規表示式(如 \\bdown\\b',
'settings.terminal.keywordHighlight.patternHint': '每行一個正規表示式。比對時忽略大小寫,全域比對。',
'settings.terminal.keywordHighlight.invalidPattern': '無效的正規表示式',
'settings.terminal.keywordHighlight.preview': '預覽',
'settings.terminal.section.localShell': '本機 Shell',
'settings.terminal.localShell.shell': 'Shell 執行檔',
'settings.terminal.localShell.shell.desc': 'Shell 執行檔的路徑(例如 /bin/zsh、pwsh.exe。留空使用系統預設。',
'settings.terminal.localShell.shell.placeholder': '系統預設',
'settings.terminal.localShell.shell.detected': '偵測到',
'settings.terminal.localShell.shell.notFound': '未找到 Shell 執行檔',
'settings.terminal.localShell.shell.isDirectory': '路徑是目錄,不是執行檔',
'settings.terminal.localShell.shell.default': '系統預設',
'settings.terminal.localShell.shell.custom': '自訂...',
'settings.terminal.localShell.shell.customPath': 'Shell 執行檔路徑',
'settings.terminal.localShell.shell.customArgs': '啟動引數',
'settings.terminal.localShell.shell.customArgs.placeholder': '例如 --login -i',
'settings.terminal.localShell.shell.customArgs.desc': '傳給 Shell 的啟動引數。部分 Shell 必須指定才能正常工作,例如 msys2 bash 需要 --login -i 才能載入環境變數。',
'settings.terminal.localShell.shell.commonPaths': '常用路徑',
'settings.terminal.localShell.shell.pathValid': '路徑有效',
'settings.terminal.localShell.startDir': '起始目錄',
'settings.terminal.localShell.startDir.desc': '開啟本機終端時的起始目錄。留空使用使用者主目錄。',
'settings.terminal.localShell.startDir.placeholder': '使用者主目錄',
'settings.terminal.localShell.startDir.notFound': '目錄不存在',
'settings.terminal.localShell.startDir.isFile': '路徑是檔案,不是目錄',
'settings.terminal.section.connection': '連線',
'settings.terminal.connection.sshAutoReconnectEnabled': 'SSH 斷線後自動重連',
'settings.terminal.connection.sshAutoReconnectEnabled.desc': '開啟後,已連上的 SSH 工作階段意外斷開時會每 5 秒嘗試重新連線,直到關閉分頁或連線恢復。',
'settings.terminal.connection.keepaliveInterval': '工作階段保持間隔',
'settings.terminal.connection.keepaliveInterval.desc': '向伺服器傳送 SSH 保活資料包的頻率(秒)。設為 0 表示全域停用——單個主機可在自己的設定裡覆蓋此值。',
'settings.terminal.connection.keepaliveCountMax': '最大無回應保活次數',
'settings.terminal.connection.keepaliveCountMax.desc': '判定連線死亡前允許的無回應保活次數。值越大對短暫網路抖動和回應慢的 SSH 服務越寬容。',
'settings.terminal.connection.x11Display': 'X11 顯示位址',
'settings.terminal.connection.x11Display.desc': '可選的本機 X11 顯示位址。留空則使用系統預設值。',
'settings.terminal.connection.x11Display.placeholder': '自動(:0 或 DISPLAY',
'settings.terminal.section.serverStats': '伺服器狀態Linux',
'settings.terminal.hostInfoBar.show': '顯示主機資訊列',
'settings.terminal.hostInfoBar.show.desc': '在終端上方顯示主機位址和伺服器資訊。隱藏後仍可使用操作按鈕。',
'settings.terminal.hostInfoBar.titleMode': '主機資訊標題',
'settings.terminal.hostInfoBar.titleMode.desc': '選擇資訊列顯示連線位址user@host還是主機名稱Vault 標籤)。',
'settings.terminal.hostInfoBar.titleMode.address': '連線位址',
'settings.terminal.hostInfoBar.titleMode.label': '主機名稱',
'settings.terminal.serverStats.show': '顯示伺服器狀態',
'settings.terminal.serverStats.show.desc': '在終端狀態列顯示 CPU、記憶體和磁碟使用情況僅限 Linux 伺服器)。',
'settings.terminal.serverStats.refreshInterval': '重新整理間隔',
'settings.terminal.serverStats.refreshInterval.desc': '伺服器狀態重新整理的頻率。',
'settings.terminal.serverStats.seconds': '秒',
'settings.terminal.section.systemManager': '系統管理',
'settings.terminal.systemManager.processRefreshInterval': '程序列表重新整理間隔',
'settings.terminal.systemManager.processRefreshInterval.desc': '系統管理側欄中程序列表的重新整理頻率。',
'settings.terminal.systemManager.tmuxRefreshInterval': 'tmux 工作階段重新整理間隔',
'settings.terminal.systemManager.tmuxRefreshInterval.desc': 'tmux 工作階段列表的重新整理頻率。',
'settings.terminal.systemManager.dockerListRefreshInterval': 'Docker 容器列表重新整理間隔',
'settings.terminal.systemManager.dockerListRefreshInterval.desc': 'Docker 容器列表的重新整理頻率。',
'settings.terminal.systemManager.dockerStatsRefreshInterval': 'Docker 效能資料重新整理間隔',
'settings.terminal.systemManager.dockerStatsRefreshInterval.desc': 'Docker 容器 CPU/記憶體/網路指標的重新整理頻率。',
// Settings > Terminal > Rendering
'settings.terminal.section.rendering': '渲染',
'settings.terminal.rendering.renderer': '渲染器',
'settings.terminal.rendering.renderer.desc': '選擇終端渲染技術。自動模式會在低記憶體裝置上使用 DOM 渲染。更改將在新終端工作階段中生效。',
'settings.terminal.rendering.auto': '自動',
'settings.terminal.rendering.hibernateHiddenTabs': '隱藏分頁休眠',
'settings.terminal.rendering.hibernateHiddenTabs.desc': '分頁離開視野後釋放終端渲染器以節省記憶體SSH 連線保持不斷。檔案傳輸期間不會休眠。',
'settings.terminal.rendering.hibernateHiddenTabsDelay': '休眠延遲',
'settings.terminal.rendering.hibernateHiddenTabsDelay.desc': '分頁離開視野多久後釋放渲染器5600 秒)。',
'settings.terminal.rendering.hibernateSkipAltScreen': '全螢幕 TUI 跳過休眠',
'settings.terminal.rendering.hibernateSkipAltScreen.desc': 'vim、htop 或 Agent TUI 佔用 alternate screen 時保持終端渲染器,避免慢恢復。',
'settings.terminal.rendering.hibernateKeepRendererCount': '保留隱藏渲染器數量',
'settings.terminal.rendering.hibernateKeepRendererCount.desc': '多少個不可見分頁僅暫停 WebGL、不銷毀 xterm超出後才完整休眠。',
'settings.terminal.rendering.hibernateReplayChunkBytes': '喚醒分片大小',
'settings.terminal.rendering.hibernateReplayChunkBytes.desc': '恢復休眠終端時每幀回放的 ANSI 位元組數464 KB。',
'settings.terminal.rendering.hibernatePreferWasmSerialize': '優先 WASM 序列化',
'settings.terminal.rendering.hibernatePreferWasmSerialize.desc': '在可用時使用 WASM 終端序列化,否則改用 JS SerializeAddon。',
// Settings > Terminal > Inline Images
'settings.terminal.section.inlineImages': '內嵌圖片',
'settings.terminal.inlineImages.enabled': '渲染內嵌圖片',
'settings.terminal.inlineImages.enabled.desc': '直接顯示遠端程式輸出的真實圖片kitten icat、chafa、檔案管理器與 TUI 的圖片預覽)。更改將在新終端工作階段中生效。',
'settings.terminal.inlineImages.kitty': 'Kitty 圖形協定',
'settings.terminal.inlineImages.kitty.desc': '接受 Kitty 圖形序列,包括 SSH 上的 direct/stream 傳輸模式。',
'settings.terminal.inlineImages.sixel': 'SIXEL',
'settings.terminal.inlineImages.sixel.desc': '接受 SIXEL 圖形img2sixel、mpv、gnuplot 等 DEC 風格工具會使用。',
'settings.terminal.inlineImages.iip': 'iTerm 內嵌圖片協定',
'settings.terminal.inlineImages.iip.desc': '接受 iTerm2 的 OSC 1337 內嵌圖片序列PNG、JPEG、GIF 首格)。',
'settings.terminal.inlineImages.storageLimit': '每終端圖片快取',
'settings.terminal.inlineImages.storageLimit.desc': '單一終端可為已解碼圖片保留的記憶體超出後採先進先出淘汰8512 MB。',
'settings.terminal.inlineImages.maxMegapixels': '單張圖片上限',
'settings.terminal.inlineImages.maxMegapixels.desc': '允許解碼的單張圖片最大像素數超出的圖片會被丟棄且不影響終端緩衝區164 MP16 MP 即 4096 × 4096。',
'settings.terminal.inlineImages.sequenceLimit': '單條序列上限',
'settings.terminal.inlineImages.sequenceLimit.desc': '開始解碼前允許接受的單條圖片跳脫序列大小上限164 MB。',
'settings.terminal.inlineImages.unit.mb': 'MB',
'settings.terminal.inlineImages.unit.megapixels': 'MP',
'settings.terminal.inlineImages.hibernateNote': '已繪製內嵌圖片的分頁會保留渲染器而不進入完整休眠,因為休眠快照只能還原文字。',
// Settings > Terminal > Workspace Focus Indicator
'settings.terminal.section.workspaceFocus': '工作區焦點提示',
'settings.terminal.workspaceFocus.style': '焦點提示樣式',
'settings.terminal.workspaceFocus.style.desc': '在分割檢視中如何標示目前聚焦的窗格。',
'settings.terminal.workspaceFocus.dim': '淡化未聚焦窗格',
'settings.terminal.workspaceFocus.border': '為聚焦窗格顯示邊框',
// Settings > Terminal > Autocomplete
'settings.terminal.section.autocomplete': '自動補全',
'settings.terminal.autocomplete.enabled': '啟用自動補全',
'settings.terminal.autocomplete.enabled.desc': '輸入時根據歷史指令和指令規範顯示補全建議。',
'settings.terminal.autocomplete.ghostText': '行內建議',
'settings.terminal.autocomplete.ghostText.desc': '在游標後顯示灰色的建議文字(類似 fish shell。',
'settings.terminal.autocomplete.popupMenu': '彈出選單',
'settings.terminal.autocomplete.popupMenu.desc': '顯示包含多個建議的浮動列表。',
'settings.terminal.autocomplete.historyScope': '歷史指令提示範圍',
'settings.terminal.autocomplete.historyScope.desc':
'選擇自動補全的歷史建議來自目前主機,還是所有主機上執行過的指令。',
'settings.terminal.autocomplete.historyScope.host': '目前主機',
'settings.terminal.autocomplete.historyScope.global': '全部主機',
'settings.terminal.section.passwordPromptAssist': '密碼提示輔助',
'settings.terminal.passwordPromptAssist.mode': '輔助模式',
'settings.terminal.passwordPromptAssist.mode.desc':
'當 sudo 或 su 要求輸入密碼時,提供已儲存的憑證。不會在未經確認時自動傳送。',
'settings.terminal.passwordPromptAssist.off': '關閉',
'settings.terminal.passwordPromptAssist.hint': '快速填入Enter',
'settings.terminal.passwordPromptAssist.picker': '憑證選擇列表',
// Settings > Shortcuts
'settings.shortcuts.section.scheme': '快速鍵方案',
'settings.shortcuts.scheme.label': '鍵盤快速鍵',
'settings.shortcuts.scheme.desc': '選擇快速鍵使用的鍵盤佈局',
'settings.shortcuts.scheme.disabled': '停用',
'settings.shortcuts.scheme.mac': 'Mac (Cmd)',
'settings.shortcuts.scheme.pc': 'PC (Ctrl)',
'settings.shortcuts.disableTerminalFontZoom.label': '停用終端縮放',
'settings.shortcuts.disableTerminalFontZoom.desc': '關閉終端文字縮放快捷操作,包括 Cmd/Ctrl 加滾輪。',
'settings.shortcuts.shellOnlyTabNumberShortcuts.label': '分頁快速鍵跳過固定分頁',
'settings.shortcuts.shellOnlyTabNumberShortcuts.desc': '開啟後Cmd/Ctrl+[1...9] 和 Ctrl+Tab 僅在終端、工作區、編輯器等可關閉分頁之間切換,不包括固定的 Vault 和 SFTP 分頁。',
'settings.shortcuts.showTabNumberBadges.label': '顯示分頁序號角標',
'settings.shortcuts.showTabNumberBadges.desc': '按住 Cmd/Ctrl 時,在對應 Cmd/Ctrl+[1...9] 的分頁上顯示 1-9方便準確切換。',
'settings.shortcuts.section.custom': '自訂快速鍵',
'settings.shortcuts.resetAll': '全部重設',
'settings.shortcuts.recording': '請按鍵...',
'settings.shortcuts.none': '無',
'settings.shortcuts.setDisabled': '設為停用',
'settings.shortcuts.category.tabs': '分頁',
'settings.shortcuts.category.terminal': '終端',
'settings.shortcuts.category.navigation': '導航',
'settings.shortcuts.category.app': '應用程式',
'settings.shortcuts.category.sftp': 'SFTP',
'settings.shortcuts.binding.switch-tab-1-9': '切換到分頁 [1...9]',
'settings.shortcuts.binding.next-tab': '下一個分頁',
'settings.shortcuts.binding.prev-tab': '上一個分頁',
'settings.shortcuts.binding.close-tab': '關閉分頁',
'settings.shortcuts.binding.close-session': '關閉工作階段窗格',
'settings.shortcuts.binding.new-tab': '新增本機分頁',
'settings.shortcuts.binding.copy': '從終端複製',
'settings.shortcuts.binding.paste': '貼上到終端',
'settings.shortcuts.binding.paste-selection': '將選區貼上到終端',
'settings.shortcuts.binding.select-all': '全選終端內容',
'settings.shortcuts.binding.clear-buffer': '清空終端緩衝區',
'settings.shortcuts.binding.search-terminal': '開啟終端搜尋',
'settings.shortcuts.binding.increase-terminal-font-size': '增大終端字型大小',
'settings.shortcuts.binding.decrease-terminal-font-size': '減小終端字型大小',
'settings.shortcuts.binding.reset-terminal-font-size': '重設終端字型大小',
'settings.shortcuts.binding.move-focus': '在分割間移動焦點',
'settings.shortcuts.binding.split-horizontal': '水平分割',
'settings.shortcuts.binding.split-vertical': '垂直分割',
'settings.shortcuts.binding.toggle-pane-zoom': '切換窗格縮放',
'settings.shortcuts.binding.open-hosts': '開啟主機列表',
'settings.shortcuts.binding.open-local': '開啟本機終端',
'settings.shortcuts.binding.open-sftp': '開啟 SFTP',
'settings.shortcuts.binding.open-settings': '開啟設定',
'settings.shortcuts.binding.port-forwarding': '開啟埠轉發',
'settings.shortcuts.binding.command-palette': '開啟指令面板',
'settings.shortcuts.binding.quick-switch': '快速切換',
'settings.shortcuts.binding.new-workspace': '新增工作區',
'settings.shortcuts.binding.snippets': '開啟程式碼片段',
'settings.shortcuts.binding.broadcast': '切換廣播模式',
'settings.shortcuts.binding.toggle-side-panel': '切換側邊欄',
'settings.shortcuts.binding.sftp-copy': '複製檔案',
'settings.shortcuts.binding.sftp-cut': '剪下檔案',
'settings.shortcuts.binding.sftp-paste': '貼上檔案',
'settings.shortcuts.binding.sftp-select-all': '全選檔案',
'settings.shortcuts.binding.sftp-rename': '重新命名檔案',
'settings.shortcuts.binding.sftp-delete': '刪除檔案',
'settings.shortcuts.binding.sftp-refresh': '重新整理',
'settings.shortcuts.binding.sftp-new-folder': '新增資料夾',
'settings.shortcuts.binding.sftp-open': '開啟檔案 / 進入目錄',
'settings.shortcuts.binding.sftp-go-parent': '轉到上級目錄',
'settings.shortcuts.binding.sftp-navigate-to': '轉到選取的目錄',
// Host Details (sub-panels)
'hostDetails.proxyPanel.title': '透過 HTTP/SOCKS5/指令代理',
'hostDetails.proxyPanel.hostPlaceholder': '代理主機',
'hostDetails.proxyPanel.command': 'ProxyCommand',
'hostDetails.proxyPanel.commandPlaceholder': 'cloudflared access ssh --hostname %h',
'hostDetails.proxyPanel.commandHelp': '使用 %h 表示目標主機,%p 表示目標埠,%% 表示字面百分號。',
'hostDetails.proxyPanel.credentials': '憑證',
'hostDetails.proxyPanel.usernamePlaceholder': '使用者名稱',
'hostDetails.proxyPanel.passwordPlaceholder': '密碼',
'hostDetails.proxyPanel.identities': '身分',
'hostDetails.proxyPanel.keychainIdentity': '鑰匙串身分',
'hostDetails.proxyPanel.manualCredentials': '手動憑證',
'hostDetails.proxyPanel.remove': '移除代理',
'hostDetails.proxyPanel.savedProxy': '已儲存代理',
'hostDetails.proxyPanel.selectSaved': '選擇已儲存代理',
'hostDetails.proxyPanel.customProxy': '自訂代理',
'hostDetails.proxyPanel.missing': '缺少',
'hostDetails.proxyPanel.missingSaved': '儲存的代理不存在',
'hostDetails.proxyPanel.missingIdentity': '鑰匙串身分不存在',
'hostDetails.proxyPanel.incompleteIdentity': '代理身分需要使用者名稱和密碼',
'hostDetails.proxyPanel.unreadableIdentity': '此裝置無法讀取代理身分密碼',
'hostDetails.proxyPanel.error.required': '代理主機和埠,或 ProxyCommand 不能為空。',
'hostDetails.envVars.title': '環境變數',
'hostDetails.envVars.desc': '為 {host} 設定環境變數。',
'hostDetails.envVars.note': '部分 SSH 伺服器預設只允許以 LC_ 和 LANG_ 為字首的變數。',
'hostDetails.envVars.variable': '變數',
'hostDetails.envVars.value': '值',
'hostDetails.envVars.newVariable': '新變數',
'hostDetails.envVars.variableName': '變數名',
'hostDetails.chain.title': '編輯鏈路',
'hostDetails.chain.desc': '新增另一台主機將建立到 {host} 的連線。',
'hostDetails.chain.addHost': '新增主機',
'hostDetails.chain.target': '目標',
'hostDetails.chain.availableHosts': '可用主機',
'hostDetails.chain.clear': '清空',
'hostDetails.group.title': '新增群組',
'hostDetails.group.general': '常規',
'hostDetails.group.namePlaceholder': '群組名稱',
'hostDetails.group.parentPlaceholder': '父群組',
'hostDetails.group.cloudSync': '雲同步',
'hostDetails.group.addProtocol': '新增協定',
// Keychain
'keychain.filter.key': '金鑰',
'keychain.filter.certificate': '憑證',
'keychain.action.generateKey': '產生金鑰',
'keychain.action.importKey': '匯入金鑰',
'keychain.action.newIdentity': '新增身分',
'keychain.action.importCertificate': '匯入憑證',
'keychain.view.grid': '網格',
'keychain.view.list': '列表',
'keychain.section.keys': '金鑰',
'keychain.section.identities': '身分',
'keychain.count.items': '{count} 項',
'keychain.empty.title': '設定金鑰',
'keychain.empty.desc': '匯入或產生 SSH 金鑰用於安全認證。',
'keychain.panel.generateKey': '產生金鑰',
'keychain.panel.newKey': '新增金鑰',
'keychain.panel.keyDetails': '金鑰詳情',
'keychain.panel.editKey': '編輯金鑰',
'keychain.panel.editIdentity': '編輯身分',
'keychain.panel.newIdentity': '新增身分',
'keychain.panel.keyExport': '金鑰匯出',
'keychain.validation.labelRequired': '請填寫金鑰的 Label',
'keychain.validation.labelAndPrivateKeyRequired': 'Label 和私鑰為必填項',
'keychain.validation.labelAndUsernameRequired': 'Label 和使用者名稱為必填項',
'keychain.error.generationUnavailable': '無法產生金鑰:請確保應用程式執行在 Electron 環境',
'keychain.error.generateKeyPairFailed': '產生金鑰對失敗',
'keychain.error.generateKeyFailed': '產生金鑰失敗',
'keychain.error.keyGenerationTitle': '金鑰產生',
'keychain.export.exportTo': '匯出到 *',
'keychain.export.selectHost': '選擇主機',
'keychain.export.location': '位置 ~ $1 *',
'keychain.export.filename': '檔名 ~ $2 *',
'keychain.export.note': '金鑰匯出目前僅支援 {unix} 系統。請在 {advanced} 部分自訂匯出指令碼。',
'keychain.export.script': '指令碼 *',
'keychain.export.scriptPlaceholder': '匯出指令碼...',
'keychain.export.missingCredentials': '主機未儲存密碼或金鑰。請先為該主機新增密碼憑證。',
'keychain.export.successTitle': '匯出成功',
'keychain.export.successMessage': '已匯出公鑰並繫結到 {host}',
'keychain.export.failedTitle': '匯出失敗',
'keychain.export.failedMessage': '匯出金鑰失敗:{error}',
'keychain.export.failedPrefix': '匯出失敗:{error}',
'keychain.export.exitCode': '指令結束代碼 {code}',
'keychain.export.exporting': '匯出中...',
'keychain.export.exportAndAttach': '匯出並繫結',
'keychain.export.title': '金鑰匯出',
'keychain.export.exportToRequired': '匯出到 *',
'keychain.export.selectHostPlaceholder': '選擇主機...',
'keychain.export.locationLabel': '位置 ~ $1 *',
'keychain.export.filenameLabel': '檔名 ~ $2 *',
'keychain.export.advanced': '高階',
'keychain.export.note.supportsOnly': '金鑰匯出目前僅支援',
'keychain.export.note.systems': '系統。',
'keychain.export.note.use': '請使用',
'keychain.export.note.customize': '部分自訂匯出指令碼。',
'keychain.export.scriptRequired': '指令碼 *',
'keychain.export.exportToHost': '匯出到主機',
'keychain.export.failedGeneric': '匯出失敗:{message}',
'keychain.field.label': 'Label',
'keychain.field.labelRequired': 'Label *',
'keychain.field.labelPlaceholder': '金鑰 Label',
'keychain.field.privateKeyRequired': '私鑰 *',
'keychain.field.publicKey': '公鑰',
'keychain.field.certificatePlaceholder': '憑證內容(可選)',
'keychain.generate.keyType': '金鑰型別',
'keychain.generate.keySize': '金鑰長度',
'keychain.generate.labelPlaceholder': '金鑰 Label',
'keychain.generate.passphrasePlaceholder': 'Passphrase可選',
'keychain.generate.savePassphrase': '儲存 Passphrase',
'keychain.generate.generate': '產生',
'keychain.generate.generateSave': '產生並儲存',
'keychain.import.dropHint': '將金鑰檔案拖到這裡',
'keychain.import.importFromFile': '從檔案匯入',
'keychain.import.saveKey': '儲存金鑰',
'keychain.import.importedKeyLabel': '已匯入金鑰',
'keychain.identity.usernameRequired': '使用者名稱 *',
'keychain.identity.method.passwordOnly': '密碼',
'keychain.identity.summary.password': '認證密碼',
'keychain.identity.summary.key': '認證金鑰',
'keychain.identity.summary.certificate': '認證憑證',
'keychain.identity.summary.passwordAndKey': '認證密碼與金鑰',
'keychain.identity.summary.passwordAndCertificate': '認證密碼與憑證',
'keychain.identity.summary.none': '無憑證',
'keychain.identity.selectCredential': '選擇{kind}',
'keychain.identity.save': '儲存',
'keychain.identity.update': '更新',
'keychain.keyDialog.newTitle': '新增金鑰',
'keychain.keyDialog.newDesc': '新增新的 SSH 金鑰',
'keychain.keyDialog.editTitle': '編輯金鑰',
'keychain.keyDialog.editDesc': '更新此 SSH 金鑰',
'keychain.keyDialog.updateKey': '更新金鑰',
// Tabs
'tabs.closeSessionAria': '關閉工作階段',
'tabs.closeLogViewAria': '關閉日誌檢視',
'tabs.closePluginViewAria': '關閉 {title}',
'tabs.logPrefix': '日誌:',
'tabs.logLocal': '本機',
'tabs.copyTab': '複製分頁',
'tabs.duplicateSession': '複製工作階段',
'tabs.copyTabToNewWindow': '複製分頁到新視窗',
'tabs.copyTabToNewWindowFailed': '無法在新視窗開啟分頁',
'tabs.closeOthers': '關閉其他分頁',
'tabs.closeToRight': '關閉右側分頁',
'tabs.closeAll': '關閉所有分頁',
'keychain.edit.labelRequired': 'Label *',
'keychain.edit.keyLabelPlaceholder': '金鑰 Label',
'keychain.edit.privateKeyRequired': '私鑰 *',
'keychain.edit.publicKey': '公鑰',
'keychain.edit.certificate': '憑證',
'keychain.edit.certificatePlaceholder': '憑證內容(可選)',
'keychain.edit.filePath': '檔案路徑',
'keychain.edit.keyExport': '金鑰匯出',
'keychain.edit.exportToHost': '匯出到主機',
// Snippets
'snippets.searchPlaceholder': '搜尋程式碼片段...',
'snippets.action.newSnippet': '新增程式碼片段',
'snippets.action.newPackage': '新增程式碼包',
'snippets.action.import': '匯入',
'snippets.action.selectSnippets': '選擇程式碼片段',
'snippets.panel.newTitle': '新增程式碼片段',
'snippets.panel.editTitle': '編輯程式碼片段',
'snippets.field.description': '描述',
'snippets.field.descriptionPlaceholder': '例如check network load',
'snippets.field.package': '新增程式碼包',
'snippets.field.packagePlaceholder': '選擇或建立程式碼包',
'snippets.field.createPackage': '建立程式碼包',
'snippets.field.scriptRequired': '指令碼 *',
'snippets.scriptEditor.expand': '彈出視窗編輯',
'snippets.scriptEditor.resize': '調整編輯器高度',
'snippets.scriptEditor.modalTitle': '編輯指令碼',
'snippets.targets.title': '執行目標',
'snippets.targets.add': '新增目標',
'snippets.targets.selectHosts': '選擇主機',
'snippets.targets.selectGroups': '選擇群組',
'snippets.targets.noGroups': '未找到群組',
'snippets.history.title': 'Shell 歷史',
'snippets.history.subtitle': '{count} 條指令',
'snippets.history.emptyTitle': '暫無 Shell 歷史',
'snippets.history.emptyDesc': '你執行過的指令會顯示在這裡',
'snippets.history.loadMore': '載入更多',
'snippets.history.separator': '•',
'snippets.history.labelPlaceholder': '為此程式碼片段設定一個 Label',
'snippets.history.saveAsSnippet': '儲存為程式碼片段',
'snippets.history.time.justNow': '剛剛',
'snippets.history.time.minutesAgo': '{count} 分鐘前',
'snippets.history.time.hoursAgo': '{count} 小時前',
'snippets.history.time.daysAgo': '{count} 天前',
'snippets.breadcrumb.allPackages': '全部程式碼包',
'snippets.breadcrumb.separator': '',
'snippets.empty.title': '建立程式碼片段',
'snippets.empty.desc': '將常用指令儲存為程式碼片段,一鍵重複使用。',
'snippets.panel.newAutomationTitle': '新增自動化指令碼',
'snippets.panel.editAutomationTitle': '編輯自動化指令碼',
'snippets.panel.resizeWidth': '調整面板寬度',
'snippets.targets.allHosts': '對所有主機生效',
'snippets.targets.allHostsShort': '所有主機',
'snippets.targets.allHostsActive': '將作用於所有可連線的主機。',
'snippets.kind.codeSnippet': '程式碼片段',
'snippets.kind.automationScript': '自動化指令碼',
'snippets.search.noResults.title': '無相符結果',
'snippets.search.noResults.desc': '沒有程式碼片段或程式碼包與"{query}"相符。換一個關鍵字,或清除搜尋進行瀏覽。',
'snippets.section.packages': '程式碼包',
'snippets.section.snippets': '程式碼片段',
'snippets.package.count': '{count} 個程式碼片段',
'snippets.commandFallback': '指令',
'snippets.view.grid': '網格',
'snippets.view.list': '列表',
'snippets.selection.selected': '已選擇 {count} 個',
'snippets.selection.selectVisible': '選擇目前顯示',
'snippets.selection.deselectAll': '取消選擇',
'snippets.selection.exportSelected': '匯出選取({count}',
'snippets.selection.deleteSelected': '刪除({count}',
'snippets.selection.deleteConfirmTitle': '刪除選取的 {count} 項?',
'snippets.selection.deleteConfirmDesc': '所選項目將被永久刪除,此操作無法復原。',
'snippets.selection.deleteSuccess': '已刪除 {count} 個所選項目。',
'snippets.export.snippet': '匯出程式碼片段',
'snippets.export.package': '匯出程式碼包',
'snippets.export.toast.empty': '沒有可匯出的程式碼片段。',
'snippets.export.toast.successTitle': '匯出已準備好',
'snippets.export.toast.success': '已匯出 {count} 個程式碼片段。',
'snippets.import.toast.empty': '沒有找到可匯入的程式碼片段。',
'snippets.import.toast.failedTitle': '匯入失敗',
'snippets.import.toast.invalidDesc': '這不是有效的 NetMesh 程式碼片段檔案。',
'snippets.import.toast.successTitle': '匯入完成',
'snippets.import.toast.summary': '已匯入 {imported} 個,覆蓋 {overwritten} 個,跳過 {skipped} 個。',
'snippets.import.modal.title': '匯入程式碼片段',
'snippets.import.modal.desc': '選擇一個或多個 NetMesh 程式碼片段 JSON 檔案。匯入前會先解析並展示結果,不會直接寫入。',
'snippets.import.modal.exampleTitle': '範例 JSON',
'snippets.import.modal.noFile': '還沒有選擇檔案。可以參考下面的格式,也可以直接使用程式碼片段 JSON 陣列,然後選擇一個或多個檔案。',
'snippets.import.modal.chooseFile': '選擇檔案',
'snippets.import.modal.downloadExamples': '下載範例檔案',
'snippets.import.modal.multipleFiles': '已選擇 {count} 個檔案',
'snippets.import.modal.parsedSummary': '{files} 個檔案,{total} 個程式碼片段,{packages} 個程式碼包,{conflicts} 個重複指令。主機繫結會被忽略。',
'snippets.import.modal.confirm': '確認匯入',
'snippets.import.conflict.title': '匯入程式碼片段?',
'snippets.import.conflict.desc': '“{file}”包含 {total} 個程式碼片段,其中 {conflicts} 個指令已存在。',
'snippets.import.conflict.hostBindingsNote': '程式碼片段的主機繫結不會被匯入或匯出。',
'snippets.import.conflict.skip': '跳過重複項',
'snippets.import.conflict.overwrite': '覆蓋重複項',
'snippets.packageDialog.title': '新增程式碼包',
'snippets.packageDialog.parent': '父級:{parent}',
'snippets.packageDialog.root': '根目錄',
'snippets.packageDialog.placeholder': '例如ops/maintenance',
'snippets.packageDialog.hint': '使用 "/" 建立巢狀程式碼包。',
// Snippets Rename Dialog
'snippets.renameDialog.title': '重新命名程式碼包',
'snippets.renameDialog.currentPath': '目前路徑:{path}',
'snippets.renameDialog.placeholder': '輸入新名稱',
'snippets.renameDialog.error.empty': '程式碼包名稱不能為空',
'snippets.renameDialog.error.duplicate': '已存在同名的程式碼包',
'snippets.renameDialog.error.invalidChars': '程式碼包名稱只能包含字母、數字、連字元和下劃線',
'snippets.field.noAutoRun': '僅貼上(不自動執行)',
'snippets.field.multiLineRunMode': '多行執行方式',
'snippets.field.multiLineRunMode.paste': '一次性傳送',
'snippets.field.multiLineRunMode.lineDelay': '逐行傳送',
'snippets.field.multiLineRunModeHint': '登入提示、網路設備巨集等情境可用逐行傳送。',
// Snippet Shortkey
'snippets.field.shortkey': '快速鍵',
'snippets.shortkey.placeholder': '點選設定快速鍵',
'snippets.shortkey.recording': '請按下快速鍵組合...',
'snippets.shortkey.hint': '在終端中按下此快速鍵可快速傳送指令。',
'snippets.shortkey.clear': '清除快速鍵',
'snippets.shortkey.error.systemConflict': '此快速鍵與「{name}」衝突',
'snippets.shortkey.error.snippetConflict': '此快速鍵已被程式碼片段使用:{name}',
'snippets.variables.dialogTitle': '填寫變數',
'snippets.variables.dialogDesc': '執行「{label}」前請填寫以下變數。',
'snippets.variables.hint': '變數值將原樣插入指令碼(不會進行 shell 轉義)。',
'snippets.variables.preview': '預覽',
'snippets.variables.placeholder': '請輸入',
'snippets.variables.placeholderDefault': '預設:{value}',
'snippets.variables.required': '請填寫此變數',
'snippets.variables.run': '執行',
'snippets.field.variablesHelp': '在指令碼中使用 {{名稱}} 或 {{名稱:預設值}} 定義變數。',
'snippets.field.variablesDetected': '變數',
'snippets.field.variableDefault': '預設 {value}',
// Serial Port
'serial.button': '序列埠',
'serial.modal.title': '連線序列埠',
'serial.modal.desc': '設定序列埠連線引數',
'serial.field.port': '序列埠',
'serial.field.selectPort': '選擇序列埠...',
'serial.field.baudRate': '鮑率',
'serial.field.dataBits': '資料位',
'serial.field.stopBits': '停止位元',
'serial.field.stopBits15Warning': '1.5 停止位元在 Windows 下可能不被所有裝置支援',
'serial.field.parity': '同位位元',
'serial.field.flowControl': '流量控制',
'serial.noPorts': '未偵測到序列埠裝置。請連線裝置後重新整理。',
'serial.field.customPort': '自訂序列埠路徑',
'serial.field.customPortPlaceholder': '例如 /dev/ttys001 或 COM1',
'serial.type.hardware': '硬體',
'serial.type.pseudo': '虛擬終端',
'serial.type.custom': '自訂',
'serial.parity.none': '無',
'serial.parity.even': '偶同位',
'serial.parity.odd': '奇同位',
'serial.parity.mark': 'Mark',
'serial.parity.space': 'Space',
'serial.flowControl.none': '無',
'serial.flowControl.xon/xoff': 'XON/XOFF (軟體)',
'serial.flowControl.rts/cts': 'RTS/CTS (硬體)',
'serial.field.localEcho': '強制本機回顯',
'serial.field.localEchoDesc': '本機回顯輸入字元(用於沒有遠端回顯的裝置)',
'serial.field.lineMode': '行模式',
'serial.field.lineModeDesc': '緩衝輸入,按 Enter 鍵後傳送(而不是逐字元傳送)',
'serial.field.backspaceBehavior': '退格鍵',
'serial.field.backspaceBehaviorDesc': '如果網路裝置不回應預設退格鍵,請改用 Ctrl+H。',
'serial.backspace.default': '預設DEL0x7F',
'serial.backspace.ctrlH': 'Ctrl+HBS0x08',
'serial.field.charset': '字元編碼',
'serial.connectionError': '連線序列埠失敗',
'serial.field.baudRatePlaceholder': '選擇或輸入鮑率...',
'serial.field.baudRateEmpty': '輸入自訂鮑率',
'serial.field.customBaudRate': '使用自訂鮑率',
'serial.field.saveConfig': '儲存設定',
'serial.field.saveConfigDesc': '將此序列埠設定儲存到主機列表以便快速存取',
'serial.field.configLabel': '設定名稱',
'serial.field.configLabelPlaceholder': '例如 Arduino Uno',
'serial.connectAndSave': '連線並儲存',
'serial.edit.title': '序列埠設定',
// Keyboard Interactive Authentication (2FA/MFA)
'keyboard.interactive.title': '需要驗證',
'keyboard.interactive.desc': '伺服器需要額外的身分驗證。',
'keyboard.interactive.descWithHost': '伺服器 {hostname} 需要額外的身分驗證。',
'keyboard.interactive.response': '回應',
'keyboard.interactive.enterCode': '輸入驗證碼',
'keyboard.interactive.enterResponse': '輸入回應',
'keyboard.interactive.submit': '提交',
'keyboard.interactive.verifying': '驗證中...',
'keyboard.interactive.savePassword': '儲存密碼',
// Passphrase Modal for encrypted SSH keys
'passphrase.title': 'SSH 金鑰密碼',
'passphrase.desc': '請輸入 {keyName} 的密碼',
'passphrase.descWithHost': '請輸入 {keyName} 的密碼以連線到 {hostname}',
'passphrase.label': '密碼',
'passphrase.keyPath': '金鑰',
'passphrase.unlock': '解鎖',
'passphrase.unlocking': '解鎖中...',
'passphrase.skip': '跳過',
'passphrase.remember': '記住此密碼',
// Text Editor
'sftp.editor.wordWrap': '自動換行',
'sftp.editor.maximize': '最大化',
'sftp.editor.unsavedTitle': '未儲存的修改',
'sftp.editor.unsavedMessage': '{fileName} 有未儲存的修改,是否儲存後關閉?',
'sftp.editor.discardChanges': '不儲存',
'sftp.editor.saveAndClose': '儲存並關閉',
'sftp.editor.quitBlockedByDirty': '存在未儲存的編輯器,請先處理後再離開',
};

File diff suppressed because it is too large Load Diff