Ground-Zerro / Phobos Public
Code Issues Pull requests Actions Releases View on GitHub ↗
73.2 KB json
{
    "language": "vi",
    "messages": [
        {
            "id": "Error",
            "message": "Error",
            "translation": "Lỗi",
            "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}]",
            "translatorComment": "Copied from source.",
            "placeholders": [
                {
                    "id": "Args0",
                    "string": "%[1]s",
                    "type": "string",
                    "underlyingType": "string",
                    "argNum": 1,
                    "expr": "os.Args[0]"
                },
                {
                    "id": "String",
                    "string": "%[2]s",
                    "type": "string",
                    "underlyingType": "string",
                    "argNum": 2,
                    "expr": "builder.String()"
                }
            ]
        },
        {
            "id": "Command Line Options",
            "message": "Command Line Options",
            "translation": "Tùy chọn dòng lệnh",
            "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 Phobos on this computer.",
            "message": "You must use the native version of Phobos on this computer.",
            "translation": "Bạn phải sử dụng phiên bản gốc của Phobos 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": "Phobos may only be used by users who are a member of the Builtin {AdminGroupName} group.",
            "message": "Phobos may only be used by users who are a member of the Builtin {AdminGroupName} group.",
            "translation": "Phobos 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": "Phobos is running, but the UI is only accessible from desktops of the Builtin {AdminGroupName} group.",
            "message": "Phobos is running, but the UI is only accessible from desktops of the Builtin {AdminGroupName} group.",
            "translation": "Phobos đ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": "Phobos system tray icon did not appear after 30 seconds.",
            "message": "Phobos system tray icon did not appear after 30 seconds.",
            "translation": "Biểu tượng Phobos ở khay hệ thống không xuất hiện sau 30 giây.",
            "translatorComment": "Copied from source."
        },
        {
            "id": "Not a phobos:// link: {Link}",
            "message": "Not a phobos:// link: {Link}",
            "translation": "",
            "placeholders": [
                {
                    "id": "Link",
                    "string": "%[1]s",
                    "type": "string",
                    "underlyingType": "string",
                    "argNum": 1,
                    "expr": "link"
                }
            ]
        },
        {
            "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": {
                "select": {
                    "feature": "plural",
                    "arg": "Years",
                    "cases": {
                        "other": {
                            "msg": "{Years} năm"
                        }
                    }
                }
            },
            "placeholders": [
                {
                    "id": "Years",
                    "string": "%[1]d",
                    "type": "int64",
                    "underlyingType": "int64",
                    "argNum": 1,
                    "expr": "years"
                }
            ]
        },
        {
            "id": "{Days} day(s)",
            "message": "{Days} day(s)",
            "translation": {
                "select": {
                    "feature": "plural",
                    "arg": "Days",
                    "cases": {
                        "other": {
                            "msg": "{Days} ngày"
                        }
                    }
                }
            },
            "placeholders": [
                {
                    "id": "Days",
                    "string": "%[1]d",
                    "type": "int64",
                    "underlyingType": "int64",
                    "argNum": 1,
                    "expr": "days"
                }
            ]
        },
        {
            "id": "{Hours} hour(s)",
            "message": "{Hours} hour(s)",
            "translation": {
                "select": {
                    "feature": "plural",
                    "arg": "Hours",
                    "cases": {
                        "other": {
                            "msg": "{Hours} giờ"
                        }
                    }
                }
            },
            "placeholders": [
                {
                    "id": "Hours",
                    "string": "%[1]d",
                    "type": "int64",
                    "underlyingType": "int64",
                    "argNum": 1,
                    "expr": "hours"
                }
            ]
        },
        {
            "id": "{Minutes} minute(s)",
            "message": "{Minutes} minute(s)",
            "translation": {
                "select": {
                    "feature": "plural",
                    "arg": "Minutes",
                    "cases": {
                        "other": {
                            "msg": "{Minutes} phút"
                        }
                    }
                }
            },
            "placeholders": [
                {
                    "id": "Minutes",
                    "string": "%[1]d",
                    "type": "int64",
                    "underlyingType": "int64",
                    "argNum": 1,
                    "expr": "minutes"
                }
            ]
        },
        {
            "id": "{Seconds} second(s)",
            "message": "{Seconds} second(s)",
            "translation": {
                "select": {
                    "feature": "plural",
                    "arg": "Seconds",
                    "cases": {
                        "other": {
                            "msg": "{Seconds} giây"
                        }
                    }
                }
            },
            "placeholders": [
                {
                    "id": "Seconds",
                    "string": "%[1]d",
                    "type": "int64",
                    "underlyingType": "int64",
                    "argNum": 1,
                    "expr": "seconds"
                }
            ]
        },
        {
            "id": "{Timestamp} ago",
            "message": "{Timestamp} ago",
            "translation": "{Timestamp} trước",
            "translatorComment": "Copied from source.",
            "placeholders": [
                {
                    "id": "Timestamp",
                    "string": "%[1]s",
                    "type": "string",
                    "underlyingType": "string",
                    "argNum": 1,
                    "expr": "timestamp"
                }
            ]
        },
        {
            "id": "{Bytes} B",
            "message": "{Bytes} B",
            "translation": "{Bytes} B",
            "translatorComment": "Copied from source.",
            "placeholders": [
                {
                    "id": "Bytes",
                    "string": "%[1]d",
                    "type": "golang.zx2c4.com/wireguard/windows/conf.Bytes",
                    "underlyingType": "uint64",
                    "argNum": 1,
                    "expr": "b"
                }
            ]
        },
        {
            "id": "{Float64b__1024} KiB",
            "message": "{Float64b__1024} KiB",
            "translation": "{Float64b__1024} KiB",
            "translatorComment": "Copied from source.",
            "placeholders": [
                {
                    "id": "Float64b__1024",
                    "string": "%.2[1]f",
                    "type": "float64",
                    "underlyingType": "float64",
                    "argNum": 1,
                    "expr": "float64(b) / 1024"
                }
            ]
        },
        {
            "id": "{Float64b__1024__1024} MiB",
            "message": "{Float64b__1024__1024} MiB",
            "translation": "{Float64b__1024__1024} MiB",
            "translatorComment": "Copied from source.",
            "placeholders": [
                {
                    "id": "Float64b__1024__1024",
                    "string": "%.2[1]f",
                    "type": "float64",
                    "underlyingType": "float64",
                    "argNum": 1,
                    "expr": "float64(b) / (1024 * 1024)"
                }
            ]
        },
        {
            "id": "{Float64b__1024__1024__1024} GiB",
            "message": "{Float64b__1024__1024__1024} GiB",
            "translation": "{Float64b__1024__1024__1024} GiB",
            "translatorComment": "Copied from source.",
            "placeholders": [
                {
                    "id": "Float64b__1024__1024__1024",
                    "string": "%.2[1]f",
                    "type": "float64",
                    "underlyingType": "float64",
                    "argNum": 1,
                    "expr": "float64(b) / (1024 * 1024 * 1024)"
                }
            ]
        },
        {
            "id": "{Float64b__1024__1024__1024__1024} TiB",
            "message": "{Float64b__1024__1024__1024__1024} TiB",
            "translation": "{Float64b__1024__1024__1024__1024} TiB",
            "translatorComment": "Copied from source.",
            "placeholders": [
                {
                    "id": "Float64b__1024__1024__1024__1024",
                    "string": "%.2[1]f",
                    "type": "float64",
                    "underlyingType": "float64",
                    "argNum": 1,
                    "expr": "float64(b) / (1024 * 1024 * 1024) / 1024"
                }
            ]
        },
        {
            "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": "MTU không hợp lệ",
            "translatorComment": "Copied from source."
        },
        {
            "id": "Invalid port",
            "message": "Invalid port",
            "translation": "Cổng (port) không hợp lệ",
            "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}",
            "translatorComment": "Copied from source.",
            "placeholders": [
                {
                    "id": "Err",
                    "string": "%[1]v",
                    "type": "error",
                    "underlyingType": "interface{Error() string}",
                    "argNum": 1,
                    "expr": "err"
                }
            ]
        },
        {
            "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": "Invalid {What}",
            "message": "Invalid {What}",
            "translation": "",
            "placeholders": [
                {
                    "id": "What",
                    "string": "%[1]s",
                    "type": "string",
                    "underlyingType": "string",
                    "argNum": 1,
                    "expr": "what"
                }
            ]
        },
        {
            "id": "Invalid obfuscator mode",
            "message": "Invalid obfuscator mode",
            "translation": ""
        },
        {
            "id": "Invalid masking type",
            "message": "Invalid masking type",
            "translation": ""
        },
        {
            "id": "Invalid media SSRC",
            "message": "Invalid media SSRC",
            "translation": ""
        },
        {
            "id": "An obfuscator instance must have a target",
            "message": "An obfuscator instance must have a target",
            "translation": ""
        },
        {
            "id": "[none specified]",
            "message": "[none specified]",
            "translation": "[chưa được chỉ định]",
            "translatorComment": "Copied from source."
        },
        {
            "id": "An obfuscator instance must have a key",
            "message": "An obfuscator instance must have a key",
            "translation": ""
        },
        {
            "id": "A SOCKS5 tunnel accepts exactly one [Instance] section",
            "message": "A SOCKS5 tunnel accepts exactly one [Instance] section",
            "translation": ""
        },
        {
            "id": "{Lenobfuscations} given",
            "message": "{Lenobfuscations} given",
            "translation": "",
            "placeholders": [
                {
                    "id": "Lenobfuscations",
                    "string": "%[1]d",
                    "type": "int",
                    "underlyingType": "int",
                    "argNum": 1,
                    "expr": "len(obfuscations)"
                }
            ]
        },
        {
            "id": "A SOCKS5 tunnel must not declare peers",
            "message": "A SOCKS5 tunnel must not declare peers",
            "translation": ""
        },
        {
            "id": "An [Instance] section requires a peer to attach to",
            "message": "An [Instance] section requires a peer to attach to",
            "translation": ""
        },
        {
            "id": "No peer matches the obfuscator source port",
            "message": "No peer matches the obfuscator source port",
            "translation": ""
        },
        {
            "id": "A peer accepts only one [Instance] section",
            "message": "A peer accepts only one [Instance] section",
            "translation": ""
        },
        {
            "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": "A [Socks5] section must follow an [Instance] section",
            "message": "A [Socks5] section must follow an [Instance] section",
            "translation": ""
        },
        {
            "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": "Only the client obfuscator role is supported",
            "message": "Only the client obfuscator role is supported",
            "translation": ""
        },
        {
            "id": "Invalid RTP payload type",
            "message": "Invalid RTP payload type",
            "translation": ""
        },
        {
            "id": "Invalid media clock",
            "message": "Invalid media clock",
            "translation": ""
        },
        {
            "id": "Invalid key for [Instance] section",
            "message": "Invalid key for [Instance] section",
            "translation": ""
        },
        {
            "id": "Invalid key for [Socks5] section",
            "message": "Invalid key for [Socks5] section",
            "translation": ""
        },
        {
            "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": "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": "Not a phobos:// link",
            "message": "Not a phobos:// link",
            "translation": ""
        },
        {
            "id": "The link carries no configuration",
            "message": "The link carries no configuration",
            "translation": ""
        },
        {
            "id": "The link payload is not valid base64url: {Err}",
            "message": "The link payload is not valid base64url: {Err}",
            "translation": "",
            "placeholders": [
                {
                    "id": "Err",
                    "string": "%[1]v",
                    "type": "error",
                    "underlyingType": "interface{Error() string}",
                    "argNum": 1,
                    "expr": "err"
                }
            ]
        },
        {
            "id": "The link payload is not valid UTF-8 text",
            "message": "The link payload is not valid UTF-8 text",
            "translation": ""
        },
        {
            "id": "[EnumerationSeparator]",
            "message": "[EnumerationSeparator]",
            "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": "",
            "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秒’."
        },
        {
            "id": "SOCKS5 proxy listening on 127.0.0.1:{ListenPort} -\u003e {Target} (masking {Masking})",
            "message": "SOCKS5 proxy listening on 127.0.0.1:{ListenPort} -\u003e {Target} (masking {Masking})",
            "translation": "",
            "placeholders": [
                {
                    "id": "ListenPort",
                    "string": "%[1]d",
                    "type": "uint16",
                    "underlyingType": "uint16",
                    "argNum": 1,
                    "expr": "c.ListenPort()"
                },
                {
                    "id": "Target",
                    "string": "%[2]v",
                    "type": "net/netip.AddrPort",
                    "underlyingType": "struct{ip net/netip.Addr; port uint16}",
                    "argNum": 2,
                    "expr": "c.config.Target"
                },
                {
                    "id": "Masking",
                    "string": "%[3]v",
                    "type": "golang.zx2c4.com/wireguard/windows/phobos.Masking",
                    "underlyingType": "int",
                    "argNum": 3,
                    "expr": "c.config.Masking"
                }
            ]
        },
        {
            "id": "SOCKS5 proxy stopped",
            "message": "SOCKS5 proxy stopped",
            "translation": ""
        },
        {
            "id": "SOCKS5 proxy: {Err}",
            "message": "SOCKS5 proxy: {Err}",
            "translation": "",
            "placeholders": [
                {
                    "id": "Err",
                    "string": "%[1]v",
                    "type": "error",
                    "underlyingType": "interface{Error() string}",
                    "argNum": 1,
                    "expr": "err"
                }
            ]
        },
        {
            "id": "Obfuscator started: 127.0.0.1:{ListenPort} -\u003e {Target} (masking {Masking})",
            "message": "Obfuscator started: 127.0.0.1:{ListenPort} -\u003e {Target} (masking {Masking})",
            "translation": "",
            "placeholders": [
                {
                    "id": "ListenPort",
                    "string": "%[1]d",
                    "type": "uint16",
                    "underlyingType": "uint16",
                    "argNum": 1,
                    "expr": "p.listenPort"
                },
                {
                    "id": "Target",
                    "string": "%[2]v",
                    "type": "net/netip.AddrPort",
                    "underlyingType": "struct{ip net/netip.Addr; port uint16}",
                    "argNum": 2,
                    "expr": "p.config.Target"
                },
                {
                    "id": "Masking",
                    "string": "%[3]v",
                    "type": "golang.zx2c4.com/wireguard/windows/phobos.Masking",
                    "underlyingType": "int",
                    "argNum": 3,
                    "expr": "p.config.Masking"
                }
            ]
        },
        {
            "id": "Obfuscator stopped: 127.0.0.1:{ListenPort} -\u003e {Target}",
            "message": "Obfuscator stopped: 127.0.0.1:{ListenPort} -\u003e {Target}",
            "translation": "",
            "placeholders": [
                {
                    "id": "ListenPort",
                    "string": "%[1]d",
                    "type": "uint16",
                    "underlyingType": "uint16",
                    "argNum": 1,
                    "expr": "p.listenPort"
                },
                {
                    "id": "Target",
                    "string": "%[2]v",
                    "type": "net/netip.AddrPort",
                    "underlyingType": "struct{ip net/netip.Addr; port uint16}",
                    "argNum": 2,
                    "expr": "p.config.Target"
                }
            ]
        },
        {
            "id": "Obfuscator {What} failed: {Err}",
            "message": "Obfuscator {What} failed: {Err}",
            "translation": "",
            "placeholders": [
                {
                    "id": "What",
                    "string": "%[1]s",
                    "type": "string",
                    "underlyingType": "string",
                    "argNum": 1,
                    "expr": "what"
                },
                {
                    "id": "Err",
                    "string": "%[2]v",
                    "type": "error",
                    "underlyingType": "interface{Error() string}",
                    "argNum": 2,
                    "expr": "err"
                }
            ]
        },
        {
            "id": "tun2socks: wait failed: {Err}",
            "message": "tun2socks: wait failed: {Err}",
            "translation": "",
            "placeholders": [
                {
                    "id": "Err",
                    "string": "%[1]v",
                    "type": "error",
                    "underlyingType": "interface{Error() string}",
                    "argNum": 1,
                    "expr": "err"
                }
            ]
        },
        {
            "id": "tun2socks: adapter read failed: {Err}",
            "message": "tun2socks: adapter read failed: {Err}",
            "translation": "",
            "placeholders": [
                {
                    "id": "Err",
                    "string": "%[1]v",
                    "type": "error",
                    "underlyingType": "interface{Error() string}",
                    "argNum": 1,
                    "expr": "err"
                }
            ]
        },
        {
            "id": "tun2socks: cannot reach {Target}: {DialErr}",
            "message": "tun2socks: cannot reach {Target}: {DialErr}",
            "translation": "",
            "placeholders": [
                {
                    "id": "Target",
                    "string": "%[1]v",
                    "type": "net/netip.AddrPort",
                    "underlyingType": "struct{ip net/netip.Addr; port uint16}",
                    "argNum": 1,
                    "expr": "target"
                },
                {
                    "id": "DialErr",
                    "string": "%[2]v",
                    "type": "error",
                    "underlyingType": "interface{Error() string}",
                    "argNum": 2,
                    "expr": "dialErr"
                }
            ]
        },
        {
            "id": "tun2socks: cannot open a UDP session for {Source}: {Err}",
            "message": "tun2socks: cannot open a UDP session for {Source}: {Err}",
            "translation": "",
            "placeholders": [
                {
                    "id": "Source",
                    "string": "%[1]v",
                    "type": "net/netip.AddrPort",
                    "underlyingType": "struct{ip net/netip.Addr; port uint16}",
                    "argNum": 1,
                    "expr": "source"
                },
                {
                    "id": "Err",
                    "string": "%[2]v",
                    "type": "error",
                    "underlyingType": "interface{Error() string}",
                    "argNum": 2,
                    "expr": "err"
                }
            ]
        },
        {
            "id": "About Phobos",
            "message": "About Phobos",
            "translation": "Thông tin về Phobos",
            "translatorComment": "Copied from source."
        },
        {
            "id": "Phobos logo image",
            "message": "Phobos logo image",
            "translation": "Logo Phobos",
            "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": "Status:",
            "message": "Status:",
            "translation": "Trạng thái:",
            "translatorComment": "Copied from source."
        },
        {
            "id": "\u0026Deactivate",
            "message": "\u0026Deactivate",
            "translation": "\u0026Hủy kích hoạt",
            "translatorComment": "Copied from source."
        },
        {
            "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."
        },
        {
            "id": "Endpoint:",
            "message": "Endpoint:",
            "translation": "Đầu cuối:",
            "translatorComment": "Copied from source."
        },
        {
            "id": "Obfuscator:",
            "message": "Obfuscator:",
            "translation": ""
        },
        {
            "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": "Server:",
            "message": "Server:",
            "translation": ""
        },
        {
            "id": "Masking:",
            "message": "Masking:",
            "translation": ""
        },
        {
            "id": "SOCKS5 login:",
            "message": "SOCKS5 login:",
            "translation": ""
        },
        {
            "id": "Local proxy:",
            "message": "Local proxy:",
            "translation": ""
        },
        {
            "id": "{String} received, {String_1} sent",
            "message": "{String} received, {String_1} sent",
            "translation": "Nhận {String}, gửi {String_1}",
            "translatorComment": "Copied from source.",
            "placeholders": [
                {
                    "id": "String",
                    "string": "%[1]s",
                    "type": "string",
                    "underlyingType": "string",
                    "argNum": 1,
                    "expr": "o.RxBytes.String()"
                },
                {
                    "id": "String_1",
                    "string": "%[2]s",
                    "type": "string",
                    "underlyingType": "string",
                    "argNum": 2,
                    "expr": "o.TxBytes.String()"
                }
            ]
        },
        {
            "id": "{String}, masking {String_1}",
            "message": "{String}, masking {String_1}",
            "translation": "",
            "placeholders": [
                {
                    "id": "String",
                    "string": "%[1]s",
                    "type": "string",
                    "underlyingType": "string",
                    "argNum": 1,
                    "expr": "o.Target.String()"
                },
                {
                    "id": "String_1",
                    "string": "%[2]s",
                    "type": "string",
                    "underlyingType": "string",
                    "argNum": 2,
                    "expr": "o.Masking.String()"
                }
            ]
        },
        {
            "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",
            "translatorComment": "Copied from source."
        },
        {
            "id": "Failed to determine tunnel state",
            "message": "Failed to determine tunnel state",
            "translation": "Không thể xác định tình trạng VPN",
            "translatorComment": "Copied from source."
        },
        {
            "id": "Failed to activate tunnel",
            "message": "Failed to activate tunnel",
            "translation": "Không thể kích hoạt VPN",
            "translatorComment": "Copied from source."
        },
        {
            "id": "Failed to deactivate tunnel",
            "message": "Failed to deactivate tunnel",
            "translation": "Không thể vô hiệu hóa VPN",
            "translatorComment": "Copied from source."
        },
        {
            "id": "Obfuscator",
            "message": "Obfuscator",
            "translation": ""
        },
        {
            "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",
            "translatorComment": "Copied from source."
        },
        {
            "id": "Create new tunnel",
            "message": "Create new tunnel",
            "translation": "Tạo VPN",
            "translatorComment": "Copied from source."
        },
        {
            "id": "Edit tunnel",
            "message": "Edit tunnel",
            "translation": "Chỉnh sửa VPN",
            "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ệ",
            "translatorComment": "Copied from source."
        },
        {
            "id": "A name is required.",
            "message": "A name is required.",
            "translation": "Yêu cầu nhập tên.",
            "translatorComment": "Copied from source."
        },
        {
            "id": "Tunnel name ‘{NewName}’ is invalid.",
            "message": "Tunnel name ‘{NewName}’ is invalid.",
            "translation": "Tên VPN ‘{NewName}’ không hợp lệ.",
            "translatorComment": "Copied from source.",
            "placeholders": [
                {
                    "id": "NewName",
                    "string": "%[1]s",
                    "type": "string",
                    "underlyingType": "string",
                    "argNum": 1,
                    "expr": "newName"
                }
            ]
        },
        {
            "id": "Unable to list existing tunnels",
            "message": "Unable to list existing tunnels",
            "translation": "Không thể liệt kê các VPN",
            "translatorComment": "Copied from source."
        },
        {
            "id": "Tunnel already exists",
            "message": "Tunnel already exists",
            "translation": "VPN đã tồn tại",
            "translatorComment": "Copied from source."
        },
        {
            "id": "Another tunnel already exists with the name ‘{NewName}’.",
            "message": "Another tunnel already exists with the name ‘{NewName}’.",
            "translation": "Đã tồn tại VPN với tên ‘{NewName}’.",
            "translatorComment": "Copied from source.",
            "placeholders": [
                {
                    "id": "NewName",
                    "string": "%[1]s",
                    "type": "string",
                    "underlyingType": "string",
                    "argNum": 1,
                    "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": "Phobos Detection Error",
            "message": "Phobos Detection Error",
            "translation": "Lỗi phát hiện Phobos",
            "translatorComment": "Copied from source."
        },
        {
            "id": "Phobos did not start in time to import the link.",
            "message": "Phobos did not start in time to import the link.",
            "translation": ""
        },
        {
            "id": "Import tunnel from link",
            "message": "Import tunnel from link",
            "translation": ""
        },
        {
            "id": "Paste a phobos:// link. The tunnel name is taken from the link.",
            "message": "Paste a phobos:// link. The tunnel name is taken from the link.",
            "translation": ""
        },
        {
            "id": "\u0026Import",
            "message": "\u0026Import",
            "translation": ""
        },
        {
            "id": "Invalid link",
            "message": "Invalid link",
            "translation": ""
        },
        {
            "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 Phobos…",
            "message": "\u0026About Phobos…",
            "translation": "\u0026Thông tin về Phobos…",
            "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": "Unable to wait for Phobos window to appear: {Err}",
            "message": "Unable to wait for Phobos window to appear: {Err}",
            "translation": "Không thể đợi cửa sổ Phobos 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": "Phobos: Deactivated",
            "message": "Phobos: Deactivated",
            "translation": "Phobos: Đã 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": "Phobos Activated",
            "message": "Phobos Activated",
            "translation": "Phobos đã đượ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": "Phobos Deactivated",
            "message": "Phobos Deactivated",
            "translation": "Phobos đã đượ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": "Phobos Tunnel Error",
            "message": "Phobos Tunnel Error",
            "translation": "Lỗi VPN Phobos",
            "translatorComment": "Copied from source."
        },
        {
            "id": "Phobos: {TextForStateglobalState_true}",
            "message": "Phobos: {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": "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": "Import tunnel from \u0026link…",
            "message": "Import tunnel from \u0026link…",
            "translation": ""
        },
        {
            "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": "Error Exiting Phobos",
            "message": "Error Exiting Phobos",
            "translation": "Lỗi khi thoát Phobos",
            "translatorComment": "Copied from source."
        },
        {
            "id": "Unable to exit service due to: {Err}. You may want to stop Phobos from the service manager.",
            "message": "Unable to exit service due to: {Err}. You may want to stop Phobos from the service manager.",
            "translation": "Không thể thoát dịch vụ do: {Err}. Bạn có thể dừng Phobos 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": "{B}",
            "message": "{B}",
            "translation": "",
            "placeholders": [
                {
                    "id": "B",
                    "string": "%[1]s",
                    "type": "[]byte",
                    "underlyingType": "[]byte",
                    "argNum": 1,
                    "expr": "b"
                }
            ]
        }
    ]
}