feat: multi-language interface (zh-CN/zh-TW/en/ja), multilingual offline changelog, settings robustness
i18n - shared/i18n: dependency-free t() with flat per-namespace dictionaries (common/settings/workspace/terminal/ssh/panels/main), zh-CN fallback - language picker in Settings -> System; antd ConfigProvider locale follows it - main process tracks the language too: tray menu, close prompt, ssh/sftp/ zmodem errors and the log TUI marker are translated; tray rebuilds on change changelog - CHANGELOG.md (zh-CN canonical) + .zh-TW/.en/.ja, bundled via ?raw and read per interface language with per-version fallback to zh-CN (no network) - sync-changelog.cjs merges RELEASE_NOTES[.<lang>].md per release; release.cjs refuses to publish without a zh-CN entry for the version settings robustness - closeAction 'ask' survives the sanitizer (was silently coerced to 'tray', which made the 'ask every time' option dead) - highlight rules are repaired instead of dropped: string priority, 0/1 enabled, missing fg colour; unknown fields preserved - load-time warnings are written to settings-warnings.log (deduped, capped) terminal/UI - configurable terminal toolbar: open working directory (default on), session log recording (off), open logs folder (off) - global shortcut field records key combos (modifier or F-key required) - input suggestions + command history default to off, with a one-time reset migration for existing installs - settings dialog scrolling fixed (antd v6 renamed the tabs container), theme gallery nested scrollbar removed, joined segmented pickers with readable selected-state text tests: settings-store.mjs (15 checks) added; commands-store.mjs updated for the new off-by-default history setting
This commit is contained in:
1 parent
34094d607b
commit
4c6a29ef28
82 files changed
+3342
-608
No files matched your search
@@ -0,0 +1,17 @@
|
||||
/** 命名空間:通用(i18n 基礎設施、通用按鈕與狀態)。歸屬:i18n 基礎設施維護者。 */
|
||||
const common: Record<string, string> = {
|
||||
'common.ok': '確定',
|
||||
'common.cancel': '取消',
|
||||
'common.close': '關閉',
|
||||
'common.save': '儲存',
|
||||
'common.delete': '刪除',
|
||||
'common.edit': '編輯',
|
||||
'common.add': '新增',
|
||||
'common.copy': '複製',
|
||||
'common.paste': '貼上',
|
||||
'common.reset': '恢復預設',
|
||||
'common.language': '介面語言',
|
||||
'common.languageDesc': '切換後立即預覽介面語言,儲存後永久生效。'
|
||||
}
|
||||
|
||||
export default common
|
||||
@@ -0,0 +1,18 @@
|
||||
import common from './common'
|
||||
import settings from './settings'
|
||||
import workspace from './workspace'
|
||||
import terminal from './terminal'
|
||||
import ssh from './ssh'
|
||||
import panels from './panels'
|
||||
import main from './main'
|
||||
|
||||
/** 繁體中文詞條。命名空間檔案依區域分工維護,詳見 src/shared/i18n/index.ts 的歸屬表。 */
|
||||
export default {
|
||||
...common,
|
||||
...settings,
|
||||
...workspace,
|
||||
...terminal,
|
||||
...ssh,
|
||||
...panels,
|
||||
...main
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
/** 命名空間:main(主程序文案:系統匣、關閉詢問、更新器)。歸屬:主程序維護者。 */
|
||||
const main: Record<string, string> = {
|
||||
'main.tray.showWindow': '顯示主視窗',
|
||||
'main.tray.closeAction': '關閉按鈕行為',
|
||||
'main.tray.askEveryTime': '每次詢問',
|
||||
'main.tray.minimizeToTray': '最小化到系統匣',
|
||||
'main.tray.exitDirectly': '直接結束',
|
||||
'main.tray.exit': '結束',
|
||||
'main.tray.balloonTitle': '已最小化到系統匣',
|
||||
'main.tray.balloonContent': '終端機連線仍在背景執行,點擊系統匣圖示即可還原視窗。',
|
||||
'main.tray.closeTitle': '關閉 OpenTerminal',
|
||||
'main.tray.closeMessage': '要最小化到系統匣,還是直接結束?',
|
||||
'main.tray.closeDetail': '最小化到系統匣時,終端機連線會繼續執行。',
|
||||
'main.tray.rememberChoice': '記住我的選擇,不再詢問',
|
||||
|
||||
'main.updater.feedFailed': '國內來源: {gitea};GitHub: {github}',
|
||||
|
||||
'main.ssh.connectTimeout': '連線逾時 ({host}:{port})',
|
||||
'main.ssh.saveFingerprintFailed': '儲存主機指紋失敗: {detail}',
|
||||
'main.ssh.hostKeyRejected': '使用者拒絕了主機指紋',
|
||||
'main.ssh.connectFailed': '連線失敗 {host}:{port}: {detail}',
|
||||
'main.ssh.shellOpenFailed': '無法開啟 SSH shell ({host}:{port}): {detail}',
|
||||
'main.ssh.initFailed': 'SSH 連線初始化失敗 ({host}:{port}): {detail}',
|
||||
'main.ssh.readKeyFailed': '無法讀取私密金鑰檔案 {path}: {detail}',
|
||||
|
||||
'main.sftp.sessionGone': 'SSH 連線不存在或已中斷',
|
||||
'main.sftp.deleteFailed': '刪除失敗: {detail}',
|
||||
'main.sftp.invalidMode': '權限值無效: {mode}',
|
||||
'main.sftp.invalidUidGid': 'uid/gid 無效',
|
||||
'main.sftp.commandExitCode': '指令結束碼 {code}',
|
||||
'main.sftp.cancelled': '已取消',
|
||||
|
||||
'main.zmodem.transferFailed': '傳輸失敗',
|
||||
'main.zmodem.transferTimeout': '傳輸逾時',
|
||||
'main.zmodem.sendFailed': '傳送失敗',
|
||||
'main.zmodem.uploadFailed': '上傳失敗',
|
||||
'main.zmodem.receiveFailed': '接收失敗',
|
||||
'main.zmodem.abnormal': 'ZMODEM 傳輸異常',
|
||||
'main.zmodem.cancelled': '已取消',
|
||||
'main.zmodem.offerTimedOut': '未選擇檔案,已取消',
|
||||
'main.zmodem.sessionInvalid': '連線已失效',
|
||||
'main.zmodem.sessionCreateFailed': '無法建立 ZMODEM 連線',
|
||||
'main.zmodem.noSaveDir': '未指定儲存目錄',
|
||||
'main.zmodem.noFiles': '未選擇檔案',
|
||||
|
||||
'main.ipc.connectionMissing': '連線書籤不存在 ({id})',
|
||||
|
||||
'main.sysinfo.sessionGone': 'SSH 工作階段不存在或已中斷',
|
||||
'main.sysinfo.execFailed': 'SSH exec 失敗',
|
||||
'main.sysinfo.parseFailed': '解析失敗: {message}',
|
||||
'main.pty.serviceNotReady': 'SSH 工作階段服務尚未初始化',
|
||||
'main.pty.missingConnectionId': 'SSH 工作階段缺少 connectionId',
|
||||
'main.log.tuiOmitted': '全螢幕介面(TUI)輸出已省略'
|
||||
}
|
||||
|
||||
export default main
|
||||
@@ -0,0 +1,36 @@
|
||||
/** 命名空間:panels(命令面板、工作階段日誌面板、傳輸面板)。歸屬:SSH/面板維護者。 */
|
||||
const panels: Record<string, string> = {
|
||||
// 命令面板
|
||||
'panels.commands.sectionTitle': '命令',
|
||||
'panels.commands.target': '傳送目標',
|
||||
'panels.commands.targetSsh': 'SSH 伺服器',
|
||||
'panels.commands.targetTerminal': '終端機',
|
||||
'panels.commands.tabHistory': '歷史',
|
||||
'panels.commands.tabLibrary': '命令庫',
|
||||
'panels.commands.historyTitle': '歷史命令',
|
||||
'panels.commands.clearTitle': '清空全部命令歷史?',
|
||||
'panels.commands.clear': '清空',
|
||||
'panels.commands.noHistory': '尚無歷史命令',
|
||||
'panels.commands.loading': '載入中…',
|
||||
'panels.commands.libraryTitle': '命令庫',
|
||||
'panels.commands.libraryEmpty': '命令庫為空',
|
||||
'panels.commands.add': '新增命令',
|
||||
'panels.commands.name': '名稱',
|
||||
'panels.commands.optional': '(選填)',
|
||||
'panels.commands.command': '命令',
|
||||
'panels.commands.commandPlaceholder': '如 ls -la',
|
||||
'panels.commands.note': '備註',
|
||||
'panels.commands.deleteTitle': '刪除該命令?',
|
||||
'panels.commands.deleteAria': '刪除命令',
|
||||
|
||||
// 傳輸面板
|
||||
'panels.transfer.failed': '傳輸失敗',
|
||||
'panels.transfer.cancelled': '已取消',
|
||||
'panels.transfer.done': '傳輸完成',
|
||||
'panels.transfer.uploading': '上傳中',
|
||||
'panels.transfer.downloading': '下載中',
|
||||
'panels.transfer.zmodemUploading': 'ZMODEM 上傳中',
|
||||
'panels.transfer.zmodemDownloading': 'ZMODEM 下載中'
|
||||
}
|
||||
|
||||
export default panels
|
||||
@@ -0,0 +1,147 @@
|
||||
/** 命名空間:settings(設定對話框:字型/游標/渲染/高亮/主題/系統/關於)。歸屬:設定頁維護者。 */
|
||||
const settings: Record<string, string> = {
|
||||
'settings.title': '設定',
|
||||
'settings.tabs.font': '字型',
|
||||
'settings.tabs.cursor': '游標與捲動',
|
||||
'settings.tabs.render': '渲染與行為',
|
||||
'settings.tabs.highlight': '高亮',
|
||||
'settings.tabs.theme': '主題',
|
||||
'settings.tabs.system': '系統',
|
||||
'settings.tabs.about': '關於',
|
||||
'settings.resizeHandle': '拖曳調整大小',
|
||||
'settings.preview': '預覽',
|
||||
'settings.deleteConfirmDesc': '刪除後無法復原,確定要繼續嗎?',
|
||||
'settings.color.foreground': '前景',
|
||||
'settings.color.background': '背景',
|
||||
'settings.color.cursor': '游標',
|
||||
'settings.color.selection': '選取區',
|
||||
'settings.font.label': '字型',
|
||||
'settings.font.desc': '內建預設字型或系統等寬字型',
|
||||
'settings.font.placeholder': '選擇字型',
|
||||
'settings.font.default': '預設',
|
||||
'settings.font.size': '字型大小',
|
||||
'settings.font.sizeDesc': '終端文字的像素大小',
|
||||
'settings.font.weight': '字重',
|
||||
'settings.font.weightDesc': '400 為一般,700 為粗體',
|
||||
'settings.font.boldWeight': '粗體字重',
|
||||
'settings.font.boldWeightDesc': '粗體文字所使用的字重',
|
||||
'settings.font.letterSpacing': '字元間距',
|
||||
'settings.font.letterSpacingDesc': '字元之間的水平間距',
|
||||
'settings.font.lineHeight': '行高',
|
||||
'settings.font.lineHeightDesc': '相鄰兩行之間的垂直距離',
|
||||
'settings.cursor.blink': '游標閃爍',
|
||||
'settings.cursor.blinkDesc': '游標是否週期性閃爍',
|
||||
'settings.cursor.style': '游標樣式',
|
||||
'settings.cursor.styleDesc': '游標的顯示形狀',
|
||||
'settings.cursor.inactiveStyle': '非作用中游標樣式',
|
||||
'settings.cursor.inactiveStyleDesc': '視窗失焦時的游標樣式',
|
||||
'settings.cursor.scrollback': '捲動緩衝區',
|
||||
'settings.cursor.scrollbackDesc': '畫面上可往回捲動的行數',
|
||||
'settings.cursorStyle.bar': '直線 (bar)',
|
||||
'settings.cursorStyle.block': '方塊 (block)',
|
||||
'settings.cursorStyle.underline': '底線 (underline)',
|
||||
'settings.cursorStyle.outline': '外框 (outline)',
|
||||
'settings.cursorStyle.none': '無 (none)',
|
||||
'settings.rendererMode.auto': '自動',
|
||||
'settings.rendererMode.autoHint': '優先使用 WebGL 加速,失敗時自動退回 DOM 渲染',
|
||||
'settings.rendererMode.webgl': '高效能 WebGL',
|
||||
'settings.rendererMode.webglHint': '強制使用 GPU 加速渲染,適合高更新率與大量行數捲動',
|
||||
'settings.rendererMode.dom': '相容 DOM',
|
||||
'settings.rendererMode.domHint': '純 CPU 渲染,相容性最佳,適合沒有 GPU 或遠端桌面的環境',
|
||||
'settings.render.modeLabel': '渲染模式',
|
||||
'settings.render.modeHint': '終端儲存格的渲染加速方式,變更將套用到所有終端',
|
||||
'settings.render.autoWrap': '自動換行',
|
||||
'settings.render.autoWrapDesc': '超出寬度時自動折行',
|
||||
'settings.render.copyOnSelect': '選取即複製',
|
||||
'settings.render.copyOnSelectDesc': '以滑鼠選取文字時自動複製',
|
||||
'settings.render.pasteRiskConfirm': '貼上風險確認',
|
||||
'settings.render.pasteRiskConfirmDesc': '多行文字(或超長單行)貼上前彈出確認;單行直接貼上',
|
||||
'settings.render.suggest': '輸入建議',
|
||||
'settings.render.suggestDesc': '輸入時顯示指令建議;Tab 接受,Enter 一律直接執行',
|
||||
'settings.render.history': '記錄指令歷史',
|
||||
'settings.render.historyDesc': '關閉後不再記錄新指令;已儲存的歷史仍會保留',
|
||||
'settings.render.historyLimit': '歷史筆數上限',
|
||||
'settings.render.historyLimitDesc': '指令歷史最多保留幾筆,重複的指令只記一次',
|
||||
'settings.render.recButton': '終端工具列 · 錄製',
|
||||
'settings.render.recButtonDesc': '右上角顯示「記錄工作階段日誌」按鈕',
|
||||
'settings.render.openLogsButton': '終端工具列 · 開啟日誌目錄',
|
||||
'settings.render.openLogsButtonDesc': '右上角顯示「開啟日誌目錄」按鈕',
|
||||
'settings.render.openCwdButton': '終端工具列 · 開啟工作區目錄',
|
||||
'settings.render.openCwdButtonDesc':
|
||||
'右上角顯示「開啟目前目錄」按鈕(SSH 工作階段不顯示;目錄會隨 cd 即時追蹤,需開啟 shell 整合或使用 cd 指令)',
|
||||
'settings.system.launchAtLogin': '開機時自動啟動',
|
||||
'settings.system.launchAtLoginDesc': '開機時自動啟動程式(開發模式下註冊的是開發版程式)',
|
||||
'settings.system.preventSleep': '防止系統休眠',
|
||||
'settings.system.preventSleepDesc':
|
||||
'開啟後 OpenTerminal 會防止系統自動休眠;關閉則允許系統依本身的設定休眠',
|
||||
'settings.system.restoreSession': '啟動時還原上次工作階段',
|
||||
'settings.system.restoreSessionDesc':
|
||||
'下次啟動時還原分割版面,並讓每個終端回到上次所在的目錄;關閉則每次都以單一終端啟動',
|
||||
'settings.system.shellIntegration': 'Shell 整合',
|
||||
'settings.system.shellIntegrationDesc':
|
||||
'讓 shell 主動回報工作目錄(OSC 7),路徑記憶更精確(含指令碼內的 cd);會包裝你的命令提示字元,提示字元主題顯示異常時關閉即可',
|
||||
'settings.system.closeAction': '關閉按鈕行為',
|
||||
'settings.system.closeActionDesc':
|
||||
'點擊視窗關閉按鈕時的動作;最小化至系統匣後,可從系統匣圖示的右鍵選單結束',
|
||||
'settings.system.closeActionTray': '最小化至系統匣',
|
||||
'settings.system.closeActionExit': '直接結束',
|
||||
'settings.system.closeActionAsk': '每次詢問',
|
||||
'settings.system.globalShortcut': '全域喚出快速鍵',
|
||||
'settings.system.globalShortcutDesc': '點擊輸入框後直接按下組合鍵;Esc 取消,Backspace 清除並停用',
|
||||
'settings.system.globalShortcutHint':
|
||||
'搭配全域鍵可在任何畫面喚出/隱藏視窗;若註冊失敗(與其他軟體衝突)則不會生效,應用程式也不會報錯。',
|
||||
'settings.system.shortcutRecording': '請按下組合鍵…',
|
||||
'settings.system.shortcutPlaceholder': '點擊後按下快速鍵,留空為停用',
|
||||
'settings.highlight.alert':
|
||||
'自訂高亮可強化顯示效果,但會略微增加效能負擔。規則依優先順序套用。PS:高亮是在寫入終端時注入顏色,對既有的回捲內容不生效',
|
||||
'settings.highlight.enabled': '啟用',
|
||||
'settings.highlight.pattern': '正規表示式',
|
||||
'settings.highlight.patternPlaceholder': '例如 \\b(ERROR|FAILED)\\b',
|
||||
'settings.highlight.invalidRegex': '正規表示式無效',
|
||||
'settings.highlight.priority': '優先順序',
|
||||
'settings.highlight.priorityHint': '值越小越先套用',
|
||||
'settings.highlight.color': '顏色',
|
||||
'settings.highlight.clearBg': '清除',
|
||||
'settings.highlight.addBg': '新增',
|
||||
'settings.highlight.palette': '色盤',
|
||||
'settings.highlight.note': '備註',
|
||||
'settings.highlight.notePlaceholder': '規則說明(選填)',
|
||||
'settings.highlight.actions': '操作',
|
||||
'settings.highlight.addRule': '+ 新增規則',
|
||||
'settings.highlight.empty': '尚無高亮規則,點擊「+ 新增規則」建立',
|
||||
'settings.highlight.deleteTitle': '刪除高亮規則',
|
||||
'settings.highlight.resetTitle': '還原預設高亮規則',
|
||||
'settings.highlight.resetDesc': '會將目前所有規則取代為內建預設,無法復原。',
|
||||
'settings.highlight.resetOk': '還原',
|
||||
'settings.highlight.createTitle': '新增高亮規則',
|
||||
'settings.highlight.editTitle': '編輯高亮規則',
|
||||
'settings.theme.accent': '標籤強調色',
|
||||
'settings.theme.accentDesc': '作用中標籤的邊框、側邊欄指示條與 SSH 徽章的強調顏色',
|
||||
'settings.theme.customBadge': '自訂',
|
||||
'settings.theme.deleteTitle': '刪除自訂主題',
|
||||
'settings.theme.create': '新增主題',
|
||||
'settings.theme.editTitle': '編輯主題',
|
||||
'settings.themeEditor.name': '名稱',
|
||||
'settings.themeEditor.namePlaceholder': '主題名稱',
|
||||
'settings.themeEditor.copySuffix': '(副本)',
|
||||
'settings.about.currentVersion': '目前版本',
|
||||
'settings.about.statusIdle': '點擊檢查更新',
|
||||
'settings.about.statusChecking': '正在檢查更新…',
|
||||
'settings.about.statusAvailable': '發現新版本',
|
||||
'settings.about.statusLatest': '目前已是最新版本',
|
||||
'settings.about.statusDownloading': '正在下載…',
|
||||
'settings.about.statusDownloaded': '下載完成,可重新啟動安裝',
|
||||
'settings.about.statusError': '檢查失敗',
|
||||
'settings.about.statusDev': '開發模式不支援檢查更新',
|
||||
'settings.about.channelStable': '穩定更新通道',
|
||||
'settings.about.autoCheck': '啟動時自動檢查',
|
||||
'settings.about.download': '下載更新',
|
||||
'settings.about.downloadGithub': '(GitHub 來源)',
|
||||
'settings.about.install': '重新啟動安裝',
|
||||
'settings.about.check': '檢查更新',
|
||||
'settings.about.checkingButton': '檢查中',
|
||||
'settings.about.changelog': '更新日誌',
|
||||
'settings.about.changelogEmpty': '暫無更新日誌'
|
||||
}
|
||||
|
||||
export default settings
|
||||
@@ -0,0 +1,144 @@
|
||||
/** 命名空間:ssh(SSH 連線管理、主機金鑰、檔案面板、zmodem、系統監控)。歸屬:SSH 維護者。 */
|
||||
const ssh: Record<string, string> = {
|
||||
// 認證方式 / 金鑰種類
|
||||
'ssh.auth.password': '密碼',
|
||||
'ssh.auth.privateKey': '私鑰',
|
||||
'ssh.auth.agent': 'Agent',
|
||||
'ssh.secret.passphrase': '口令',
|
||||
|
||||
// 連線編輯對話框:認證相關欄位
|
||||
'ssh.fields.agentDesc': '使用本機 SSH Agent 中已載入的金鑰進行認證,無須在本應用程式內儲存任何金鑰。',
|
||||
'ssh.fields.askPasswordLabel': '連線時詢問密碼',
|
||||
'ssh.fields.askPasswordHint': '開啟後每次連線彈出對話框輸入密碼,不再使用已儲存的密碼',
|
||||
'ssh.fields.passwordPlaceholder': '編輯時留空表示保留已儲存的密碼',
|
||||
'ssh.fields.keyPath': '私鑰路徑(伺服器上的本機私鑰路徑,可留空)',
|
||||
'ssh.fields.keyContent': '私鑰內容',
|
||||
'ssh.fields.keyContentPlaceholder':
|
||||
'貼上私鑰內容;留空則使用上面的路徑(編輯時留空表示保留已儲存的私鑰)',
|
||||
'ssh.fields.askPassphraseLabel': '連線時詢問口令',
|
||||
'ssh.fields.askPassphraseHint': '開啟後每次連線提示輸入私鑰口令',
|
||||
'ssh.fields.passphrase': '私鑰口令',
|
||||
'ssh.fields.passphrasePlaceholder': '編輯時留空表示保留已儲存的口令',
|
||||
|
||||
// 連線編輯對話框
|
||||
'ssh.dialog.titleEdit': '編輯連線',
|
||||
'ssh.dialog.titleNew': '新增連線',
|
||||
'ssh.dialog.saveFailed': '儲存失敗,請檢查輸入後重試',
|
||||
'ssh.dialog.name': '名稱',
|
||||
'ssh.dialog.nameRequired': '請輸入連線名稱',
|
||||
'ssh.dialog.namePlaceholder': '例如:正式環境伺服器',
|
||||
'ssh.dialog.group': '分組',
|
||||
'ssh.dialog.groupPlaceholder': '選擇或輸入新分組,留空歸入「預設」',
|
||||
'ssh.dialog.host': '主機',
|
||||
'ssh.dialog.hostRequired': '請輸入主機位址',
|
||||
'ssh.dialog.hostPlaceholder': '192.168.1.10 或 example.com',
|
||||
'ssh.dialog.port': '連接埠',
|
||||
'ssh.dialog.portRange': '連接埠需在 1–65535 之間',
|
||||
'ssh.dialog.username': '使用者名稱',
|
||||
'ssh.dialog.usernameRequired': '請輸入使用者名稱',
|
||||
'ssh.dialog.authMethod': '認證方式',
|
||||
'ssh.dialog.savedSecret': '已儲存{kind},留空將保留原值',
|
||||
'ssh.dialog.keepalive': 'Keepalive 間隔(秒)',
|
||||
'ssh.dialog.keepaliveTooltip': '0 表示關閉 keepalive',
|
||||
'ssh.dialog.keepaliveMin': '不能為負數',
|
||||
|
||||
// 連線側欄
|
||||
'ssh.sidebar.defaultGroup': '預設',
|
||||
'ssh.sidebar.timeJustNow': '剛剛',
|
||||
'ssh.sidebar.timeMinutesAgo': '{n} 分鐘前',
|
||||
'ssh.sidebar.timeHoursAgo': '{n} 小時前',
|
||||
'ssh.sidebar.timeDaysAgo': '{n} 天前',
|
||||
'ssh.sidebar.modeTerminal': '終端機工作區',
|
||||
'ssh.sidebar.modeSsh': 'SSH 工作區',
|
||||
'ssh.sidebar.title': '連線',
|
||||
'ssh.sidebar.newConnection': '新增連線',
|
||||
'ssh.sidebar.sectionTerminals': '終端機',
|
||||
'ssh.sidebar.noLocalTerminals': '沒有開啟的本機終端機',
|
||||
'ssh.sidebar.local': '本機',
|
||||
'ssh.sidebar.sectionServers': 'SSH 伺服器',
|
||||
'ssh.sidebar.empty': '尚無連線,點擊+新增',
|
||||
'ssh.sidebar.loading': '載入中…',
|
||||
'ssh.sidebar.recent': '最近工作階段',
|
||||
'ssh.sidebar.dblClickConnect': '雙擊連線 {host}',
|
||||
'ssh.sidebar.deleteTitle': '刪除該連線?',
|
||||
'ssh.sidebar.deleteDesc': '連線設定刪除後無法復原。已儲存的金鑰資料會一併刪除。',
|
||||
|
||||
// 主機金鑰確認
|
||||
'ssh.hostKey.changedTitle': '主機指紋已變更!',
|
||||
'ssh.hostKey.unknownHost': '未知主機',
|
||||
'ssh.hostKey.accept': '接受並連線',
|
||||
'ssh.hostKey.reject': '拒絕',
|
||||
'ssh.hostKey.mitmTitle': '可能遭受中間人攻擊',
|
||||
'ssh.hostKey.mitmDesc':
|
||||
'遠端主機的金鑰指紋與先前記錄的不一致。如果這不是您本人更換了伺服器金鑰,可能有人正在冒充該主機。',
|
||||
'ssh.hostKey.firstConnect': '首次連線該主機,尚未記錄其指紋。',
|
||||
'ssh.hostKey.target': '主機:{target}',
|
||||
'ssh.hostKey.fingerprint': '指紋:{fingerprint}',
|
||||
|
||||
// SSH 工作區:檔案面板容器、主機徽章
|
||||
'ssh.bottomPanel.resize': '調整檔案面板高度',
|
||||
'ssh.hostBadge.aria': 'SSH 主機 {label}',
|
||||
|
||||
// ZMODEM
|
||||
'ssh.zmodem.done': 'ZMODEM 傳輸完成',
|
||||
'ssh.zmodem.failed': 'ZMODEM 傳輸失敗:{message}',
|
||||
'ssh.zmodem.unknownError': '未知錯誤',
|
||||
'ssh.zmodem.titleReceive': '下載到本機',
|
||||
'ssh.zmodem.titleSend': '上傳到伺服器',
|
||||
'ssh.zmodem.pickDir': '選擇儲存目錄',
|
||||
'ssh.zmodem.pickFiles': '選擇檔案',
|
||||
'ssh.zmodem.receiveDesc': '偵測到 sz 下載請求(遠端正在傳送檔案),請選擇儲存在本機的目錄。',
|
||||
'ssh.zmodem.sendDesc': '偵測到 rz 上傳請求(遠端正在接收檔案),請選擇要上傳的檔案。',
|
||||
|
||||
// 檔案面板(SFTP)
|
||||
'ssh.file.up': '上一層',
|
||||
'ssh.file.refresh': '重新整理',
|
||||
'ssh.file.uploadFile': '上傳檔案',
|
||||
'ssh.file.downloadSelected': '下載選取項目',
|
||||
'ssh.file.permOwner': '權限 / 擁有者',
|
||||
'ssh.file.open': '開啟',
|
||||
'ssh.file.download': '下載',
|
||||
'ssh.file.upload': '上傳…',
|
||||
'ssh.file.rename': '重新命名',
|
||||
'ssh.file.new': '新增',
|
||||
'ssh.file.newFolder': '新增資料夾',
|
||||
'ssh.file.copyPath': '複製路徑',
|
||||
'ssh.file.copyPathFailed': '複製路徑失敗',
|
||||
'ssh.file.pathCopied': '已複製路徑',
|
||||
'ssh.file.permission': '檔案權限…',
|
||||
'ssh.file.deleteTitle': '確認刪除?',
|
||||
'ssh.file.loading': '載入中…',
|
||||
'ssh.file.empty': '空目錄',
|
||||
'ssh.file.modeUnavailable': '權限不可用',
|
||||
'ssh.file.folderName': '資料夾名稱',
|
||||
'ssh.file.create': '建立',
|
||||
'ssh.file.renameTitle': '重新命名 {name}',
|
||||
'ssh.file.permTitle': '權限 · {name}',
|
||||
'ssh.file.permApplied': '已套用權限',
|
||||
'ssh.file.octal': '八進位',
|
||||
'ssh.file.octalPlaceholder': '如 755',
|
||||
'ssh.file.keepEmpty': '不修改則留空',
|
||||
'ssh.file.ownerHint': 'UID/GID 留空表示不修改擁有者',
|
||||
'ssh.file.permRowOwner': '擁有者',
|
||||
'ssh.file.permRowGroup': '群組',
|
||||
'ssh.file.permRowOther': '其他',
|
||||
'ssh.file.permColRead': '讀取',
|
||||
'ssh.file.permColWrite': '寫入',
|
||||
'ssh.file.permColExec': '執行',
|
||||
|
||||
// 系統監控
|
||||
'ssh.monitor.collecting': '採集中…',
|
||||
'ssh.monitor.interrupted': '採集中斷:{error}',
|
||||
'ssh.monitor.mem': '記憶體',
|
||||
'ssh.monitor.disks': '磁碟',
|
||||
'ssh.monitor.net': '網路',
|
||||
'ssh.monitor.cores': '{n} 核心',
|
||||
'ssh.monitor.loadavg': '負載 {value}',
|
||||
'ssh.monitor.uptime': '運作時間',
|
||||
'ssh.monitor.uptimeSeconds': '{n} 秒',
|
||||
'ssh.monitor.uptimeMinutes': '{n} 分鐘',
|
||||
'ssh.monitor.uptimeHours': '{h} 小時 {m} 分',
|
||||
'ssh.monitor.uptimeDays': '{n} 天'
|
||||
}
|
||||
|
||||
export default ssh
|
||||
@@ -0,0 +1,26 @@
|
||||
/** 命名空間:terminal(終端機檢視:右鍵選單、搜尋、貼上確認、工具列、提示)。歸屬:工作區/終端機維護者。 */
|
||||
const terminal: Record<string, string> = {
|
||||
'terminal.menu.find': '尋找',
|
||||
'terminal.menu.selectAll': '全選',
|
||||
'terminal.menu.clear': '清除畫面',
|
||||
'terminal.search.placeholder': '搜尋',
|
||||
'terminal.search.prev': '上一個',
|
||||
'terminal.search.next': '下一個',
|
||||
'terminal.search.found': '已找到',
|
||||
'terminal.search.notFound': '未找到',
|
||||
'terminal.suggest.hint': '↑/↓ 選擇 · Tab 接受 · Esc 關閉',
|
||||
'terminal.rec.start': '開始錄製',
|
||||
'terminal.rec.stop': '停止錄製',
|
||||
'terminal.rec.startLog': '開始錄製工作階段日誌',
|
||||
'terminal.rec.stopLog': '停止錄製工作階段日誌',
|
||||
'terminal.rec.openLogs': '開啟日誌目錄',
|
||||
'terminal.rec.openCwd': '開啟工作區目錄',
|
||||
'terminal.paste.title': '確認貼上',
|
||||
'terminal.paste.message': '偵測到多行或潛在危險命令,確定要貼到終端機嗎?',
|
||||
'terminal.paste.noPrompt': '本次工作階段不再提示',
|
||||
'terminal.paste.disableDetection': '關閉後續貼上偵測',
|
||||
'terminal.paste.hint': '可在一般終端機設定中重新開啟或切換偵測策略。',
|
||||
'terminal.dead.message': '處理程序已結束 (代碼 {code})'
|
||||
}
|
||||
|
||||
export default terminal
|
||||
@@ -0,0 +1,60 @@
|
||||
/** 命名空間:workspace(工作區外殼:側邊欄、分頁、版面配置選單、分割、空狀態)。歸屬:工作區維護者。 */
|
||||
const workspace: Record<string, string> = {
|
||||
'workspace.tab.terminalTitle': '終端機 {n}',
|
||||
'workspace.tab.localTerminal': '本機終端機',
|
||||
'workspace.tab.closeOthers': '關閉其他',
|
||||
'workspace.tab.closeRight': '關閉右側',
|
||||
'workspace.tab.broadcastTarget': '廣播目標',
|
||||
'workspace.tab.broadcastBadge': '播',
|
||||
'workspace.tab.addInSplit': '在此分割中新增終端機',
|
||||
'workspace.newTerminal': '新增終端機',
|
||||
'workspace.empty.terminalTitle': '尚無終端機',
|
||||
'workspace.empty.sshTitle': '尚無 SSH 工作階段',
|
||||
'workspace.empty.sshHint': '請從左側伺服器清單連線',
|
||||
'workspace.rail.hideSidebar': '收合側邊欄',
|
||||
'workspace.rail.showSidebar': '展開側邊欄',
|
||||
'workspace.rail.layout': '版面配置',
|
||||
'workspace.rail.settings': '設定',
|
||||
'workspace.rail.connecting': '連線中…',
|
||||
'workspace.rail.terminalWorkspace': '終端機工作區',
|
||||
'workspace.rail.sshWorkspace': 'SSH 工作區',
|
||||
'workspace.panel.hideSidebar': '收合側邊欄',
|
||||
'workspace.panel.showSidebar': '展開側邊欄',
|
||||
'workspace.layout.splitRight': '水平分割',
|
||||
'workspace.layout.splitBelow': '垂直分割',
|
||||
'workspace.layout.saveTemplate': '儲存為範本',
|
||||
'workspace.layout.applyTemplate': '套用範本',
|
||||
'workspace.template.saveTitle': '儲存版面配置範本',
|
||||
'workspace.template.namePlaceholder': '範本名稱',
|
||||
'workspace.template.applyTitle': '套用版面配置範本',
|
||||
'workspace.template.empty': '尚無已儲存的範本',
|
||||
'workspace.template.apply': '套用',
|
||||
'workspace.template.deleteConfirm': '刪除這個範本?',
|
||||
'workspace.broadcast.toggle': '廣播輸入',
|
||||
'workspace.broadcast.activeTitle': '廣播中({count} 個目標)',
|
||||
'workspace.broadcast.popoverTerminal': '廣播輸入(終端機)',
|
||||
'workspace.broadcast.popoverSsh': '廣播輸入(SSH)',
|
||||
'workspace.broadcast.switch': '廣播開關',
|
||||
'workspace.broadcast.enabled': '已啟用({count})',
|
||||
'workspace.broadcast.needTwo': '需至少選擇 2 個目標',
|
||||
'workspace.broadcast.disabled': '未啟用',
|
||||
'workspace.broadcast.emptySsh': '尚無 SSH 伺服器工作階段',
|
||||
'workspace.broadcast.emptyTerminal': '尚無終端機',
|
||||
'workspace.broadcast.hint': '選擇 ≥2 個終端機後會自動開啟廣播;關閉任一個使目標少於 2 個時會自動關閉。僅目前模式群組的工作階段可被勾選。',
|
||||
'workspace.hint.sshFromList': 'SSH 工作階段請從伺服器清單連線',
|
||||
'workspace.hint.connectSshFirst': '請先連線 SSH 伺服器',
|
||||
'workspace.hint.noActiveTerminal': '沒有作用中的終端機:請至少開啟一個本機終端機或 SSH 工作階段',
|
||||
'workspace.hint.noSessionInPanel': '目前作用中的面板沒有可用的工作階段',
|
||||
'workspace.connect.failed': 'SSH 連線失敗',
|
||||
'workspace.connect.passwordTitle': '輸入連線密碼',
|
||||
'workspace.connect.passwordPlaceholder': '密碼',
|
||||
'workspace.connect.passphraseTitle': '輸入私密金鑰密語',
|
||||
'workspace.connect.passphrasePlaceholder': '私密金鑰密語',
|
||||
'workspace.connect.connecting': '連線中…',
|
||||
'workspace.connect.connectingNamed': '正在連線 {name}',
|
||||
'workspace.connect.action': '連線',
|
||||
'workspace.error.title': '介面發生異常',
|
||||
'workspace.error.reload': '重新載入'
|
||||
}
|
||||
|
||||
export default workspace
|
||||
Reference in new issue
Block a user