feat: harden local shell, SFTP, and desktop session reliability
Finder-launched terminals now inherit a login PATH so tools like ollama resolve, destructive SFTP/editor actions require confirmation, and terminal search plus window dragging work again. SSH forwards and RDP sessions keep listeners and survive reconnect without FastPath crashes. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
188f3556ed
commit
08696896f9
223 files changed
+13493
-3423
No files matched your search
@@ -78,7 +78,7 @@
|
||||
"closeTab": "關閉目前分頁",
|
||||
"closeAllTabs": "關閉所有分頁",
|
||||
"portForward": "新增埠轉發",
|
||||
"upgradePro": "升級 OpsXShell Pro",
|
||||
"upgradePro": "升級 OpsXShell 專業版",
|
||||
"editSession": "編輯連線: {{name}}"
|
||||
}
|
||||
},
|
||||
@@ -90,6 +90,8 @@
|
||||
"terminal": "終端機",
|
||||
"batch": "批次執行",
|
||||
"newTerminal": "新終端機",
|
||||
"closeAria": "關閉 {{title}}",
|
||||
"listAria": "已開啟的標籤",
|
||||
"kind": {
|
||||
"terminal": "終端機",
|
||||
"sftp": "SFTP",
|
||||
@@ -105,7 +107,8 @@
|
||||
"closeRight": "關閉右側分頁",
|
||||
"closeLeft": "關閉左側分頁",
|
||||
"closeAll": "關閉全部",
|
||||
"clone": "克隆分頁"
|
||||
"clone": "克隆分頁",
|
||||
"openSftp": "開啟 SFTP"
|
||||
}
|
||||
},
|
||||
"sidebar": {
|
||||
@@ -149,39 +152,44 @@
|
||||
"disconnect": "中斷"
|
||||
},
|
||||
"pro": {
|
||||
"upgrade": "升級 Pro",
|
||||
"feature": "專業功能",
|
||||
"unlock": "解鎖 {{feature}}",
|
||||
"upgrade": "升級專業版",
|
||||
"feature": "專業版功能",
|
||||
"unlock": "解鎖專業版進階功能",
|
||||
"comingSoon": "即將推出",
|
||||
"activateSuccess": "啟用成功",
|
||||
"activateFailed": "啟用失敗",
|
||||
"licenseActivated": "Pro 授權已啟用",
|
||||
"licenseActivated": "專業版授權已啟用",
|
||||
"paymentPending": "付款完成後請貼上授權,或稍後再試啟用",
|
||||
"invalidLicense": "啟用失敗:授權無效",
|
||||
"goUpgrade": "前往付費升級",
|
||||
"goUpgrade": "去升級專業版",
|
||||
"haveLicense": "已有授權?啟用",
|
||||
"title": "OpsXShell Pro · 解鎖專業維運能力",
|
||||
"subtitleComingSoon": "{{feature}} 即將推出 · 升級 Pro 可優先體驗",
|
||||
"subtitleUnlock": "正在解鎖:{{feature}}",
|
||||
"subtitleDefault": "轉發、代理、序列埠、AI、批次與廣播",
|
||||
"activated": "已啟用 Pro",
|
||||
"title": "OpsXShell · 解鎖專業版",
|
||||
"subtitleComingSoon": "進階功能即將推出 · 升級專業版可優先體驗",
|
||||
"subtitleUnlock": "目前正在解鎖進階功能",
|
||||
"subtitleDefault": "連接埠轉發、終端 AI、批次運維、主機清單與遠端桌面等專業版能力",
|
||||
"activated": "已啟用專業版",
|
||||
"expiresAt": " · 有效期至 {{date}}",
|
||||
"lifetime": " · 終身授權",
|
||||
"oneTimeFee": "一次性費用 · 本機終身授權 · 無需訂閱",
|
||||
"oneTimeFee": "免費 / 專業版年繳 / 專業版永久",
|
||||
"pasteLicense": "貼上授權",
|
||||
"activateButton": "啟用",
|
||||
"clearLicense": "清除本機授權",
|
||||
"paymentNote": "付款由 Waffo 託管收銀台處理;本應用不收集或儲存信用卡資料。",
|
||||
"testDeviceId": "測試環境 · 裝置 ID:{{deviceId}}",
|
||||
"later": "稍後再說",
|
||||
"viewPro": "檢視 Pro",
|
||||
"wallComingSoonSuffix": " · 即將推出",
|
||||
"wallUnlock": "解鎖 {{feature}}",
|
||||
"wallMessageComingSoon": "此能力屬於 OpsXShell Pro,協定實現尚在開發中。升級後可優先體驗。",
|
||||
"wallMessageDefault": "此功能屬於 OpsXShell Pro。升級後即可在本機使用。",
|
||||
"viewPro": "查看專業版方案",
|
||||
"wallComingSoonSuffix": "即將推出",
|
||||
"wallUnlock": "解鎖專業版進階功能",
|
||||
"wallMessageComingSoon": "此能力屬於 OpsXShell 專業版,相關實作尚在完善。升級專業版年繳或永久後,可優先體驗。",
|
||||
"wallMessageDefault": "連接埠轉發、終端 AI、批次執行、主機清單與遠端桌面等均包含在專業版中。升級專業版年繳或永久後,即可在本機使用。",
|
||||
"checkoutUnavailable": "結帳服務無法使用 ({{status}})",
|
||||
"freeTier": "Free",
|
||||
"proTier": "Pro",
|
||||
"emailLabel": "電子郵件",
|
||||
"emailRequired": "結帳前請先填寫電子郵件",
|
||||
"claimPending": "正在領取授權…",
|
||||
"invalidKeyFormat": "金鑰格式無效,請貼上 LIC- 開頭的授權碼",
|
||||
"accountEmail": "帳戶:{{email}}",
|
||||
"freeTier": "免費",
|
||||
"proTier": "專業版",
|
||||
"freeItems": {
|
||||
"ssh": "SSH 終端機",
|
||||
"sftp": "SFTP 檔案管理",
|
||||
@@ -190,19 +198,40 @@
|
||||
"import": "單筆 / ssh_config 匯入"
|
||||
},
|
||||
"proItems": {
|
||||
"forward": "埠轉發",
|
||||
"proxy": "連線代理 / SOCKS",
|
||||
"serial": "序列埠終端機",
|
||||
"ai": "終端機 AI 助手",
|
||||
"forward": "連接埠轉發",
|
||||
"proxy": "工作階段代理 / SOCKS",
|
||||
"serial": "序列埠終端",
|
||||
"ai": "終端 AI 助手",
|
||||
"batch": "批次執行 / 廣播同步",
|
||||
"broadcast": "廣播同步輸入",
|
||||
"importExport": "批次匯入匯出主機清單",
|
||||
"desktop": "RDP / VNC 遠端桌面"
|
||||
}
|
||||
"desktop": "遠端桌面(RDP / VNC)"
|
||||
},
|
||||
"planYearly": "專業版年繳",
|
||||
"planYearlyDesc": "¥99 / 年 · 2 台裝置",
|
||||
"planPerpetual": "專業版永久",
|
||||
"planPerpetualDesc": "¥199 · 5 台裝置 · 終身",
|
||||
"planTrial": "專業版體驗",
|
||||
"devices": "最多 {{count}} 台裝置",
|
||||
"goUpgradeYearly": "購買專業版年繳",
|
||||
"goUpgradePerpetual": "購買專業版永久",
|
||||
"activatedYearly": "已啟用專業版年繳",
|
||||
"activatedPerpetual": "已啟用專業版永久",
|
||||
"activatedTrial": "已啟用專業版體驗",
|
||||
"choosePlan": "選擇方案:免費 / 專業版年繳 / 專業版永久",
|
||||
"planFreePrice": "¥0",
|
||||
"planFreeDesc": "SSH · SFTP · 本機終端",
|
||||
"planFreeCta": "目前方案",
|
||||
"planIncludesPro": "含全部專業版功能",
|
||||
"planFree": "免費",
|
||||
"subtitleUnlockDetail": "相關能力:{{feature}}",
|
||||
"wallUnlockComingSoon": "專業版進階功能即將推出",
|
||||
"wallMessageComingSoonFeature": "「{{feature}}」屬於專業版進階功能,相關實作尚在完善。升級專業版年繳或永久後,可優先體驗。",
|
||||
"wallMessageFeature": "「{{feature}}」屬於專業版進階功能。升級專業版年繳或永久後,即可在本機使用。"
|
||||
},
|
||||
"launcher": {
|
||||
"title": "快速啟動",
|
||||
"description": "連線、本機 Shell 與裝置控制台統一入口",
|
||||
"description": "常用入口集中:工作階段、本機 Shell、桌面、串列埠",
|
||||
"cards": {
|
||||
"quickConnect": {
|
||||
"title": "快速連線",
|
||||
@@ -215,6 +244,14 @@
|
||||
"serial": {
|
||||
"title": "序列埠終端機",
|
||||
"desc": "鮑率與序列埠參數"
|
||||
},
|
||||
"rdp": {
|
||||
"title": "RDP 桌面",
|
||||
"desc": "遠端 Windows 桌面"
|
||||
},
|
||||
"vnc": {
|
||||
"title": "VNC 桌面",
|
||||
"desc": "遠端圖形桌面"
|
||||
}
|
||||
},
|
||||
"sectionLocalShell": "本機 Shell",
|
||||
@@ -229,6 +266,7 @@
|
||||
"forwardOpenRunning": "SOCKS5 已開(:{{port}})· 點擊管理 · 右鍵複製",
|
||||
"forwardStarted": "轉發已啟動",
|
||||
"forwardStartedDynamic": "SOCKS5 已啟動:socks5://127.0.0.1:{{port}}",
|
||||
"forwardResumed": "已恢復 {{count}} 條連接埠轉發",
|
||||
"socksStartFailed": "啟動失敗:{{message}}",
|
||||
"socksStopFailed": "停止失敗:{{message}}",
|
||||
"socksCopied": "已複製 socks5://127.0.0.1:{{port}}"
|
||||
@@ -249,7 +287,7 @@
|
||||
"typeDynamic": "動態",
|
||||
"running": "執行中",
|
||||
"socksProxy": "SOCKS5:127.0.0.1:{{port}}",
|
||||
"remoteToLocal": "遠端 {{remote}} → 本機 {{local}}",
|
||||
"remoteToLocal": "遠端 {{bind}}:{{remote}} → {{host}}:{{local}}",
|
||||
"stats": "{{connections}} 連線 · ↑{{up}} · ↓{{down}}",
|
||||
"copyProxy": "複製代理",
|
||||
"copyRule": "複製規則",
|
||||
@@ -259,15 +297,15 @@
|
||||
"delete": "刪除",
|
||||
"editTitle": "編輯轉發",
|
||||
"addTitle": "新增轉發",
|
||||
"typeLocalDesc": "本機 → 遠端",
|
||||
"typeRemoteDesc": "遠端 → 本機",
|
||||
"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).",
|
||||
"dynamicHint": "本機 SOCKS5(預設 :1080)。流量經目前 SSH 出口存取外網。",
|
||||
"dynamicSingleHint": "每台 SSH 僅一條動態轉發;停止後可改連接埠。",
|
||||
"dynamicPortHint": "連接埠被占用時可改,例如 1081。",
|
||||
"ruleList": "規則",
|
||||
"ruleListEmpty": "暫無本地 / 遠端規則",
|
||||
"addSection": "新增",
|
||||
@@ -301,17 +339,30 @@
|
||||
"internet": "網際網路",
|
||||
"localCaption": "本地轉發:經通道存取遠端連接埠,如同存取本機。",
|
||||
"remoteCaption": "遠端轉發:遠端存取經通道轉到本機服務。",
|
||||
"dynamicCaption": "動態轉發:本機變成 SOCKS5 代理,可經目前 SSH 伺服器出口 IP 存取網際網路。"
|
||||
"dynamicCaption": "動態轉發:本機 SOCKS5,經目前 SSH 出口存取外網。"
|
||||
},
|
||||
"ruleName": "名稱",
|
||||
"ruleNamePlaceholder": "例如 MySQL",
|
||||
"localListenPort": "本機監聽連接埠",
|
||||
"localListenPortHint": "預設 localhost,等同 ssh -L 連接埠:…。一般只填連接埠。",
|
||||
"localBindAdvanced": "進階:改本機綁定",
|
||||
"localTargetPort": "本機目標連接埠",
|
||||
"remoteTargetPort": "遠端目標連接埠",
|
||||
"remoteTargetPort": "目標埠",
|
||||
"remoteListenPort": "遠端監聽連接埠",
|
||||
"remoteListenPortHint": "預設僅遠端 localhost,等同 ssh -R 連接埠:…。一般只填連接埠。",
|
||||
"remoteListenAddress": "遠端監聽",
|
||||
"remoteListenAddressPlaceholder": "127.0.0.1:18080",
|
||||
"remoteListenAddressHint": "127.0.0.1 = 僅遠端本機;0.0.0.0 = 遠端內網可連(需 GatewayPorts)。",
|
||||
"errorRemoteListenAddress": "請填寫有效遠端監聽,如 127.0.0.1:18080",
|
||||
"localTargetAddress": "本機 / 內網目標",
|
||||
"localTargetAddressPlaceholder": "127.0.0.1:8080",
|
||||
"localTargetAddressHint": "轉到本機或內網服務,如 127.0.0.1:8080。勿填 0.0.0.0。",
|
||||
"viaSessionRemote": "在 {{target}} 上監聽(預設 localhost)",
|
||||
"errorRemoteListenPort": "請填寫有效的遠端監聽連接埠(1–65535)",
|
||||
"errorLocalTargetAddress": "請填寫有效本機/內網目標,如 127.0.0.1:8080",
|
||||
"portPlaceholder": "如 3306",
|
||||
"remoteHost": "遠端主機",
|
||||
"remoteHostPlaceholder": "localhost 或 IP",
|
||||
"remoteHost": "目標主機",
|
||||
"remoteHostPlaceholder": "127.0.0.1",
|
||||
"socksRuleName": "SOCKS5 代理",
|
||||
"defaultLocalName": "本地轉發",
|
||||
"defaultRemoteName": "遠端轉發",
|
||||
@@ -325,11 +376,35 @@
|
||||
"deleteConfirm": "確定刪除此規則?",
|
||||
"errorNamePort": "請填寫名稱和有效連接埠(1–65535)",
|
||||
"errorTargetPort": "請填寫有效目標連接埠(1–65535)",
|
||||
"errorRemoteHost": "請填寫遠端主機",
|
||||
"errorRemoteHost": "請填寫目標主機(相對目前 SSH 伺服器)",
|
||||
"errorNotConnected": "未連線到伺服器",
|
||||
"errorStartFailed": "啟動失敗",
|
||||
"errorStopFailed": "停止失敗",
|
||||
"errorSocksRunning": "SOCKS5 已在執行",
|
||||
"copySuffix": "副本"
|
||||
"copySuffix": "副本",
|
||||
"remoteBindHint": "0.0.0.0 需 GatewayPorts;未開啟時常靜默繫 127.0.0.1。目標勿填 0.0.0.0。",
|
||||
"localToRemote": "本機 {{bind}}:{{local}} → 遠端 {{host}}:{{remote}}",
|
||||
"localToRemotePort": "本機 :{{local}} → 遠端 {{host}}:{{remote}}",
|
||||
"remoteHostHint": "相對 SSH 伺服器。遠端本機填 127.0.0.1,內網其它機填可達 IP。勿填 0.0.0.0。",
|
||||
"localBindHost": "本機綁定",
|
||||
"localBindHostPlaceholder": "127.0.0.1",
|
||||
"localBindHostHint": "預設僅本機。填 0.0.0.0 或內網 IP 可讓區網存取。",
|
||||
"errorTargetHostInvalid": "目標不能是 0.0.0.0,請填 127.0.0.1 或可達內網 IP",
|
||||
"listenAddress": "本機監聽",
|
||||
"listenAddressPlaceholder": "127.0.0.1:8080",
|
||||
"listenAddressHint": "預設僅本機;0.0.0.0 可讓區網存取。",
|
||||
"targetAddress": "遠端目標",
|
||||
"targetAddressPlaceholder": "127.0.0.1:80",
|
||||
"targetAddressHint": "相對 SSH 伺服器。遠端本機服務填 127.0.0.1:連接埠。",
|
||||
"errorListenAddress": "請填寫有效監聽位址,如 127.0.0.1:8080",
|
||||
"errorTargetAddress": "請填寫有效目標,如 127.0.0.1:80",
|
||||
"targetAddressHintVia": "經 {{target}}。遠端本機服務填 127.0.0.1:連接埠(不會在遠端新建連接埠)。",
|
||||
"viaSession": "經目前工作階段 {{target}}",
|
||||
"remoteToLocalPort": "遠端 :{{remote}} → {{host}}:{{local}}",
|
||||
"remoteBindAdvanced": "進階:改遠端繫結",
|
||||
"remoteBindHost": "遠端繫結",
|
||||
"remoteBindHostPlaceholder": "127.0.0.1",
|
||||
"remoteBindHostHint": "預設僅遠端本機。0.0.0.0 需 GatewayPorts;未開啟時多數 sshd 仍只繫 127.0.0.1。",
|
||||
"remoteGatewayPortsWarning": "已請求遠端 0.0.0.0 監聽。若未開 GatewayPorts,sshd 常會靜默只繫 127.0.0.1。"
|
||||
}
|
||||
}
|
||||
@@ -15,10 +15,12 @@
|
||||
"passwordOptional": "密碼(可選)",
|
||||
"width": "寬度",
|
||||
"height": "高度",
|
||||
"rdpFootnote": "原生 IronRDP:TCP → X.224 → TLS → CredSSP/NLA → MCS;握手逾時 45s。憑證校驗目前為開發期寬鬆模式。",
|
||||
"vncFootnote": "原生 vnc-rs RFB:支援 Tight JPEG 畫面解碼;剪貼簿按 UTF-8 傳送(極舊服務端可能亂碼)。",
|
||||
"rdpFootnote": "全螢幕或最大化時,會依目前視窗區域動態請求遠端解析度;也可在連線前用預設選擇初始解析度。憑證驗證目前為開發期寬鬆模式。",
|
||||
"vncFootnote": "多數 VNC 伺服器解析度由遠端固定,全螢幕僅本機縮放適配;連線前的偏好尺寸僅供參考。剪貼簿以 UTF-8 傳送。",
|
||||
"errorHostRequired": "請輸入主機位址",
|
||||
"errorUsernameRequired": "請輸入使用者名稱"
|
||||
"errorUsernameRequired": "請輸入使用者名稱",
|
||||
"resolution": "解析度",
|
||||
"resolutionCustom": "自訂"
|
||||
},
|
||||
"toolbar": {
|
||||
"pasteClipboard": "貼上本機剪貼簿到遠端",
|
||||
@@ -28,7 +30,12 @@
|
||||
"openShareDir": "在本機開啟共享目錄(下載資料夾)",
|
||||
"openShareDirAria": "開啟共享目錄",
|
||||
"disconnect": "中斷連線",
|
||||
"disconnectAria": "中斷連線"
|
||||
"disconnectAria": "中斷連線",
|
||||
"fullscreen": "全螢幕",
|
||||
"fullscreenAria": "進入全螢幕",
|
||||
"exitFullscreen": "結束全螢幕",
|
||||
"exitFullscreenAria": "結束全螢幕",
|
||||
"exitFullscreenHint": "Esc / F11 結束"
|
||||
},
|
||||
"status": {
|
||||
"connecting": "正在連線…",
|
||||
|
||||
@@ -39,7 +39,9 @@
|
||||
"closed": "連線已關閉",
|
||||
"dnsFailed": "無法解析主機",
|
||||
"refused": "連線被拒絕",
|
||||
"disconnected": "連線已中斷"
|
||||
"disconnected": "連線已中斷",
|
||||
"keepaliveFailed": "SSH 心跳連續失敗,連線已關閉",
|
||||
"idleKicked": "遠端 Shell 因閒置逾時退出(TMOUT)"
|
||||
},
|
||||
"auth": {
|
||||
"failed": "認證失敗,請檢查使用者名稱和密碼",
|
||||
@@ -68,7 +70,10 @@
|
||||
"forward": {
|
||||
"failed": "埠轉發設定失敗",
|
||||
"bindFailed": "連接埠綁定失敗",
|
||||
"alreadyInUse": "連接埠已被佔用"
|
||||
"alreadyInUse": "本機埠已被占用。請先暫停本規則或其他占用該埠的行程,再啟動。",
|
||||
"remoteDenied": "遠端拒絕遠端埠轉發(AllowTcpForwarding / PermitListen、埠占用或綁定限制)。目前僅在遠端 127.0.0.1 監聽。",
|
||||
"remoteDeniedPrivileged": "遠端拒絕特權監聽埠(<1024)。請改用 ≥1024,或以 root 監聽,並檢查 AllowTcpForwarding / PermitListen。",
|
||||
"invalidTargetHost": "目標位址不能是 0.0.0.0,請填 127.0.0.1 或遠端可達的內網 IP"
|
||||
},
|
||||
"sftp": {
|
||||
"connectFailed": "SFTP 連線失敗",
|
||||
@@ -80,7 +85,15 @@
|
||||
"writeFailed": "儲存失敗",
|
||||
"renameFailed": "重新命名失敗",
|
||||
"chmodFailed": "權限修改失敗",
|
||||
"apiUnavailable": "SFTP API 無法使用"
|
||||
"apiUnavailable": "SFTP API 無法使用",
|
||||
"channelFailed": "無法開啟 SFTP 通道(伺服器限制或工作階段忙碌),請重連後再試",
|
||||
"sessionGone": "SFTP 工作階段已結束,請重新連線",
|
||||
"busy": "正在傳輸檔案,請稍後再試",
|
||||
"editTooLarge": "檔案過大,文字編輯上限約 2MB。請下載後用本機編輯器開啟。",
|
||||
"editBinary": "此檔案像是二進位內容,無法用文字編輯器開啟",
|
||||
"editNotUtf8": "遠端檔案不是有效 UTF-8 文字",
|
||||
"transferCancelled": "傳輸已取消",
|
||||
"diskFull": "磁碟空間不足(本機或遠端)"
|
||||
},
|
||||
"session": {
|
||||
"notFound": "連線不存在",
|
||||
|
||||
@@ -69,17 +69,17 @@
|
||||
"confirm": "刪除"
|
||||
},
|
||||
"welcome": {
|
||||
"tagline": "遠端終端機 · SFTP · 埠轉發",
|
||||
"tagline": "簡單好用 · 終端機 · 傳檔 · 遠端桌面",
|
||||
"sectionStart": "開始",
|
||||
"sectionDesktop": "遠端桌面",
|
||||
"sectionRecent": "最近連線",
|
||||
"quickConnect": {
|
||||
"title": "快速連線",
|
||||
"desc": "臨時 SSH,不寫入連線庫"
|
||||
"desc": "臨時 SSH,不寫入工作階段庫"
|
||||
},
|
||||
"newSession": {
|
||||
"title": "新增連線",
|
||||
"desc": "儲存主機,側欄雙擊連線"
|
||||
"desc": "儲存主機,側欄雙擊即連"
|
||||
},
|
||||
"localShell": {
|
||||
"title": "本機 Shell",
|
||||
@@ -167,7 +167,9 @@
|
||||
"jumpHost": "跳板機(可選)",
|
||||
"jumpNone": "無跳板",
|
||||
"jumpNoneAlt": "不使用跳板",
|
||||
"jumpHint": "目前支援一個已儲存連線作為跳板"
|
||||
"jumpHint": "目前支援一個已儲存連線作為跳板",
|
||||
"resolution": "解析度",
|
||||
"resolutionCustom": "自訂"
|
||||
},
|
||||
"batch": {
|
||||
"title": "批次執行",
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
{
|
||||
"nav": {
|
||||
"general": "工作區",
|
||||
"generalDesc": "版面與資源",
|
||||
"appearance": "外觀",
|
||||
"appearanceDesc": "介面主題與語言",
|
||||
"general": "一般",
|
||||
"generalDesc": "主題、語言與版面",
|
||||
"terminal": "終端機",
|
||||
"terminalDesc": "字型與配色",
|
||||
"shortcuts": "快捷鍵",
|
||||
@@ -15,11 +13,13 @@
|
||||
"ai": "大模型",
|
||||
"aiDesc": "AI Provider",
|
||||
"about": "關於",
|
||||
"aboutDesc": "版本與資料"
|
||||
"aboutDesc": "版本與資料",
|
||||
"account": "帳戶",
|
||||
"accountDesc": "電子郵件、授權與裝置"
|
||||
},
|
||||
"title": "設定",
|
||||
"search": {
|
||||
"placeholder": "搜尋設定..."
|
||||
"placeholder": "搜尋設定…"
|
||||
},
|
||||
"language": {
|
||||
"label": "介面語言",
|
||||
@@ -89,7 +89,7 @@
|
||||
"ssh": {
|
||||
"connection": "連線",
|
||||
"keepAlive": "保持心跳",
|
||||
"keepAliveDesc": "閒置時發送心跳,減少斷線",
|
||||
"keepAliveDesc": "閒置時發送 SSH 心跳;連續多次無回應才會斷線",
|
||||
"autoReconnect": "自動重連",
|
||||
"autoReconnectDesc": "意外斷線後自動嘗試重連",
|
||||
"timeout": "連線逾時",
|
||||
@@ -101,8 +101,10 @@
|
||||
"maxConnectionsDesc": "SSH、SFTP 與批次連線共享此上限",
|
||||
"maxBackground": "背景連線上限",
|
||||
"maxBackgroundDesc": "超過上限時優先回收最久未使用的連線",
|
||||
"suspend": "背景暫停",
|
||||
"suspendDesc": "分頁進入背景後多少分鐘釋放活躍通道"
|
||||
"suspend": "背景掛起",
|
||||
"suspendDesc": "背景標籤閒置多少分鐘後掛起(有活躍 Shell/SFTP 時保持連線)",
|
||||
"keepAliveInterval": "心跳間隔(秒)",
|
||||
"keepAliveIntervalDesc": "向伺服器發送心跳的頻率(類似 ClientAliveInterval)。不穩定網路建議 ≤15 秒"
|
||||
},
|
||||
"security": {
|
||||
"credentials": "憑證保護",
|
||||
@@ -119,7 +121,7 @@
|
||||
"clearConfirm": "確定清空全部已知主機金鑰?下次連線將重新確認。"
|
||||
},
|
||||
"about": {
|
||||
"tagline": "輕量原生的 SSH / SFTP 維運終端機",
|
||||
"tagline": "簡單、便捷、人性化的原生維運終端",
|
||||
"appVersion": "應用 v{{version}}",
|
||||
"copyVersion": "複製版本資訊",
|
||||
"runtime": "執行環境",
|
||||
@@ -127,8 +129,9 @@
|
||||
"localData": "本機資料",
|
||||
"sessionsSettings": "連線與設定",
|
||||
"masterKeyPath": "加密主金鑰",
|
||||
"privacyNote": "密碼與金鑰口令由 Rust 使用 AES-256-GCM 加密。OpsXShell 不儲存終端機命令歷史。",
|
||||
"license": "MIT License · Rust · XTerm.js"
|
||||
"privacyNote": "密碼與金鑰口令由 Rust 使用 AES-256-GCM 加密。不保存終端機指令歷史,也不做堡壘稽核。",
|
||||
"license": "MIT License · Rust · XTerm.js",
|
||||
"logPath": "應用程式日誌"
|
||||
},
|
||||
"ai": {
|
||||
"presets": "供應商預設",
|
||||
@@ -162,13 +165,42 @@
|
||||
"apiKeySaveFailed": "API Key 儲存失敗",
|
||||
"providerNotFound": "Provider 不存在",
|
||||
"modelCatalogReadFailed": "模型目錄讀取失敗",
|
||||
"catalogUnavailable": "models.dev 暫不可用"
|
||||
"catalogUnavailable": "models.dev 暫不可用",
|
||||
"family": {
|
||||
"openai_compatible": "OpenAI 相容",
|
||||
"standalone": "獨立協定",
|
||||
"plan": "方案套餐",
|
||||
"local": "本機私有化",
|
||||
"custom": "自訂"
|
||||
}
|
||||
},
|
||||
"family": {
|
||||
"openai_compatible": "OpenAI 相容",
|
||||
"standalone": "────────",
|
||||
"plan": "Plan 計劃",
|
||||
"local": "私有化本機",
|
||||
"custom": "Custom 自訂"
|
||||
"account": {
|
||||
"title": "帳戶",
|
||||
"email": "電子郵件",
|
||||
"emailDesc": "用於結帳與領取授權",
|
||||
"plan": "目前方案",
|
||||
"planFree": "免費",
|
||||
"planYearly": "專業版年繳",
|
||||
"planPerpetual": "專業版永久",
|
||||
"planTrial": "專業版體驗",
|
||||
"expires": "有效至 {{date}}",
|
||||
"lifetime": "終身有效",
|
||||
"devices": "裝置席位:最多 {{count}} 台",
|
||||
"deviceId": "本機裝置 ID",
|
||||
"saveEmail": "儲存電子郵件",
|
||||
"activate": "啟用授權",
|
||||
"pasteLicense": "貼上 LIC- 授權碼",
|
||||
"clear": "清除本機授權",
|
||||
"deactivate": "停用本機啟用",
|
||||
"upgrade": "升級專業版",
|
||||
"saved": "已儲存",
|
||||
"activateOk": "啟用成功",
|
||||
"deviceList": "已綁定裝置",
|
||||
"loadingDevices": "載入裝置列表…",
|
||||
"noDevices": "暫無綁定裝置",
|
||||
"thisDevice": "本機",
|
||||
"removeDevice": "解除綁定",
|
||||
"deviceRemoved": "已解除該裝置綁定",
|
||||
"seatFull": "裝置席位已滿。請先解除其他裝置,再在新機器上啟用。"
|
||||
}
|
||||
}
|
||||
@@ -3,8 +3,9 @@
|
||||
"local": "本機",
|
||||
"remote": "遠端",
|
||||
"notConnectedTitle": "未連線到遠端伺服器",
|
||||
"notConnectedDesc": "請先連線 SSH 工作階段以使用 SFTP",
|
||||
"ariaLabel": "{{title}}檔案面板"
|
||||
"notConnectedDesc": "先連上 SSH,再傳檔、改設定",
|
||||
"ariaLabel": "{{title}}檔案面板",
|
||||
"reconnectResumeDesc": "連線中斷。一鍵重連後回到 {{path}}"
|
||||
},
|
||||
"connection": {
|
||||
"selectServer": "選擇伺服器",
|
||||
@@ -12,7 +13,9 @@
|
||||
"createSessionHint": "請先在側邊欄建立連線",
|
||||
"reconnect": "重新連線",
|
||||
"notConnected": "未連線",
|
||||
"connecting": "連線中..."
|
||||
"connecting": "連線中...",
|
||||
"resumeHint": "重連後將回到 {{path}}",
|
||||
"reconnectingResume": "正在重連並恢復 {{path}}…"
|
||||
},
|
||||
"errors": {
|
||||
"notConnected": "SFTP 尚未連線",
|
||||
@@ -23,19 +26,14 @@
|
||||
"selectDownloadFiles": "請先選擇要下載的檔案",
|
||||
"uploadFailed": "上傳失敗",
|
||||
"downloadFailed": "下載失敗",
|
||||
"fileError": "{{fileName}}: {{message}}"
|
||||
"fileError": "{{fileName}}: {{message}}",
|
||||
"mkdirFailed": "建立資料夾失敗"
|
||||
},
|
||||
"toolbar": {
|
||||
"upload": "上傳",
|
||||
"uploadAria": "上傳",
|
||||
"download": "下載",
|
||||
"downloadAria": "下載",
|
||||
"downloadNeedSelection": "請先選擇遠端檔案",
|
||||
"downloadHint": "下載選中的遠端檔案",
|
||||
"refresh": "重新整理",
|
||||
"refreshAria": "重新整理",
|
||||
"refreshAria": "重新整理目前面板",
|
||||
"newFolder": "新增資料夾",
|
||||
"newFolderAria": "新增資料夾"
|
||||
"newFolderAria": "在目前面板新增資料夾"
|
||||
},
|
||||
"sort": {
|
||||
"name": "名稱",
|
||||
@@ -55,7 +53,8 @@
|
||||
"hideHidden": "隱藏點檔案(.xxx)",
|
||||
"showHiddenAria": "顯示隱藏檔案",
|
||||
"hideHiddenAria": "隱藏點檔案",
|
||||
"searchAria": "{{title}} 目前資料夾搜尋"
|
||||
"searchAria": "{{title}} 目前資料夾搜尋",
|
||||
"upAtRoot": "已在根目錄"
|
||||
},
|
||||
"status": {
|
||||
"loading": "載入中...",
|
||||
@@ -63,7 +62,8 @@
|
||||
"filtered": "顯示 {{shown}} / {{total}} 項",
|
||||
"hiddenCount": "共 {{total}} 項(已隱藏 {{hidden}})",
|
||||
"total": "共 {{count}} 項",
|
||||
"filterHint": "篩選: {{query}}"
|
||||
"filterHint": "篩選: {{query}}",
|
||||
"refreshing": "正在重新整理..."
|
||||
},
|
||||
"empty": {
|
||||
"dirTitle": "目錄為空",
|
||||
@@ -99,7 +99,6 @@
|
||||
"download": "下載",
|
||||
"edit": "編輯",
|
||||
"rename": "重新命名",
|
||||
"copyPath": "複製路徑",
|
||||
"properties": "屬性",
|
||||
"permissions": "權限",
|
||||
"delete": "刪除"
|
||||
@@ -116,7 +115,18 @@
|
||||
"chmodTitle": "權限編輯",
|
||||
"chmodApply": "套用",
|
||||
"pickUploadTitle": "選擇要上傳的檔案或資料夾",
|
||||
"pickUploadRzTitle": "選擇要上傳的檔案(rz)"
|
||||
"pickUploadRzTitle": "選擇要上傳的檔案(rz)",
|
||||
"overwriteTitle": "覆蓋既有檔案?",
|
||||
"overwriteConfirm": "覆蓋",
|
||||
"overwriteSkip": "跳過",
|
||||
"overwriteOneRemote": "遠端已存在「{{name}}」,覆蓋?",
|
||||
"overwriteOneLocal": "本機已存在「{{name}}」,覆蓋?",
|
||||
"overwriteManyRemote": "遠端已有 {{count}} 個同名項目,覆蓋全部?",
|
||||
"overwriteManyLocal": "本機已有 {{count}} 個同名項目,覆蓋全部?",
|
||||
"overwriteMore": "…另有 {{count}} 個",
|
||||
"deleteTitle": "確認刪除",
|
||||
"deleteMessage": "將刪除 {{count}} 項:{{names}}",
|
||||
"deleteRecursiveWarn": "其中包含目錄,會遞迴刪除且無法復原。"
|
||||
},
|
||||
"properties": {
|
||||
"name": "名稱",
|
||||
@@ -152,27 +162,41 @@
|
||||
"statusDone": "完成",
|
||||
"statusFailed": "失敗",
|
||||
"statusCancelled": "已取消",
|
||||
"dropUpload": "上傳到 {{path}}",
|
||||
"dropDownload": "下載到 {{path}}"
|
||||
"dropUpload": "拖放到此處上傳到 {{path}}",
|
||||
"dropDownload": "拖放到此處下載到 {{path}}",
|
||||
"railAria": "本機與遠端之間傳輸",
|
||||
"railUpload": "上傳選取的本機檔案(未選取時可開啟檔案選擇器)",
|
||||
"railDownload": "下載選取的遠端檔案到本機",
|
||||
"railUploadAria": "上傳到遠端",
|
||||
"railDownloadAria": "下載到本機",
|
||||
"railDownloadNeedSelection": "請先選擇遠端檔案",
|
||||
"retry": "重試"
|
||||
},
|
||||
"editor": {
|
||||
"readFailed": "讀取失敗",
|
||||
"saveFailed": "儲存失敗",
|
||||
"unsavedClose": "有未儲存的修改,確定關閉?",
|
||||
"unsavedTitle": "未儲存的修改",
|
||||
"discardAndClose": "放棄並關閉",
|
||||
"reloadTitle": "重新載入",
|
||||
"discardAndReload": "放棄並重新載入",
|
||||
"saving": "儲存中...",
|
||||
"save": "儲存",
|
||||
"saved": "檔案已儲存",
|
||||
"loadingEditor": "載入編輯器...",
|
||||
"footer": "UTF-8 · Monaco · ⌘/Ctrl+S 儲存 · 最大約 2MB",
|
||||
"loadBlocked": "無法載入檔案內容",
|
||||
"footer": "UTF-8 · ⌘/Ctrl+S 儲存 · Esc 關閉 · 最大約 2MB",
|
||||
"charCount": "{{count}} 字元",
|
||||
"unsavedMark": " · 未儲存",
|
||||
"savedMark": " · 已儲存"
|
||||
"savedMark": " · 已儲存",
|
||||
"title": "編輯 {{name}}",
|
||||
"dirtyBadge": "未儲存",
|
||||
"reload": "重新載入",
|
||||
"unsavedReload": "有未儲存的修改,確定重新載入並捨棄?"
|
||||
},
|
||||
"toast": {
|
||||
"renamed": "已重新命名為 {{name}}",
|
||||
"renameFailed": "重新命名失敗",
|
||||
"pathCopied": "路徑已複製到剪貼簿",
|
||||
"pathCopyFailed": "複製路徑失敗",
|
||||
"chmodUpdated": "權限已更新為 {{mode}}",
|
||||
"chmodFailed": "權限修改失敗",
|
||||
"uploadPartial": "{{action}}完成 {{completed}} 個,失敗 {{failed}} 個:{{detail}}",
|
||||
@@ -180,7 +204,13 @@
|
||||
"uploadAction": "上傳",
|
||||
"downloadAction": "下載",
|
||||
"noFolderUpload": "上傳資料夾失敗",
|
||||
"noDragPath": "目前系統未提供拖曳檔案路徑,請使用「上傳」按鈕選擇檔案",
|
||||
"noFolderRecursive": "資料夾遞迴傳輸失敗,請重試或改用上傳按鈕"
|
||||
"noDragPath": "目前系統未提供拖曳路徑。請用中間 → 箭頭或選擇檔案上傳。",
|
||||
"noFolderRecursive": "資料夾傳輸失敗。請重試,或使用中間 → 箭頭 / 檔案選擇器。",
|
||||
"dropFailed": "拖放失敗:無法讀取檔案資訊。請再試,或使用中間箭頭傳輸。",
|
||||
"folderCreated": "已建立資料夾 {{name}}",
|
||||
"allSkippedExisting": "同名檔案均已跳過",
|
||||
"skippedExisting": "已跳過 {{count}} 個同名檔案",
|
||||
"deleteFailed": "刪除失敗",
|
||||
"deleted": "已刪除"
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,7 @@
|
||||
"reopenShell": "重新開啟 Shell",
|
||||
"reopening": "正在開啟…",
|
||||
"disconnected": "連線已中斷",
|
||||
"disconnectedHint": "SSH 連線已結束或網路中斷。點擊下方一鍵重新連線。",
|
||||
"disconnectedHint": "SSH 連線已結束或網路中斷。點下方一鍵重新連線,即可繼續工作。",
|
||||
"reconnect": "重新連線",
|
||||
"suspended": "連線已暫停",
|
||||
"suspendedHint": "長時間未操作,連線已進入暫停以節省資源",
|
||||
@@ -70,7 +70,8 @@
|
||||
"splitRight": "向右分割",
|
||||
"splitDown": "向下分割",
|
||||
"maximizePane": "最大化目前窗格",
|
||||
"restoreLayout": "還原分割版面"
|
||||
"restoreLayout": "還原分割版面",
|
||||
"openSftp": "開啟 SFTP"
|
||||
},
|
||||
"search": {
|
||||
"placeholder": "搜尋...",
|
||||
|
||||
Reference in new issue
Block a user