diff options
Diffstat (limited to 'locales/vi')
| -rw-r--r-- | locales/vi/messages.gotext.json | 1244 |
1 files changed, 1226 insertions, 18 deletions
diff --git a/locales/vi/messages.gotext.json b/locales/vi/messages.gotext.json index 7e8f92ae..58802cc3 100644 --- a/locales/vi/messages.gotext.json +++ b/locales/vi/messages.gotext.json @@ -8,6 +8,18 @@ "translatorComment": "Copied from source." }, { + "id": "Error:", + "message": "Error:", + "translation": "Lỗi:", + "translatorComment": "Copied from source." + }, + { + "id": "(no argument): elevate and install manager service", + "message": "(no argument): elevate and install manager service", + "translation": "(không có tham số): nâng quyền và cài đặt dịch vụ quản lý", + "translatorComment": "Copied from source." + }, + { "id": "Usage: {Args0} [\n{String}]", "message": "Usage: {Args0} [\n{String}]", "translation": "Sử dụng: {Args0} [\n{String}]", @@ -38,12 +50,94 @@ "translatorComment": "Copied from source." }, { + "id": "Unable to determine whether the process is running under WOW64: {Err}", + "message": "Unable to determine whether the process is running under WOW64: {Err}", + "translation": "Không thể xác định liệu tiến trình có đang chạy trong WOW64 hay không: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "You must use the native version of WireGuard on this computer.", + "message": "You must use the native version of WireGuard on this computer.", + "translation": "Bạn phải sử dụng phiên bản gốc của WireGuard trên máy tính này.", + "translatorComment": "Copied from source." + }, + { + "id": "Unable to open current process token: {Err}", + "message": "Unable to open current process token: {Err}", + "translation": "Không thể mở token của tiến trình hiện tại: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "WireGuard may only be used by users who are a member of the Builtin {AdminGroupName} group.", + "message": "WireGuard may only be used by users who are a member of the Builtin {AdminGroupName} group.", + "translation": "WireGuard chỉ có thể được sử dụng bởi những người dùng thuộc nhóm Builtin {AdminGroupName}.", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "AdminGroupName", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "elevate.AdminGroupName()" + } + ] + }, + { + "id": "WireGuard is running, but the UI is only accessible from desktops of the Builtin {AdminGroupName} group.", + "message": "WireGuard is running, but the UI is only accessible from desktops of the Builtin {AdminGroupName} group.", + "translation": "WireGuard đang chạy, nhưng giao diện chỉ có thể được truy cập từ desktop của nhóm Builtin {AdminGroupName}.", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "AdminGroupName", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "elevate.AdminGroupName()" + } + ] + }, + { + "id": "WireGuard system tray icon did not appear after 30 seconds.", + "message": "WireGuard system tray icon did not appear after 30 seconds.", + "translation": "Biểu tượng WireGuard ở khay hệ thống không xuất hiện sau 30 giây.", + "translatorComment": "Copied from source." + }, + { "id": "Now", "message": "Now", "translation": "Vừa xong", "translatorComment": "Copied from source." }, { + "id": "System clock wound backward!", + "message": "System clock wound backward!", + "translation": "Đồng hồ hệ thống đã bị chỉnh lùi!", + "translatorComment": "Copied from source." + }, + { "id": "{Years} year(s)", "message": "{Years} year(s)", "translation": { @@ -265,15 +359,56 @@ ] }, { - "id": "Invalid IP address", - "message": "Invalid IP address", - "translation": "Địa chỉ IP không hợp lệ", + "id": "{Why}: {Offender}", + "message": "{Why}: {Offender}", + "translation": "", + "placeholders": [ + { + "id": "Why", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "e.why" + }, + { + "id": "Offender", + "string": "%[2]q", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "e.offender" + } + ] + }, + { + "id": "Invalid IP address:", + "message": "Invalid IP address:", + "translation": "Địa chỉ IP không hợp lệ:", + "translatorComment": "Copied from source." + }, + { + "id": "Missing port from endpoint", + "message": "Missing port from endpoint", + "translation": "Thiếu cổng ở endpoint", + "translatorComment": "Copied from source." + }, + { + "id": "Invalid endpoint host", + "message": "Invalid endpoint host", + "translation": "Máy chủ endpoint không hợp lệ", + "translatorComment": "Copied from source." + }, + { + "id": "Brackets must contain an IPv6 address", + "message": "Brackets must contain an IPv6 address", + "translation": "Dấu ngoặc vuông phải chứa địa chỉ IPv6", "translatorComment": "Copied from source." }, { "id": "Invalid MTU", "message": "Invalid MTU", - "translation": "Khoá không hợp lệ", + "translation": "MTU không hợp lệ", "translatorComment": "Copied from source." }, { @@ -283,6 +418,12 @@ "translatorComment": "Copied from source." }, { + "id": "Invalid persistent keepalive", + "message": "Invalid persistent keepalive", + "translation": "Persistent keepalive không hợp lệ", + "translatorComment": "Copied from source." + }, + { "id": "Invalid key: {Err}", "message": "Invalid key: {Err}", "translation": "Khoá không hợp lệ: {Err}", @@ -299,33 +440,81 @@ ] }, { + "id": "Keys must decode to exactly 32 bytes", + "message": "Keys must decode to exactly 32 bytes", + "translation": "Khoá phải giải mã thành đúng 32 byte", + "translatorComment": "Copied from source." + }, + { + "id": "Two commas in a row", + "message": "Two commas in a row", + "translation": "Hai dấu phẩy liên tiếp", + "translatorComment": "Copied from source." + }, + { "id": "Tunnel name is not valid", "message": "Tunnel name is not valid", "translation": "Tên VPN không hợp lệ", "translatorComment": "Copied from source." }, { + "id": "Line must occur in a section", + "message": "Line must occur in a section", + "translation": "Dòng phải nằm trong một phần", + "translatorComment": "Copied from source." + }, + { + "id": "Config key is missing an equals separator", + "message": "Config key is missing an equals separator", + "translation": "Khoá cấu hình bị thiếu dấu bằng phân cách", + "translatorComment": "Copied from source." + }, + { + "id": "Key must have a value", + "message": "Key must have a value", + "translation": "Khoá phải có giá trị", + "translatorComment": "Copied from source." + }, + { + "id": "Invalid key for [Interface] section", + "message": "Invalid key for [Interface] section", + "translation": "Khoá không hợp lệ cho phần [Interface]", + "translatorComment": "Copied from source." + }, + { + "id": "Invalid key for [Peer] section", + "message": "Invalid key for [Peer] section", + "translation": "Khoá không hợp lệ cho phần [Peer]", + "translatorComment": "Copied from source." + }, + { + "id": "An interface must have a private key", + "message": "An interface must have a private key", + "translation": "Một interface phải có khoá riêng", + "translatorComment": "Copied from source." + }, + { "id": "[none specified]", "message": "[none specified]", - "translation": "Ko có Chỉ định", + "translation": "[chưa được chỉ định]", "translatorComment": "Copied from source." }, { - "id": "Error in getting configuration", - "message": "Error in getting configuration", - "translation": "Lỗi khi lưu cấu hình", + "id": "All peers must have public keys", + "message": "All peers must have public keys", + "translation": "Tất cả các peer phải có khoá công khai", "translatorComment": "Copied from source." }, { "id": "[EnumerationSeparator]", "message": "[EnumerationSeparator]", - "translation": ",", + "translation": "", "comment": "Text to insert between items when listing - most western languages will translate ‘[EnumerationSeparator]’ into ‘, ’ to produce lists like ‘apple, orange, strawberry’. Eastern languages might translate into ‘、’ to produce lists like ‘リンゴ、オレンジ、イチゴ’." }, { "id": "[UnitSeparator]", "message": "[UnitSeparator]", - "translation": ",", + "translation": "", "comment": "Text to insert when combining units of a measure - most languages will translate ‘[UnitSeparator]’ into ‘ ’ (space) to produce lists like ‘2 minuti 30 sekund’, or empty string ‘’ to produce ‘2分30秒’." }, { @@ -341,27 +530,134 @@ "translatorComment": "Copied from source." }, { + "id": "App version: {Number}\nDriver version: {Version}\nGo version: {Version_go}\nOperating system: {OsName}\nArchitecture: {Arch}", + "message": "App version: {Number}\nDriver version: {Version}\nGo version: {Version_go}\nOperating system: {OsName}\nArchitecture: {Arch}", + "translation": "Phiên bản ứng dụng: {Number}\nPhiên bản driver: {Version}\nPhiên bản Go: {Version_go}\nHệ điều hành: {OsName}\nKiến trúc: {Arch}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Number", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "version.Number" + }, + { + "id": "Version", + "string": "%[2]s", + "type": "string", + "underlyingType": "string", + "argNum": 2, + "expr": "driver.Version()" + }, + { + "id": "Version_go", + "string": "%[3]s", + "type": "string", + "underlyingType": "string", + "argNum": 3, + "expr": "strings.TrimPrefix(runtime.Version(), \"go\")" + }, + { + "id": "OsName", + "string": "%[4]s", + "type": "string", + "underlyingType": "string", + "argNum": 4, + "expr": "version.OsName()" + }, + { + "id": "Arch", + "string": "%[5]s", + "type": "string", + "underlyingType": "string", + "argNum": 5, + "expr": "version.Arch()" + } + ] + }, + { "id": "Close", "message": "Close", "translation": "Đóng", "translatorComment": "Copied from source." }, { + "id": "♥ \u0026Donate!", + "message": "♥ \u0026Donate!", + "translation": "♥ \u0026Quyên góp!", + "translatorComment": "Copied from source." + }, + { "id": "Status:", "message": "Status:", "translation": "Trạng thái:", "translatorComment": "Copied from source." }, { - "id": "&Deactivate", - "message": "&Deactivate", - "translation": "Đã hủy kích hoạt", + "id": "\u0026Deactivate", + "message": "\u0026Deactivate", + "translation": "\u0026Hủy kích hoạt", "translatorComment": "Copied from source." }, { - "id": "&Activate", - "message": "&Activate", - "translation": "Kích hoạt", + "id": "\u0026Activate", + "message": "\u0026Activate", + "translation": "\u0026Kích hoạt", + "translatorComment": "Copied from source." + }, + { + "id": "Public key:", + "message": "Public key:", + "translation": "Khoá công khai:", + "translatorComment": "Copied from source." + }, + { + "id": "Listen port:", + "message": "Listen port:", + "translation": "Cổng lắng nghe:", + "translatorComment": "Copied from source." + }, + { + "id": "MTU:", + "message": "MTU:", + "translation": "" + }, + { + "id": "Addresses:", + "message": "Addresses:", + "translation": "Địa chỉ:", + "translatorComment": "Copied from source." + }, + { + "id": "DNS servers:", + "message": "DNS servers:", + "translation": "Máy chủ DNS:", + "translatorComment": "Copied from source." + }, + { + "id": "Scripts:", + "message": "Scripts:", + "translation": "Tập lệnh:", + "translatorComment": "Copied from source." + }, + { + "id": "Table:", + "message": "Table:", + "translation": "Bảng định tuyến:", + "translatorComment": "Copied from source." + }, + { + "id": "Preshared key:", + "message": "Preshared key:", + "translation": "Khoá chia sẻ trước:", + "translatorComment": "Copied from source." + }, + { + "id": "Allowed IPs:", + "message": "Allowed IPs:", + "translation": "IP cho phép:", "translatorComment": "Copied from source." }, { @@ -371,6 +667,60 @@ "translatorComment": "Copied from source." }, { + "id": "Persistent keepalive:", + "message": "Persistent keepalive:", + "translation": "Keepalive liên tục:", + "translatorComment": "Copied from source." + }, + { + "id": "Latest handshake:", + "message": "Latest handshake:", + "translation": "Bắt tay gần nhất:", + "translatorComment": "Copied from source." + }, + { + "id": "Transfer:", + "message": "Transfer:", + "translation": "Truyền tải:", + "translatorComment": "Copied from source." + }, + { + "id": "pre-up", + "message": "pre-up", + "translation": "trước khi bật", + "translatorComment": "Copied from source." + }, + { + "id": "post-up", + "message": "post-up", + "translation": "sau khi bật", + "translatorComment": "Copied from source." + }, + { + "id": "pre-down", + "message": "pre-down", + "translation": "trước khi tắt", + "translatorComment": "Copied from source." + }, + { + "id": "post-down", + "message": "post-down", + "translation": "sau khi tắt", + "translatorComment": "Copied from source." + }, + { + "id": "disabled, per policy", + "message": "disabled, per policy", + "translation": "đã vô hiệu hoá, theo chính sách", + "translatorComment": "Copied from source." + }, + { + "id": "off", + "message": "off", + "translation": "tắt", + "translatorComment": "Copied from source." + }, + { "id": "enabled", "message": "enabled", "translation": "đã kích hoạt", @@ -379,7 +729,7 @@ { "id": "{String} received, {String_1} sent", "message": "{String} received, {String_1} sent", - "translation": "Nhận {String}, gứi {String_1}", + "translation": "Nhận {String}, gửi {String_1}", "translatorComment": "Copied from source.", "placeholders": [ { @@ -419,6 +769,22 @@ "translatorComment": "Copied from source." }, { + "id": "Interface: {Name}", + "message": "Interface: {Name}", + "translation": "Giao diện: {Name}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "config.Name" + } + ] + }, + { "id": "Peer", "message": "Peer", "translation": "Mạng ngang hàng", @@ -437,12 +803,54 @@ "translatorComment": "Copied from source." }, { + "id": "\u0026Name:", + "message": "\u0026Name:", + "translation": "\u0026Tên:", + "translatorComment": "Copied from source." + }, + { + "id": "\u0026Public key:", + "message": "\u0026Public key:", + "translation": "\u0026Khoá công khai:", + "translatorComment": "Copied from source." + }, + { + "id": "(unknown)", + "message": "(unknown)", + "translation": "(không rõ)", + "translatorComment": "Copied from source." + }, + { + "id": "\u0026Block untunneled traffic (kill-switch)", + "message": "\u0026Block untunneled traffic (kill-switch)", + "translation": "\u0026Chặn lưu lượng ngoài tunnel (kill-switch)", + "translatorComment": "Copied from source." + }, + { + "id": "When a configuration has exactly one peer, and that peer has an allowed IPs containing at least one of 0.0.0.0/0 or ::/0, and the interface does not have table off, then the tunnel service engages a firewall ruleset to block all traffic that is neither to nor from the tunnel interface or is to the wrong DNS server, with special exceptions for DHCP and NDP.", + "message": "When a configuration has exactly one peer, and that peer has an allowed IPs containing at least one of 0.0.0.0/0 or ::/0, and the interface does not have table off, then the tunnel service engages a firewall ruleset to block all traffic that is neither to nor from the tunnel interface or is to the wrong DNS server, with special exceptions for DHCP and NDP.", + "translation": "Khi một cấu hình có đúng một peer, và peer đó có Allowed IPs chứa ít nhất một trong 0.0.0.0/0 hoặc ::/0, và interface không có table off, thì dịch vụ tunnel sẽ kích hoạt một bộ luật tường lửa để chặn mọi lưu lượng không đến hoặc đi từ interface tunnel hoặc đến sai máy chủ DNS, với các ngoại lệ đặc biệt dành cho DHCP và NDP.", + "translatorComment": "Copied from source." + }, + { + "id": "\u0026Save", + "message": "\u0026Save", + "translation": "\u0026Lưu", + "translatorComment": "Copied from source." + }, + { "id": "Cancel", "message": "Cancel", "translation": "Huỷ", "translatorComment": "Copied from source." }, { + "id": "\u0026Configuration:", + "message": "\u0026Configuration:", + "translation": "\u0026Cấu hình:", + "translatorComment": "Copied from source." + }, + { "id": "Invalid name", "message": "Invalid name", "translation": "Tên không hợp lệ", @@ -457,7 +865,7 @@ { "id": "Tunnel name ‘{NewName}’ is invalid.", "message": "Tunnel name ‘{NewName}’ is invalid.", - "translation": "Tên VPN ‘{NewName}' không hợp lệ.", + "translation": "Tên VPN ‘{NewName}’ không hợp lệ.", "translatorComment": "Copied from source.", "placeholders": [ { @@ -497,6 +905,806 @@ "expr": "newName" } ] + }, + { + "id": "Unable to create new configuration", + "message": "Unable to create new configuration", + "translation": "Không thể tạo cấu hình mới", + "translatorComment": "Copied from source." + }, + { + "id": "Writing file failed", + "message": "Writing file failed", + "translation": "Ghi tệp thất bại", + "translatorComment": "Copied from source." + }, + { + "id": "File ‘{FilePath}’ already exists.\n\nDo you want to overwrite it?", + "message": "File ‘{FilePath}’ already exists.\n\nDo you want to overwrite it?", + "translation": "Tệp ‘{FilePath}’ đã tồn tại.\n\nBạn có muốn ghi đè không?", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "FilePath", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "filePath" + } + ] + }, + { + "id": "Active", + "message": "Active", + "translation": "Đang hoạt động", + "translatorComment": "Copied from source." + }, + { + "id": "Activating", + "message": "Activating", + "translation": "Đang kích hoạt", + "translatorComment": "Copied from source." + }, + { + "id": "Inactive", + "message": "Inactive", + "translation": "Không hoạt động", + "translatorComment": "Copied from source." + }, + { + "id": "Deactivating", + "message": "Deactivating", + "translation": "Đang hủy kích hoạt", + "translatorComment": "Copied from source." + }, + { + "id": "Unknown state", + "message": "Unknown state", + "translation": "Trạng thái không rõ", + "translatorComment": "Copied from source." + }, + { + "id": "Log", + "message": "Log", + "translation": "Nhật ký", + "translatorComment": "Copied from source." + }, + { + "id": "\u0026Copy", + "message": "\u0026Copy", + "translation": "\u0026Sao chép", + "translatorComment": "Copied from source." + }, + { + "id": "Select \u0026all", + "message": "Select \u0026all", + "translation": "Chọn \u0026tất cả", + "translatorComment": "Copied from source." + }, + { + "id": "\u0026Save to file…", + "message": "\u0026Save to file…", + "translation": "\u0026Lưu vào tệp…", + "translatorComment": "Copied from source." + }, + { + "id": "Time", + "message": "Time", + "translation": "Thời gian", + "translatorComment": "Copied from source." + }, + { + "id": "Log message", + "message": "Log message", + "translation": "Thông điệp nhật ký", + "translatorComment": "Copied from source." + }, + { + "id": "Text Files (*.txt)|*.txt|All Files (*.*)|*.*", + "message": "Text Files (*.txt)|*.txt|All Files (*.*)|*.*", + "translation": "Tệp văn bản (*.txt)|*.txt|Tất cả tệp (*.*)|*.*", + "translatorComment": "Copied from source." + }, + { + "id": "Export log to file", + "message": "Export log to file", + "translation": "Xuất nhật ký ra tệp", + "translatorComment": "Copied from source." + }, + { + "id": "\u0026About WireGuard…", + "message": "\u0026About WireGuard…", + "translation": "\u0026Thông tin về WireGuard…", + "translatorComment": "Copied from source." + }, + { + "id": "Tunnel Error", + "message": "Tunnel Error", + "translation": "Lỗi VPN", + "translatorComment": "Copied from source." + }, + { + "id": "{ErrMsg}\n\nPlease consult the log for more information.", + "message": "{ErrMsg}\n\nPlease consult the log for more information.", + "translation": "{ErrMsg}\n\nVui lòng xem nhật ký để biết thêm thông tin.", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "ErrMsg", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "errMsg" + } + ] + }, + { + "id": "{Title} (out of date)", + "message": "{Title} (out of date)", + "translation": "{Title} (đã lỗi thời)", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Title", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "mtw.Title()" + } + ] + }, + { + "id": "WireGuard Detection Error", + "message": "WireGuard Detection Error", + "translation": "Lỗi phát hiện WireGuard", + "translatorComment": "Copied from source." + }, + { + "id": "Unable to wait for WireGuard window to appear: {Err}", + "message": "Unable to wait for WireGuard window to appear: {Err}", + "translation": "Không thể đợi cửa sổ WireGuard xuất hiện: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "WireGuard: Deactivated", + "message": "WireGuard: Deactivated", + "translation": "WireGuard: Đã hủy kích hoạt", + "translatorComment": "Copied from source." + }, + { + "id": "Status: Unknown", + "message": "Status: Unknown", + "translation": "Trạng thái: Không rõ", + "translatorComment": "Copied from source." + }, + { + "id": "Addresses: None", + "message": "Addresses: None", + "translation": "Địa chỉ: Không có", + "translatorComment": "Copied from source." + }, + { + "id": "\u0026Manage tunnels…", + "message": "\u0026Manage tunnels…", + "translation": "\u0026Quản lý VPN…", + "translatorComment": "Copied from source." + }, + { + "id": "\u0026Import tunnel(s) from file…", + "message": "\u0026Import tunnel(s) from file…", + "translation": "\u0026Nhập VPN từ tệp…", + "translatorComment": "Copied from source." + }, + { + "id": "E\u0026xit", + "message": "E\u0026xit", + "translation": "T\u0026hoát", + "translatorComment": "Copied from source." + }, + { + "id": "\u0026Tunnels", + "message": "\u0026Tunnels", + "translation": "\u0026VPN", + "translatorComment": "Copied from source." + }, + { + "id": "WireGuard Activated", + "message": "WireGuard Activated", + "translation": "WireGuard đã được kích hoạt", + "translatorComment": "Copied from source." + }, + { + "id": "The {Name} tunnel has been activated.", + "message": "The {Name} tunnel has been activated.", + "translation": "VPN {Name} đã được kích hoạt.", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "tunnel.Name" + } + ] + }, + { + "id": "WireGuard Deactivated", + "message": "WireGuard Deactivated", + "translation": "WireGuard đã được hủy kích hoạt", + "translatorComment": "Copied from source." + }, + { + "id": "The {Name} tunnel has been deactivated.", + "message": "The {Name} tunnel has been deactivated.", + "translation": "VPN {Name} đã được hủy kích hoạt.", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "tunnel.Name" + } + ] + }, + { + "id": "WireGuard Tunnel Error", + "message": "WireGuard Tunnel Error", + "translation": "Lỗi VPN WireGuard", + "translatorComment": "Copied from source." + }, + { + "id": "WireGuard: {TextForStateglobalState_true}", + "message": "WireGuard: {TextForStateglobalState_true}", + "translation": "", + "placeholders": [ + { + "id": "TextForStateglobalState_true", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "textForState(globalState, true)" + } + ] + }, + { + "id": "Status: {StateText}", + "message": "Status: {StateText}", + "translation": "Trạng thái: {StateText}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "StateText", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "stateText" + } + ] + }, + { + "id": "Addresses: {EnumerationSeparator}", + "message": "Addresses: {EnumerationSeparator}", + "translation": "Địa chỉ: {EnumerationSeparator}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "EnumerationSeparator", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "strings.Join(addrs, l18n.EnumerationSeparator())" + } + ] + }, + { + "id": "An Update is Available!", + "message": "An Update is Available!", + "translation": "Có bản cập nhật mới!", + "translatorComment": "Copied from source." + }, + { + "id": "WireGuard Update Available", + "message": "WireGuard Update Available", + "translation": "Có bản cập nhật WireGuard", + "translatorComment": "Copied from source." + }, + { + "id": "An update to WireGuard is now available. You are advised to update as soon as possible.", + "message": "An update to WireGuard is now available. You are advised to update as soon as possible.", + "translation": "Đã có bản cập nhật mới cho WireGuard. Bạn nên cập nhật càng sớm càng tốt.", + "translatorComment": "Copied from source." + }, + { + "id": "Tunnels", + "message": "Tunnels", + "translation": "Các VPN", + "translatorComment": "Copied from source." + }, + { + "id": "\u0026Edit", + "message": "\u0026Edit", + "translation": "\u0026Chỉnh sửa", + "translatorComment": "Copied from source." + }, + { + "id": "Add \u0026empty tunnel…", + "message": "Add \u0026empty tunnel…", + "translation": "Thêm VPN \u0026trống…", + "translatorComment": "Copied from source." + }, + { + "id": "Add Tunnel", + "message": "Add Tunnel", + "translation": "Thêm VPN", + "translatorComment": "Copied from source." + }, + { + "id": "Remove selected tunnel(s)", + "message": "Remove selected tunnel(s)", + "translation": "Xoá (các) VPN đã chọn", + "translatorComment": "Copied from source." + }, + { + "id": "Export all tunnels to zip", + "message": "Export all tunnels to zip", + "translation": "Xuất tất cả VPN ra tệp zip", + "translatorComment": "Copied from source." + }, + { + "id": "\u0026Toggle", + "message": "\u0026Toggle", + "translation": "\u0026Bật/Tắt", + "translatorComment": "Copied from source." + }, + { + "id": "Export all tunnels to \u0026zip…", + "message": "Export all tunnels to \u0026zip…", + "translation": "Xuất tất cả VPN ra tệp \u0026zip…", + "translatorComment": "Copied from source." + }, + { + "id": "Edit \u0026selected tunnel…", + "message": "Edit \u0026selected tunnel…", + "translation": "Chỉnh sửa \u0026VPN đã chọn…", + "translatorComment": "Copied from source." + }, + { + "id": "\u0026Remove selected tunnel(s)", + "message": "\u0026Remove selected tunnel(s)", + "translation": "\u0026Xoá (các) VPN đã chọn", + "translatorComment": "Copied from source." + }, + { + "id": "no configuration files were found", + "message": "no configuration files were found", + "translation": "không tìm thấy tệp cấu hình nào", + "translatorComment": "Copied from source." + }, + { + "id": "Could not import selected configuration: {LastErr}", + "message": "Could not import selected configuration: {LastErr}", + "translation": "Không thể nhập cấu hình đã chọn: {LastErr}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "LastErr", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "lastErr" + } + ] + }, + { + "id": "Could not enumerate existing tunnels: {Err}", + "message": "Could not enumerate existing tunnels: {Err}", + "translation": "Không thể liệt kê các VPN hiện có: {Err}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "Another tunnel already exists with the name ‘{Name}’", + "message": "Another tunnel already exists with the name ‘{Name}’", + "translation": "Đã tồn tại một VPN khác với tên ‘{Name}’", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Name", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "unparsedConfig.Name" + } + ] + }, + { + "id": "Unable to import configuration: {LastErr}", + "message": "Unable to import configuration: {LastErr}", + "translation": "Không thể nhập cấu hình: {LastErr}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "LastErr", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "lastErr" + } + ] + }, + { + "id": "Imported tunnels", + "message": "Imported tunnels", + "translation": "Đã nhập VPN", + "translatorComment": "Copied from source." + }, + { + "id": "Imported {M} tunnels", + "message": "Imported {M} tunnels", + "translation": { + "select": { + "feature": "plural", + "arg": "M", + "cases": { + "other": { + "msg": "Đã nhập {M} VPN" + } + } + } + }, + "placeholders": [ + { + "id": "M", + "string": "%[1]d", + "type": "int", + "underlyingType": "int", + "argNum": 1, + "expr": "m" + } + ] + }, + { + "id": "Imported {M} of {N} tunnels", + "message": "Imported {M} of {N} tunnels", + "translation": { + "select": { + "feature": "plural", + "arg": "N", + "cases": { + "other": { + "msg": "Đã nhập {M} trên {N} VPN" + } + } + } + }, + "placeholders": [ + { + "id": "M", + "string": "%[1]d", + "type": "int", + "underlyingType": "int", + "argNum": 1, + "expr": "m" + }, + { + "id": "N", + "string": "%[2]d", + "type": "int", + "underlyingType": "int", + "argNum": 2, + "expr": "n" + } + ] + }, + { + "id": "Unable to create tunnel", + "message": "Unable to create tunnel", + "translation": "Không thể tạo VPN", + "translatorComment": "Copied from source." + }, + { + "id": "Delete {TunnelCount} tunnels", + "message": "Delete {TunnelCount} tunnels", + "translation": { + "select": { + "feature": "plural", + "arg": "TunnelCount", + "cases": { + "other": { + "msg": "Xoá {TunnelCount} VPN" + } + } + } + }, + "placeholders": [ + { + "id": "TunnelCount", + "string": "%[1]d", + "type": "int", + "underlyingType": "int", + "argNum": 1, + "expr": "tunnelCount" + } + ] + }, + { + "id": "Are you sure you would like to delete {TunnelCount} tunnels?", + "message": "Are you sure you would like to delete {TunnelCount} tunnels?", + "translation": { + "select": { + "feature": "plural", + "arg": "TunnelCount", + "cases": { + "other": { + "msg": "Bạn có chắc chắn muốn xoá {TunnelCount} VPN không?" + } + } + } + }, + "placeholders": [ + { + "id": "TunnelCount", + "string": "%[1]d", + "type": "int", + "underlyingType": "int", + "argNum": 1, + "expr": "tunnelCount" + } + ] + }, + { + "id": "Delete tunnel ‘{TunnelName}’", + "message": "Delete tunnel ‘{TunnelName}’", + "translation": "Xoá VPN ‘{TunnelName}’", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "TunnelName", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "tunnelName" + } + ] + }, + { + "id": "Are you sure you would like to delete tunnel ‘{TunnelName}’?", + "message": "Are you sure you would like to delete tunnel ‘{TunnelName}’?", + "translation": "Bạn có chắc chắn muốn xoá VPN ‘{TunnelName}’ không?", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "TunnelName", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "tunnelName" + } + ] + }, + { + "id": "{Question} You cannot undo this action.", + "message": "{Question} You cannot undo this action.", + "translation": "{Question} Bạn không thể hoàn tác hành động này.", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Question", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "question" + } + ] + }, + { + "id": "Unable to delete tunnel", + "message": "Unable to delete tunnel", + "translation": "Không thể xoá VPN", + "translatorComment": "Copied from source." + }, + { + "id": "A tunnel was unable to be removed: {Error}", + "message": "A tunnel was unable to be removed: {Error}", + "translation": "Không thể xoá một VPN: {Error}", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Error", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "errors[0].Error()" + } + ] + }, + { + "id": "Unable to delete tunnels", + "message": "Unable to delete tunnels", + "translation": "Không thể xoá các VPN", + "translatorComment": "Copied from source." + }, + { + "id": "{Lenerrors} tunnels were unable to be removed.", + "message": "{Lenerrors} tunnels were unable to be removed.", + "translation": { + "select": { + "feature": "plural", + "arg": "Lenerrors", + "cases": { + "other": { + "msg": "Không thể xoá {Lenerrors} VPN." + } + } + } + }, + "placeholders": [ + { + "id": "Lenerrors", + "string": "%[1]d", + "type": "int", + "underlyingType": "int", + "argNum": 1, + "expr": "len(errors)" + } + ] + }, + { + "id": "Configuration Files (*.zip, *.conf)|*.zip;*.conf|All Files (*.*)|*.*", + "message": "Configuration Files (*.zip, *.conf)|*.zip;*.conf|All Files (*.*)|*.*", + "translation": "Tệp cấu hình (*.zip, *.conf)|*.zip;*.conf|Tất cả tệp (*.*)|*.*", + "translatorComment": "Copied from source." + }, + { + "id": "Import tunnel(s) from file", + "message": "Import tunnel(s) from file", + "translation": "Nhập VPN từ tệp", + "translatorComment": "Copied from source." + }, + { + "id": "Configuration ZIP Files (*.zip)|*.zip", + "message": "Configuration ZIP Files (*.zip)|*.zip", + "translation": "Tệp ZIP cấu hình (*.zip)|*.zip", + "translatorComment": "Copied from source." + }, + { + "id": "Export tunnels to zip", + "message": "Export tunnels to zip", + "translation": "Xuất các VPN ra tệp zip", + "translatorComment": "Copied from source." + }, + { + "id": "{Title} (unsigned build, no updates)", + "message": "{Title} (unsigned build, no updates)", + "translation": "{Title} (bản dựng chưa ký, không có cập nhật)", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Title", + "string": "%[1]s", + "type": "string", + "underlyingType": "string", + "argNum": 1, + "expr": "mtw.Title()" + } + ] + }, + { + "id": "Error Exiting WireGuard", + "message": "Error Exiting WireGuard", + "translation": "Lỗi khi thoát WireGuard", + "translatorComment": "Copied from source." + }, + { + "id": "Unable to exit service due to: {Err}. You may want to stop WireGuard from the service manager.", + "message": "Unable to exit service due to: {Err}. You may want to stop WireGuard from the service manager.", + "translation": "Không thể thoát dịch vụ do: {Err}. Bạn có thể dừng WireGuard từ trình quản lý dịch vụ.", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "An update to WireGuard is available. It is highly advisable to update without delay.", + "message": "An update to WireGuard is available. It is highly advisable to update without delay.", + "translation": "Đã có bản cập nhật mới cho WireGuard. Bạn rất nên cập nhật ngay không trì hoãn.", + "translatorComment": "Copied from source." + }, + { + "id": "Status: Waiting for user", + "message": "Status: Waiting for user", + "translation": "Trạng thái: Đang đợi người dùng", + "translatorComment": "Copied from source." + }, + { + "id": "Update Now", + "message": "Update Now", + "translation": "Cập nhật ngay", + "translatorComment": "Copied from source." + }, + { + "id": "Please ask the system administrator to update.", + "message": "Please ask the system administrator to update.", + "translation": "Vui lòng yêu cầu quản trị viên hệ thống cập nhật.", + "translatorComment": "Copied from source." + }, + { + "id": "Status: Waiting for administrator", + "message": "Status: Waiting for administrator", + "translation": "Trạng thái: Đang đợi quản trị viên", + "translatorComment": "Copied from source." + }, + { + "id": "Status: Waiting for updater service", + "message": "Status: Waiting for updater service", + "translation": "Trạng thái: Đang đợi dịch vụ cập nhật", + "translatorComment": "Copied from source." + }, + { + "id": "Error: {Err}. Please try again.", + "message": "Error: {Err}. Please try again.", + "translation": "Lỗi: {Err}. Vui lòng thử lại.", + "translatorComment": "Copied from source.", + "placeholders": [ + { + "id": "Err", + "string": "%[1]v", + "type": "error", + "underlyingType": "interface{Error() string}", + "argNum": 1, + "expr": "err" + } + ] + }, + { + "id": "Status: Complete!", + "message": "Status: Complete!", + "translation": "Trạng thái: Hoàn tất!", + "translatorComment": "Copied from source." } ] }
\ No newline at end of file |
