- 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
120 lines
5.7 KiB
JSON
120 lines
5.7 KiB
JSON
{
|
|
"toolbar": {
|
|
"splitHorizontal": "Chia trái/phải",
|
|
"splitVertical": "Chia trên/dưới",
|
|
"addPane": "Thêm pane",
|
|
"closePane": "Đóng pane hiện tại",
|
|
"maximizePane": "Phóng to pane hiện tại",
|
|
"restoreLayout": "Khôi phục bố cục chia",
|
|
"broadcast": "Phát sóng",
|
|
"broadcastAria": "Phát sóng đầu vào",
|
|
"broadcastOn": "Phát sóng đang bật: đồng bộ đầu vào tới {{count}} terminal trong phạm vi",
|
|
"broadcastOffPro": "Phát sóng đầu vào (Pro) · {{count}} terminal trong phạm vi",
|
|
"broadcastNeedPanesTab": "Tab này cần ít nhất 2 pane sẵn sàng để phát sóng (chia trước tiên)",
|
|
"broadcastNeedPanesAll": "Tất cả tab terminal cần ít nhất 2 terminal sẵn sàng để phát sóng",
|
|
"broadcastScopeAria": "Phạm vi phát sóng",
|
|
"broadcastScopeTab": "Pane của tab hiện tại",
|
|
"broadcastScopeAll": "Tất cả tab terminal",
|
|
"broadcastActive": "Đang phát sóng · {{count}}",
|
|
"aiAssistant": "Trợ lý AI",
|
|
"aiOpen": "Mở trợ lý AI terminal",
|
|
"aiClose": "Đóng trợ lý AI terminal",
|
|
"aiTitle": "Trợ lý AI terminal (Pro)",
|
|
"paneCount": "{{current}}/{{max}}",
|
|
"labelLocal": "Terminal cục bộ",
|
|
"labelSsh": "Terminal SSH",
|
|
"closePaneLabel": "Đóng pane hiện tại",
|
|
"closeTabLabel": "Đóng tab terminal hiện tại",
|
|
"targetSshSession": "Phiên SSH hiện tại"
|
|
},
|
|
"overlay": {
|
|
"shellClosedIdle": "Hết thời gian chờ nhàn rỗi; shell đã thoát",
|
|
"shellClosed": "Shell đã thoát",
|
|
"shellClosedHint": "Kết nối SSH vẫn còn; các pane khác, SFTP và đường hầm không bị ảnh hưởng",
|
|
"reopenShell": "Mở lại shell",
|
|
"reopening": "Đang mở…",
|
|
"disconnected": "Đã ngắt kết nối",
|
|
"disconnectedHint": "Phiên SSH đã kết thúc hoặc mạng bị ngắt. Nhấn bên dưới để kết nối lại.",
|
|
"reconnect": "Kết nối lại",
|
|
"suspended": "Kết nối đã bị tạm dừng",
|
|
"suspendedHint": "Không hoạt động một thời gian; kết nối đã bị tạm dừng để tiết kiệm tài nguyên",
|
|
"resume": "Tiếp tục kết nối",
|
|
"connectFailed": "Kết nối thất bại",
|
|
"connectFailedHint": "Kiểm tra máy chủ, cổng, tên người dùng và xác thực",
|
|
"retryConnect": "Thử kết nối lại",
|
|
"connecting": "Đang kết nối…",
|
|
"reconnecting": "Đang tự kết nối lại{{attempt}}…",
|
|
"reconnectingAttempt": " ({{count}})",
|
|
"localShellExited": "Shell cục bộ đã thoát"
|
|
},
|
|
"hostKey": {
|
|
"titleNew": "Xác minh khóa máy chủ",
|
|
"titleChanged": "Khóa máy chủ đã thay đổi",
|
|
"descNew": "Kết nối đầu tiên tới máy chủ này. Xác minh dấu vết trước khi tin tưởng.",
|
|
"descChanged": "Khóa SSH của máy chủ này không còn khớp với bản ghi cục bộ. Có nguy cơ MITM.",
|
|
"host": "Máy chủ",
|
|
"type": "Loại",
|
|
"fingerprint": "Dấu vết SHA256",
|
|
"previousFingerprint": "Dấu vết trước đó",
|
|
"reject": "Từ chối",
|
|
"acceptOnce": "Tin tưởng một lần",
|
|
"acceptAlways": "Luôn tin tưởng",
|
|
"acceptAlwaysChanged": "Tin tưởng và cập nhật"
|
|
},
|
|
"contextMenu": {
|
|
"aria": "Thao tác terminal",
|
|
"copy": "Sao chép",
|
|
"paste": "Dán",
|
|
"selectAll": "Chọn tất cả",
|
|
"clear": "Xóa màn hình",
|
|
"splitRight": "Chia bên phải",
|
|
"splitDown": "Chia xuống dưới",
|
|
"maximizePane": "Phóng to pane hiện tại",
|
|
"restoreLayout": "Khôi phục bố cục chia"
|
|
},
|
|
"search": {
|
|
"placeholder": "Tìm kiếm...",
|
|
"previous": "Trước đó (Shift+Enter)",
|
|
"next": "Kế tiếp (Enter)",
|
|
"close": "Đóng (Escape)"
|
|
},
|
|
"zmodem": {
|
|
"uploadTransferring": "tải lên rz: {{detail}}",
|
|
"downloadTransferring": "tải xuống sz: {{detail}}",
|
|
"selectLocalFile": "Chọn tệp cục bộ",
|
|
"pickUploadTitle": "Chọn tệp để tải lên (rz)",
|
|
"uploadedCount": "Đã tải lên {{count}} tệp",
|
|
"downloadedSingle": "{{path}}",
|
|
"downloadedCount": "Đã tải xuống {{count}} tệp → {{dir}}",
|
|
"transferDone": "Truyền hoàn tất",
|
|
"transferFailed": "Truyền thất bại {{message}}",
|
|
"uploadSuccessTerminal": "✓ Đã tải lên {{count}} tệp tới thư mục làm việc từ xa",
|
|
"downloadSuccessTerminal": "✓ Đã tải xuống {{path}}",
|
|
"savedDownloadsSingle": "✓ Đã lưu vào Downloads",
|
|
"savedDownloadsMultiple": "✓ Đã lưu {{count}} tệp vào Downloads",
|
|
"nativeApiUnavailable": "API gốc không khả dụng",
|
|
"readFailed": "Đọc thất bại: {{name}}",
|
|
"writeFailed": "Ghi thất bại: {{name}}",
|
|
"createLocalShellFailed": "Không thể tạo shell cục bộ",
|
|
"createRemoteShellFailed": "Không thể tạo shell từ xa",
|
|
"createShellFailed": "Không thể tạo shell: {{error}}"
|
|
},
|
|
"clipboard": {
|
|
"readFailed": "Không thể đọc clipboard",
|
|
"writeFailed": "Không thể ghi clipboard"
|
|
},
|
|
"input": {
|
|
"failed": "Đầu vào terminal thất bại"
|
|
},
|
|
"connection": {
|
|
"errorPrefix": "Lỗi: {{message}}",
|
|
"autoReconnecting": "Đang tự kết nối lại ({{attempt}})...",
|
|
"autoReconnectLimit": "Đã đạt giới hạn tự kết nối lại ({{max}}){{reasonSuffix}}",
|
|
"autoReconnectLimitReason": " — {{reason}}",
|
|
"disconnectedRetry": "Đã ngắt kết nối, thử lại {{attempt}}/{{max}} sau {{seconds}} giây...",
|
|
"autoReconnectBanner": "[Tự kết nối lại] Đang thử lại {{attempt}}/{{max}} sau {{seconds}} giây",
|
|
"disconnectedBanner": "[Đã ngắt kết nối] {{reason}}",
|
|
"noConfig": "Không có thông tin kết nối"
|
|
}
|
|
}
|