aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/locales
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2020-07-27 11:51:31 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2020-08-18 09:49:17 +0200
commit4a5197ed48b22a24c5e150b9308ee4c149bec89e (patch)
tree92dd59fa06cf18b0aa0a3ac0193637dc2606e6e9 /locales
parenttunnel: use conn.BindSocketToInterface type (diff)
downloadwireguard-windows-4a5197ed48b22a24c5e150b9308ee4c149bec89e.tar.xz
wireguard-windows-4a5197ed48b22a24c5e150b9308ee4c149bec89e.zip
locale: sync translations and rework enumeration
We now enumerate directories in locale/ and rename them if Crowdin is giving us a different language code. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'locales')
-rw-r--r--locales/de/messages.gotext.json6
-rw-r--r--locales/fa/messages.gotext.json863
-rw-r--r--locales/fr/messages.gotext.json6
-rw-r--r--locales/id/messages.gotext.json874
-rw-r--r--locales/it/messages.gotext.json6
-rw-r--r--locales/ja/messages.gotext.json6
-rw-r--r--locales/pl/messages.gotext.json23
-rw-r--r--locales/ru/messages.gotext.json10
-rw-r--r--locales/sl/messages.gotext.json6
-rw-r--r--locales/vi/messages.gotext.json382
-rw-r--r--locales/zh-CN/messages.gotext.json202
-rw-r--r--locales/zh-TW/messages.gotext.json1761
12 files changed, 4009 insertions, 136 deletions
diff --git a/locales/de/messages.gotext.json b/locales/de/messages.gotext.json
index 85353269..fa49c849 100644
--- a/locales/de/messages.gotext.json
+++ b/locales/de/messages.gotext.json
@@ -496,9 +496,9 @@
"translatorComment": "Copied from source."
},
{
- "id": "Invalid config key is missing an equals separator",
- "message": "Invalid config key is missing an equals separator",
- "translation": "Ungültiger Konfigurationseintrag, es fehlt ein = Trennzeichen",
+ "id": "Config key is missing an equals separator",
+ "message": "Config key is missing an equals separator",
+ "translation": "Konfigurationsschlüssel fehlt ein Gleichheitstrennzeichen",
"translatorComment": "Copied from source."
},
{
diff --git a/locales/fa/messages.gotext.json b/locales/fa/messages.gotext.json
new file mode 100644
index 00000000..5933b60c
--- /dev/null
+++ b/locales/fa/messages.gotext.json
@@ -0,0 +1,863 @@
+{
+ "language": "fa",
+ "messages": [
+ {
+ "id": "Error",
+ "message": "Error",
+ "translation": "خطا",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Command Line Options",
+ "message": "Command Line Options",
+ "translation": "گزینه‌های خط فرمان",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "You must use the 64-bit version of WireGuard on this computer.",
+ "message": "You must use the 64-bit version of WireGuard on this computer.",
+ "translation": "شما باید نگارش ۶۴-بیت WireGuard را در این رایانه استفاده کنید.",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Now",
+ "message": "Now",
+ "translation": "هم اکنون",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "{Years} year(s)",
+ "message": "{Years} year(s)",
+ "translation": {
+ "select": {
+ "feature": "plural",
+ "arg": "Years",
+ "cases": {
+ "one": {
+ "msg": "{Years} سال"
+ },
+ "other": {
+ "msg": "{Years} سال"
+ }
+ }
+ }
+ },
+ "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": {
+ "one": {
+ "msg": "{Days} روز"
+ },
+ "other": {
+ "msg": "{Days} روز"
+ }
+ }
+ }
+ },
+ "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": {
+ "one": {
+ "msg": "{Hours} ساعت"
+ },
+ "other": {
+ "msg": "{Hours} ساعت"
+ }
+ }
+ }
+ },
+ "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": {
+ "one": {
+ "msg": "{Minutes} دقیقه"
+ },
+ "other": {
+ "msg": "{Minutes} دقیقه"
+ }
+ }
+ }
+ },
+ "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": {
+ "one": {
+ "msg": "{Seconds} ثانیه"
+ },
+ "other": {
+ "msg": "{Seconds} ثانیه"
+ }
+ }
+ }
+ },
+ "placeholders": [
+ {
+ "id": "Seconds",
+ "string": "%[1]d",
+ "type": "int64",
+ "underlyingType": "int64",
+ "argNum": 1,
+ "expr": "seconds"
+ }
+ ]
+ },
+ {
+ "id": "{Timestamp} ago",
+ "message": "{Timestamp} ago",
+ "translation": "{Timestamp} پیش",
+ "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} بایت",
+ "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": "Invalid IP address",
+ "message": "Invalid IP address",
+ "translation": "نشانی آی‌پی نامعتبر است",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid MTU",
+ "message": "Invalid MTU",
+ "translation": "MTU نامعتبر است",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid port",
+ "message": "Invalid port",
+ "translation": "پورت نامعتبر",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Key must have a value",
+ "message": "Key must have a value",
+ "translation": "کلید باید یک مقدار داشته باشد",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "[none specified]",
+ "message": "[none specified]",
+ "translation": "[مشخص نشده]",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "All peers must have public keys",
+ "message": "All peers must have public keys",
+ "translation": "همه همتاها باید کلید‌های عمومی داشته باشند",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Error in getting configuration",
+ "message": "Error in getting configuration",
+ "translation": "خطا در دریافت پیکربندی",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "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": "About WireGuard",
+ "message": "About WireGuard",
+ "translation": "درباره WireGuard",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Close",
+ "message": "Close",
+ "translation": "بستن",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "♥ &Donate!",
+ "message": "♥ &Donate!",
+ "translation": "♥&کمک‌مالی!",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Status:",
+ "message": "Status:",
+ "translation": "وضعیت:",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Deactivate",
+ "message": "&Deactivate",
+ "translation": "&غیرفعال‌سازی",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Activate",
+ "message": "&Activate",
+ "translation": "&فعال‌سازی",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Public key:",
+ "message": "Public key:",
+ "translation": "کلید عمومی:",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Listen port:",
+ "message": "Listen port:",
+ "translation": "پورت شنود:",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "MTU:",
+ "message": "MTU:",
+ "translation": "MTU:",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Addresses:",
+ "message": "Addresses:",
+ "translation": "نشانی‌ها:",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "DNS servers:",
+ "message": "DNS servers:",
+ "translation": "سرورهای DNS:",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Preshared key:",
+ "message": "Preshared key:",
+ "translation": "کلید از پیش تقسیم شده:",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Allowed IPs:",
+ "message": "Allowed IPs:",
+ "translation": "IPهای مجاز:",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Endpoint:",
+ "message": "Endpoint:",
+ "translation": "نقطه پایان:",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Persistent keepalive:",
+ "message": "Persistent keepalive:",
+ "translation": "زنده نگه‌داشتن پیوسته:",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Transfer:",
+ "message": "Transfer:",
+ "translation": "انتقال:",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "enabled",
+ "message": "enabled",
+ "translation": "فعال شده",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Interface: {Name}",
+ "message": "Interface: {Name}",
+ "translation": "رابط: {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": "همتا",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Create new tunnel",
+ "message": "Create new tunnel",
+ "translation": "ایجاد تونل جدید",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Edit tunnel",
+ "message": "Edit tunnel",
+ "translation": "ویرایش تونل",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Name:",
+ "message": "&Name:",
+ "translation": "&نام:",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Public key:",
+ "message": "&Public key:",
+ "translation": "&کلید عمومی:",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "(unknown)",
+ "message": "(unknown)",
+ "translation": "(ناشناخته)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Save",
+ "message": "&Save",
+ "translation": "&ذخیره",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Cancel",
+ "message": "Cancel",
+ "translation": "لغو",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Configuration:",
+ "message": "&Configuration:",
+ "translation": "&پیکربندی:",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid name",
+ "message": "Invalid name",
+ "translation": "نام نامعتبر",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "A name is required.",
+ "message": "A name is required.",
+ "translation": "یک نام الزامی است.",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Unable to list existing tunnels",
+ "message": "Unable to list existing tunnels",
+ "translation": "نمی‌توان تونل‌های موجود را فهرست کرد",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Tunnel already exists",
+ "message": "Tunnel already exists",
+ "translation": "تونل هم‌اکنون موجود است",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Active",
+ "message": "Active",
+ "translation": "فعال",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Activating",
+ "message": "Activating",
+ "translation": "در حال فعال‌سازی",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Inactive",
+ "message": "Inactive",
+ "translation": "غیرفعال",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Deactivating",
+ "message": "Deactivating",
+ "translation": "در حال غیرفعال‌سازی",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Unknown state",
+ "message": "Unknown state",
+ "translation": "وضعیت ناشناخته",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Log",
+ "message": "Log",
+ "translation": "گزارش وقایع",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Copy",
+ "message": "&Copy",
+ "translation": "&روگرفت",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Save to file…",
+ "message": "&Save to file…",
+ "translation": "&ذخیره در پرونده…",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Time",
+ "message": "Time",
+ "translation": "زمان",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Log message",
+ "message": "Log message",
+ "translation": "پیام گزارش رویداد",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Export log to file",
+ "message": "Export log to file",
+ "translation": "برون‌برد گزارش رویداد به پرونده",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&About WireGuard…",
+ "message": "&About WireGuard…",
+ "translation": "&درباره WireGuard…",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Tunnel Error",
+ "message": "Tunnel Error",
+ "translation": "خطالی تونل",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Status: Unknown",
+ "message": "Status: Unknown",
+ "translation": "وضعیت: ناشناخته",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Addresses: None",
+ "message": "Addresses: None",
+ "translation": "نشانی‌ها: هیچ",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Manage tunnels…",
+ "message": "&Manage tunnels…",
+ "translation": "&مدیریت تونل‌ها…",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "WireGuard Tunnel Error",
+ "message": "WireGuard Tunnel Error",
+ "translation": "خطای تونل WireGuard",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Status: {StateText}",
+ "message": "Status: {StateText}",
+ "translation": "وضعیت: {StateText}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "StateText",
+ "string": "%[1]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 1,
+ "expr": "stateText"
+ }
+ ]
+ },
+ {
+ "id": "Addresses: {String}",
+ "message": "Addresses: {String}",
+ "translation": "نشانی‌ها: {String}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "String",
+ "string": "%[1]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 1,
+ "expr": "sb.String()"
+ }
+ ]
+ },
+ {
+ "id": "WireGuard Activated",
+ "message": "WireGuard Activated",
+ "translation": "WireGuard فعال‌شد",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "The {Name} tunnel has been activated.",
+ "message": "The {Name} tunnel has been activated.",
+ "translation": "تونل {Name} فعال‌شده.",
+ "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 غیرفعال شد",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "An Update is Available!",
+ "message": "An Update is Available!",
+ "translation": "یک به‌روزرسانی در دسترس است!",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "WireGuard Update Available",
+ "message": "WireGuard Update Available",
+ "translation": "به‌روزرسانی WireGuard در دسترس است",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Tunnels",
+ "message": "Tunnels",
+ "translation": "تونل‌ها",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Edit",
+ "message": "&Edit",
+ "translation": "&ویرایش",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Add &empty tunnel…",
+ "message": "Add &empty tunnel…",
+ "translation": "افزودن &خالی‌کردن تونل…",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Add Tunnel",
+ "message": "Add Tunnel",
+ "translation": "افزودن تونل",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Remove selected tunnel(s)",
+ "message": "Remove selected tunnel(s)",
+ "translation": "حذف تونل(ها) انتخابی",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Export all tunnels to zip",
+ "message": "Export all tunnels to zip",
+ "translation": "برون‌بری همه تونل‌ها به زیپ",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Export all tunnels to &zip…",
+ "message": "Export all tunnels to &zip…",
+ "translation": "برون‌بری همه تونل‌ها به &زیپ…",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Imported tunnels",
+ "message": "Imported tunnels",
+ "translation": "تونل‌های وارد شده",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Imported {M} tunnels",
+ "message": "Imported {M} tunnels",
+ "translation": {
+ "select": {
+ "feature": "plural",
+ "arg": "M",
+ "cases": {
+ "one": {
+ "msg": "{M} تونل وارد شد"
+ },
+ "other": {
+ "msg": "{M} تونل وارد شد"
+ }
+ }
+ }
+ },
+ "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": {
+ "one": {
+ "msg": "{M} از {N} تونل وارد شد"
+ },
+ "other": {
+ "msg": "{M} از {N} تونل وارد شد"
+ }
+ }
+ }
+ },
+ "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": "نمی‌توان تونل ایجاد کرد",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Delete {TunnelCount} tunnels",
+ "message": "Delete {TunnelCount} tunnels",
+ "translation": {
+ "select": {
+ "feature": "plural",
+ "arg": "TunnelCount",
+ "cases": {
+ "one": {
+ "msg": "حذف {TunnelCount} تونل"
+ },
+ "other": {
+ "msg": "حذف {TunnelCount} تونل"
+ }
+ }
+ }
+ },
+ "placeholders": [
+ {
+ "id": "TunnelCount",
+ "string": "%[1]d",
+ "type": "int",
+ "underlyingType": "int",
+ "argNum": 1,
+ "expr": "tunnelCount"
+ }
+ ]
+ },
+ {
+ "id": "Delete tunnel ‘{TunnelName}’",
+ "message": "Delete tunnel ‘{TunnelName}’",
+ "translation": "حذف تونل ‘{TunnelName}’",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "TunnelName",
+ "string": "%[1]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 1,
+ "expr": "tunnelName"
+ }
+ ]
+ },
+ {
+ "id": "Unable to delete tunnel",
+ "message": "Unable to delete tunnel",
+ "translation": "حذف تونل‌ امکان‌پذیر نیست",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Unable to delete tunnels",
+ "message": "Unable to delete tunnels",
+ "translation": "نمی‌توان تونل‌ها را حذف کرد",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Import tunnel(s) from file",
+ "message": "Import tunnel(s) from file",
+ "translation": "وارد کردن تونل(ها) از پرونده",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Configuration ZIP Files (*.zip)|*.zip",
+ "message": "Configuration ZIP Files (*.zip)|*.zip",
+ "translation": "پرونده‌های پیکربندی زیپ (*.zip)|*.zip",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Export tunnels to zip",
+ "message": "Export tunnels to zip",
+ "translation": "برون‌بری تونل‌ها به زیپ",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Error Exiting WireGuard",
+ "message": "Error Exiting WireGuard",
+ "translation": "خطا در هنگام خارج شدن از WireGuard",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Status: Waiting for user",
+ "message": "Status: Waiting for user",
+ "translation": "وضعیت: درانتظار برای کاربر",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Update Now",
+ "message": "Update Now",
+ "translation": "اکنون به‌روز رسانی کن",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Status: Waiting for updater service",
+ "message": "Status: Waiting for updater service",
+ "translation": "وضعیت: درانتظار برای سرویس به‌روزرسانی",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Error: {Err}. Please try again.",
+ "message": "Error: {Err}. Please try again.",
+ "translation": "خطا: {Err}. لطفا دوباره تلاش کنید.",
+ "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": "وضعیت: کامل شد!",
+ "translatorComment": "Copied from source."
+ }
+ ]
+} \ No newline at end of file
diff --git a/locales/fr/messages.gotext.json b/locales/fr/messages.gotext.json
index 87100f52..220d2bc2 100644
--- a/locales/fr/messages.gotext.json
+++ b/locales/fr/messages.gotext.json
@@ -496,12 +496,6 @@
"translatorComment": "Copied from source."
},
{
- "id": "Invalid config key is missing an equals separator",
- "message": "Invalid config key is missing an equals separator",
- "translation": "Clé de configuration non valide, il manque le séparateur est égal à",
- "translatorComment": "Copied from source."
- },
- {
"id": "Key must have a value",
"message": "Key must have a value",
"translation": "Clé doit avoir une valeur",
diff --git a/locales/id/messages.gotext.json b/locales/id/messages.gotext.json
new file mode 100644
index 00000000..e3ebdd87
--- /dev/null
+++ b/locales/id/messages.gotext.json
@@ -0,0 +1,874 @@
+{
+ "language": "id",
+ "messages": [
+ {
+ "id": "Error",
+ "message": "Error",
+ "translation": "Kesalahan",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "(no argument): elevate and install manager service",
+ "message": "(no argument): elevate and install manager service",
+ "translation": "(tidak ada argumen): naikkan akses dan instal servis manajer",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Usage: {Args0} [\n{String}]",
+ "message": "Usage: {Args0} [\n{String}]",
+ "translation": "Penggunaan: {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": "Opsi Command Line",
+ "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": "Tidak dapat menentukan apakah proses sedang berjalan di bawah WOW64: {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 64-bit version of WireGuard on this computer.",
+ "message": "You must use the 64-bit version of WireGuard on this computer.",
+ "translation": "Anda harus menggunakan WireGuard versi 64-bit di komputer ini.",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Unable to open current process token: {Err}",
+ "message": "Unable to open current process token: {Err}",
+ "translation": "Tidak dapat membuka token proses saat ini: {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 hanya dapat digunakan oleh pengguna yang merupakan anggota grup Bawaan {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 sedang berjalan, tetapi UI hanya dapat diakses dari desktop grup Bawaan {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": "Ikon sistem WireGuard tidak muncul setelah 30 detik.",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Now",
+ "message": "Now",
+ "translation": "Sekarang",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "System clock wound backward!",
+ "message": "System clock wound backward!",
+ "translation": "Jam sistem mundur!",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "{Years} year(s)",
+ "message": "{Years} year(s)",
+ "translation": {
+ "select": {
+ "feature": "plural",
+ "arg": "Years",
+ "cases": {
+ "other": {
+ "msg": "{Years} tahun\n{Years} tahun"
+ }
+ }
+ }
+ },
+ "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} Hari"
+ }
+ }
+ }
+ },
+ "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} jam"
+ }
+ }
+ }
+ },
+ "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} menit"
+ }
+ }
+ }
+ },
+ "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} detik"
+ }
+ }
+ }
+ },
+ "placeholders": [
+ {
+ "id": "Seconds",
+ "string": "%[1]d",
+ "type": "int64",
+ "underlyingType": "int64",
+ "argNum": 1,
+ "expr": "seconds"
+ }
+ ]
+ },
+ {
+ "id": "{Timestamp} ago",
+ "message": "{Timestamp} ago",
+ "translation": "{Timestamp} yang lalu",
+ "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": "{Why}: {Offender}",
+ "translatorComment": "Copied from source.",
+ "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": "Alamat IP tidak valid",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid network prefix length",
+ "message": "Invalid network prefix length",
+ "translation": "Network prefix tidak valid",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Missing port from endpoint",
+ "message": "Missing port from endpoint",
+ "translation": "Port belum terisi dari endpoint",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid endpoint host",
+ "message": "Invalid endpoint host",
+ "translation": "Host endpoint tidak valid",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Brackets must contain an IPv6 address",
+ "message": "Brackets must contain an IPv6 address",
+ "translation": "Dalam Kurung harus berisi alamat IPv6",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid MTU",
+ "message": "Invalid MTU",
+ "translation": "MTU tidak valid",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid port",
+ "message": "Invalid port",
+ "translation": "Port tidak valid",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid persistent keepalive",
+ "message": "Invalid persistent keepalive",
+ "translation": "Persistent keepalive tidak valid",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid key: {Err}",
+ "message": "Invalid key: {Err}",
+ "translation": "Kunci tidak sah:{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": "Kunci harus diterjemahkan tepat 32 byte",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Number must be a number between 0 and 2^64-1: {Err}",
+ "message": "Number must be a number between 0 and 2^64-1: {Err}",
+ "translation": "Nomor harus diantara 0 sampai dengan 2^64-1:{Err}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "Err",
+ "string": "%[1]v",
+ "type": "error",
+ "underlyingType": "interface{Error() string}",
+ "argNum": 1,
+ "expr": "err"
+ }
+ ]
+ },
+ {
+ "id": "Two commas in a row",
+ "message": "Two commas in a row",
+ "translation": "Dua koma dalam satu baris",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Tunnel name is not valid",
+ "message": "Tunnel name is not valid",
+ "translation": "Nama Tunnel tidak valid",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Line must occur in a section",
+ "message": "Line must occur in a section",
+ "translation": "Garis harus muncul perbagian",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Key must have a value",
+ "message": "Key must have a value",
+ "translation": "Kunci harus memiliki value",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid key for [Interface] section",
+ "message": "Invalid key for [Interface] section",
+ "translation": "Kunci tidak valid pada bagian [Interface]",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid key for [Peer] section",
+ "message": "Invalid key for [Peer] section",
+ "translation": "Kunci tidak valid pada bagian [Peer]",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "An interface must have a private key",
+ "message": "An interface must have a private key",
+ "translation": "Interface harus memiliki Private Key",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "[none specified]",
+ "message": "[none specified]",
+ "translation": "Tidak Ditetapkan",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "All peers must have public keys",
+ "message": "All peers must have public keys",
+ "translation": "Semua peers harus memiliki kunci publik",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Error in getting configuration",
+ "message": "Error in getting configuration",
+ "translation": "Eror ketika mendapatkan konfigurasi",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid key for interface section",
+ "message": "Invalid key for interface section",
+ "translation": "Kunci tidak valid pada bagian [Interface]",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Protocol version must be 1",
+ "message": "Protocol version must be 1",
+ "translation": "Versi protokol harus 1",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid key for peer section",
+ "message": "Invalid key for peer section",
+ "translation": "Kunci tidak valid pada bagian [Peer]",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "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": "About WireGuard",
+ "message": "About WireGuard",
+ "translation": "Tentang WireGuard",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "App version: {Number}\nGo backend version: {WireGuardGoVersion}\nGo version: {Version_go}\nOperating system: {OsName}\nArchitecture: {GOARCH}",
+ "message": "App version: {Number}\nGo backend version: {WireGuardGoVersion}\nGo version: {Version_go}\nOperating system: {OsName}\nArchitecture: {GOARCH}",
+ "translation": "Versi Aplikasi: {Number}\nVersi back-end Go: {WireGuardGoVersion}\nVersi Go: {Version_go}\nSistem Operasi: {OsName}\nArsitektur: {GOARCH}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "Number",
+ "string": "%[1]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 1,
+ "expr": "version.Number"
+ },
+ {
+ "id": "WireGuardGoVersion",
+ "string": "%[2]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 2,
+ "expr": "device.WireGuardGoVersion"
+ },
+ {
+ "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": "GOARCH",
+ "string": "%[5]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 5,
+ "expr": "runtime.GOARCH"
+ }
+ ]
+ },
+ {
+ "id": "Close",
+ "message": "Close",
+ "translation": "Tutup",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "♥ &Donate!",
+ "message": "♥ &Donate!",
+ "translation": "♥ &Donasi!",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Status:",
+ "message": "Status:",
+ "translation": "Status:",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Active",
+ "message": "Active",
+ "translation": "Aktif",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Activating",
+ "message": "Activating",
+ "translation": "Mengaktifkan",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Inactive",
+ "message": "Inactive",
+ "translation": "Nonaktif",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Deactivating",
+ "message": "Deactivating",
+ "translation": "Menonaktifkan",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Unknown state",
+ "message": "Unknown state",
+ "translation": "Status tidak diketahui",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Log",
+ "message": "Log",
+ "translation": "Catatan",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Copy",
+ "message": "&Copy",
+ "translation": "Salin",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Select &all",
+ "message": "Select &all",
+ "translation": "Pilih semua",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Save to file…",
+ "message": "&Save to file…",
+ "translation": "Menyimpan ke dalam berkas…",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Time",
+ "message": "Time",
+ "translation": "Waktu",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Log message",
+ "message": "Log message",
+ "translation": "Pesan log",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Text Files (*.txt)|*.txt|All Files (*.*)|*.*",
+ "message": "Text Files (*.txt)|*.txt|All Files (*.*)|*.*",
+ "translation": "Berkas Txt (*.Txt)|*.Txt|Semua berkas (*.*)|*.*",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Export log to file",
+ "message": "Export log to file",
+ "translation": "Ekspor log kedalam file",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&About WireGuard…",
+ "message": "&About WireGuard…",
+ "translation": "&Tentang WireGuard…",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Tunnel Error",
+ "message": "Tunnel Error",
+ "translation": "Tunnel eror",
+ "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\nSilakan baca log untuk informasi lebih lanjut.",
+ "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} (kadaluarsa)",
+ "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": "Deteksi eror 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": "Tidak dapat menunggu jendela WireGuard muncul: {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: Dinonaktifkan",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Status: Unknown",
+ "message": "Status: Unknown",
+ "translation": "Status: Tidak diketahui",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Addresses: None",
+ "message": "Addresses: None",
+ "translation": "Alamat: Kosong",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Manage tunnels…",
+ "message": "&Manage tunnels…",
+ "translation": "&Manajer Tunnel…",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Import tunnel(s) from file…",
+ "message": "&Import tunnel(s) from file…",
+ "translation": "&Impor tunnel dari file…",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "E&xit",
+ "message": "E&xit",
+ "translation": "&Keluar",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "WireGuard Tunnel Error",
+ "message": "WireGuard Tunnel Error",
+ "translation": "Wireguard Tunnel Eror",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "WireGuard: {TextForStateglobalState_true}",
+ "message": "WireGuard: {TextForStateglobalState_true}",
+ "translation": "WireGuard: {TextForStateglobalState_true}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "TextForStateglobalState_true",
+ "string": "%[1]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 1,
+ "expr": "textForState(globalState, true)"
+ }
+ ]
+ },
+ {
+ "id": "Status: {StateText}",
+ "message": "Status: {StateText}",
+ "translation": "Status: {StateText}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "StateText",
+ "string": "%[1]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 1,
+ "expr": "stateText"
+ }
+ ]
+ },
+ {
+ "id": "Export all tunnels to &zip…",
+ "message": "Export all tunnels to &zip…",
+ "translation": "Ekspor semua tunnel ke &zip…",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Edit &selected tunnel…",
+ "message": "Edit &selected tunnel…",
+ "translation": "Ubah tunnel &terpilih…",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Remove selected tunnel(s)",
+ "message": "&Remove selected tunnel(s)",
+ "translation": "&Hapus tunnel terpilih",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Could not import selected configuration: {LastErr}",
+ "message": "Could not import selected configuration: {LastErr}",
+ "translation": "Tidak dapat mengimpor konfigurasi yang dipilih: {LastErr}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "LastErr",
+ "string": "%[1]v",
+ "type": "error",
+ "underlyingType": "interface{Error() string}",
+ "argNum": 1,
+ "expr": "lastErr"
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/locales/it/messages.gotext.json b/locales/it/messages.gotext.json
index c2ff1eec..7943e5da 100644
--- a/locales/it/messages.gotext.json
+++ b/locales/it/messages.gotext.json
@@ -496,12 +496,6 @@
"translatorComment": "Copied from source."
},
{
- "id": "Invalid config key is missing an equals separator",
- "message": "Invalid config key is missing an equals separator",
- "translation": "Chiave di configurazione non valida manca di un separatore di uguale",
- "translatorComment": "Copied from source."
- },
- {
"id": "Key must have a value",
"message": "Key must have a value",
"translation": "La chiave deve avere un valore",
diff --git a/locales/ja/messages.gotext.json b/locales/ja/messages.gotext.json
index 8c1a7ddc..fefebc1d 100644
--- a/locales/ja/messages.gotext.json
+++ b/locales/ja/messages.gotext.json
@@ -481,12 +481,6 @@
"translatorComment": "Copied from source."
},
{
- "id": "Invalid config key is missing an equals separator",
- "message": "Invalid config key is missing an equals separator",
- "translation": "イコール(=)が無いためキー項目として不正です",
- "translatorComment": "Copied from source."
- },
- {
"id": "Key must have a value",
"message": "Key must have a value",
"translation": "キー項目に対応する値がありません",
diff --git a/locales/pl/messages.gotext.json b/locales/pl/messages.gotext.json
new file mode 100644
index 00000000..da52f616
--- /dev/null
+++ b/locales/pl/messages.gotext.json
@@ -0,0 +1,23 @@
+{
+ "language": "pl",
+ "messages": [
+ {
+ "id": "Error",
+ "message": "Error",
+ "translation": "Błąd",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Command Line Options",
+ "message": "Command Line Options",
+ "translation": "Opcje wiersza poleceń",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "You must use the 64-bit version of WireGuard on this computer.",
+ "message": "You must use the 64-bit version of WireGuard on this computer.",
+ "translation": "Musisz użyć 64-bitowej wersji WireGuard na tym komputerze.",
+ "translatorComment": "Copied from source."
+ }
+ ]
+} \ No newline at end of file
diff --git a/locales/ru/messages.gotext.json b/locales/ru/messages.gotext.json
index 1d5f6775..c4438813 100644
--- a/locales/ru/messages.gotext.json
+++ b/locales/ru/messages.gotext.json
@@ -526,12 +526,6 @@
"translatorComment": "Copied from source."
},
{
- "id": "Invalid config key is missing an equals separator",
- "message": "Invalid config key is missing an equals separator",
- "translation": "В ключе конфигурации отсутствует разделитель",
- "translatorComment": "Copied from source."
- },
- {
"id": "Key must have a value",
"message": "Key must have a value",
"translation": "Ключ должен иметь значение",
@@ -684,13 +678,13 @@
{
"id": "&Deactivate",
"message": "&Deactivate",
- "translation": "&Отключен",
+ "translation": "&Отключить",
"translatorComment": "Copied from source."
},
{
"id": "&Activate",
"message": "&Activate",
- "translation": "&Подключен",
+ "translation": "&Подключить",
"translatorComment": "Copied from source."
},
{
diff --git a/locales/sl/messages.gotext.json b/locales/sl/messages.gotext.json
index 2c7bd56d..0b1b4cbc 100644
--- a/locales/sl/messages.gotext.json
+++ b/locales/sl/messages.gotext.json
@@ -526,12 +526,6 @@
"translatorComment": "Copied from source."
},
{
- "id": "Invalid config key is missing an equals separator",
- "message": "Invalid config key is missing an equals separator",
- "translation": "Napačnemu ključu konfiguracije manjka ločilo-enačaj",
- "translatorComment": "Copied from source."
- },
- {
"id": "Key must have a value",
"message": "Key must have a value",
"translation": "Ključ mora imeti vrednost",
diff --git a/locales/vi/messages.gotext.json b/locales/vi/messages.gotext.json
new file mode 100644
index 00000000..b167b27f
--- /dev/null
+++ b/locales/vi/messages.gotext.json
@@ -0,0 +1,382 @@
+{
+ "language": "vi",
+ "messages": [
+ {
+ "id": "Error",
+ "message": "Error",
+ "translation": "Lỗi",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Now",
+ "message": "Now",
+ "translation": "Vừa xong",
+ "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": "Invalid IP address",
+ "message": "Invalid IP address",
+ "translation": "Địa chỉ IP 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": "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": "About WireGuard",
+ "message": "About WireGuard",
+ "translation": "Thông tin về WireGuard",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "WireGuard logo image",
+ "message": "WireGuard logo image",
+ "translation": "Logo WireGuard",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "App version: {Number}\nGo backend version: {WireGuardGoVersion}\nGo version: {Version_go}\nOperating system: {OsName}\nArchitecture: {GOARCH}",
+ "message": "App version: {Number}\nGo backend version: {WireGuardGoVersion}\nGo version: {Version_go}\nOperating system: {OsName}\nArchitecture: {GOARCH}",
+ "translation": "Phiên bản ứng dụng: {Number}\nPhiên bản Golang của WG: {WireGuardGoVersion}\nPhiên bản Golang: {Version_go}\nHệ điều hành: {OsName}\nKiến trúc xử lý: {GOARCH}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "Number",
+ "string": "%[1]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 1,
+ "expr": "version.Number"
+ },
+ {
+ "id": "WireGuardGoVersion",
+ "string": "%[2]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 2,
+ "expr": "device.WireGuardGoVersion"
+ },
+ {
+ "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": "GOARCH",
+ "string": "%[5]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 5,
+ "expr": "runtime.GOARCH"
+ }
+ ]
+ },
+ {
+ "id": "Close",
+ "message": "Close",
+ "translation": "Đóng",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Status:",
+ "message": "Status:",
+ "translation": "Trạng thái:",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Endpoint:",
+ "message": "Endpoint:",
+ "translation": "Đầu cuối:",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "enabled",
+ "message": "enabled",
+ "translation": "đã kích hoạt",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "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": "c.RxBytes.String()"
+ },
+ {
+ "id": "String_1",
+ "string": "%[2]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 2,
+ "expr": "c.TxBytes.String()"
+ }
+ ]
+ },
+ {
+ "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": "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": "Cancel",
+ "message": "Cancel",
+ "translation": "Huỷ",
+ "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"
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/locales/zh-CN/messages.gotext.json b/locales/zh-CN/messages.gotext.json
index d16d523d..f8cc24df 100644
--- a/locales/zh-CN/messages.gotext.json
+++ b/locales/zh-CN/messages.gotext.json
@@ -10,7 +10,7 @@
{
"id": "(no argument): elevate and install manager service",
"message": "(no argument): elevate and install manager service",
- "translation": "(无参数):提升并安装管理服务",
+ "translation": "(无参数): 提升并安装管理服务",
"translatorComment": "Copied from source."
},
{
@@ -46,7 +46,7 @@
{
"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": "无法确定该进程是否在WOW64下运行: {Err}",
+ "translation": "无法确定该进程是否在WOW64下运行: {Err}",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -62,7 +62,7 @@
{
"id": "You must use the 64-bit version of WireGuard on this computer.",
"message": "You must use the 64-bit version of WireGuard on this computer.",
- "translation": "您必须在此计算机上使用64位版本的 WireGuard 。",
+ "translation": "您必须在此计算机上使用64位版本的 WireGuard。",
"translatorComment": "Copied from source."
},
{
@@ -128,7 +128,7 @@
{
"id": "System clock wound backward!",
"message": "System clock wound backward!",
- "translation": "系统时钟倒转!",
+ "translation": "系统时间倒退了!",
"translatorComment": "Copied from source."
},
{
@@ -391,19 +391,19 @@
{
"id": "Missing port from endpoint",
"message": "Missing port from endpoint",
- "translation": "端点中缺少端口",
+ "translation": "对端 (endpoint) 中缺少端口",
"translatorComment": "Copied from source."
},
{
"id": "Invalid endpoint host",
"message": "Invalid endpoint host",
- "translation": "端点主机无效",
+ "translation": "对端主机名 (endpoint host) 无效",
"translatorComment": "Copied from source."
},
{
"id": "Brackets must contain an IPv6 address",
"message": "Brackets must contain an IPv6 address",
- "translation": "括号应包含一个 IPv6 地址",
+ "translation": "方括号中应包含一个 IPv6 地址",
"translatorComment": "Copied from source."
},
{
@@ -443,13 +443,13 @@
{
"id": "Keys must decode to exactly 32 bytes",
"message": "Keys must decode to exactly 32 bytes",
- "translation": "密钥必须解码为正好32字节",
+ "translation": "解码后的密钥长度必须为32字节",
"translatorComment": "Copied from source."
},
{
"id": "Number must be a number between 0 and 2^64-1: {Err}",
"message": "Number must be a number between 0 and 2^64-1: {Err}",
- "translation": "数必须是一个介于 0 至 2^64-1 之间的数字:{Err}",
+ "translation": "数值必须介于 0 至 2^64-1 之间: {Err}",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -481,15 +481,15 @@
"translatorComment": "Copied from source."
},
{
- "id": "Invalid config key is missing an equals separator",
- "message": "Invalid config key is missing an equals separator",
- "translation": "无效的配置键缺少一个等于分隔符",
+ "id": "Config key is missing an equals separator",
+ "message": "Config key is missing an equals separator",
+ "translation": "配置项必须要有一个等于号",
"translatorComment": "Copied from source."
},
{
"id": "Key must have a value",
"message": "Key must have a value",
- "translation": "键必须有一个值",
+ "translation": "必须有一个值",
"translatorComment": "Copied from source."
},
{
@@ -513,7 +513,7 @@
{
"id": "[none specified]",
"message": "[none specified]",
- "translation": "【未指定】",
+ "translation": "[未指定]",
"translatorComment": "Copied from source."
},
{
@@ -549,13 +549,13 @@
{
"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秒’."
},
{
@@ -567,7 +567,7 @@
{
"id": "WireGuard logo image",
"message": "WireGuard logo image",
- "translation": "WireGuard 标志图片",
+ "translation": "WireGuard logo 图片",
"translatorComment": "Copied from source."
},
{
@@ -627,25 +627,25 @@
{
"id": "♥ &Donate!",
"message": "♥ &Donate!",
- "translation": "♥ &捐助!",
+ "translation": "♥ 捐助! (&D)",
"translatorComment": "Copied from source."
},
{
"id": "Status:",
"message": "Status:",
- "translation": "状态:",
+ "translation": "状态:",
"translatorComment": "Copied from source."
},
{
"id": "&Deactivate",
"message": "&Deactivate",
- "translation": "&停用",
+ "translation": "断开 (&D)",
"translatorComment": "Copied from source."
},
{
"id": "&Activate",
"message": "&Activate",
- "translation": "&启动",
+ "translation": "连接 (&A)",
"translatorComment": "Copied from source."
},
{
@@ -669,7 +669,7 @@
{
"id": "Addresses:",
"message": "Addresses:",
- "translation": "地址:",
+ "translation": "地址:",
"translatorComment": "Copied from source."
},
{
@@ -681,19 +681,19 @@
{
"id": "Preshared key:",
"message": "Preshared key:",
- "translation": "预分享密钥:",
+ "translation": "预共享密钥:",
"translatorComment": "Copied from source."
},
{
"id": "Allowed IPs:",
"message": "Allowed IPs:",
- "translation": "允许的 IP:",
+ "translation": "允许的 IP:",
"translatorComment": "Copied from source."
},
{
"id": "Endpoint:",
"message": "Endpoint:",
- "translation": "端点:",
+ "translation": "对端:",
"translatorComment": "Copied from source."
},
{
@@ -705,7 +705,7 @@
{
"id": "Latest handshake:",
"message": "Latest handshake:",
- "translation": "最新的握手:",
+ "translation": "上次握手时间:",
"translatorComment": "Copied from source."
},
{
@@ -723,7 +723,7 @@
{
"id": "{String} received, {String_1} sent",
"message": "{String} received, {String_1} sent",
- "translation": "{String} 已收到, {String_1} 已发送",
+ "translation": "接收 {String}, 发送 {String_1}",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -747,25 +747,25 @@
{
"id": "Failed to determine tunnel state",
"message": "Failed to determine tunnel state",
- "translation": "判断隧道状态失败",
+ "translation": "无法确认隧道状态",
"translatorComment": "Copied from source."
},
{
"id": "Failed to activate tunnel",
"message": "Failed to activate tunnel",
- "translation": "启动隧道失败",
+ "translation": "无法连接隧道",
"translatorComment": "Copied from source."
},
{
"id": "Failed to deactivate tunnel",
"message": "Failed to deactivate tunnel",
- "translation": "停用隧道失败",
+ "translation": "无法断开隧道连接",
"translatorComment": "Copied from source."
},
{
"id": "Interface: {Name}",
"message": "Interface: {Name}",
- "translation": "接口:{Name}",
+ "translation": "接口: {Name}",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -799,37 +799,37 @@
{
"id": "&Name:",
"message": "&Name:",
- "translation": "&名称:",
+ "translation": "名称 (&N):",
"translatorComment": "Copied from source."
},
{
"id": "&Public key:",
"message": "&Public key:",
- "translation": "&公钥:",
+ "translation": "公钥 (&P):",
"translatorComment": "Copied from source."
},
{
"id": "(unknown)",
"message": "(unknown)",
- "translation": "(未知)",
+ "translation": "(未知)",
"translatorComment": "Copied from source."
},
{
"id": "&Block untunneled traffic (kill-switch)",
"message": "&Block untunneled traffic (kill-switch)",
- "translation": "&拦截未经隧道的流量(禁用交换)",
+ "translation": "拦截未经隧道的流量 (kill-switch) (&B)",
"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, then the tunnel service engages a firewall ruleset to block all traffic that is neither to nor from the tunnel interface, 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, then the tunnel service engages a firewall ruleset to block all traffic that is neither to nor from the tunnel interface, with special exceptions for DHCP and NDP.",
- "translation": "当配置只有一个节点,且该节点的允许 IP 列表至少包含 0.0.0.0/0 或 ::/0 的其中一个 IP 时,隧道服务会使用防火墙规则集来拦截所有进出隧道接口的流量,但 DHCP 和 NDP 除外。",
+ "translation": "只有一个节点,且该节点允许的 IP 中包含 0.0.0.0/0 或 ::/0 时,使用防火墙规则拦截所有未通过隧道的流量 (DHCP 和 NDP 流量除外)。",
"translatorComment": "Copied from source."
},
{
"id": "&Save",
"message": "&Save",
- "translation": "&保存",
+ "translation": "保存 (&S)",
"translatorComment": "Copied from source."
},
{
@@ -841,7 +841,7 @@
{
"id": "&Configuration:",
"message": "&Configuration:",
- "translation": "&配置:",
+ "translation": "配置 (&C):",
"translatorComment": "Copied from source."
},
{
@@ -853,13 +853,13 @@
{
"id": "A name is required.",
"message": "A name is required.",
- "translation": "名称是必需的。",
+ "translation": "必须输入名称。",
"translatorComment": "Copied from source."
},
{
"id": "Tunnel name ‘{NewName}’ is invalid.",
"message": "Tunnel name ‘{NewName}’ is invalid.",
- "translation": "隧道名称 ”{NewName}“ 无效",
+ "translation": "隧道名「{NewName}」无效。",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -887,7 +887,7 @@
{
"id": "Another tunnel already exists with the name ‘{NewName}’.",
"message": "Another tunnel already exists with the name ‘{NewName}’.",
- "translation": "另一个同名的隧道 \"{NewName}\" 已存在。",
+ "translation": "隧道名「{NewName}」已存在。",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -915,7 +915,7 @@
{
"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": "文件”{FilePath}“ 已存在。\n\n您确定要覆盖它吗?",
+ "translation": "文件「{FilePath}」已存在。\n\n您确定要覆盖它吗?",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -931,31 +931,31 @@
{
"id": "Active",
"message": "Active",
- "translation": "激活",
+ "translation": "已连接",
"translatorComment": "Copied from source."
},
{
"id": "Activating",
"message": "Activating",
- "translation": "启动中",
+ "translation": "正在连接",
"translatorComment": "Copied from source."
},
{
"id": "Inactive",
"message": "Inactive",
- "translation": "未激活",
+ "translation": "已断开",
"translatorComment": "Copied from source."
},
{
"id": "Deactivating",
"message": "Deactivating",
- "translation": "停用中",
+ "translation": "正在断开",
"translatorComment": "Copied from source."
},
{
"id": "Unknown state",
"message": "Unknown state",
- "translation": "未知状态",
+ "translation": "未知",
"translatorComment": "Copied from source."
},
{
@@ -967,19 +967,19 @@
{
"id": "&Copy",
"message": "&Copy",
- "translation": "&复制",
+ "translation": "复制 (&C)",
"translatorComment": "Copied from source."
},
{
"id": "Select &all",
"message": "Select &all",
- "translation": "选择 &所有",
+ "translation": "全选 (&A)",
"translatorComment": "Copied from source."
},
{
"id": "&Save to file…",
"message": "&Save to file…",
- "translation": "&保存到文件…",
+ "translation": "导出… (&S)",
"translatorComment": "Copied from source."
},
{
@@ -991,25 +991,25 @@
{
"id": "Log message",
"message": "Log message",
- "translation": "记录消息",
+ "translation": "日志消息",
"translatorComment": "Copied from source."
},
{
"id": "Text Files (*.txt)|*.txt|All Files (*.*)|*.*",
"message": "Text Files (*.txt)|*.txt|All Files (*.*)|*.*",
- "translation": "文本文件 (*.txt)|*.txt|All Files (*.*)|*.*",
+ "translation": "文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*",
"translatorComment": "Copied from source."
},
{
"id": "Export log to file",
"message": "Export log to file",
- "translation": "导出日志到文件",
+ "translation": "导出日志",
"translatorComment": "Copied from source."
},
{
"id": "&About WireGuard…",
"message": "&About WireGuard…",
- "translation": "&关于 WireGuard…",
+ "translation": "关于 WireGuard… (&A)",
"translatorComment": "Copied from source."
},
{
@@ -1021,7 +1021,7 @@
{
"id": "{ErrMsg}\n\nPlease consult the log for more information.",
"message": "{ErrMsg}\n\nPlease consult the log for more information.",
- "translation": "{ErrMsg}\n\n更多信息请查看日志",
+ "translation": "{ErrMsg}\n\n更多信息请查看日志。",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -1037,7 +1037,7 @@
{
"id": "{Title} (out of date)",
"message": "{Title} (out of date)",
- "translation": "{Title} (已过时)",
+ "translation": "{Title} (已过时)",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -1075,37 +1075,37 @@
{
"id": "WireGuard: Deactivated",
"message": "WireGuard: Deactivated",
- "translation": "WireGuard :已停用",
+ "translation": "WireGuard: 已断开",
"translatorComment": "Copied from source."
},
{
"id": "Status: Unknown",
"message": "Status: Unknown",
- "translation": "状态:未知",
+ "translation": "状态: 未知",
"translatorComment": "Copied from source."
},
{
"id": "Addresses: None",
"message": "Addresses: None",
- "translation": "地址:无",
+ "translation": "地址: 无",
"translatorComment": "Copied from source."
},
{
"id": "&Manage tunnels…",
"message": "&Manage tunnels…",
- "translation": "&管理隧道…",
+ "translation": "管理隧道… (&M)",
"translatorComment": "Copied from source."
},
{
"id": "&Import tunnel(s) from file…",
"message": "&Import tunnel(s) from file…",
- "translation": "&从文件导入隧道…",
+ "translation": "从文件导入隧道… (&I)",
"translatorComment": "Copied from source."
},
{
"id": "E&xit",
"message": "E&xit",
- "translation": "退&出",
+ "translation": "退出 (&E)",
"translatorComment": "Copied from source."
},
{
@@ -1133,7 +1133,7 @@
{
"id": "Status: {StateText}",
"message": "Status: {StateText}",
- "translation": "状态: {StateText}",
+ "translation": "状态: {StateText}",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -1149,7 +1149,7 @@
{
"id": "Addresses: {String}",
"message": "Addresses: {String}",
- "translation": "地址: {String}",
+ "translation": "地址: {String}",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -1165,13 +1165,13 @@
{
"id": "WireGuard Activated",
"message": "WireGuard Activated",
- "translation": "WireGuard :已启动",
+ "translation": "WireGuard 已连接",
"translatorComment": "Copied from source."
},
{
"id": "The {Name} tunnel has been activated.",
"message": "The {Name} tunnel has been activated.",
- "translation": "隧道 ”{Name}“ 已被启动。",
+ "translation": "隧道「{Name}」已连接。",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -1187,13 +1187,13 @@
{
"id": "WireGuard Deactivated",
"message": "WireGuard Deactivated",
- "translation": "WireGuard :未启动",
+ "translation": "WireGuard 已断开",
"translatorComment": "Copied from source."
},
{
"id": "The {Name} tunnel has been deactivated.",
"message": "The {Name} tunnel has been deactivated.",
- "translation": "隧道 {Name} 已停用。",
+ "translation": "隧道「{Name}」已断开连接。",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -1209,19 +1209,19 @@
{
"id": "An Update is Available!",
"message": "An Update is Available!",
- "translation": "有一项可用更新!",
+ "translation": "发现更新!",
"translatorComment": "Copied from source."
},
{
"id": "WireGuard Update Available",
"message": "WireGuard Update Available",
- "translation": "WireGuard 有可用的更新",
+ "translation": "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": "发现一个可用的 WireGuard 更新。强烈建议尽快安装。",
+ "translation": "新的 WireGuard 版本发布了。强烈建议您现在安装。",
"translatorComment": "Copied from source."
},
{
@@ -1233,61 +1233,61 @@
{
"id": "&Edit",
"message": "&Edit",
- "translation": "&编辑",
+ "translation": "编辑 (&E)",
"translatorComment": "Copied from source."
},
{
"id": "Add &empty tunnel…",
"message": "Add &empty tunnel…",
- "translation": "添加&空隧道…",
+ "translation": "新建空隧道… (&E)",
"translatorComment": "Copied from source."
},
{
"id": "Add Tunnel",
"message": "Add Tunnel",
- "translation": "添加隧道",
+ "translation": "新建隧道",
"translatorComment": "Copied from source."
},
{
"id": "Remove selected tunnel(s)",
"message": "Remove selected tunnel(s)",
- "translation": "移除选择的隧道",
+ "translation": "删除所选隧道",
"translatorComment": "Copied from source."
},
{
"id": "Export all tunnels to zip",
"message": "Export all tunnels to zip",
- "translation": "导出所有隧道到zip",
+ "translation": "导出所有隧道 (ZIP 压缩包)",
"translatorComment": "Copied from source."
},
{
"id": "&Toggle",
"message": "&Toggle",
- "translation": "&切换",
+ "translation": "切换连接状态 (&T)",
"translatorComment": "Copied from source."
},
{
"id": "Export all tunnels to &zip…",
"message": "Export all tunnels to &zip…",
- "translation": "导出所有隧道到&zip…",
+ "translation": "导出所有隧道 (ZIP 压缩包)… (&Z)",
"translatorComment": "Copied from source."
},
{
"id": "Edit &selected tunnel…",
"message": "Edit &selected tunnel…",
- "translation": "编辑 &选择的隧道…",
+ "translation": "编辑所选隧道… (&E)",
"translatorComment": "Copied from source."
},
{
"id": "&Remove selected tunnel(s)",
"message": "&Remove selected tunnel(s)",
- "translation": "&移除选择的隧道",
+ "translation": "删除所选隧道 (&R)",
"translatorComment": "Copied from source."
},
{
"id": "Could not import selected configuration: {LastErr}",
"message": "Could not import selected configuration: {LastErr}",
- "translation": "无法导入选择的配置:{LastErr}",
+ "translation": "无法导入配置: {LastErr}",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -1303,7 +1303,7 @@
{
"id": "Could not enumerate existing tunnels: {LastErr}",
"message": "Could not enumerate existing tunnels: {LastErr}",
- "translation": "无法列出现有的隧道: {LastErr}",
+ "translation": "无法列出现有隧道: {LastErr}",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -1319,7 +1319,7 @@
{
"id": "Another tunnel already exists with the name ‘{Name}’",
"message": "Another tunnel already exists with the name ‘{Name}’",
- "translation": "另一个同名的隧道 \"{Name}\" 已存在",
+ "translation": "另一个同名的隧道「{Name}」已存在",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -1335,7 +1335,7 @@
{
"id": "Unable to import configuration: {LastErr}",
"message": "Unable to import configuration: {LastErr}",
- "translation": "无法导入配置:{LastErr}",
+ "translation": "无法导入配置: {LastErr}",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -1363,7 +1363,7 @@
"arg": "M",
"cases": {
"other": {
- "msg": "导入了 {M} 隧道"
+ "msg": "导入了 {M} 个隧道"
}
}
}
@@ -1452,7 +1452,7 @@
"arg": "TunnelCount",
"cases": {
"other": {
- "msg": "您确定要删除 {TunnelCount} 个隧道吗?"
+ "msg": "您确定要删除这 {TunnelCount} 个隧道吗?"
}
}
}
@@ -1471,7 +1471,7 @@
{
"id": "Delete tunnel ‘{TunnelName}’",
"message": "Delete tunnel ‘{TunnelName}’",
- "translation": "删除隧道 ”{TunnelName}“",
+ "translation": "删除隧道「{TunnelName}」",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -1487,7 +1487,7 @@
{
"id": "Are you sure you would like to delete tunnel ‘{TunnelName}’?",
"message": "Are you sure you would like to delete tunnel ‘{TunnelName}’?",
- "translation": "您确定要删除隧道 \"{TunnelName}\" 吗?",
+ "translation": "您确定要删除隧道「{TunnelName}」吗?",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -1503,7 +1503,7 @@
{
"id": "{Question} You cannot undo this action.",
"message": "{Question} You cannot undo this action.",
- "translation": "{Question} 您无法撤销此操作。",
+ "translation": "{Question}此操作无法撤销。",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -1525,7 +1525,7 @@
{
"id": "A tunnel was unable to be removed: {Error}",
"message": "A tunnel was unable to be removed: {Error}",
- "translation": "无法移除隧道: {Error}",
+ "translation": "无法删除隧道: {Error}",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -1553,7 +1553,7 @@
"arg": "Lenerrors",
"cases": {
"other": {
- "msg": "{Lenerrors} 隧道无法被移除。"
+ "msg": "无法删除 {Lenerrors} 个隧道。"
}
}
}
@@ -1572,7 +1572,7 @@
{
"id": "Configuration Files (*.zip, *.conf)|*.zip;*.conf|All Files (*.*)|*.*",
"message": "Configuration Files (*.zip, *.conf)|*.zip;*.conf|All Files (*.*)|*.*",
- "translation": "配置文件 (*.zip, *.conf)|*.zip;*.conf|All Files (*.*)|*.*",
+ "translation": "配置文件 (*.zip, *.conf)|*.zip;*.conf|所有文件 (*.*)|*.*",
"translatorComment": "Copied from source."
},
{
@@ -1584,19 +1584,19 @@
{
"id": "Configuration ZIP Files (*.zip)|*.zip",
"message": "Configuration ZIP Files (*.zip)|*.zip",
- "translation": "配置 ZIP 文件 (*.zip)|*.zip",
+ "translation": "配置文件 (*.zip)|*.zip",
"translatorComment": "Copied from source."
},
{
"id": "Export tunnels to zip",
"message": "Export tunnels to zip",
- "translation": "导出隧道为Zip",
+ "translation": "导出配置文件 (ZIP 压缩包)",
"translatorComment": "Copied from source."
},
{
"id": "{Title} (unsigned build, no updates)",
"message": "{Title} (unsigned build, no updates)",
- "translation": "{Title} (未签名构建,无更新)",
+ "translation": "{Title} (未签名版本,禁用自动更新)",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -1618,7 +1618,7 @@
{
"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": "因为: {Err} 无法退出服务。您可能想要从服务管理器中停止 WireGuard 。",
+ "translation": "无法停止服务: {Err}。您可能需要在服务管理器中手动停止 WireGuard 服务。",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -1634,13 +1634,13 @@
{
"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": "发现一个可用的 WireGuard 更新。强烈建议尽快安装。",
+ "translation": "发现新版 WireGuard。强烈建议您现在安装。",
"translatorComment": "Copied from source."
},
{
"id": "Status: Waiting for user",
"message": "Status: Waiting for user",
- "translation": "状态:等待用户",
+ "translation": "状态: 等待用户",
"translatorComment": "Copied from source."
},
{
@@ -1652,13 +1652,13 @@
{
"id": "Status: Waiting for updater service",
"message": "Status: Waiting for updater service",
- "translation": "状态:等待更新服务",
+ "translation": "状态: 等待更新服务",
"translatorComment": "Copied from source."
},
{
"id": "Error: {Err}. Please try again.",
"message": "Error: {Err}. Please try again.",
- "translation": "错误:{Err}。请重试。",
+ "translation": "错误: {Err}。请重试。",
"translatorComment": "Copied from source.",
"placeholders": [
{
@@ -1674,7 +1674,7 @@
{
"id": "Status: Complete!",
"message": "Status: Complete!",
- "translation": "状态:完成!",
+ "translation": "状态: 完成!",
"translatorComment": "Copied from source."
},
{
diff --git a/locales/zh-TW/messages.gotext.json b/locales/zh-TW/messages.gotext.json
new file mode 100644
index 00000000..55167a1e
--- /dev/null
+++ b/locales/zh-TW/messages.gotext.json
@@ -0,0 +1,1761 @@
+{
+ "language": "zh-TW",
+ "messages": [
+ {
+ "id": "Error",
+ "message": "Error",
+ "translation": "錯誤",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "(no argument): elevate and install manager service",
+ "message": "(no argument): elevate and install manager service",
+ "translation": "(無參數):提升權限並安裝管理服務",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Usage: {Args0} [\n{String}]",
+ "message": "Usage: {Args0} [\n{String}]",
+ "translation": "使用方法: {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": "命令列選項",
+ "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": "無法確定該處理程序是否在 WOW64 下執行: {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 64-bit version of WireGuard on this computer.",
+ "message": "You must use the 64-bit version of WireGuard on this computer.",
+ "translation": "您必須在此電腦上執行 64 位元版本的 WireGuard。",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Unable to open current process token: {Err}",
+ "message": "Unable to open current process token: {Err}",
+ "translation": "無法開啓目前處理程序的權杖: {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 可能只能被內建的「{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 正在執行,但 UI 只能從內建的內建的「{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": "WireGuard 的工作列圖示在 30 秒後並沒有顯示。",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Now",
+ "message": "Now",
+ "translation": "就是現在",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "System clock wound backward!",
+ "message": "System clock wound backward!",
+ "translation": "系統時鐘倒退了!",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "{Years} year(s)",
+ "message": "{Years} year(s)",
+ "translation": {
+ "select": {
+ "feature": "plural",
+ "arg": "Years",
+ "cases": {
+ "other": {
+ "msg": "{Years} 年"
+ }
+ }
+ }
+ },
+ "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} 天"
+ }
+ }
+ }
+ },
+ "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} 小時"
+ }
+ }
+ }
+ },
+ "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} 分鐘"
+ }
+ }
+ }
+ },
+ "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} 秒"
+ }
+ }
+ }
+ },
+ "placeholders": [
+ {
+ "id": "Seconds",
+ "string": "%[1]d",
+ "type": "int64",
+ "underlyingType": "int64",
+ "argNum": 1,
+ "expr": "seconds"
+ }
+ ]
+ },
+ {
+ "id": "{Timestamp} ago",
+ "message": "{Timestamp} ago",
+ "translation": "{Timestamp} 前",
+ "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": "{Why}: {Offender}",
+ "translatorComment": "Copied from source.",
+ "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": "無效的 IP 位址",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid network prefix length",
+ "message": "Invalid network prefix length",
+ "translation": "無效的網路位址首碼長度",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Missing port from endpoint",
+ "message": "Missing port from endpoint",
+ "translation": "Endpoint 中沒有指定埠號",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid endpoint host",
+ "message": "Invalid endpoint host",
+ "translation": "無效的 Endpoint 位址",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Brackets must contain an IPv6 address",
+ "message": "Brackets must contain an IPv6 address",
+ "translation": "括號中必須包含一個 IPv6 位址",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid MTU",
+ "message": "Invalid MTU",
+ "translation": "無效的 MTU",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid port",
+ "message": "Invalid port",
+ "translation": "無效的埠號",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid persistent keepalive",
+ "message": "Invalid persistent keepalive",
+ "translation": "無效的 Persistent Keepalive 設定",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid key: {Err}",
+ "message": "Invalid key: {Err}",
+ "translation": "無效的金鑰: {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": "金鑰必須剛好長 32 bytes",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Number must be a number between 0 and 2^64-1: {Err}",
+ "message": "Number must be a number between 0 and 2^64-1: {Err}",
+ "translation": "數值必須介於 0 到 2^64-1: {Err}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "Err",
+ "string": "%[1]v",
+ "type": "error",
+ "underlyingType": "interface{Error() string}",
+ "argNum": 1,
+ "expr": "err"
+ }
+ ]
+ },
+ {
+ "id": "Two commas in a row",
+ "message": "Two commas in a row",
+ "translation": "一行中有兩個逗號",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Tunnel name is not valid",
+ "message": "Tunnel name is not valid",
+ "translation": "隧道名稱無效",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Line must occur in a section",
+ "message": "Line must occur in a section",
+ "translation": "行必須出現在段落中",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Config key is missing an equals separator",
+ "message": "Config key is missing an equals separator",
+ "translation": "設定的項目必須要有一個等號",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Key must have a value",
+ "message": "Key must have a value",
+ "translation": "必須要有一個值",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid key for [Interface] section",
+ "message": "Invalid key for [Interface] section",
+ "translation": "[Interface] 中有無效選項",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid key for [Peer] section",
+ "message": "Invalid key for [Peer] section",
+ "translation": "[Peer] 中有無效選項",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "An interface must have a private key",
+ "message": "An interface must have a private key",
+ "translation": "Interface 中必須要有一把私鑰",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "[none specified]",
+ "message": "[none specified]",
+ "translation": "[未指定]",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "All peers must have public keys",
+ "message": "All peers must have public keys",
+ "translation": "每個 Peer 都必須要有公鑰",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Error in getting configuration",
+ "message": "Error in getting configuration",
+ "translation": "讀取設定時發生錯誤",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid key for interface section",
+ "message": "Invalid key for interface section",
+ "translation": "Interface 中的金鑰無效",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Protocol version must be 1",
+ "message": "Protocol version must be 1",
+ "translation": "協定版本必須為 1",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid key for peer section",
+ "message": "Invalid key for peer section",
+ "translation": "Peer 中的金鑰無效",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "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": "About WireGuard",
+ "message": "About WireGuard",
+ "translation": "關於 WireGuard",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "WireGuard logo image",
+ "message": "WireGuard logo image",
+ "translation": "WireGuard logo 圖片",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "App version: {Number}\nGo backend version: {WireGuardGoVersion}\nGo version: {Version_go}\nOperating system: {OsName}\nArchitecture: {GOARCH}",
+ "message": "App version: {Number}\nGo backend version: {WireGuardGoVersion}\nGo version: {Version_go}\nOperating system: {OsName}\nArchitecture: {GOARCH}",
+ "translation": "應用程式版本: {Number}\n後端程式(Go 實作)版本: {WireGuardGoVersion}\nGo 版本: {Version_go}\n作業系統: {OsName}\n架構: {GOARCH}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "Number",
+ "string": "%[1]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 1,
+ "expr": "version.Number"
+ },
+ {
+ "id": "WireGuardGoVersion",
+ "string": "%[2]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 2,
+ "expr": "device.WireGuardGoVersion"
+ },
+ {
+ "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": "GOARCH",
+ "string": "%[5]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 5,
+ "expr": "runtime.GOARCH"
+ }
+ ]
+ },
+ {
+ "id": "Close",
+ "message": "Close",
+ "translation": "關閉",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "♥ &Donate!",
+ "message": "♥ &Donate!",
+ "translation": "♥ 捐贈! (&D)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Status:",
+ "message": "Status:",
+ "translation": "狀態",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Deactivate",
+ "message": "&Deactivate",
+ "translation": "中斷連線 (&D)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Activate",
+ "message": "&Activate",
+ "translation": "連線 (&A)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Public key:",
+ "message": "Public key:",
+ "translation": "公鑰",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Listen port:",
+ "message": "Listen port:",
+ "translation": "監聽埠",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "MTU:",
+ "message": "MTU:",
+ "translation": "MTU",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Addresses:",
+ "message": "Addresses:",
+ "translation": "位址",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "DNS servers:",
+ "message": "DNS servers:",
+ "translation": "DNS 伺服器",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Preshared key:",
+ "message": "Preshared key:",
+ "translation": "預交換金鑰",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Allowed IPs:",
+ "message": "Allowed IPs:",
+ "translation": "允許的位址",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Endpoint:",
+ "message": "Endpoint:",
+ "translation": "連接點",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Persistent keepalive:",
+ "message": "Persistent keepalive:",
+ "translation": "Keepalive 間隔",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Latest handshake:",
+ "message": "Latest handshake:",
+ "translation": "最後交握時間",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Transfer:",
+ "message": "Transfer:",
+ "translation": "流量",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "enabled",
+ "message": "enabled",
+ "translation": "已啓用",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "{String} received, {String_1} sent",
+ "message": "{String} received, {String_1} sent",
+ "translation": "已收到 {String};已傳送 {String_1}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "String",
+ "string": "%[1]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 1,
+ "expr": "c.RxBytes.String()"
+ },
+ {
+ "id": "String_1",
+ "string": "%[2]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 2,
+ "expr": "c.TxBytes.String()"
+ }
+ ]
+ },
+ {
+ "id": "Failed to determine tunnel state",
+ "message": "Failed to determine tunnel state",
+ "translation": "無法確認隧道狀態",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Failed to activate tunnel",
+ "message": "Failed to activate tunnel",
+ "translation": "無法連接隧道",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Failed to deactivate tunnel",
+ "message": "Failed to deactivate tunnel",
+ "translation": "無法斷開隧道連線",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Interface: {Name}",
+ "message": "Interface: {Name}",
+ "translation": "[隧道] {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": "節點",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Create new tunnel",
+ "message": "Create new tunnel",
+ "translation": "建立新隧道",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Edit tunnel",
+ "message": "Edit tunnel",
+ "translation": "編輯隧道設定",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Name:",
+ "message": "&Name:",
+ "translation": "名稱 (&N)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Public key:",
+ "message": "&Public key:",
+ "translation": "公鑰 (&P)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "(unknown)",
+ "message": "(unknown)",
+ "translation": "(未知)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Block untunneled traffic (kill-switch)",
+ "message": "&Block untunneled traffic (kill-switch)",
+ "translation": "阻斷未經過隧道的流量(kill-switch) (&B)",
+ "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, then the tunnel service engages a firewall ruleset to block all traffic that is neither to nor from the tunnel interface, 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, then the tunnel service engages a firewall ruleset to block all traffic that is neither to nor from the tunnel interface, with special exceptions for DHCP and NDP.",
+ "translation": "只有一個節點且該節點允許位址包含 0.0.0.0/0 或 ::/0 時,使用防火牆攔截所有非通過隧道的流量。\n(DHCP 及 NDP 流量除外)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Save",
+ "message": "&Save",
+ "translation": "儲存 (&S)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Cancel",
+ "message": "Cancel",
+ "translation": "取消",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Configuration:",
+ "message": "&Configuration:",
+ "translation": "設定 (&C)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Invalid name",
+ "message": "Invalid name",
+ "translation": "無效的名稱",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "A name is required.",
+ "message": "A name is required.",
+ "translation": "必須填寫名稱。",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Tunnel name ‘{NewName}’ is invalid.",
+ "message": "Tunnel name ‘{NewName}’ is invalid.",
+ "translation": "無效的隧道名稱「{NewName}」。",
+ "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": "無法列出現有隧道",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Tunnel already exists",
+ "message": "Tunnel already exists",
+ "translation": "隧道已存在",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Another tunnel already exists with the name ‘{NewName}’.",
+ "message": "Another tunnel already exists with the name ‘{NewName}’.",
+ "translation": "已有同名隧道「{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": "無法建立新的隧道設定",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Writing file failed",
+ "message": "Writing file failed",
+ "translation": "檔案寫入失敗",
+ "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": "檔案已存在: {FilePath}\n\n您確定要覆蓋嗎?",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "FilePath",
+ "string": "%[1]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 1,
+ "expr": "filePath"
+ }
+ ]
+ },
+ {
+ "id": "Active",
+ "message": "Active",
+ "translation": "已連線",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Activating",
+ "message": "Activating",
+ "translation": "正在連線…",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Inactive",
+ "message": "Inactive",
+ "translation": "已中斷連線",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Deactivating",
+ "message": "Deactivating",
+ "translation": "正在中斷…",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Unknown state",
+ "message": "Unknown state",
+ "translation": "未知",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Log",
+ "message": "Log",
+ "translation": "日誌",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Copy",
+ "message": "&Copy",
+ "translation": "複製 (&C)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Select &all",
+ "message": "Select &all",
+ "translation": "全選 (&A)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Save to file…",
+ "message": "&Save to file…",
+ "translation": "匯出… (&S)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Time",
+ "message": "Time",
+ "translation": "時間",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Log message",
+ "message": "Log message",
+ "translation": "日誌訊息",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Text Files (*.txt)|*.txt|All Files (*.*)|*.*",
+ "message": "Text Files (*.txt)|*.txt|All Files (*.*)|*.*",
+ "translation": "純文字 (*.txt)|*.txt|所有檔案 (*.*)|*.*",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Export log to file",
+ "message": "Export log to file",
+ "translation": "匯出日誌…",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&About WireGuard…",
+ "message": "&About WireGuard…",
+ "translation": "關於 WireGuard (&A)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Tunnel Error",
+ "message": "Tunnel Error",
+ "translation": "隧道錯誤",
+ "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\n如需更多資訊,請查看日誌。",
+ "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}(已過時)",
+ "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": "偵測 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": "無法等待 WireGuard 視窗開啓: {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 - 未連線",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Status: Unknown",
+ "message": "Status: Unknown",
+ "translation": "[狀態] 未知",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Addresses: None",
+ "message": "Addresses: None",
+ "translation": "[位址] 無",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Manage tunnels…",
+ "message": "&Manage tunnels…",
+ "translation": "管理隧道 (&M)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Import tunnel(s) from file…",
+ "message": "&Import tunnel(s) from file…",
+ "translation": "從檔案匯入… (&I)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "E&xit",
+ "message": "E&xit",
+ "translation": "離開 (&X)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "WireGuard Tunnel Error",
+ "message": "WireGuard Tunnel Error",
+ "translation": "WireGuard 隧道錯誤",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "WireGuard: {TextForStateglobalState_true}",
+ "message": "WireGuard: {TextForStateglobalState_true}",
+ "translation": "WireGuard - {TextForStateglobalState_true}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "TextForStateglobalState_true",
+ "string": "%[1]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 1,
+ "expr": "textForState(globalState, true)"
+ }
+ ]
+ },
+ {
+ "id": "Status: {StateText}",
+ "message": "Status: {StateText}",
+ "translation": "[狀態] {StateText}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "StateText",
+ "string": "%[1]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 1,
+ "expr": "stateText"
+ }
+ ]
+ },
+ {
+ "id": "Addresses: {String}",
+ "message": "Addresses: {String}",
+ "translation": "[位址] {String}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "String",
+ "string": "%[1]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 1,
+ "expr": "sb.String()"
+ }
+ ]
+ },
+ {
+ "id": "WireGuard Activated",
+ "message": "WireGuard Activated",
+ "translation": "WireGuard 已連線",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "The {Name} tunnel has been activated.",
+ "message": "The {Name} tunnel has been activated.",
+ "translation": "已連線至隧道 - {Name}",
+ "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 已中斷連線",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "The {Name} tunnel has been deactivated.",
+ "message": "The {Name} tunnel has been deactivated.",
+ "translation": "已中斷與隧道的連線 - {Name}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "Name",
+ "string": "%[1]s",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 1,
+ "expr": "tunnel.Name"
+ }
+ ]
+ },
+ {
+ "id": "An Update is Available!",
+ "message": "An Update is Available!",
+ "translation": "更新",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "WireGuard Update Available",
+ "message": "WireGuard Update Available",
+ "translation": "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": "更新的 WireGuard 已經為您準備好了。\n強烈建議您立即更新 WireGuard。",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Tunnels",
+ "message": "Tunnels",
+ "translation": "隧道",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Edit",
+ "message": "&Edit",
+ "translation": "編輯 (&E)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Add &empty tunnel…",
+ "message": "Add &empty tunnel…",
+ "translation": "新增隧道精靈 (&E)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Add Tunnel",
+ "message": "Add Tunnel",
+ "translation": "新增隧道",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Remove selected tunnel(s)",
+ "message": "Remove selected tunnel(s)",
+ "translation": "刪除選取隧道",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Export all tunnels to zip",
+ "message": "Export all tunnels to zip",
+ "translation": "匯出所有隧道(ZIP 格式)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Toggle",
+ "message": "&Toggle",
+ "translation": "切換連線狀態 (&T)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Export all tunnels to &zip…",
+ "message": "Export all tunnels to &zip…",
+ "translation": "匯出所有隧道至 &ZIP 壓縮檔",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Edit &selected tunnel…",
+ "message": "Edit &selected tunnel…",
+ "translation": "編輯選取隧道 (&S)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "&Remove selected tunnel(s)",
+ "message": "&Remove selected tunnel(s)",
+ "translation": "刪除已選取隧道 (&R)",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Could not import selected configuration: {LastErr}",
+ "message": "Could not import selected configuration: {LastErr}",
+ "translation": "無法匯入設定: {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: {LastErr}",
+ "message": "Could not enumerate existing tunnels: {LastErr}",
+ "translation": "無法列出隧道: {LastErr}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "LastErr",
+ "string": "%[1]v",
+ "type": "error",
+ "underlyingType": "interface{Error() string}",
+ "argNum": 1,
+ "expr": "lastErr"
+ }
+ ]
+ },
+ {
+ "id": "Another tunnel already exists with the name ‘{Name}’",
+ "message": "Another tunnel already exists with the name ‘{Name}’",
+ "translation": "已有另一個同名的隧道「{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": "無法匯入設定: {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": "已匯入隧道",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Imported {M} tunnels",
+ "message": "Imported {M} tunnels",
+ "translation": {
+ "select": {
+ "feature": "plural",
+ "arg": "M",
+ "cases": {
+ "other": {
+ "msg": "已匯入 {M} 個隧道"
+ }
+ }
+ }
+ },
+ "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": "已匯入 {M} 個隧道(共 {N} 個)"
+ }
+ }
+ }
+ },
+ "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": "無法建立隧道",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Delete {TunnelCount} tunnels",
+ "message": "Delete {TunnelCount} tunnels",
+ "translation": {
+ "select": {
+ "feature": "plural",
+ "arg": "TunnelCount",
+ "cases": {
+ "other": {
+ "msg": "刪除 {TunnelCount} 個隧道"
+ }
+ }
+ }
+ },
+ "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": "您確定要刪除 {TunnelCount} 個隧道嗎?"
+ }
+ }
+ }
+ },
+ "placeholders": [
+ {
+ "id": "TunnelCount",
+ "string": "%[1]d",
+ "type": "int",
+ "underlyingType": "int",
+ "argNum": 1,
+ "expr": "tunnelCount"
+ }
+ ]
+ },
+ {
+ "id": "Delete tunnel ‘{TunnelName}’",
+ "message": "Delete tunnel ‘{TunnelName}’",
+ "translation": "刪除隧道 - {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": "您確定要刪除隧道「{TunnelName}」嗎?",
+ "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}\n\n您將無法復原此操作。",
+ "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": "無法刪除隧道",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "A tunnel was unable to be removed: {Error}",
+ "message": "A tunnel was unable to be removed: {Error}",
+ "translation": "無法刪除隧道: {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": "無法刪除隧道",
+ "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": "無法刪除 {Lenerrors} 個隧道"
+ }
+ }
+ }
+ },
+ "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": "隧道設定檔 (*.zip, *.conf)|*.zip;*.conf|所有檔案 (*.*)|*.*",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Import tunnel(s) from file",
+ "message": "Import tunnel(s) from file",
+ "translation": "從檔案中匯入隧道…",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Configuration ZIP Files (*.zip)|*.zip",
+ "message": "Configuration ZIP Files (*.zip)|*.zip",
+ "translation": "隧道設定檔 (*.zip)|*.zip",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Export tunnels to zip",
+ "message": "Export tunnels to zip",
+ "translation": "匯出隧道設定至…",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "{Title} (unsigned build, no updates)",
+ "message": "{Title} (unsigned build, no updates)",
+ "translation": "{Title}(未簽署發行版本,無法自動更新)",
+ "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": "離開 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": "無法結束服務: {Err}。\n您可能需要手動從服務管理中結束 WireGuard 服務。",
+ "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": "更新的 WireGuard 已經為您準備好了。\n強烈建議您立即進行更新。",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Status: Waiting for user",
+ "message": "Status: Waiting for user",
+ "translation": "狀態:等待使用者",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Update Now",
+ "message": "Update Now",
+ "translation": "立即更新",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Status: Waiting for updater service",
+ "message": "Status: Waiting for updater service",
+ "translation": "狀態:等待更新服務",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "Error: {Err}. Please try again.",
+ "message": "Error: {Err}. Please try again.",
+ "translation": "錯誤: {Err}。請稍後再試。",
+ "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": "狀態:已完成!",
+ "translatorComment": "Copied from source."
+ },
+ {
+ "id": "http2: Framer {F}: failed to decode just-written frame",
+ "message": "http2: Framer {F}: failed to decode just-written frame",
+ "translation": "http2: Framer {F}: failed to decode just-written frame",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "F",
+ "string": "%[1]p",
+ "type": "*net/http.http2Framer",
+ "underlyingType": "*net/http.http2Framer",
+ "argNum": 1,
+ "expr": "f"
+ }
+ ]
+ },
+ {
+ "id": "http2: Framer {F}: wrote {Http2summarizeFramefr}",
+ "message": "http2: Framer {F}: wrote {Http2summarizeFramefr}",
+ "translation": "http2: Framer {F}: wrote {Http2summarizeFramefr}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "F",
+ "string": "%[1]p",
+ "type": "*net/http.http2Framer",
+ "underlyingType": "*net/http.http2Framer",
+ "argNum": 1,
+ "expr": "f"
+ },
+ {
+ "id": "Http2summarizeFramefr",
+ "string": "%[2]v",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 2,
+ "expr": "http2summarizeFrame(fr)"
+ }
+ ]
+ },
+ {
+ "id": "http2: Framer {Fr}: read {Http2summarizeFramef}",
+ "message": "http2: Framer {Fr}: read {Http2summarizeFramef}",
+ "translation": "http2: Framer {Fr}: read {Http2summarizeFramef}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "Fr",
+ "string": "%[1]p",
+ "type": "*net/http.http2Framer",
+ "underlyingType": "*net/http.http2Framer",
+ "argNum": 1,
+ "expr": "fr"
+ },
+ {
+ "id": "Http2summarizeFramef",
+ "string": "%[2]v",
+ "type": "string",
+ "underlyingType": "string",
+ "argNum": 2,
+ "expr": "http2summarizeFrame(f)"
+ }
+ ]
+ },
+ {
+ "id": "http2: decoded hpack field {HeaderField}",
+ "message": "http2: decoded hpack field {HeaderField}",
+ "translation": "http2: decoded hpack field {HeaderField}",
+ "translatorComment": "Copied from source.",
+ "placeholders": [
+ {
+ "id": "HeaderField",
+ "string": "%+[1]v",
+ "type": "vendor/golang.org/x/net/http2/hpack.HeaderField",
+ "underlyingType": "struct{Name string; Value string; Sensitive bool}",
+ "argNum": 1,
+ "expr": "hf"
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file