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

+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 自訂"
}
}