feat(i18n): add multi-language support (ja/ko/vi/ru/zh-TW) with system auto-detection

- Extend AppLanguage to 7 locales: zh-CN, zh-TW, en, ja, ko, vi, ru
- Auto-detect system language via navigator.languages; fallback to English
- Add BCP47 locale mapping for date formatting and sorting
- Create 50 translation JSON files (5 languages × 10 namespaces, 1137 keys each)
- Update language selector with native language names
- Extend locale key parity test to cover all 7 languages (70 assertions)
- Add VNC/RDP desktop, serial terminal, AI agent, port forwarding, and SFTP features
- Add credential encryption, host metrics, session backup crypto, and zmodem bridge
- Update Rust backend: desktop services, host metrics, SSH/SFTP enhancements
This commit is contained in:
Logan.Li committed 2026-08-12 00:07:48 +08:00
1 parent fea6d8db04
commit b0d0e3a5f3
301 files changed
+28002 -2705

No files matched your search

+87
View File
@@ -0,0 +1,87 @@
{
"panel": {
"title": "Agent CLI",
"modelConfigured": "{{provider}} · {{model}}",
"modelNotConfigured": "未設定模型",
"sshReady": "SSH · {{target}}",
"sshNotConnected": "未連線遠端 SSH",
"defaultTarget": "目前 SSH 連線",
"emptyHint": "描述維運任務後傳送。可連續追問,或點 + 開新話題。",
"newTopic": "新話題",
"close": "關閉",
"thinking": "思考中…",
"conclusion": "結論",
"copy": "複製",
"copied": "已複製",
"stop": "停止",
"send": "傳送",
"placeholder": "任務或追問…(Enter 傳送,Shift+Enter 換行)",
"hintFollowUp": "繼續追問將帶上本輪上下文",
"hintSelection": "將附帶選中 {{lines}} 行",
"hintSteps": "最多 {{max}} 步 · 不落盤",
"footerNote": "高風險需確認 · critical 拒絕 · 連線不落盤"
},
"safety": {
"aria": "Agent 安全模式",
"strict": {
"label": "嚴格",
"short": "中風險起確認",
"description": "檔案修改、權限調整及更高風險命令需要確認,適合生產或陌生主機。"
},
"relaxed": {
"label": "寬鬆",
"short": "僅高風險確認",
"description": "查看和一般修改自動執行;刪除、重啟、安裝等高風險操作需要確認。"
}
},
"risk": {
"safe": "安全",
"low": "低風險",
"medium": "中風險",
"high": "高風險",
"critical": "禁止執行"
},
"step": {
"round": "第 {{round}} 步",
"awaiting": "待確認",
"running": "執行中",
"done": "完成",
"confirmTitle": "第 {{round}} 步 · {{risk}}",
"confirmMessage": "SSH · {{target}}\n{{mode}}\n\n$ {{command}}",
"rejected": "已拒絕第 {{round}} 步命令。",
"terminated": "已終止",
"stoppedMessage": "已終止。正在執行的遠端命令已請求中斷。"
},
"confirm": {
"reject": "Reject",
"once": "Once",
"always": "Always",
"hint": "Enter · Once Esc · Reject Always · 本連線同類命令不再確認"
},
"error": {
"noProvider": "請先在設定 → 大模型設定 Provider",
"noApiKey": "「{{provider}}」尚未儲存 API Key",
"emptyTask": "請輸入任務或追問",
"sshRequired": "需要已連線的遠端 SSH",
"modelEmpty": "模型未傳回內容",
"protocolFailed": "模型連續兩次未遵循協定,已停止",
"noConclusion": "模型未傳回可用結論",
"multipleCommands": "模型一次傳回了多個命令,已拒絕執行",
"invalidCommand": "模型未傳回唯一的單行命令,已拒絕執行",
"repeatLoop": "偵測到重複命令迴圈,已停止:{{command}}",
"criticalBlocked": "命令命中破壞性操作硬紅線,不提供確認放行:{{command}}",
"execFailed": "ssh-exec 失敗:{{error}}",
"execUnknown": "未知錯誤",
"execNoOutput": "命令執行完成,無輸出",
"maxSteps": "已達 {{max}} 步上限,請縮小範圍後重試"
},
"output": {
"empty": "(空輸出)",
"truncatedMiddle": "... [已省略 {{count}} 行] ...",
"totalLines": "總行數: {{count}}{{truncatedSuffix}}",
"truncatedSuffix": "(已截斷保留首尾)",
"errorLines": "疑似錯誤/告警行 ({{count}}):\n{{lines}}",
"noErrorKeywords": "未發現明顯錯誤關鍵字",
"snippetLabel": "輸出片段:\n{{snippet}}"
}
}
+335
View File
@@ -0,0 +1,335 @@
{
"action": {
"confirm": "確認",
"cancel": "取消",
"close": "關閉",
"delete": "刪除",
"save": "儲存",
"create": "建立",
"copy": "複製",
"copied": "已複製",
"refresh": "重新整理",
"gotIt": "知道了",
"edit": "編輯",
"open": "開啟",
"clone": "克隆",
"reconnect": "重連",
"disconnect": "中斷",
"submit": "確定"
},
"status": {
"loading": "載入中...",
"processing": "處理中...",
"connecting": "連線中...",
"connected": "已連線",
"disconnected": "未連線",
"background": "背景",
"suspended": "已暫停",
"reconnecting": "重連中",
"error": "連線錯誤",
"reading": "讀取中...",
"saving": "儲存中..."
},
"error": {
"title": "出錯了",
"body": "應用遇到意外問題",
"recoverable": "此錯誤可恢復,請嘗試重新整理頁面",
"refreshPage": "重新整理頁面",
"restartApp": "重新啟動應用",
"supportHint": "若問題持續存在,請檢查日誌或聯繫支援"
},
"toast": {
"closeAria": "關閉通知"
},
"metrics": {
"timezone": "時區 {{value}}",
"memory": "記憶體 {{percent}}%{{detail}}",
"sessionTransfer": "連線流量 {{value}}"
},
"palette": {
"title": "命令面板",
"aria": "命令面板",
"placeholder": "搜尋命令、連線或片段...",
"empty": "沒有找到符合的結果",
"emptyHint": "試試其他關鍵字",
"resultCount": "{{count}} 個結果",
"badge": {
"command": "命令",
"session": "連線",
"snippet": "片段"
},
"hint": {
"nav": "導覽",
"run": "執行",
"close": "關閉"
},
"cmd": {
"newSession": "新增連線",
"newSessionDesc": "建立新的 SSH 連線設定",
"quickConnect": "快速連線",
"quickConnectDesc": "直接輸入主機資訊連線",
"localTerminal": "本地終端機",
"localTerminalDesc": "開啟本機 Shell",
"settings": "開啟設定",
"settingsDesc": "應用偏好設定",
"toggleSidebar": "摺疊/展開側欄",
"toggleSidebarDesc": "隱藏側欄以專注操作終端機",
"newTab": "新增分頁",
"closeTab": "關閉目前分頁",
"closeAllTabs": "關閉所有分頁",
"portForward": "新增埠轉發",
"upgradePro": "升級 OpsXShell Pro",
"editSession": "編輯連線: {{name}}"
}
},
"tab": {
"welcome": "歡迎",
"new": "新分頁",
"settings": "設定",
"portForward": "埠轉發",
"terminal": "終端機",
"batch": "批次執行",
"newTerminal": "新終端機",
"kind": {
"terminal": "終端機",
"sftp": "SFTP",
"portforward": "轉發",
"serial": "序列埠",
"rdp": "RDP",
"vnc": "VNC",
"batch": "批次",
"settings": "設定"
},
"menu": {
"closeOthers": "關閉其他",
"closeRight": "關閉右側分頁",
"closeLeft": "關閉左側分頁",
"closeAll": "關閉全部",
"clone": "克隆分頁"
}
},
"sidebar": {
"brandSub": "SSH / SFTP 終端機",
"collapse": "摺疊側欄 (Ctrl/Cmd+B)",
"collapseAria": "摺疊側欄",
"expand": "展開側欄",
"expandAria": "展開側欄",
"toggle": "切換側邊欄",
"searchPlaceholder": "搜尋...",
"localShell": {
"openDefault": "開啟預設本機 Shell",
"choose": "選擇 Shell",
"title": "本機 Shell",
"subtitle": "開啟本機終端機",
"default": "預設"
}
},
"connectionPanel": {
"title": "連線管理",
"empty": "暫無連線",
"emptyDesc": "目前沒有任何活躍連線,連線到伺服器後將在此顯示。",
"stat": {
"total": "總計",
"active": "活躍",
"background": "背景",
"error": "中斷/錯誤"
},
"status": {
"connected": "已連線",
"connecting": "連線中",
"background": "背景",
"suspended": "已暫停",
"error": "錯誤",
"disconnected": "已中斷",
"reconnecting": "重連中"
},
"refCount": "×{{count}} 引用",
"reconnect": "重連",
"reconnecting": "重連中...",
"disconnect": "中斷"
},
"pro": {
"upgrade": "升級 Pro",
"feature": "專業功能",
"unlock": "解鎖 {{feature}}",
"comingSoon": "即將推出",
"activateSuccess": "啟用成功",
"activateFailed": "啟用失敗",
"licenseActivated": "Pro 授權已啟用",
"paymentPending": "付款完成後請貼上授權,或稍後再試啟用",
"invalidLicense": "啟用失敗:授權無效",
"goUpgrade": "前往付費升級",
"haveLicense": "已有授權?啟用",
"title": "OpsXShell Pro · 解鎖專業維運能力",
"subtitleComingSoon": "{{feature}} 即將推出 · 升級 Pro 可優先體驗",
"subtitleUnlock": "正在解鎖:{{feature}}",
"subtitleDefault": "轉發、代理、序列埠、AI、批次與廣播",
"activated": "已啟用 Pro",
"expiresAt": " · 有效期至 {{date}}",
"lifetime": " · 終身授權",
"oneTimeFee": "一次性費用 · 本機終身授權 · 無需訂閱",
"pasteLicense": "貼上授權",
"activateButton": "啟用",
"clearLicense": "清除本機授權",
"paymentNote": "付款由 Waffo 託管收銀台處理;本應用不收集或儲存信用卡資料。",
"testDeviceId": "測試環境 · 裝置 ID:{{deviceId}}",
"later": "稍後再說",
"viewPro": "檢視 Pro",
"wallComingSoonSuffix": " · 即將推出",
"wallUnlock": "解鎖 {{feature}}",
"wallMessageComingSoon": "此能力屬於 OpsXShell Pro,協定實現尚在開發中。升級後可優先體驗。",
"wallMessageDefault": "此功能屬於 OpsXShell Pro。升級後即可在本機使用。",
"checkoutUnavailable": "結帳服務無法使用 ({{status}})",
"freeTier": "Free",
"proTier": "Pro",
"freeItems": {
"ssh": "SSH 終端機",
"sftp": "SFTP 檔案管理",
"local": "本機終端機",
"crud": "連線 CRUD",
"import": "單筆 / ssh_config 匯入"
},
"proItems": {
"forward": "埠轉發",
"proxy": "連線代理 / SOCKS",
"serial": "序列埠終端機",
"ai": "終端機 AI 助手",
"batch": "批次執行 / 廣播同步",
"broadcast": "廣播同步輸入",
"importExport": "批次匯入匯出主機清單",
"desktop": "RDP / VNC 遠端桌面"
}
},
"launcher": {
"title": "快速啟動",
"description": "連線、本機 Shell 與裝置控制台統一入口",
"cards": {
"quickConnect": {
"title": "快速連線",
"desc": "user@host:port"
},
"saveSession": {
"title": "儲存連線",
"desc": "憑證、群組、代理"
},
"serial": {
"title": "序列埠終端機",
"desc": "鮑率與序列埠參數"
}
},
"sectionLocalShell": "本機 Shell",
"sectionSavedSessions": "儲存連線",
"systemDefault": "系統預設"
},
"statusBar": {
"socksLabel": "轉發",
"socksIdle": "開啟埠轉發 · 右鍵複製 SOCKS 位址",
"socksRunning": "SOCKS5 執行中 · 點擊管理 · 右鍵複製",
"forwardOpenIdle": "開啟埠轉發 · 右鍵複製 socks5://127.0.0.1:{{port}}",
"forwardOpenRunning": "SOCKS5 已開(:{{port}})· 點擊管理 · 右鍵複製",
"forwardStarted": "轉發已啟動",
"forwardStartedDynamic": "SOCKS5 已啟動:socks5://127.0.0.1:{{port}}",
"socksStartFailed": "啟動失敗:{{message}}",
"socksStopFailed": "停止失敗:{{message}}",
"socksCopied": "已複製 socks5://127.0.0.1:{{port}}"
},
"portForward": {
"title": "埠轉發",
"connectedAs": "已連線:{{target}}",
"notConnected": "未連線 — 請先建立 SSH 連線",
"socksDefaultHint": "本機 SOCKS5:127.0.0.1:1080",
"socksRunning": "SOCKS5 執行中",
"socksStart": "啟動 SOCKS5",
"addRule": "新增",
"emptyTitle": "暫無埠轉發",
"emptyDesc": "可啟動 SOCKS5,或新增本地 / 遠端規則",
"emptyAction": "啟動 127.0.0.1:1080",
"typeLocal": "本地",
"typeRemote": "遠端",
"typeDynamic": "動態",
"running": "執行中",
"socksProxy": "SOCKS5:127.0.0.1:{{port}}",
"remoteToLocal": "遠端 {{remote}} → 本機 {{local}}",
"stats": "{{connections}} 連線 · ↑{{up}} · ↓{{down}}",
"copyProxy": "複製代理",
"copyRule": "複製規則",
"editRule": "編輯",
"stopListener": "停止",
"start": "啟動",
"delete": "刪除",
"editTitle": "編輯轉發",
"addTitle": "新增轉發",
"typeLocalDesc": "本機 → 遠端",
"typeRemoteDesc": "遠端 → 本機",
"typeDynamicDesc": "SOCKS5",
"selectType": "轉發類型",
"drawerSubtitle": "經目前 SSH 建立通道",
"ruleFields": "參數",
"dynamicHint": "本機 SOCKS5:127.0.0.1:1080。流量經目前 SSH 伺服器出口 IP 存取外部網路。",
"dynamicSingleHint": "每台 SSH 僅一條動態轉發,連接埠固定 1080。",
"dynamicPortHint": "If the port is busy, pick another local port (e.g. 1081).",
"ruleList": "規則",
"ruleListEmpty": "暫無本地 / 遠端規則",
"addSection": "新增",
"errorDynamicExists": "動態轉發已存在(1080),請直接啟停。",
"diagram": {
"title": "流量示意",
"localApp": "本機應用",
"sshHost": "SSH 主機",
"remoteService": "遠端服務",
"remoteClient": "遠端存取方",
"localService": "本機服務",
"localClient": "本機",
"browser": "本機客戶端",
"socksProxy": "本機 SOCKS",
"anyTarget": "任意目標",
"localSide": "本機",
"remoteSide": "遠端",
"firewall": "防火牆",
"viaApp": "經 OpsXShell",
"viaSsh": "經 SSH",
"toTarget": "到目標",
"toListen": "到監聽",
"targetDb": "DB",
"targetWeb": "Web",
"targetApi": "API",
"remotePeerA": "遠端 A",
"remotePeerB": "遠端 B",
"remotePeerC": "遠端 C",
"cloudA": "雲 A",
"cloudB": "雲 B",
"internet": "網際網路",
"localCaption": "本地轉發:經通道存取遠端連接埠,如同存取本機。",
"remoteCaption": "遠端轉發:遠端存取經通道轉到本機服務。",
"dynamicCaption": "動態轉發:本機變成 SOCKS5 代理,可經目前 SSH 伺服器出口 IP 存取網際網路。"
},
"ruleName": "名稱",
"ruleNamePlaceholder": "例如 MySQL",
"localListenPort": "本機監聽連接埠",
"localTargetPort": "本機目標連接埠",
"remoteTargetPort": "遠端目標連接埠",
"remoteListenPort": "遠端監聽連接埠",
"portPlaceholder": "如 3306",
"remoteHost": "遠端主機",
"remoteHostPlaceholder": "localhost 或 IP",
"socksRuleName": "SOCKS5 代理",
"defaultLocalName": "本地轉發",
"defaultRemoteName": "遠端轉發",
"sessionRestoredTitle": "連線已恢復",
"sessionRestoredDesc": "上次關閉時的埠轉發分頁已恢復\n需要重新建立 SSH 連線才能使用",
"stopEditTitle": "停止後編輯",
"stopEditMessage": "轉發執行中,編輯前需先停止。是否繼續?",
"stopEditConfirm": "停止並編輯",
"deleteTitle": "確認刪除",
"deleteRunning": "轉發執行中,將先停止再刪除。",
"deleteConfirm": "確定刪除此規則?",
"errorNamePort": "請填寫名稱和有效連接埠(1–65535)",
"errorTargetPort": "請填寫有效目標連接埠(1–65535)",
"errorRemoteHost": "請填寫遠端主機",
"errorNotConnected": "未連線到伺服器",
"errorStartFailed": "啟動失敗",
"errorStopFailed": "停止失敗",
"errorSocksRunning": "SOCKS5 已在執行",
"copySuffix": "副本"
}
}
+44
View File
@@ -0,0 +1,44 @@
{
"connect": {
"rdpTitle": "連線 RDP",
"vncTitle": "連線 VNC",
"rdpDesc": "Windows 遠端桌面 · 原生 IronRDP 引擎",
"vncDesc": "VNC / RFB 遠端桌面 · 原生引擎",
"confirm": "連線",
"host": "主機",
"hostPlaceholderRdp": "windows.example.com",
"hostPlaceholderVnc": "192.168.1.10",
"port": "連接埠",
"username": "使用者名稱",
"domain": "網域(可選)",
"password": "密碼",
"passwordOptional": "密碼(可選)",
"width": "寬度",
"height": "高度",
"rdpFootnote": "原生 IronRDP:TCP → X.224 → TLS → CredSSP/NLA → MCS;握手逾時 45s。憑證校驗目前為開發期寬鬆模式。",
"vncFootnote": "原生 vnc-rs RFB:支援 Tight JPEG 畫面解碼;剪貼簿按 UTF-8 傳送(極舊服務端可能亂碼)。",
"errorHostRequired": "請輸入主機位址",
"errorUsernameRequired": "請輸入使用者名稱"
},
"toolbar": {
"pasteClipboard": "貼上本機剪貼簿到遠端",
"pasteAria": "貼上到遠端",
"shareDrive": "把本機檔案複製到共享磁碟(本機「下載」= 遠端「Downloads on OpsXShell」)",
"shareDriveAria": "放入共享磁碟",
"openShareDir": "在本機開啟共享目錄(下載資料夾)",
"openShareDirAria": "開啟共享目錄",
"disconnect": "中斷連線",
"disconnectAria": "中斷連線"
},
"status": {
"connecting": "正在連線…",
"connected": "已連線",
"disconnected": "已中斷",
"connectFailed": "連線失敗",
"clipboardSynced": "已同步遠端剪貼簿",
"savedToDownloads": "已儲存到本機下載資料夾:{{name}}",
"pastedToRemote": "已貼上到遠端",
"fileTooLarge": "單檔上限 50MB",
"fileShared": "已放入共享磁碟「下載」:{{name}}(遠端本機可見)"
}
}
+161
View File
@@ -0,0 +1,161 @@
{
"code": {
"1000": "連線失敗,請檢查網路或主機位址",
"1001": "連線逾時,請檢查網路或稍後重試",
"1002": "認證失敗,請檢查使用者名稱和密碼",
"1003": "主機不可達,請檢查網路設定",
"1004": "連線已關閉",
"1100": "終端機建立失敗",
"1101": "命令執行失敗",
"1102": "埠轉發設定失敗",
"1200": "SFTP 連線失敗",
"1201": "檔案不存在",
"1202": "權限不足,無法存取該檔案或目錄",
"1203": "檔案傳輸失敗",
"1204": "無法讀取目錄內容",
"1300": "連線不存在",
"1301": "儲存連線失敗",
"1302": "載入連線失敗",
"1400": "主機位址格式不正確",
"1401": "連接埠必須在 1-65535 之間",
"1402": "憑證格式不正確",
"9000": "發生未知錯誤",
"9001": "內部通訊錯誤",
"9002": "檔案系統錯誤",
"9003": "網路錯誤"
},
"action": {
"retry": "重試",
"reconnect": "重新連線",
"ignore": "忽略",
"exit": "結束",
"none": "無"
},
"connection": {
"failed": "連線失敗,請檢查網路或主機位址",
"timeout": "連線逾時,請檢查網路或稍後重試",
"authFailed": "認證失敗,請檢查使用者名稱和密碼",
"hostUnreachable": "主機不可達,請檢查網路設定",
"closed": "連線已關閉",
"dnsFailed": "無法解析主機",
"refused": "連線被拒絕",
"disconnected": "連線已中斷"
},
"auth": {
"failed": "認證失敗,請檢查使用者名稱和密碼",
"invalidCredentials": "憑證格式不正確",
"keyLoadFailed": "無法載入私鑰",
"passphraseRequired": "私鑰需要口令",
"passphraseWrong": "私鑰口令不正確"
},
"shell": {
"createFailed": "終端機建立失敗",
"execFailed": "命令執行失敗",
"localCreateFailed": "建立本機 Shell 失敗",
"remoteCreateFailed": "建立遠端 Shell 失敗"
},
"proxy": {
"connectFailed": "代理連線失敗",
"authFailed": "代理認證失敗",
"tunnelFailed": "代理通道建立失敗",
"unsupported": "不支援的代理類型",
"jumpFailed": "跳板機連線失敗",
"hostRequired": "代理 host 不能為空",
"hostNoSpaces": "代理 host 不能包含空格",
"portRequired": "代理 port 必須大於 0",
"portTooHigh": "代理 port 不能超過 65535"
},
"forward": {
"failed": "埠轉發設定失敗",
"bindFailed": "連接埠綁定失敗",
"alreadyInUse": "連接埠已被佔用"
},
"sftp": {
"connectFailed": "SFTP 連線失敗",
"fileNotFound": "檔案不存在",
"permissionDenied": "權限不足,無法存取該檔案或目錄",
"transferFailed": "檔案傳輸失敗",
"listFailed": "無法讀取目錄內容",
"readFailed": "讀取失敗",
"writeFailed": "儲存失敗",
"renameFailed": "重新命名失敗",
"chmodFailed": "權限修改失敗",
"apiUnavailable": "SFTP API 無法使用"
},
"session": {
"notFound": "連線不存在",
"saveFailed": "儲存連線失敗",
"loadFailed": "載入連線失敗",
"readConfigFailed": "無法讀取連線設定",
"exportWriteFailed": "寫入匯出檔案失敗",
"exportFailed": "匯出連線失敗",
"importReadFailed": "讀取檔案失敗",
"importFailed": "匯入連線失敗",
"importEmpty": "未找到可匯入的連線"
},
"validation": {
"invalidHost": "主機位址格式不正確",
"invalidPort": "連接埠必須在 1-65535 之間",
"invalidCredentials": "憑證格式不正確",
"hostRequired": "請輸入主機位址",
"usernameRequired": "請輸入使用者名稱",
"targetRequired": "請輸入主機,例如 root@192.168.1.10 或 opsbase.cn:5555",
"serialPathRequired": "請輸入序列埠裝置路徑",
"taskRequired": "請輸入任務或追問"
},
"filesystem": {
"error": "檔案系統錯誤",
"readFailed": "讀取檔案失敗",
"writeFailed": "寫入檔案失敗"
},
"clipboard": {
"readFailed": "讀取剪貼簿失敗",
"writeFailed": "寫入剪貼簿失敗",
"copyPathFailed": "複製路徑失敗",
"unsupportedRead": "目前環境不支援讀取剪貼簿",
"unsupportedWrite": "目前環境不支援寫入剪貼簿"
},
"ipc": {
"error": "內部通訊錯誤",
"nativeApiUnavailable": "原生 API 無法使用"
},
"network": {
"error": "網路錯誤"
},
"pool": {
"limitReached": "連線數達到上限 ({{max}}),請先關閉一些連線"
},
"desktop": {
"connectFailed": "連線失敗",
"fileTooLarge": "單檔上限 50MB",
"nativeOnly": "遠端連線僅在 OpsXShell Tauri 原生應用中可用",
"rdpNativeOnly": "RDP 僅在 OpsXShell Tauri 原生應用中可用",
"vncNativeOnly": "VNC 僅在 OpsXShell Tauri 原生應用中可用"
},
"serial": {
"openFailed": "開啟序列埠失敗",
"writeFailed": "序列埠寫入失敗",
"nativeOnly": "序列埠僅在 Tauri 原生應用中可用"
},
"ai": {
"noProvider": "請先在設定 → 大模型設定 Provider",
"noApiKey": "「{{provider}}」尚未儲存 API Key",
"modelEmpty": "模型未傳回內容",
"protocolFailed": "模型連續兩次未遵循協定,已停止",
"noConclusion": "模型未傳回可用結論",
"multipleCommands": "模型一次傳回了多個命令,已拒絕執行",
"invalidCommand": "模型未傳回唯一的單行命令,已拒絕執行",
"repeatLoop": "偵測到重複命令迴圈,已停止:{{command}}",
"criticalBlocked": "命令命中破壞性操作硬紅線,不提供確認放行:{{command}}",
"execFailed": "ssh-exec 失敗:{{error}}",
"maxSteps": "已達 {{max}} 步上限,請縮小範圍後重試",
"sshRequired": "需要已連線的遠端 SSH"
},
"zmodem": {
"readFailed": "讀取失敗: {{name}}",
"writeFailed": "寫入失敗: {{name}}"
},
"unknown": {
"error": "發生未知錯誤"
}
}
+44
View File
@@ -0,0 +1,44 @@
{
"connect": {
"title": "連線序列埠",
"description": "原生序列埠終端機 · 適用於路由器、交換器、開發板與除錯控制台",
"confirm": "開啟序列埠",
"device": "裝置",
"refresh": "重新整理",
"devicePlaceholder": "{{path}}",
"noDevicesHint": "未列舉到裝置時可直接輸入路徑,例如 {{examples}}。",
"examplesWindows": "{{default}}、COM3",
"examplesLinux": "{{default}}、/dev/ttyACM0",
"examplesMac": "{{default}}、/dev/tty.usbserial-*",
"baudRate": "鮑率",
"dataBits": "資料位元",
"stopBits": "停止位元",
"parity": "同位檢查",
"parityNone": "無",
"parityOdd": "奇同位",
"parityEven": "偶同位",
"flowControl": "流量控制",
"flowNone": "無",
"flowSoftware": "軟體 XON/XOFF",
"flowHardware": "硬體 RTS/CTS",
"lineEnding": "行尾",
"lineEndingLf": "LF (\\n)",
"lineEndingCr": "CR (\\r)",
"lineEndingCrlf": "CRLF (\\r\\n)",
"localEcho": "本機回顯",
"localEchoHint": "(半雙工除錯)",
"errorPathRequired": "請輸入序列埠裝置路徑"
},
"terminal": {
"title": "序列埠",
"connected": "已連線",
"disconnected": "未連線",
"connecting": "連線中…",
"error": "序列埠錯誤",
"configSummary": "{{path}} · {{baud}} · {{dataBits}}-{{parity}}-{{stopBits}}",
"opening": "正在開啟 {{path}} @ {{baud}}...",
"openFailed": "開啟序列埠失敗: {{message}}",
"connectedBanner": "已連線 {{path}} · {{baud}} {{frame}} · {{lineEnding}}{{echo}}",
"localEchoSuffix": " · 本機回顯"
}
}
+237
View File
@@ -0,0 +1,237 @@
{
"sidebar": {
"quickConnect": "快速連線",
"quickConnectShort": "快連",
"newSession": "新增連線",
"newSessionShort": "新增",
"searchPlaceholder": "搜尋連線...",
"batchMode": "批次操作",
"exitBatchMode": "結束批次操作",
"batchSelected": "已選 {{count}} 個 SSH",
"batchExcludedDesktop": " · 已排除 RDP/VNC",
"selectAllVisible": "全選目前結果",
"deselectAllVisible": "取消目前結果",
"batchExec": "批次執行",
"settings": "設定",
"resizeHint": "拖曳調整寬度,雙擊摺疊"
},
"tree": {
"selectSession": "選擇連線",
"noMatchTitle": "未找到符合的連線",
"noMatchDesc": "嘗試其他關鍵字",
"emptyTitle": "暫無連線",
"emptyDesc": "快速連線或新增連線,雙擊即可進終端機",
"emptyAction": "新增連線"
},
"contextMenu": {
"blank": {
"newGroup": "新增群組",
"newSession": "新增連線"
},
"group": {
"newSessionHere": "在此新增連線",
"newGroup": "新增群組",
"renameGroup": "重新命名群組",
"deleteEmptyGroup": "刪除空群組"
},
"session": {
"open": "開啟",
"edit": "編輯",
"duplicate": "克隆",
"delete": "刪除"
}
},
"groups": {
"default": "預設群組",
"new": {
"title": "新增群組",
"message": "輸入群組名稱",
"placeholder": "如:生產環境",
"confirm": "建立"
},
"rename": {
"title": "重新命名群組",
"message": "將「{{name}}」改為",
"placeholder": "群組名稱",
"confirm": "儲存"
},
"deleteBlocked": {
"title": "無法刪除",
"message": "群組「{{name}}」內還有連線,請先移出或刪除連線。",
"confirm": "知道了"
},
"newOption": "新增群組…",
"hint": "預設使用「預設群組」;也可選已有群組或新增"
},
"deleteSession": {
"title": "確認刪除",
"message": "確定刪除連線 \"{{name}}\"?",
"confirm": "刪除"
},
"welcome": {
"tagline": "遠端終端機 · SFTP · 埠轉發",
"sectionStart": "開始",
"sectionDesktop": "遠端桌面",
"sectionRecent": "最近連線",
"quickConnect": {
"title": "快速連線",
"desc": "臨時 SSH,不寫入連線庫"
},
"newSession": {
"title": "新增連線",
"desc": "儲存主機,側欄雙擊連線"
},
"localShell": {
"title": "本機 Shell",
"selectShell": "選擇 Shell",
"default": "預設"
},
"rdp": {
"title": "RDP 遠端桌面",
"desc": "Windows · NLA / CredSSP"
},
"vnc": {
"title": "VNC 遠端桌面",
"desc": "RFB · 跨平台圖形連線"
},
"recentEmpty": {
"title": "暫無已儲存連線",
"desc": "用快速連線試連,或新增連線以便重用"
}
},
"launcher": {
"searchPlaceholder": "搜尋主機、群組或分頁"
},
"quickConnect": {
"title": "快速連線",
"target": "目標",
"targetPlaceholder": "root@192.168.1.10:22",
"targetHint": "支援 host、user@host、user@host:port",
"password": "密碼",
"passwordOptional": "可選 · 用金鑰可留空",
"connect": "連線",
"errorInvalidTarget": "請輸入主機,例如 root@192.168.1.10 或 opsbase.cn:5555",
"errorConnectFailed": "連線失敗"
},
"dialog": {
"create": "新增連線",
"edit": "編輯連線",
"subtitle": "目標一行搞定 · 進階可摺疊",
"saving": "儲存中…",
"save": "儲存",
"createAndSave": "建立並儲存",
"basic": "基本",
"login": "登入",
"advanced": "進階選項",
"advancedCollapsed": "代理 · 跳板 · 標籤",
"collapse": "收起",
"protocol": "通訊協定",
"displayName": "顯示名稱(可選)",
"displayNamePlaceholder": "自動用 user@host 或 vnc:host",
"host": "主機",
"hostPlaceholder": "192.168.1.10",
"hostHint": "填寫 IP 或網域名稱;也可貼上 host:port",
"port": "連接埠",
"username": "使用者名稱",
"usernamePlaceholderRdp": "Administrator",
"usernamePlaceholderSsh": "root",
"width": "寬",
"height": "高",
"group": "群組",
"authPassword": "密碼",
"authKey": "金鑰",
"password": "密碼",
"domain": "網域(可選)",
"domainPlaceholder": "不常用,企業網域帳號再填",
"keySource": "金鑰來源",
"keyFile": "檔案",
"keyText": "文字",
"privateKeyPath": "私鑰路徑",
"privateKeyText": "私鑰內容",
"privateKeyTextHint": "貼上的私鑰會加密後落盤,與密碼相同處理",
"pickKeyFile": "選擇…",
"pickKeyDialogTitle": "選擇私鑰檔案",
"allFilesFilter": "所有檔案",
"passphrase": "金鑰口令(可選)",
"passphrasePlaceholder": "可選",
"tags": "標籤",
"tagsPlaceholder": "prod, web",
"startupCommand": "啟動命令(可選)",
"startupCommandPlaceholder": "連線後自動執行,如 cd /var/log",
"proxy": "代理",
"proxyNone": "無",
"proxyHostPlaceholder": "代理位址",
"proxyPortPlaceholder": "連接埠",
"proxyUserPlaceholder": "使用者名稱(可選)",
"proxyPasswordPlaceholder": "密碼(可選)",
"jumpHost": "跳板機(可選)",
"jumpNone": "無跳板",
"jumpNoneAlt": "不使用跳板",
"jumpHint": "目前支援一個已儲存連線作為跳板"
},
"batch": {
"title": "批次執行",
"subtitle": "已選 {{selected}} 台 · 並發 {{concurrency}} · 關閉分頁即丟棄結果",
"dialogTitle": "批次命令",
"dialogDesc": "已選 {{selected}}/{{total}} 台主機 · 最大並發 {{concurrency}}",
"targetCount": "目標 {{count}} 台",
"runningProgress": "執行中 {{completed}}/{{total}}",
"execute": "執行 {{count}} 台",
"executeAgain": "再次執行",
"success": "成功 {{count}}",
"failed": "失敗 {{count}}",
"command": "遠端命令",
"commandPlaceholder": "例如:uptime",
"targets": "目標主機",
"filterPlaceholder": "名稱、IP、群組或標籤",
"filterAria": "篩選主機",
"noMatchHosts": "沒有符合的主機",
"resultMatrix": "結果矩陣",
"resultMatrixHint": "主機 × 狀態 × 輸出",
"emptySelection": "從左側選擇目標主機,或在側欄批次模式保留選取後開啟",
"noOutput": "(無輸出)",
"errorReadConfig": "無法讀取連線設定",
"errorConnectFailed": "連線失敗",
"errorExecFailed": "命令執行失敗",
"results": "執行結果",
"resultsHint": "輸出僅保留在目前彈窗內",
"ctrlEnterHint": "Ctrl/⌘ + Enter 執行",
"executeTo": "執行到 {{count}} 台",
"selectFromLeft": "請從左側選擇目標主機"
},
"importExport": {
"exportTitle": "匯出連線",
"exportDefaultPath": "opsxshell-sessions.bak",
"exportFilterBak": "OpsXShell 備份",
"exportFilterJson": "JSON",
"exportSuccess": "已匯出 {{count}} 個連線到:\n{{path}}",
"exportWriteFailed": "寫入匯出檔案失敗",
"exportFailed": "匯出連線失敗",
"exportFailedDetail": "匯出連線失敗:{{message}}",
"exportPasswordTitle": "設定備份密碼",
"exportPasswordMessage": "匯出檔案將加密儲存主機群組、私鑰、密碼等敏感資料。請設定備份密碼。",
"exportPasswordPlaceholder": "輸入備份密碼",
"exportPasswordConfirmTitle": "確認備份密碼",
"exportPasswordConfirmMessage": "請再次輸入備份密碼以確認。",
"exportPasswordConfirmPlaceholder": "再次輸入備份密碼",
"exportPasswordMismatch": "兩次輸入的密碼不一致",
"exportPasswordRequired": "必須設定備份密碼才能匯出",
"importTitle": "匯入連線",
"importFilterBak": "OpsXShell 備份",
"importFilterJson": "JSON",
"importFilterSshConfig": "SSH Config",
"importFilterAll": "所有檔案",
"readFileFailed": "讀取檔案失敗",
"readFileFailedDetail": "讀取檔案失敗:{{message}}",
"importPasswordTitle": "輸入備份密碼",
"importPasswordMessage": "此檔案已加密,請輸入匯出時設定的密碼以匯入主機群組與金鑰等資料。",
"importPasswordPlaceholder": "輸入備份密碼",
"importPasswordRequired": "需要密碼才能匯入加密備份",
"importPasswordInvalid": "備份密碼不正確,或檔案已損壞",
"noSessionsFound": "未找到可匯入的連線",
"noValidSessions": "檔案中沒有有效的連線設定",
"importSuccess": "成功匯入 {{created}}/{{total}} 個連線",
"importFailed": "匯入連線失敗",
"importFailedDetail": "匯入連線失敗:{{message}}"
}
}
+174
View File
@@ -0,0 +1,174 @@
{
"nav": {
"general": "工作區",
"generalDesc": "版面與資源",
"appearance": "外觀",
"appearanceDesc": "介面主題與語言",
"terminal": "終端機",
"terminalDesc": "字型與配色",
"shortcuts": "快捷鍵",
"shortcutsDesc": "鍵盤綁定",
"ssh": "SSH",
"sshDesc": "連線與連線池",
"security": "安全",
"securityDesc": "憑證與主機金鑰",
"ai": "大模型",
"aiDesc": "AI Provider",
"about": "關於",
"aboutDesc": "版本與資料"
},
"title": "設定",
"search": {
"placeholder": "搜尋設定..."
},
"language": {
"label": "介面語言",
"description": "切換後立即生效",
"zhCN": "简体中文",
"zhTW": "繁體中文",
"en": "English",
"ja": "日本語",
"ko": "한국어",
"vi": "Tiếng Việt",
"ru": "Русский"
},
"general": {
"layout": "工作區版面",
"sidebarWidth": "側欄寬度",
"sidebarWidthDesc": "連線側欄的預設寬度",
"collapseSidebar": "摺疊側欄",
"collapseSidebarDesc": "隱藏連線樹以專注操作終端機,可用 Ctrl/Cmd+B 切換"
},
"appearance": {
"themeGroup": "介面主題",
"theme": "主題",
"themeDesc": "應用介面配色(與終端機配色無關)",
"dark": "深色",
"light": "淺色",
"system": "跟隨系統"
},
"terminal": {
"fontGroup": "字型與字號",
"fontFamily": "字型",
"fontFamilyDesc": "需 Nerd Font 才能正確顯示 Zsh 提示字元圖示",
"fontSize": "字號",
"fontSizeDesc": "終端機文字大小",
"scrollback": "回捲緩衝",
"scrollbackDesc": "每個終端機保留的歷史行數",
"keywordHighlight": "關鍵字高亮",
"keywordHighlightDesc": "突顯錯誤、警告和成功狀態",
"colorTheme": "配色主題"
},
"shortcuts": {
"resetAll": "重置全部為預設",
"custom": "自訂",
"pressKeys": "按下快捷鍵...",
"resetDefault": "重置為預設",
"conflict": "與「{{label}}」衝突",
"setTo": "設定為 {{keys}}",
"hint": "點擊快捷鍵可重新綁定 · 按 Esc 取消錄入",
"category": {
"tabs": "分頁管理",
"view": "檢視",
"session": "連線",
"tools": "工具"
},
"actions": {
"tabNext": "切換到下一個分頁",
"tabPrev": "切換到上一個分頁",
"tabGotoN": "跳轉到第 N 個分頁",
"tabClose": "關閉目前分頁",
"tabNew": "新增分頁",
"viewFullscreen": "切換全螢幕",
"viewToggleSidebar": "摺疊/展開側欄",
"sessionNew": "新增連線",
"sessionQuickConnect": "快速連線",
"toolsCommandPalette": "命令面板"
}
},
"ssh": {
"connection": "連線",
"keepAlive": "保持心跳",
"keepAliveDesc": "閒置時發送心跳,減少斷線",
"autoReconnect": "自動重連",
"autoReconnectDesc": "意外斷線後自動嘗試重連",
"timeout": "連線逾時",
"timeoutDesc": "建立 SSH 連線的最長等待時間(秒)",
"maxReconnect": "自動重連次數",
"maxReconnectDesc": "意外斷線後的最大嘗試次數",
"pool": "連線池",
"maxConnections": "最大連線數",
"maxConnectionsDesc": "SSH、SFTP 與批次連線共享此上限",
"maxBackground": "背景連線上限",
"maxBackgroundDesc": "超過上限時優先回收最久未使用的連線",
"suspend": "背景暫停",
"suspendDesc": "分頁進入背景後多少分鐘釋放活躍通道"
},
"security": {
"credentials": "憑證保護",
"sessionPassword": "連線密碼與金鑰口令",
"sessionPasswordDesc": "儲存前由 Rust 使用 AES-256-GCM 加密,無法關閉",
"enabled": "已啟用",
"masterKey": "本機主金鑰",
"masterKeyDesc": "僅目前系統使用者可讀取;路徑 ~/.opsxshell/master.key(舊版 ~/.opsxshsell 會自動遷移)",
"knownHosts": "已知主機",
"knownHostsHint": "首次連線會確認主機指紋。重灌/克隆導致金鑰變更時,連線彈窗可選「仍要信任並更新」覆蓋舊記錄。此處可刪除單筆或清空全部。",
"clearAll": "清空",
"removeHost": "刪除此主機記錄",
"empty": "暫無記錄",
"clearConfirm": "確定清空全部已知主機金鑰?下次連線將重新確認。"
},
"about": {
"tagline": "輕量原生的 SSH / SFTP 維運終端機",
"appVersion": "應用 v{{version}}",
"copyVersion": "複製版本資訊",
"runtime": "執行環境",
"system": "系統",
"localData": "本機資料",
"sessionsSettings": "連線與設定",
"masterKeyPath": "加密主金鑰",
"privacyNote": "密碼與金鑰口令由 Rust 使用 AES-256-GCM 加密。OpsXShell 不儲存終端機命令歷史。",
"license": "MIT License · Rust · XTerm.js"
},
"ai": {
"presets": "供應商預設",
"add": "新增",
"configured": "已設定",
"configuredHint": "選擇供應商後點新增",
"emptyHint": "新增一個 Provider 開始",
"noModel": "未選模型",
"name": "名稱",
"model": "模型",
"protocol": "通訊協定",
"auth": "認證",
"authNone": "無",
"test": "測試",
"testing": "測試中",
"testingMessage": "測試中...",
"saved": "已儲存",
"retest": "請重新測試",
"testFailed": "連線測試失敗",
"available": "可用 · {{latency}} ms",
"savedKeepBlank": "已儲存,留空沿用",
"notRequired": "無需填寫",
"otherModels": "其他模型…",
"customModel": "自訂模型",
"backToList": "返回列表",
"apiKeyOptional": "API Key(無需)",
"advanced": "進階",
"allowHttp": "允許 HTTP(本機/內網)",
"setActive": "設為目前",
"deleteTitle": "刪除",
"apiKeySaveFailed": "API Key 儲存失敗",
"providerNotFound": "Provider 不存在",
"modelCatalogReadFailed": "模型目錄讀取失敗",
"catalogUnavailable": "models.dev 暫不可用"
},
"family": {
"openai_compatible": "OpenAI 相容",
"standalone": "────────",
"plan": "Plan 計劃",
"local": "私有化本機",
"custom": "Custom 自訂"
}
}
+186
View File
@@ -0,0 +1,186 @@
{
"panel": {
"local": "本機",
"remote": "遠端",
"notConnectedTitle": "未連線到遠端伺服器",
"notConnectedDesc": "請先連線 SSH 工作階段以使用 SFTP",
"ariaLabel": "{{title}}檔案面板"
},
"connection": {
"selectServer": "選擇伺服器",
"noSessions": "暫無儲存的連線",
"createSessionHint": "請先在側邊欄建立連線",
"reconnect": "重新連線",
"notConnected": "未連線",
"connecting": "連線中..."
},
"errors": {
"notConnected": "SFTP 尚未連線",
"noUploadFiles": "沒有可上傳的檔案",
"localStatFailed": "無法讀取本機檔案資訊",
"loadRemoteFailed": "載入遠端目錄失敗: {{message}}",
"noFolderDownload": "下載資料夾失敗",
"selectDownloadFiles": "請先選擇要下載的檔案",
"uploadFailed": "上傳失敗",
"downloadFailed": "下載失敗",
"fileError": "{{fileName}}: {{message}}"
},
"toolbar": {
"upload": "上傳",
"uploadAria": "上傳",
"download": "下載",
"downloadAria": "下載",
"downloadNeedSelection": "請先選擇遠端檔案",
"downloadHint": "下載選中的遠端檔案",
"refresh": "重新整理",
"refreshAria": "重新整理",
"newFolder": "新增資料夾",
"newFolderAria": "新增資料夾"
},
"sort": {
"name": "名稱",
"modified": "修改時間",
"size": "大小",
"type": "類型"
},
"nav": {
"home": "主目錄",
"back": "後退",
"forward": "前進",
"up": "上層目錄",
"searchPlaceholder": "搜尋檔案名稱",
"clearSearch": "清除搜尋",
"clearSearchAria": "清除搜尋",
"showHidden": "顯示隱藏檔案",
"hideHidden": "隱藏點檔案(.xxx)",
"showHiddenAria": "顯示隱藏檔案",
"hideHiddenAria": "隱藏點檔案",
"searchAria": "{{title}} 目前資料夾搜尋"
},
"status": {
"loading": "載入中...",
"selected": "已選擇 {{count}} 項",
"filtered": "顯示 {{shown}} / {{total}} 項",
"hiddenCount": "共 {{total}} 項(已隱藏 {{hidden}})",
"total": "共 {{count}} 項",
"filterHint": "篩選: {{query}}"
},
"empty": {
"dirTitle": "目錄為空",
"dirDescLocal": "此目錄下沒有檔案",
"dirDescRemote": "可嘗試返回上層或重新整理",
"goUp": "返回上層",
"hiddenOnlyTitle": "僅有隱藏檔案",
"hiddenOnlyDesc": "點擊標題列眼睛圖示顯示點檔案",
"showHiddenAction": "顯示隱藏檔案",
"noMatchTitle": "無符合檔案",
"noMatchDesc": "沒有包含「{{query}}」的檔案"
},
"fileType": {
"folder": "資料夾",
"symlink": "連結",
"symlinkLong": "符號連結",
"file": "檔案",
"text": "文字",
"log": "日誌",
"database": "資料庫",
"imageIso": "磁碟映像檔",
"executable": "可執行",
"library": "程式庫"
},
"relativeDate": {
"today": "今天",
"yesterday": "昨天",
"daysAgo": "{{count}} 天前"
},
"contextMenu": {
"open": "開啟",
"upload": "上傳",
"download": "下載",
"edit": "編輯",
"rename": "重新命名",
"copyPath": "複製路徑",
"properties": "屬性",
"permissions": "權限",
"delete": "刪除"
},
"dialog": {
"renameTitle": "重新命名",
"renameMessage": "輸入新名稱:",
"renamePlaceholder": "新名稱",
"newFolderTitle": "新增資料夾",
"newFolderMessage": "輸入資料夾名稱:",
"newFolderPlaceholder": "資料夾名稱",
"propertiesTitle": "檔案屬性",
"propertiesClose": "關閉",
"chmodTitle": "權限編輯",
"chmodApply": "套用",
"pickUploadTitle": "選擇要上傳的檔案或資料夾",
"pickUploadRzTitle": "選擇要上傳的檔案(rz)"
},
"properties": {
"name": "名稱",
"path": "路徑",
"size": "大小",
"permissions": "權限",
"modified": "修改時間",
"accessed": "存取時間",
"symlink": "符號連結",
"loadingDetails": "載入詳細資料..."
},
"chmod": {
"read": "讀取",
"write": "寫入",
"execute": "執行",
"owner": "擁有者",
"group": "所屬群組",
"other": "其他人",
"current": "目前權限:",
"readR": "讀取 (r)",
"writeW": "寫入 (w)",
"executeX": "執行 (x)"
},
"transfer": {
"queue": "傳輸佇列",
"active": "{{count}} 進行中",
"completed": "{{count}} 已完成",
"taskCount": "{{count}} 個任務",
"empty": "暫無傳輸任務",
"cancel": "取消",
"remove": "移除",
"statusWaiting": "等待中",
"statusDone": "完成",
"statusFailed": "失敗",
"statusCancelled": "已取消",
"dropUpload": "上傳到 {{path}}",
"dropDownload": "下載到 {{path}}"
},
"editor": {
"readFailed": "讀取失敗",
"saveFailed": "儲存失敗",
"unsavedClose": "有未儲存的修改,確定關閉?",
"saving": "儲存中...",
"save": "儲存",
"saved": "檔案已儲存",
"loadingEditor": "載入編輯器...",
"footer": "UTF-8 · Monaco · ⌘/Ctrl+S 儲存 · 最大約 2MB",
"charCount": "{{count}} 字元",
"unsavedMark": " · 未儲存",
"savedMark": " · 已儲存"
},
"toast": {
"renamed": "已重新命名為 {{name}}",
"renameFailed": "重新命名失敗",
"pathCopied": "路徑已複製到剪貼簿",
"pathCopyFailed": "複製路徑失敗",
"chmodUpdated": "權限已更新為 {{mode}}",
"chmodFailed": "權限修改失敗",
"uploadPartial": "{{action}}完成 {{completed}} 個,失敗 {{failed}} 個:{{detail}}",
"uploadSuccess": "{{action}}完成 {{completed}} 項",
"uploadAction": "上傳",
"downloadAction": "下載",
"noFolderUpload": "上傳資料夾失敗",
"noDragPath": "目前系統未提供拖曳檔案路徑,請使用「上傳」按鈕選擇檔案",
"noFolderRecursive": "資料夾遞迴傳輸失敗,請重試或改用上傳按鈕"
}
}
+32
View File
@@ -0,0 +1,32 @@
{
"panel": {
"title": "命令片段"
},
"search": {
"placeholder": "搜尋片段..."
},
"form": {
"name": "名稱",
"command": "命令",
"tags": "標籤",
"tagsHint": "(以逗號分隔)",
"namePlaceholder": "例如:重啟 Nginx",
"commandPlaceholder": "sudo systemctl restart nginx\n# 支援 {{host}} {{username}} {{date}}",
"variables": "變數:"
},
"dialog": {
"createTitle": "新增片段",
"editTitle": "編輯片段"
},
"empty": {
"noMatch": "沒有符合的片段",
"noMatchDesc": "嘗試其他關鍵字搜尋",
"noSnippets": "暫無片段",
"noSnippetsDesc": "儲存常用命令,快速插入到終端機"
},
"action": {
"create": "新增片段",
"insert": "插入到終端機",
"noTerminal": "無活躍終端機"
}
}
+119
View File
@@ -0,0 +1,119 @@
{
"toolbar": {
"splitHorizontal": "左右分割",
"splitVertical": "上下分割",
"addPane": "再加一窗格",
"closePane": "關閉目前窗格",
"maximizePane": "最大化目前窗格",
"restoreLayout": "還原分割版面",
"broadcast": "廣播",
"broadcastAria": "廣播輸入",
"broadcastOn": "廣播已開啟:輸入將同步到範圍內 {{count}} 個終端機",
"broadcastOffPro": "廣播同步輸入(Pro)· 目前範圍 {{count}} 個終端機",
"broadcastNeedPanesTab": "目前分頁至少需要 2 個就緒窗格才能廣播(先點上下/左右分割)",
"broadcastNeedPanesAll": "全部終端機分頁至少需要 2 個就緒終端機才能廣播",
"broadcastScopeAria": "廣播目標範圍",
"broadcastScopeTab": "目前分頁窗格",
"broadcastScopeAll": "全部終端機分頁",
"broadcastActive": "廣播中 · {{count}}",
"aiAssistant": "AI 助手",
"aiOpen": "開啟終端機 AI 助手",
"aiClose": "關閉終端機 AI 助手",
"aiTitle": "終端機 AI 助手(Pro)",
"paneCount": "{{current}}/{{max}}",
"labelLocal": "本機終端機",
"labelSsh": "SSH 終端機",
"closePaneLabel": "關閉目前窗格",
"closeTabLabel": "關閉目前終端機分頁",
"targetSshSession": "目前 SSH 連線"
},
"overlay": {
"shellClosedIdle": "閒置逾時,Shell 已結束",
"shellClosed": "Shell 已結束",
"shellClosedHint": "SSH 連線仍可用,其他窗格、SFTP 和通道不受影響",
"reopenShell": "重新開啟 Shell",
"reopening": "正在開啟…",
"disconnected": "連線已中斷",
"disconnectedHint": "SSH 連線已結束或網路中斷。點擊下方一鍵重新連線。",
"reconnect": "重新連線",
"suspended": "連線已暫停",
"suspendedHint": "長時間未操作,連線已進入暫停以節省資源",
"resume": "恢復連線",
"connectFailed": "連線失敗",
"connectFailedHint": "請檢查主機、連接埠、使用者名稱與認證方式",
"retryConnect": "重試連線",
"connecting": "正在連線…",
"reconnecting": "自動重連中{{attempt}}…",
"reconnectingAttempt": " ({{count}})",
"localShellExited": "本機 Shell 已結束"
},
"hostKey": {
"titleNew": "確認主機金鑰",
"titleChanged": "主機金鑰已變更",
"descNew": "首次連線此主機,請核對指紋後信任。",
"descChanged": "該主機的 SSH 金鑰與本機記錄不一致,可能存在 MITM 中間人攻擊風險。",
"host": "主機",
"type": "類型",
"fingerprint": "SHA256 指紋",
"previousFingerprint": "先前指紋",
"reject": "拒絕",
"acceptOnce": "僅本次",
"acceptAlways": "始終信任",
"acceptAlwaysChanged": "仍要信任並更新"
},
"contextMenu": {
"aria": "終端機操作",
"copy": "複製",
"paste": "貼上",
"selectAll": "全選終端機內容",
"clear": "清空顯示",
"splitRight": "向右分割",
"splitDown": "向下分割",
"maximizePane": "最大化目前窗格",
"restoreLayout": "還原分割版面"
},
"search": {
"placeholder": "搜尋...",
"previous": "上一個 (Shift+Enter)",
"next": "下一個 (Enter)",
"close": "關閉 (Escape)"
},
"zmodem": {
"uploadTransferring": "rz 上傳:{{detail}}",
"downloadTransferring": "sz 下載:{{detail}}",
"selectLocalFile": "選擇本機檔案",
"pickUploadTitle": "選擇要上傳的檔案(rz)",
"uploadedCount": "已上傳 {{count}} 個檔案",
"downloadedSingle": "{{path}}",
"downloadedCount": "已下載 {{count}} 個檔案 → {{dir}}",
"transferDone": "傳輸結束",
"transferFailed": "傳輸失敗 {{message}}",
"uploadSuccessTerminal": "✓ 已上傳 {{count}} 個檔案 到遠端目前目錄",
"downloadSuccessTerminal": "✓ 已下載 {{path}}",
"savedDownloadsSingle": "✓ 已儲存到下載資料夾",
"savedDownloadsMultiple": "✓ 已儲存 {{count}} 個檔案到下載資料夾",
"nativeApiUnavailable": "原生 API 無法使用",
"readFailed": "讀取失敗: {{name}}",
"writeFailed": "寫入失敗: {{name}}",
"createLocalShellFailed": "建立本機 Shell 失敗",
"createRemoteShellFailed": "建立遠端 Shell 失敗",
"createShellFailed": "建立 Shell 失敗: {{error}}"
},
"clipboard": {
"readFailed": "讀取剪貼簿失敗",
"writeFailed": "寫入剪貼簿失敗"
},
"input": {
"failed": "終端機輸入失敗"
},
"connection": {
"errorPrefix": "錯誤: {{message}}",
"autoReconnecting": "自動重連中 ({{attempt}})...",
"autoReconnectLimit": "自動重連已達上限 ({{max}}){{reasonSuffix}}",
"autoReconnectLimitReason": " — {{reason}}",
"disconnectedRetry": "連線中斷,{{seconds}}s 後第 {{attempt}}/{{max}} 次重連...",
"autoReconnectBanner": "[自動重連] {{seconds}}s 後嘗試 {{attempt}}/{{max}}",
"disconnectedBanner": "[連線已中斷] {{reason}}",
"noConfig": "無可用連線資訊"
}
}