Files
opsxshell/src/i18n/locales/vi/terminal.json
T
Logan.Li b0d0e3a5f3 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
2026-08-12 00:07:48 +08:00

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"
}
}