aboutsummaryrefslogtreecommitdiffstatshomepage
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
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>
-rw-r--r--Makefile7
-rw-r--r--README.md6
-rw-r--r--go.mod4
-rw-r--r--go.sum9
-rw-r--r--gotext.go39
-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
-rw-r--r--resources.rc7
-rw-r--r--zgotext.go1647
19 files changed, 5107 insertions, 757 deletions
diff --git a/Makefile b/Makefile
index 446ddd34..0a30d8c1 100644
--- a/Makefile
+++ b/Makefile
@@ -51,6 +51,13 @@ generate: export CGO_ENABLED := 0
generate:
go generate ./...
+crowdin:
+ find locales -maxdepth 1 -mindepth 1 -type d \! -name en -exec rm -rf {} +
+ @[[ -n $$CROWDIN_API_KEY ]] || read -r -p "Enter Crowdin API key: " CROWDIN_API_KEY && \
+ curl -Lo - https://api.crowdin.com/api/project/WireGuard/download/all.zip?key=$$CROWDIN_API_KEY | bsdtar -C locales -x -f - --strip-components 2 wireguard-windows
+ find locales -name messages.gotext.json -exec bash -c '[[ $$(jq ".messages | length" {}) -ne 0 ]] || rm -rf "$$(dirname {})"' \;
+ @$(MAKE) --no-print-directory generate
+
deploy: amd64/wireguard.exe
-ssh $(DEPLOYMENT_HOST) -- 'taskkill /im wireguard.exe /f'
scp $< $(DEPLOYMENT_HOST):$(DEPLOYMENT_PATH)
diff --git a/README.md b/README.md
index 6bda7f1e..67e4f6d6 100644
--- a/README.md
+++ b/README.md
@@ -30,7 +30,11 @@ To translate WireGuard UI to your language:
1. Upgrade `resources.rc` accordingly. Follow the pattern.
-2. Add your language ID to the `//go:generate ... -lang=en,<langID>...` line in `gotext.go`.
+2. Make a new directory in `locales\` containing the language ID:
+
+ ```
+ C:\Projects\wireguard-windows> mkdir locales\<langID>
+ ```
3. Configure and run `build` to prepare initial `locales\<langID>\messages.gotext.json` file:
diff --git a/go.mod b/go.mod
index b6b9ccf8..e791b9a4 100644
--- a/go.mod
+++ b/go.mod
@@ -7,9 +7,9 @@ require (
github.com/lxn/win v0.0.0-20191128105842-2da648fda5b4
golang.org/x/crypto v0.0.0-20200709230013-948cd5f35899
golang.org/x/net v0.0.0-20200707034311-ab3426394381
- golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae
+ golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1
golang.org/x/text v0.3.3
- golang.zx2c4.com/wireguard v0.0.20200321-0.20200714205944-31b574ef99a7
+ golang.zx2c4.com/wireguard v0.0.20200321-0.20200715051853-507f148e1c42
)
replace (
diff --git a/go.sum b/go.sum
index 39c17a21..916b67a1 100644
--- a/go.sum
+++ b/go.sum
@@ -12,15 +12,16 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200501145240-bc7a7d42d5c3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae h1:Ih9Yo4hSPImZOpfGuA4bR/ORKTAbhZo2AbWNRCnevdo=
-golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1 h1:sIky/MyNRSHTrdxfsiUSS4WIAMvInbeXljJz+jDjeYE=
+golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e h1:FDhOuMEY4JVRztM/gsbk+IKUQ8kj74bxZrgw87eMMVc=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.zx2c4.com/wireguard v0.0.20200321-0.20200714205944-31b574ef99a7 h1:uplYgQzH47Y1vvkPLdb+BbR36Jb4UjQgqhWAneKzQ/k=
-golang.zx2c4.com/wireguard v0.0.20200321-0.20200714205944-31b574ef99a7/go.mod h1:GJvYs5O24/ASlwPiRklVnjMx2xQzrOic0DuU6GvYJL4=
+golang.zx2c4.com/wireguard v0.0.20200321-0.20200715051853-507f148e1c42 h1:SrR1hmxGKKarHEEDvaHxatwnqE3uT+7jvMcin6SHOkw=
+golang.zx2c4.com/wireguard v0.0.20200321-0.20200715051853-507f148e1c42/go.mod h1:GJvYs5O24/ASlwPiRklVnjMx2xQzrOic0DuU6GvYJL4=
golang.zx2c4.com/wireguard/windows v0.0.0-20191128151145-b4e4933852d5 h1:tkrF3cHqbnFQ068q0cUbu9nJMXKChFT2rGL9sSAMlrI=
golang.zx2c4.com/wireguard/windows v0.0.0-20191128151145-b4e4933852d5/go.mod h1:ouWl4wViUNh8tPSIwxTVMuS014WakR1hqvBc2I0bMoA=
golang.zx2c4.com/wireguard/windows v0.0.0-20200319192453-d35a18df246f h1:55sAe6dUkYZS7m8s/+eoEAdggzZjNkku8lj/W3vHu+U=
diff --git a/gotext.go b/gotext.go
index e9a59aea..d61ce393 100644
--- a/gotext.go
+++ b/gotext.go
@@ -1,5 +1,5 @@
// +build generate
-//go:generate go run gotext.go -srclang=en update -out=zgotext.go -lang=en,de,fr,it,ja,ru,sl,zh-CN
+//go:generate go run gotext.go
/* SPDX-License-Identifier: MIT
*
@@ -9,12 +9,47 @@
package main
import (
+ "encoding/json"
"io/ioutil"
"os"
"os/exec"
+ "path/filepath"
+ "strings"
+
+ "golang.org/x/text/message/pipeline"
)
func main() {
+ langDirs, err := ioutil.ReadDir("locales")
+ if err != nil {
+ panic(err)
+ }
+ var langs []string
+ for _, dir := range langDirs {
+ if !dir.IsDir() {
+ continue
+ }
+ lang := dir.Name()
+ if jsonData, err := ioutil.ReadFile(filepath.Join("locales", lang, "messages.gotext.json")); err == nil {
+ var translations pipeline.Messages
+ if err := json.Unmarshal(jsonData, &translations); err != nil {
+ panic(err)
+ }
+ lang = translations.Language.String()
+ if lang != dir.Name() {
+ err = os.Rename(filepath.Join("locales", dir.Name()), filepath.Join("locales", lang))
+ if err != nil {
+ panic(err)
+ }
+ }
+ } else if os.IsNotExist(err) {
+ panic(err)
+ }
+ langs = append(langs, lang)
+ }
+ if len(langs) == 0 {
+ panic("no locales found")
+ }
gotext, err := ioutil.TempFile("", "gotext*.exe")
if err != nil {
panic(err)
@@ -29,7 +64,7 @@ func main() {
if err != nil {
panic(err)
}
- cmd = exec.Command(gotextFilename, os.Args[1:]...)
+ cmd = exec.Command(gotextFilename, "-srclang=en", "update", "-out=zgotext.go", "-lang="+strings.Join(langs, ","))
cmd.Env = append(os.Environ(), "GOOS=windows", "GOARCH=amd64", "CGO_ENABLED=1", "CC=x86_64-w64-mingw32-gcc")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
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
diff --git a/resources.rc b/resources.rc
index c1794582..f66ef4b5 100644
--- a/resources.rc
+++ b/resources.rc
@@ -76,3 +76,10 @@ VERSIONINFO_TEMPLATE(
"WireGuard: hiter, sodoben, varen tunel VPN",
"https://www.wireguard.com/"
)
+
+LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
+VERSIONINFO_TEMPLATE(
+ "040404b0", 0x404, 0x4b0,
+ "WireGuard:快速、現代、安全的 VPN 隧道",
+ "https://www.wireguard.com/"
+) \ No newline at end of file
diff --git a/zgotext.go b/zgotext.go
index e5a933e5..63f104ef 100644
--- a/zgotext.go
+++ b/zgotext.go
@@ -29,12 +29,17 @@ func init() {
dict := map[string]catalog.Dictionary{
"de": &dictionary{index: deIndex, data: deData},
"en": &dictionary{index: enIndex, data: enData},
+ "fa": &dictionary{index: faIndex, data: faData},
"fr": &dictionary{index: frIndex, data: frData},
+ "id": &dictionary{index: idIndex, data: idData},
"it": &dictionary{index: itIndex, data: itData},
"ja": &dictionary{index: jaIndex, data: jaData},
+ "pl": &dictionary{index: plIndex, data: plData},
"ru": &dictionary{index: ruIndex, data: ruData},
"sl": &dictionary{index: slIndex, data: slData},
+ "vi": &dictionary{index: viIndex, data: viData},
"zh_CN": &dictionary{index: zh_CNIndex, data: zh_CNData},
+ "zh_TW": &dictionary{index: zh_TWIndex, data: zh_TWData},
}
fallback := language.MustParse("en")
cat, err := catalog.NewFromMap(dict, catalog.Fallback(fallback))
@@ -53,174 +58,174 @@ var messageKeyToIndex = map[string]int{
"%d hour(s)": 14,
"%d minute(s)": 15,
"%d second(s)": 16,
- "%d tunnels were unable to be removed.": 157,
+ "%d tunnels were unable to be removed.": 158,
"%d year(s)": 12,
"%d\u00a0B": 18,
- "%s\n\nPlease consult the log for more information.": 110,
- "%s (out of date)": 111,
- "%s (unsigned build, no updates)": 162,
- "%s You cannot undo this action.": 153,
+ "%s\n\nPlease consult the log for more information.": 111,
+ "%s (out of date)": 112,
+ "%s (unsigned build, no updates)": 163,
+ "%s You cannot undo this action.": 154,
"%s ago": 17,
- "%s received, %s sent": 70,
+ "%s received, %s sent": 71,
"%s: %q": 23,
- "&About WireGuard…": 108,
- "&Activate": 57,
- "&Block untunneled traffic (kill-switch)": 81,
- "&Configuration:": 85,
- "&Copy": 101,
- "&Deactivate": 56,
- "&Edit": 132,
- "&Import tunnel(s) from file…": 118,
- "&Manage tunnels…": 117,
- "&Name:": 78,
- "&Public key:": 79,
- "&Remove selected tunnel(s)": 140,
- "&Save": 83,
- "&Save to file…": 103,
- "&Toggle": 137,
+ "&About WireGuard…": 109,
+ "&Activate": 58,
+ "&Block untunneled traffic (kill-switch)": 82,
+ "&Configuration:": 86,
+ "&Copy": 102,
+ "&Deactivate": 57,
+ "&Edit": 133,
+ "&Import tunnel(s) from file…": 119,
+ "&Manage tunnels…": 118,
+ "&Name:": 79,
+ "&Public key:": 80,
+ "&Remove selected tunnel(s)": 141,
+ "&Save": 84,
+ "&Save to file…": 104,
+ "&Toggle": 138,
"(no argument): elevate and install manager service": 1,
- "(unknown)": 80,
- "A name is required.": 87,
- "A tunnel was unable to be removed: %s": 155,
- "About WireGuard": 50,
- "Activating": 96,
- "Active": 95,
- "Add &empty tunnel…": 133,
- "Add Tunnel": 134,
- "Addresses:": 61,
- "Addresses: %s": 123,
- "Addresses: None": 116,
- "All peers must have public keys": 43,
- "Allowed IPs:": 64,
- "An Update is Available!": 128,
- "An interface must have a private key": 41,
- "An update to WireGuard is available. It is highly advisable to update without delay.": 165,
- "An update to WireGuard is now available. You are advised to update as soon as possible.": 130,
- "Another tunnel already exists with the name ‘%s’": 143,
- "Another tunnel already exists with the name ‘%s’.": 91,
- "App version: %s\nGo backend version: %s\nGo version: %s\nOperating system: %s\nArchitecture: %s": 52,
- "Are you sure you would like to delete %d tunnels?": 150,
- "Are you sure you would like to delete tunnel ‘%s’?": 152,
+ "(unknown)": 81,
+ "A name is required.": 88,
+ "A tunnel was unable to be removed: %s": 156,
+ "About WireGuard": 51,
+ "Activating": 97,
+ "Active": 96,
+ "Add &empty tunnel…": 134,
+ "Add Tunnel": 135,
+ "Addresses:": 62,
+ "Addresses: %s": 124,
+ "Addresses: None": 117,
+ "All peers must have public keys": 44,
+ "Allowed IPs:": 65,
+ "An Update is Available!": 129,
+ "An interface must have a private key": 42,
+ "An update to WireGuard is available. It is highly advisable to update without delay.": 166,
+ "An update to WireGuard is now available. You are advised to update as soon as possible.": 131,
+ "Another tunnel already exists with the name ‘%s’": 144,
+ "Another tunnel already exists with the name ‘%s’.": 92,
+ "App version: %s\nGo backend version: %s\nGo version: %s\nOperating system: %s\nArchitecture: %s": 53,
+ "Are you sure you would like to delete %d tunnels?": 151,
+ "Are you sure you would like to delete tunnel ‘%s’?": 153,
"Brackets must contain an IPv6 address": 28,
- "Cancel": 84,
- "Close": 53,
+ "Cancel": 85,
+ "Close": 54,
"Command Line Options": 3,
- "Config key is missing an equals separator": 175,
- "Configuration Files (*.zip, *.conf)|*.zip;*.conf|All Files (*.*)|*.*": 158,
- "Configuration ZIP Files (*.zip)|*.zip": 160,
- "Could not enumerate existing tunnels: %v": 142,
- "Could not import selected configuration: %v": 141,
- "Create new tunnel": 76,
- "DNS servers:": 62,
- "Deactivating": 98,
- "Delete %d tunnels": 149,
- "Delete tunnel ‘%s’": 151,
- "E&xit": 119,
- "Edit &selected tunnel…": 139,
- "Edit tunnel": 77,
- "Endpoint:": 65,
+ "Config key is missing an equals separator": 38,
+ "Configuration Files (*.zip, *.conf)|*.zip;*.conf|All Files (*.*)|*.*": 159,
+ "Configuration ZIP Files (*.zip)|*.zip": 161,
+ "Could not enumerate existing tunnels: %v": 143,
+ "Could not import selected configuration: %v": 142,
+ "Create new tunnel": 77,
+ "DNS servers:": 63,
+ "Deactivating": 99,
+ "Delete %d tunnels": 150,
+ "Delete tunnel ‘%s’": 152,
+ "E&xit": 120,
+ "Edit &selected tunnel…": 140,
+ "Edit tunnel": 78,
+ "Endpoint:": 66,
"Error": 0,
- "Error Exiting WireGuard": 163,
- "Error in getting configuration": 44,
- "Error: %v. Please try again.": 169,
- "Export all tunnels to &zip…": 138,
- "Export all tunnels to zip": 136,
- "Export log to file": 107,
- "Export tunnels to zip": 161,
- "Failed to activate tunnel": 72,
- "Failed to deactivate tunnel": 73,
- "Failed to determine tunnel state": 71,
- "File ‘%s’ already exists.\n\nDo you want to overwrite it?": 94,
- "Import tunnel(s) from file": 159,
- "Imported %d of %d tunnels": 147,
- "Imported %d tunnels": 146,
- "Imported tunnels": 145,
- "Inactive": 97,
- "Interface: %s": 74,
+ "Error Exiting WireGuard": 164,
+ "Error in getting configuration": 45,
+ "Error: %v. Please try again.": 170,
+ "Export all tunnels to &zip…": 139,
+ "Export all tunnels to zip": 137,
+ "Export log to file": 108,
+ "Export tunnels to zip": 162,
+ "Failed to activate tunnel": 73,
+ "Failed to deactivate tunnel": 74,
+ "Failed to determine tunnel state": 72,
+ "File ‘%s’ already exists.\n\nDo you want to overwrite it?": 95,
+ "Import tunnel(s) from file": 160,
+ "Imported %d of %d tunnels": 148,
+ "Imported %d tunnels": 147,
+ "Imported tunnels": 146,
+ "Inactive": 98,
+ "Interface: %s": 75,
"Invalid IP address": 24,
"Invalid MTU": 29,
"Invalid endpoint host": 27,
- "Invalid key for [Interface] section": 39,
- "Invalid key for [Peer] section": 40,
- "Invalid key for interface section": 45,
- "Invalid key for peer section": 47,
+ "Invalid key for [Interface] section": 40,
+ "Invalid key for [Peer] section": 41,
+ "Invalid key for interface section": 46,
+ "Invalid key for peer section": 48,
"Invalid key: %v": 32,
- "Invalid name": 86,
+ "Invalid name": 87,
"Invalid network prefix length": 25,
"Invalid persistent keepalive": 31,
"Invalid port": 30,
- "Key must have a value": 38,
+ "Key must have a value": 39,
"Keys must decode to exactly 32 bytes": 33,
- "Latest handshake:": 67,
+ "Latest handshake:": 68,
"Line must occur in a section": 37,
- "Listen port:": 59,
- "Log": 100,
- "Log message": 105,
- "MTU:": 60,
+ "Listen port:": 60,
+ "Log": 101,
+ "Log message": 106,
+ "MTU:": 61,
"Missing port from endpoint": 26,
"Now": 10,
"Number must be a number between 0 and 2^64-1: %v": 34,
- "Peer": 75,
- "Persistent keepalive:": 66,
- "Preshared key:": 63,
- "Protocol version must be 1": 46,
- "Public key:": 58,
- "Remove selected tunnel(s)": 135,
- "Select &all": 102,
- "Status:": 55,
- "Status: %s": 122,
- "Status: Complete!": 170,
- "Status: Unknown": 115,
- "Status: Waiting for updater service": 168,
- "Status: Waiting for user": 166,
+ "Peer": 76,
+ "Persistent keepalive:": 67,
+ "Preshared key:": 64,
+ "Protocol version must be 1": 47,
+ "Public key:": 59,
+ "Remove selected tunnel(s)": 136,
+ "Select &all": 103,
+ "Status:": 56,
+ "Status: %s": 123,
+ "Status: Complete!": 171,
+ "Status: Unknown": 116,
+ "Status: Waiting for updater service": 169,
+ "Status: Waiting for user": 167,
"System clock wound backward!": 11,
- "Text Files (*.txt)|*.txt|All Files (*.*)|*.*": 106,
- "The %s tunnel has been activated.": 125,
- "The %s tunnel has been deactivated.": 127,
- "Time": 104,
- "Transfer:": 68,
- "Tunnel Error": 109,
- "Tunnel already exists": 90,
+ "Text Files (*.txt)|*.txt|All Files (*.*)|*.*": 107,
+ "The %s tunnel has been activated.": 126,
+ "The %s tunnel has been deactivated.": 128,
+ "Time": 105,
+ "Transfer:": 69,
+ "Tunnel Error": 110,
+ "Tunnel already exists": 91,
"Tunnel name is not valid": 36,
- "Tunnel name ‘%s’ is invalid.": 88,
- "Tunnels": 131,
+ "Tunnel name ‘%s’ is invalid.": 89,
+ "Tunnels": 132,
"Two commas in a row": 35,
- "Unable to create new configuration": 92,
- "Unable to create tunnel": 148,
- "Unable to delete tunnel": 154,
- "Unable to delete tunnels": 156,
+ "Unable to create new configuration": 93,
+ "Unable to create tunnel": 149,
+ "Unable to delete tunnel": 155,
+ "Unable to delete tunnels": 157,
"Unable to determine whether the process is running under WOW64: %v": 4,
- "Unable to exit service due to: %v. You may want to stop WireGuard from the service manager.": 164,
- "Unable to import configuration: %v": 144,
- "Unable to list existing tunnels": 89,
+ "Unable to exit service due to: %v. You may want to stop WireGuard from the service manager.": 165,
+ "Unable to import configuration: %v": 145,
+ "Unable to list existing tunnels": 90,
"Unable to open current process token: %v": 6,
- "Unable to wait for WireGuard window to appear: %v": 113,
- "Unknown state": 99,
- "Update Now": 167,
+ "Unable to wait for WireGuard window to appear: %v": 114,
+ "Unknown state": 100,
+ "Update Now": 168,
"Usage: %s [\n%s]": 2,
- "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.": 82,
- "WireGuard Activated": 124,
- "WireGuard Deactivated": 126,
- "WireGuard Detection Error": 112,
- "WireGuard Tunnel Error": 120,
- "WireGuard Update Available": 129,
+ "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.": 83,
+ "WireGuard Activated": 125,
+ "WireGuard Deactivated": 127,
+ "WireGuard Detection Error": 113,
+ "WireGuard Tunnel Error": 121,
+ "WireGuard Update Available": 130,
"WireGuard is running, but the UI is only accessible from desktops of the Builtin %s group.": 8,
- "WireGuard logo image": 51,
+ "WireGuard logo image": 52,
"WireGuard may only be used by users who are a member of the Builtin %s group.": 7,
"WireGuard system tray icon did not appear after 30 seconds.": 9,
- "WireGuard: %s": 121,
- "WireGuard: Deactivated": 114,
- "Writing file failed": 93,
+ "WireGuard: %s": 122,
+ "WireGuard: Deactivated": 115,
+ "Writing file failed": 94,
"You must use the 64-bit version of WireGuard on this computer.": 5,
- "[EnumerationSeparator]": 48,
- "[UnitSeparator]": 49,
- "[none specified]": 42,
- "enabled": 69,
- "http2: Framer %p: failed to decode just-written frame": 171,
- "http2: Framer %p: read %v": 173,
- "http2: Framer %p: wrote %v": 172,
- "http2: decoded hpack field %+v": 174,
- "♥ &Donate!": 54,
+ "[EnumerationSeparator]": 49,
+ "[UnitSeparator]": 50,
+ "[none specified]": 43,
+ "enabled": 70,
+ "http2: Framer %p: failed to decode just-written frame": 172,
+ "http2: Framer %p: read %v": 174,
+ "http2: Framer %p: wrote %v": 173,
+ "http2: decoded hpack field %+v": 175,
+ "♥ &Donate!": 55,
}
var deIndex = []uint32{ // 177 elements
@@ -235,49 +240,49 @@ var deIndex = []uint32{ // 177 elements
0x00000422, 0x00000456, 0x00000465, 0x00000476,
// Entry 20 - 3F
0x00000496, 0x000004b4, 0x000004eb, 0x00000517,
- 0x00000533, 0x00000550, 0x00000581, 0x0000059f,
- 0x000005cd, 0x000005f5, 0x0000062f, 0x00000644,
- 0x00000682, 0x000006a8, 0x000006d5, 0x000006f6,
- 0x0000071e, 0x00000721, 0x00000724, 0x00000734,
- 0x00000743, 0x000007ab, 0x000007b6, 0x000007c4,
- 0x000007cc, 0x000007da, 0x000007e6, 0x00000800,
- 0x0000080e, 0x00000813, 0x0000081d, 0x00000829,
+ 0x00000533, 0x00000550, 0x00000581, 0x000005bc,
+ 0x000005da, 0x00000608, 0x00000630, 0x0000066a,
+ 0x0000067f, 0x000006bd, 0x000006e3, 0x00000710,
+ 0x00000731, 0x00000759, 0x0000075c, 0x0000075f,
+ 0x0000076f, 0x0000077e, 0x000007e6, 0x000007f1,
+ 0x000007ff, 0x00000807, 0x00000815, 0x00000821,
+ 0x0000083b, 0x00000849, 0x0000084e, 0x00000858,
// Entry 40 - 5F
- 0x0000083f, 0x0000084d, 0x00000857, 0x0000086c,
- 0x00000886, 0x00000893, 0x0000089d, 0x000008bd,
- 0x000008e8, 0x0000090d, 0x00000934, 0x00000949,
- 0x00000954, 0x00000971, 0x00000983, 0x0000098a,
- 0x000009a5, 0x000009b1, 0x000009e5, 0x00000b13,
- 0x00000b1e, 0x00000b28, 0x00000b38, 0x00000b49,
- 0x00000b61, 0x00000b85, 0x00000bb8, 0x00000bd1,
- 0x00000c09, 0x00000c37, 0x00000c57, 0x00000c9c,
+ 0x00000864, 0x0000087a, 0x00000888, 0x00000892,
+ 0x000008a7, 0x000008c1, 0x000008ce, 0x000008d8,
+ 0x000008f8, 0x00000923, 0x00000948, 0x0000096f,
+ 0x00000984, 0x0000098f, 0x000009ac, 0x000009be,
+ 0x000009c5, 0x000009e0, 0x000009ec, 0x00000a20,
+ 0x00000b4e, 0x00000b59, 0x00000b63, 0x00000b73,
+ 0x00000b84, 0x00000b9c, 0x00000bc0, 0x00000bf3,
+ 0x00000c0c, 0x00000c44, 0x00000c72, 0x00000c92,
// Entry 60 - 7F
- 0x00000ca2, 0x00000cac, 0x00000cb4, 0x00000cc0,
- 0x00000cd4, 0x00000cde, 0x00000ce8, 0x00000cf9,
- 0x00000d10, 0x00000d15, 0x00000d26, 0x00000d57,
- 0x00000d75, 0x00000d89, 0x00000d97, 0x00000dd8,
- 0x00000de9, 0x00000e04, 0x00000e4c, 0x00000e63,
- 0x00000e75, 0x00000e85, 0x00000e9a, 0x00000ebb,
- 0x00000ec4, 0x00000edc, 0x00000eed, 0x00000efb,
- 0x00000f0b, 0x00000f1f, 0x00000f41, 0x00000f57,
+ 0x00000cd7, 0x00000cdd, 0x00000ce7, 0x00000cef,
+ 0x00000cfb, 0x00000d0f, 0x00000d19, 0x00000d23,
+ 0x00000d34, 0x00000d4b, 0x00000d50, 0x00000d61,
+ 0x00000d92, 0x00000db0, 0x00000dc4, 0x00000dd2,
+ 0x00000e13, 0x00000e24, 0x00000e3f, 0x00000e87,
+ 0x00000e9e, 0x00000eb0, 0x00000ec0, 0x00000ed5,
+ 0x00000ef6, 0x00000eff, 0x00000f17, 0x00000f28,
+ 0x00000f36, 0x00000f46, 0x00000f5a, 0x00000f7c,
// Entry 80 - 9F
- 0x00000f7b, 0x00000f9f, 0x00000fc3, 0x00001036,
- 0x0000103d, 0x00001049, 0x0000106d, 0x00001080,
- 0x0000109e, 0x000010c8, 0x000010d4, 0x000010f9,
- 0x0000111d, 0x0000113e, 0x0000117f, 0x000011b1,
- 0x000011eb, 0x0000121f, 0x00001231, 0x0000126a,
- 0x000012b6, 0x000012d6, 0x0000130b, 0x0000137b,
- 0x00001397, 0x000013ce, 0x0000140b, 0x0000142a,
- 0x0000145a, 0x00001480, 0x000014e1, 0x0000152b,
+ 0x00000f92, 0x00000fb6, 0x00000fda, 0x00000ffe,
+ 0x00001071, 0x00001078, 0x00001084, 0x000010a8,
+ 0x000010bb, 0x000010d9, 0x00001103, 0x0000110f,
+ 0x00001134, 0x00001158, 0x00001179, 0x000011ba,
+ 0x000011ec, 0x00001226, 0x0000125a, 0x0000126c,
+ 0x000012a5, 0x000012f1, 0x00001311, 0x00001346,
+ 0x000013b6, 0x000013d2, 0x00001409, 0x00001446,
+ 0x00001465, 0x00001495, 0x000014bb, 0x0000151c,
// Entry A0 - BF
- 0x00001547, 0x00001570, 0x0000158f, 0x000015ba,
- 0x000015dc, 0x00001648, 0x000016b6, 0x000016d0,
- 0x000016e4, 0x0000170d, 0x0000173b, 0x0000174b,
- 0x00001797, 0x000017be, 0x000017e1, 0x00001804,
- 0x00001804,
+ 0x00001566, 0x00001582, 0x000015ab, 0x000015ca,
+ 0x000015f5, 0x00001617, 0x00001683, 0x000016f1,
+ 0x0000170b, 0x0000171f, 0x00001748, 0x00001776,
+ 0x00001786, 0x000017d2, 0x000017f9, 0x0000181c,
+ 0x0000183f,
} // Size: 732 bytes
-const deData string = "" + // Size: 6148 bytes
+const deData string = "" + // Size: 6207 bytes
"\x02Fehler\x02(kein Argument): Als Administrator ausführen und den Manag" +
"er-Dienst installieren\x02Verwendung: %[1]s [\x0a%[2]s]\x02Kommandozeile" +
"noptionen\x02Es kann nicht festgestellt werden, ob der Prozess unter WOW" +
@@ -301,80 +306,80 @@ const deData string = "" + // Size: 6148 bytes
"intervall\x02Ungültiger Schlüssel: %[1]v\x02Schlüssel müssen auf exakt 3" +
"2 Bytes dekodiert werden\x02Zahl muss zwischen 0 und 2^64-1 sein: %[1]v" +
"\x02Zwei Kommata in einer Zeile\x02Der Tunnelname ist ungültig\x02Die Ze" +
- "ile muss innerhalb eines Abschnitts stehen\x02Eintrag muss einen Wert ha" +
- "ben\x02Ungültiger Eintrage im [Interface] Abschnitt\x02Ungültiger Eintra" +
- "g im [Peer] Abschnitt\x02Eine Schnittstelle muss einen privaten Schlssel" +
- " enthalten\x02[nicht spezifiziert]\x02Alle Teilnehmer (peers) müssen öff" +
- "entliche Schlüssel haben\x02Fehler beim Abrufen der Konfiguration\x02Ung" +
- "ültiger Eintrag im Abschnitt [interface]\x02Die Protokollversion muss 1" +
- " sein\x02Ungültiger Eintrag im Abschnitt [peer]\x02, \x02, \x02Über Wire" +
- "Guard\x02WireGuard Logo\x02App Version: %[1]s\x0aGo Backend Version: %[2" +
- "]s\x0aGo Version: %[3]s\x0aBetriebssystem: %[4]s\x0aArchitektur: %[5]s" +
- "\x02Schließen\x02♥ &Spenden!\x02Status:\x02&Deaktivieren\x02&Aktivieren" +
- "\x02Öffentlicher Schlüssel:\x02Eingangsport:\x02MTU:\x02Adressen:\x02DNS" +
- "-Server:\x02Geteilter Schlüssel:\x02Erlaubte IPs:\x02Endpunkt:\x02Erhalt" +
- "ungsintervall:\x02Letzter Schlüsseltausch:\x02Übertragen:\x02aktiviert" +
- "\x02%[1]s empfangen, %[1]s gesendet\x02Tunnelstatus konnte nicht ermitte" +
- "lt werden\x02Tunnel aktivieren ist fehlgeschlagen\x02Tunnel deaktivieren" +
- " ist fehlgeschlagen\x02Schnittstelle: %[1]s\x02Teilnehmer\x02Einen neuen" +
- " Tunnel erstellen\x02Tunnel bearbeiten\x02&Name:\x02&Öffentlicher Schlüs" +
- "sel:\x02(unbekannt)\x02&Blockiere Verkehr außerhalb des Tunnels (Not-Aus" +
- ")\x02Wenn die Konfiguration genau einen Teilnehmer enthält und dieser ei" +
- "nen der Einträge 0.0.0.0/0 oder ::/0 in den Erlaubten IPs enthält, so wi" +
- "rd ein Firewall-Regelsatz erstellt, der allen Verkehr blockiert, der wed" +
- "er aus dem Tunnel stammt noch in diesen geht, mit Ausnahmen für DHCP- un" +
- "d NDP-Verkehr.\x02&Speichern\x02Abbrechen\x02&Konfiguration:\x02Ungültig" +
- "er Name\x02Ein Name ist notwendig.\x02Der Name „%[1]s“ ist ungültig.\x02" +
- "Vorhandene Tunnel können nicht aufgelistet werden\x02Tunnel existiert be" +
- "reits\x02Ein Tunnel mit dem Namen „%[1]s“ existiert bereits.\x02Neue Kon" +
- "figuration kann nicht erstellt werden\x02Schreiben der Datei schlug fehl" +
- "\x02Die Datei „%[1]s“ existiert bereits.\x0a\x0aMöchten Sie sie ersetzen" +
- "?\x02Aktiv\x02Aktiviere\x02Inaktiv\x02Deaktiviere\x02Unbekannter Zustand" +
- "\x02Protokoll\x02&Kopieren\x02&Alles markieren\x02&In Datei Speichern…" +
- "\x02Zeit\x02Protokolleintrag\x02Textdateien (*.txt)|*.txt|Alle Dateien (" +
- "*.*)|*.*\x02Exportiere Protokoll in Datei\x02&Über WireGuard…\x02Tunnel " +
- "Fehler\x02%[1]s\x0a\x0aBitte lesen Sie das Protokoll für weitere Informa" +
- "tionen.\x02%[1]s (veraltet)\x02WireGuard Erkennungsfehler\x02Warten auf " +
- "das Erscheinen des WireGuard Fensters nicht möglich: %[1]v \x02WireGuard" +
- ": Deaktiviert\x02Status: Unbekannt\x02Adressen: Keine\x02Tunnel &verwalt" +
- "en…\x02Tunnel aus Datei &importieren…\x02&Beenden\x02WireGuard Tunnel Fe" +
- "hler\x02WireGuard: %[1]s\x02Status: %[1]s\x02Adressen: %[1]s\x02WireGuar" +
- "d aktiviert\x02Der Tunnel %[1]s wurde aktiviert.\x02WireGuard deaktivier" +
- "t\x02Der Tunnel %[1]s wurde deaktiviert.\x02Eine Aktualisierung ist verf" +
- "ügbar!\x02WireGuard Aktualisierung verfügbar\x02Eine Aktualisierung für" +
- " WireGuard ist jetzt verfügbar. Es wird empfohlen diese schnellstmöglich" +
- " durchzuführen.\x02Tunnel\x02&Bearbeiten\x02Einen &leeren Tunnel hinzufü" +
- "gen…\x02Tunnel hinzufügen\x02Markierte(n) Tunnel entfernen\x02Alle Tunne" +
- "l in eine Zip-Datei exportieren\x02&Umschalten\x02Exportiere alle Tunnel" +
- " in &Zip-Datei\x02Ausgewählten Tunnel &bearbeiten…\x02Ausgewählte(n) Tun" +
- "nel &löschen\x02Ausgewählte Konfiguration konnte nicht importiert werden" +
- ": %[1]v\x02Konnte existierende Tunnel nicht auflisten: %[1]v\x02Es exist" +
- "iert bereits ein Tunnel mit dem Namen „%[1]s“\x02Importieren der Konfigu" +
- "ration nicht möglich: %[1]v\x02Tunnel importiert\x14\x01\x81\x01\x00\x02" +
- "\x18\x02%[1]d Tunnel importiert\x00\x18\x02%[1]d Tunnel importiert\x14" +
- "\x02\x80\x01\x02\x22\x02%[1]d von %[2]d Tunnel importiert\x00\x22\x02%[1" +
- "]d von %[2]d Tunnel importiert\x02Tunnel erstellen nicht möglich\x14\x01" +
- "\x81\x01\x00\x02\x16\x02%[1]d Tunnel löschen\x00\x16\x02%[1]d Tunnel lös" +
- "chen\x14\x01\x81\x01\x00\x024\x02Möchten Sie diesen %[1]d Tunnel wirklic" +
- "h löschen?\x003\x02Möchten Sie diese %[1]d Tunnel wirklich löschen?\x02T" +
- "unnel „%[1]s“ löschen\x02Möchten Sie den Tunnel „%[1]s“ wirklich löschen" +
- "?\x02%[1]s Dieser Schritt kann nicht rückgängig gemacht werden.\x02Tunne" +
- "l löschen nicht möglich\x02Ein Tunnel konnte nicht gelöscht werden: %[1]" +
- "s\x02Tunnel konnten nicht gelöscht werden\x14\x01\x81\x01\x00\x02+\x02%[" +
- "1]d Tunnel konnte nicht entfernt werden.\x00-\x02%[1]d Tunnel konnten ni" +
- "cht gelöscht werden.\x02Konfigurationsdateien (*.zip, *.conf)|*.zip;*.co" +
- "nf|Alle Dateien (*.*)|*.*\x02Importiere Tunnel aus Datei\x02Konfiguratio" +
- "ns-ZIP-Dateien (*.zip)|*.zip\x02Exportiere Tunnel in Zip-Datei\x02%[1]s " +
- "(unsigniert, keine Aktualisierungen)\x02Fehler beim Beenden von WireGuar" +
- "d\x02Der Dienst konnte nicht gestoppt werden: %[1]v. Versuchen Sie WireG" +
- "uard in der Dienstverwaltung zu beenden.\x02Eine Aktualisierung für Wire" +
- "Guard ist verfügbar. Es ist höchst empfehlenswert diese sofort durchzufü" +
- "hren.\x02Status: Auf Nutzer warten\x02Jetzt aktualisieren\x02Status: Auf" +
- " Aktualisierungsdienst warten\x02Fehler: %[1]v. Bitte versuchen Sie es e" +
- "rneut.\x02Status: Fertig!\x02http2: Framer %[1]p: Fehler beim dekodieren" +
- " des gerade geschriebenen Frames\x02http2: Framer %[1]p: %[2]v geschrieb" +
- "en\x02http2: Framer %[1]p: %[2]v gelesen\x02http2: hpack Feld %+[1]v dek" +
- "odiert"
+ "ile muss innerhalb eines Abschnitts stehen\x02Konfigurationsschlüssel fe" +
+ "hlt ein Gleichheitstrennzeichen\x02Eintrag muss einen Wert haben\x02Ungü" +
+ "ltiger Eintrage im [Interface] Abschnitt\x02Ungültiger Eintrag im [Peer]" +
+ " Abschnitt\x02Eine Schnittstelle muss einen privaten Schlssel enthalten" +
+ "\x02[nicht spezifiziert]\x02Alle Teilnehmer (peers) müssen öffentliche S" +
+ "chlüssel haben\x02Fehler beim Abrufen der Konfiguration\x02Ungültiger Ei" +
+ "ntrag im Abschnitt [interface]\x02Die Protokollversion muss 1 sein\x02Un" +
+ "gültiger Eintrag im Abschnitt [peer]\x02, \x02, \x02Über WireGuard\x02Wi" +
+ "reGuard Logo\x02App Version: %[1]s\x0aGo Backend Version: %[2]s\x0aGo Ve" +
+ "rsion: %[3]s\x0aBetriebssystem: %[4]s\x0aArchitektur: %[5]s\x02Schließen" +
+ "\x02♥ &Spenden!\x02Status:\x02&Deaktivieren\x02&Aktivieren\x02Öffentlich" +
+ "er Schlüssel:\x02Eingangsport:\x02MTU:\x02Adressen:\x02DNS-Server:\x02Ge" +
+ "teilter Schlüssel:\x02Erlaubte IPs:\x02Endpunkt:\x02Erhaltungsintervall:" +
+ "\x02Letzter Schlüsseltausch:\x02Übertragen:\x02aktiviert\x02%[1]s empfan" +
+ "gen, %[1]s gesendet\x02Tunnelstatus konnte nicht ermittelt werden\x02Tun" +
+ "nel aktivieren ist fehlgeschlagen\x02Tunnel deaktivieren ist fehlgeschla" +
+ "gen\x02Schnittstelle: %[1]s\x02Teilnehmer\x02Einen neuen Tunnel erstelle" +
+ "n\x02Tunnel bearbeiten\x02&Name:\x02&Öffentlicher Schlüssel:\x02(unbekan" +
+ "nt)\x02&Blockiere Verkehr außerhalb des Tunnels (Not-Aus)\x02Wenn die Ko" +
+ "nfiguration genau einen Teilnehmer enthält und dieser einen der Einträge" +
+ " 0.0.0.0/0 oder ::/0 in den Erlaubten IPs enthält, so wird ein Firewall-" +
+ "Regelsatz erstellt, der allen Verkehr blockiert, der weder aus dem Tunne" +
+ "l stammt noch in diesen geht, mit Ausnahmen für DHCP- und NDP-Verkehr." +
+ "\x02&Speichern\x02Abbrechen\x02&Konfiguration:\x02Ungültiger Name\x02Ein" +
+ " Name ist notwendig.\x02Der Name „%[1]s“ ist ungültig.\x02Vorhandene Tun" +
+ "nel können nicht aufgelistet werden\x02Tunnel existiert bereits\x02Ein T" +
+ "unnel mit dem Namen „%[1]s“ existiert bereits.\x02Neue Konfiguration kan" +
+ "n nicht erstellt werden\x02Schreiben der Datei schlug fehl\x02Die Datei " +
+ "„%[1]s“ existiert bereits.\x0a\x0aMöchten Sie sie ersetzen?\x02Aktiv" +
+ "\x02Aktiviere\x02Inaktiv\x02Deaktiviere\x02Unbekannter Zustand\x02Protok" +
+ "oll\x02&Kopieren\x02&Alles markieren\x02&In Datei Speichern…\x02Zeit\x02" +
+ "Protokolleintrag\x02Textdateien (*.txt)|*.txt|Alle Dateien (*.*)|*.*\x02" +
+ "Exportiere Protokoll in Datei\x02&Über WireGuard…\x02Tunnel Fehler\x02%[" +
+ "1]s\x0a\x0aBitte lesen Sie das Protokoll für weitere Informationen.\x02%" +
+ "[1]s (veraltet)\x02WireGuard Erkennungsfehler\x02Warten auf das Erschein" +
+ "en des WireGuard Fensters nicht möglich: %[1]v \x02WireGuard: Deaktivier" +
+ "t\x02Status: Unbekannt\x02Adressen: Keine\x02Tunnel &verwalten…\x02Tunne" +
+ "l aus Datei &importieren…\x02&Beenden\x02WireGuard Tunnel Fehler\x02Wire" +
+ "Guard: %[1]s\x02Status: %[1]s\x02Adressen: %[1]s\x02WireGuard aktiviert" +
+ "\x02Der Tunnel %[1]s wurde aktiviert.\x02WireGuard deaktiviert\x02Der Tu" +
+ "nnel %[1]s wurde deaktiviert.\x02Eine Aktualisierung ist verfügbar!\x02W" +
+ "ireGuard Aktualisierung verfügbar\x02Eine Aktualisierung für WireGuard i" +
+ "st jetzt verfügbar. Es wird empfohlen diese schnellstmöglich durchzuführ" +
+ "en.\x02Tunnel\x02&Bearbeiten\x02Einen &leeren Tunnel hinzufügen…\x02Tunn" +
+ "el hinzufügen\x02Markierte(n) Tunnel entfernen\x02Alle Tunnel in eine Zi" +
+ "p-Datei exportieren\x02&Umschalten\x02Exportiere alle Tunnel in &Zip-Dat" +
+ "ei\x02Ausgewählten Tunnel &bearbeiten…\x02Ausgewählte(n) Tunnel &löschen" +
+ "\x02Ausgewählte Konfiguration konnte nicht importiert werden: %[1]v\x02K" +
+ "onnte existierende Tunnel nicht auflisten: %[1]v\x02Es existiert bereits" +
+ " ein Tunnel mit dem Namen „%[1]s“\x02Importieren der Konfiguration nicht" +
+ " möglich: %[1]v\x02Tunnel importiert\x14\x01\x81\x01\x00\x02\x18\x02%[1]" +
+ "d Tunnel importiert\x00\x18\x02%[1]d Tunnel importiert\x14\x02\x80\x01" +
+ "\x02\x22\x02%[1]d von %[2]d Tunnel importiert\x00\x22\x02%[1]d von %[2]d" +
+ " Tunnel importiert\x02Tunnel erstellen nicht möglich\x14\x01\x81\x01\x00" +
+ "\x02\x16\x02%[1]d Tunnel löschen\x00\x16\x02%[1]d Tunnel löschen\x14\x01" +
+ "\x81\x01\x00\x024\x02Möchten Sie diesen %[1]d Tunnel wirklich löschen?" +
+ "\x003\x02Möchten Sie diese %[1]d Tunnel wirklich löschen?\x02Tunnel „%[1" +
+ "]s“ löschen\x02Möchten Sie den Tunnel „%[1]s“ wirklich löschen?\x02%[1]s" +
+ " Dieser Schritt kann nicht rückgängig gemacht werden.\x02Tunnel löschen " +
+ "nicht möglich\x02Ein Tunnel konnte nicht gelöscht werden: %[1]s\x02Tunne" +
+ "l konnten nicht gelöscht werden\x14\x01\x81\x01\x00\x02+\x02%[1]d Tunnel" +
+ " konnte nicht entfernt werden.\x00-\x02%[1]d Tunnel konnten nicht gelösc" +
+ "ht werden.\x02Konfigurationsdateien (*.zip, *.conf)|*.zip;*.conf|Alle Da" +
+ "teien (*.*)|*.*\x02Importiere Tunnel aus Datei\x02Konfigurations-ZIP-Dat" +
+ "eien (*.zip)|*.zip\x02Exportiere Tunnel in Zip-Datei\x02%[1]s (unsignier" +
+ "t, keine Aktualisierungen)\x02Fehler beim Beenden von WireGuard\x02Der D" +
+ "ienst konnte nicht gestoppt werden: %[1]v. Versuchen Sie WireGuard in de" +
+ "r Dienstverwaltung zu beenden.\x02Eine Aktualisierung für WireGuard ist " +
+ "verfügbar. Es ist höchst empfehlenswert diese sofort durchzuführen.\x02S" +
+ "tatus: Auf Nutzer warten\x02Jetzt aktualisieren\x02Status: Auf Aktualisi" +
+ "erungsdienst warten\x02Fehler: %[1]v. Bitte versuchen Sie es erneut.\x02" +
+ "Status: Fertig!\x02http2: Framer %[1]p: Fehler beim dekodieren des gerad" +
+ "e geschriebenen Frames\x02http2: Framer %[1]p: %[2]v geschrieben\x02http" +
+ "2: Framer %[1]p: %[2]v gelesen\x02http2: hpack Feld %+[1]v dekodiert"
var enIndex = []uint32{ // 177 elements
// Entry 0 - 1F
@@ -388,45 +393,45 @@ var enIndex = []uint32{ // 177 elements
0x0000037d, 0x000003a3, 0x000003af, 0x000003bc,
// Entry 20 - 3F
0x000003d9, 0x000003ec, 0x00000411, 0x00000445,
- 0x00000459, 0x00000472, 0x0000048f, 0x000004a5,
- 0x000004c9, 0x000004e8, 0x0000050d, 0x0000051e,
- 0x0000053e, 0x0000055d, 0x0000057f, 0x0000059a,
- 0x000005b7, 0x000005ba, 0x000005bd, 0x000005cd,
- 0x000005e2, 0x0000064d, 0x00000653, 0x00000660,
- 0x00000668, 0x00000674, 0x0000067e, 0x0000068a,
- 0x00000697, 0x0000069c, 0x000006a7, 0x000006b4,
+ 0x00000459, 0x00000472, 0x0000048f, 0x000004b9,
+ 0x000004cf, 0x000004f3, 0x00000512, 0x00000537,
+ 0x00000548, 0x00000568, 0x00000587, 0x000005a9,
+ 0x000005c4, 0x000005e1, 0x000005e4, 0x000005e7,
+ 0x000005f7, 0x0000060c, 0x00000677, 0x0000067d,
+ 0x0000068a, 0x00000692, 0x0000069e, 0x000006a8,
+ 0x000006b4, 0x000006c1, 0x000006c6, 0x000006d1,
// Entry 40 - 5F
- 0x000006c3, 0x000006d0, 0x000006da, 0x000006f0,
- 0x00000702, 0x0000070c, 0x00000714, 0x0000072f,
- 0x00000750, 0x0000076a, 0x00000786, 0x00000797,
- 0x0000079c, 0x000007ae, 0x000007ba, 0x000007c1,
- 0x000007ce, 0x000007d8, 0x00000800, 0x0000091e,
- 0x00000924, 0x0000092b, 0x0000093b, 0x00000948,
- 0x0000095c, 0x00000980, 0x000009a0, 0x000009b6,
- 0x000009ef, 0x00000a12, 0x00000a26, 0x00000a65,
+ 0x000006de, 0x000006ed, 0x000006fa, 0x00000704,
+ 0x0000071a, 0x0000072c, 0x00000736, 0x0000073e,
+ 0x00000759, 0x0000077a, 0x00000794, 0x000007b0,
+ 0x000007c1, 0x000007c6, 0x000007d8, 0x000007e4,
+ 0x000007eb, 0x000007f8, 0x00000802, 0x0000082a,
+ 0x00000948, 0x0000094e, 0x00000955, 0x00000965,
+ 0x00000972, 0x00000986, 0x000009aa, 0x000009ca,
+ 0x000009e0, 0x00000a19, 0x00000a3c, 0x00000a50,
// Entry 60 - 7F
- 0x00000a6c, 0x00000a77, 0x00000a80, 0x00000a8d,
- 0x00000a9b, 0x00000a9f, 0x00000aa5, 0x00000ab1,
- 0x00000ac2, 0x00000ac7, 0x00000ad3, 0x00000b00,
- 0x00000b13, 0x00000b27, 0x00000b34, 0x00000b68,
- 0x00000b7c, 0x00000b96, 0x00000bcb, 0x00000be2,
- 0x00000bf2, 0x00000c02, 0x00000c15, 0x00000c34,
- 0x00000c3a, 0x00000c51, 0x00000c62, 0x00000c70,
- 0x00000c81, 0x00000c95, 0x00000cba, 0x00000cd0,
+ 0x00000a8f, 0x00000a96, 0x00000aa1, 0x00000aaa,
+ 0x00000ab7, 0x00000ac5, 0x00000ac9, 0x00000acf,
+ 0x00000adb, 0x00000aec, 0x00000af1, 0x00000afd,
+ 0x00000b2a, 0x00000b3d, 0x00000b51, 0x00000b5e,
+ 0x00000b92, 0x00000ba6, 0x00000bc0, 0x00000bf5,
+ 0x00000c0c, 0x00000c1c, 0x00000c2c, 0x00000c3f,
+ 0x00000c5e, 0x00000c64, 0x00000c7b, 0x00000c8c,
+ 0x00000c9a, 0x00000cab, 0x00000cbf, 0x00000ce4,
// Entry 80 - 9F
- 0x00000cf7, 0x00000d0f, 0x00000d2a, 0x00000d82,
- 0x00000d8a, 0x00000d90, 0x00000da5, 0x00000db0,
- 0x00000dca, 0x00000de4, 0x00000dec, 0x00000e0a,
- 0x00000e23, 0x00000e3e, 0x00000e6d, 0x00000e99,
- 0x00000ed1, 0x00000ef7, 0x00000f08, 0x00000f3e,
- 0x00000f85, 0x00000f9d, 0x00000fcf, 0x00001041,
- 0x0000105b, 0x00001095, 0x000010b8, 0x000010d0,
- 0x000010f9, 0x00001112, 0x0000116b, 0x000011b0,
+ 0x00000cfa, 0x00000d21, 0x00000d39, 0x00000d54,
+ 0x00000dac, 0x00000db4, 0x00000dba, 0x00000dcf,
+ 0x00000dda, 0x00000df4, 0x00000e0e, 0x00000e16,
+ 0x00000e34, 0x00000e4d, 0x00000e68, 0x00000e97,
+ 0x00000ec3, 0x00000efb, 0x00000f21, 0x00000f32,
+ 0x00000f68, 0x00000faf, 0x00000fc7, 0x00000ff9,
+ 0x0000106b, 0x00001085, 0x000010bf, 0x000010e2,
+ 0x000010fa, 0x00001123, 0x0000113c, 0x00001195,
// Entry A0 - BF
- 0x000011cb, 0x000011f1, 0x00001207, 0x0000122a,
- 0x00001242, 0x000012a1, 0x000012f6, 0x0000130f,
- 0x0000131a, 0x0000133e, 0x0000135e, 0x00001370,
- 0x000013a9, 0x000013ca, 0x000013ea, 0x0000140c,
+ 0x000011da, 0x000011f5, 0x0000121b, 0x00001231,
+ 0x00001254, 0x0000126c, 0x000012cb, 0x00001320,
+ 0x00001339, 0x00001344, 0x00001368, 0x00001388,
+ 0x0000139a, 0x000013d3, 0x000013f4, 0x00001414,
0x00001436,
} // Size: 732 bytes
@@ -451,70 +456,163 @@ const enData string = "" + // Size: 5174 bytes
"nvalid port\x02Invalid persistent keepalive\x02Invalid key: %[1]v\x02Key" +
"s must decode to exactly 32 bytes\x02Number must be a number between 0 a" +
"nd 2^64-1: %[1]v\x02Two commas in a row\x02Tunnel name is not valid\x02L" +
- "ine must occur in a section\x02Key must have a value\x02Invalid key for " +
- "[Interface] section\x02Invalid key for [Peer] section\x02An interface mu" +
- "st have a private key\x02[none specified]\x02All peers must have public " +
- "keys\x02Error in getting configuration\x02Invalid key for interface sect" +
- "ion\x02Protocol version must be 1\x02Invalid key for peer section\x02, " +
- "\x02, \x02About WireGuard\x02WireGuard logo image\x02App version: %[1]s" +
- "\x0aGo backend version: %[2]s\x0aGo version: %[3]s\x0aOperating system: " +
- "%[4]s\x0aArchitecture: %[5]s\x02Close\x02♥ &Donate!\x02Status:\x02&Deact" +
- "ivate\x02&Activate\x02Public key:\x02Listen port:\x02MTU:\x02Addresses:" +
- "\x02DNS servers:\x02Preshared key:\x02Allowed IPs:\x02Endpoint:\x02Persi" +
- "stent keepalive:\x02Latest handshake:\x02Transfer:\x02enabled\x02%[1]s r" +
- "eceived, %[2]s sent\x02Failed to determine tunnel state\x02Failed to act" +
- "ivate tunnel\x02Failed to deactivate tunnel\x02Interface: %[1]s\x02Peer" +
- "\x02Create new tunnel\x02Edit tunnel\x02&Name:\x02&Public key:\x02(unkno" +
- "wn)\x02&Block untunneled traffic (kill-switch)\x02When a configuration h" +
- "as exactly one peer, and that peer has an allowed IPs containing at leas" +
- "t one of 0.0.0.0/0 or ::/0, then the tunnel service engages a firewall r" +
- "uleset to block all traffic that is neither to nor from the tunnel inter" +
- "face, with special exceptions for DHCP and NDP.\x02&Save\x02Cancel\x02&C" +
- "onfiguration:\x02Invalid name\x02A name is required.\x02Tunnel name ‘%[1" +
- "]s’ is invalid.\x02Unable to list existing tunnels\x02Tunnel already exi" +
- "sts\x02Another tunnel already exists with the name ‘%[1]s’.\x02Unable to" +
- " create new configuration\x02Writing file failed\x02File ‘%[1]s’ already" +
- " exists.\x0a\x0aDo you want to overwrite it?\x02Active\x02Activating\x02" +
- "Inactive\x02Deactivating\x02Unknown state\x02Log\x02&Copy\x02Select &all" +
- "\x02&Save to file…\x02Time\x02Log message\x02Text Files (*.txt)|*.txt|Al" +
- "l Files (*.*)|*.*\x02Export log to file\x02&About WireGuard…\x02Tunnel E" +
- "rror\x02%[1]s\x0a\x0aPlease consult the log for more information.\x02%[1" +
- "]s (out of date)\x02WireGuard Detection Error\x02Unable to wait for Wire" +
- "Guard window to appear: %[1]v\x02WireGuard: Deactivated\x02Status: Unkno" +
- "wn\x02Addresses: None\x02&Manage tunnels…\x02&Import tunnel(s) from file" +
- "…\x02E&xit\x02WireGuard Tunnel Error\x02WireGuard: %[1]s\x02Status: %[" +
- "1]s\x02Addresses: %[1]s\x02WireGuard Activated\x02The %[1]s tunnel has b" +
- "een activated.\x02WireGuard Deactivated\x02The %[1]s tunnel has been dea" +
- "ctivated.\x02An Update is Available!\x02WireGuard Update Available\x02An" +
- " update to WireGuard is now available. You are advised to update as soon" +
- " as possible.\x02Tunnels\x02&Edit\x02Add &empty tunnel…\x02Add Tunnel" +
- "\x02Remove selected tunnel(s)\x02Export all tunnels to zip\x02&Toggle" +
- "\x02Export all tunnels to &zip…\x02Edit &selected tunnel…\x02&Remove sel" +
- "ected tunnel(s)\x02Could not import selected configuration: %[1]v\x02Cou" +
- "ld not enumerate existing tunnels: %[1]v\x02Another tunnel already exist" +
- "s with the name ‘%[1]s’\x02Unable to import configuration: %[1]v\x02Impo" +
- "rted tunnels\x14\x01\x81\x01\x00\x02\x16\x02Imported %[1]d tunnel\x00" +
- "\x17\x02Imported %[1]d tunnels\x14\x02\x80\x01\x02\x1f\x02Imported %[1]d" +
- " of %[2]d tunnel\x00 \x02Imported %[1]d of %[2]d tunnels\x02Unable to cr" +
- "eate tunnel\x14\x01\x81\x01\x00\x02\x14\x02Delete %[1]d tunnel\x00\x15" +
- "\x02Delete %[1]d tunnels\x14\x01\x81\x01\x00\x024\x02Are you sure you wo" +
- "uld like to delete %[1]d tunnel?\x005\x02Are you sure you would like to " +
- "delete %[1]d tunnels?\x02Delete tunnel ‘%[1]s’\x02Are you sure you would" +
- " like to delete tunnel ‘%[1]s’?\x02%[1]s You cannot undo this action." +
- "\x02Unable to delete tunnel\x02A tunnel was unable to be removed: %[1]s" +
- "\x02Unable to delete tunnels\x14\x01\x81\x01\x00\x02'\x02%[1]d tunnel wa" +
- "s unable to be removed.\x00)\x02%[1]d tunnels were unable to be removed." +
- "\x02Configuration Files (*.zip, *.conf)|*.zip;*.conf|All Files (*.*)|*.*" +
- "\x02Import tunnel(s) from file\x02Configuration ZIP Files (*.zip)|*.zip" +
- "\x02Export tunnels to zip\x02%[1]s (unsigned build, no updates)\x02Error" +
- " Exiting WireGuard\x02Unable to exit service due to: %[1]v. You may want" +
- " to stop WireGuard from the service manager.\x02An update to WireGuard i" +
- "s available. It is highly advisable to update without delay.\x02Status: " +
- "Waiting for user\x02Update Now\x02Status: Waiting for updater service" +
- "\x02Error: %[1]v. Please try again.\x02Status: Complete!\x02http2: Frame" +
- "r %[1]p: failed to decode just-written frame\x02http2: Framer %[1]p: wro" +
- "te %[2]v\x02http2: Framer %[1]p: read %[2]v\x02http2: decoded hpack fiel" +
- "d %+[1]v\x02Config key is missing an equals separator"
+ "ine must occur in a section\x02Config key is missing an equals separator" +
+ "\x02Key must have a value\x02Invalid key for [Interface] section\x02Inva" +
+ "lid key for [Peer] section\x02An interface must have a private key\x02[n" +
+ "one specified]\x02All peers must have public keys\x02Error in getting co" +
+ "nfiguration\x02Invalid key for interface section\x02Protocol version mus" +
+ "t be 1\x02Invalid key for peer section\x02, \x02, \x02About WireGuard" +
+ "\x02WireGuard logo image\x02App version: %[1]s\x0aGo backend version: %[" +
+ "2]s\x0aGo version: %[3]s\x0aOperating system: %[4]s\x0aArchitecture: %[5" +
+ "]s\x02Close\x02♥ &Donate!\x02Status:\x02&Deactivate\x02&Activate\x02Publ" +
+ "ic key:\x02Listen port:\x02MTU:\x02Addresses:\x02DNS servers:\x02Preshar" +
+ "ed key:\x02Allowed IPs:\x02Endpoint:\x02Persistent keepalive:\x02Latest " +
+ "handshake:\x02Transfer:\x02enabled\x02%[1]s received, %[2]s sent\x02Fail" +
+ "ed to determine tunnel state\x02Failed to activate tunnel\x02Failed to d" +
+ "eactivate tunnel\x02Interface: %[1]s\x02Peer\x02Create new tunnel\x02Edi" +
+ "t tunnel\x02&Name:\x02&Public key:\x02(unknown)\x02&Block untunneled tra" +
+ "ffic (kill-switch)\x02When a configuration has exactly one peer, and tha" +
+ "t 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 exception" +
+ "s for DHCP and NDP.\x02&Save\x02Cancel\x02&Configuration:\x02Invalid nam" +
+ "e\x02A name is required.\x02Tunnel name ‘%[1]s’ is invalid.\x02Unable to" +
+ " list existing tunnels\x02Tunnel already exists\x02Another tunnel alread" +
+ "y exists with the name ‘%[1]s’.\x02Unable to create new configuration" +
+ "\x02Writing file failed\x02File ‘%[1]s’ already exists.\x0a\x0aDo you wa" +
+ "nt to overwrite it?\x02Active\x02Activating\x02Inactive\x02Deactivating" +
+ "\x02Unknown state\x02Log\x02&Copy\x02Select &all\x02&Save to file…\x02Ti" +
+ "me\x02Log message\x02Text Files (*.txt)|*.txt|All Files (*.*)|*.*\x02Exp" +
+ "ort log to file\x02&About WireGuard…\x02Tunnel Error\x02%[1]s\x0a\x0aPle" +
+ "ase consult the log for more information.\x02%[1]s (out of date)\x02Wire" +
+ "Guard Detection Error\x02Unable to wait for WireGuard window to appear: " +
+ "%[1]v\x02WireGuard: Deactivated\x02Status: Unknown\x02Addresses: None" +
+ "\x02&Manage tunnels…\x02&Import tunnel(s) from file…\x02E&xit\x02WireGua" +
+ "rd Tunnel Error\x02WireGuard: %[1]s\x02Status: %[1]s\x02Addresses: %[1]s" +
+ "\x02WireGuard Activated\x02The %[1]s tunnel has been activated.\x02WireG" +
+ "uard Deactivated\x02The %[1]s tunnel has been deactivated.\x02An Update " +
+ "is Available!\x02WireGuard Update Available\x02An update to WireGuard is" +
+ " now available. You are advised to update as soon as possible.\x02Tunnel" +
+ "s\x02&Edit\x02Add &empty tunnel…\x02Add Tunnel\x02Remove selected tunnel" +
+ "(s)\x02Export all tunnels to zip\x02&Toggle\x02Export all tunnels to &zi" +
+ "p…\x02Edit &selected tunnel…\x02&Remove selected tunnel(s)\x02Could not " +
+ "import selected configuration: %[1]v\x02Could not enumerate existing tun" +
+ "nels: %[1]v\x02Another tunnel already exists with the name ‘%[1]s’\x02Un" +
+ "able to import configuration: %[1]v\x02Imported tunnels\x14\x01\x81\x01" +
+ "\x00\x02\x16\x02Imported %[1]d tunnel\x00\x17\x02Imported %[1]d tunnels" +
+ "\x14\x02\x80\x01\x02\x1f\x02Imported %[1]d of %[2]d tunnel\x00 \x02Impor" +
+ "ted %[1]d of %[2]d tunnels\x02Unable to create tunnel\x14\x01\x81\x01" +
+ "\x00\x02\x14\x02Delete %[1]d tunnel\x00\x15\x02Delete %[1]d tunnels\x14" +
+ "\x01\x81\x01\x00\x024\x02Are you sure you would like to delete %[1]d tun" +
+ "nel?\x005\x02Are you sure you would like to delete %[1]d tunnels?\x02Del" +
+ "ete tunnel ‘%[1]s’\x02Are you sure you would like to delete tunnel ‘%[1]" +
+ "s’?\x02%[1]s You cannot undo this action.\x02Unable to delete tunnel\x02" +
+ "A tunnel was unable to be removed: %[1]s\x02Unable to delete tunnels\x14" +
+ "\x01\x81\x01\x00\x02'\x02%[1]d tunnel was unable to be removed.\x00)\x02" +
+ "%[1]d tunnels were unable to be removed.\x02Configuration Files (*.zip, " +
+ "*.conf)|*.zip;*.conf|All Files (*.*)|*.*\x02Import tunnel(s) from file" +
+ "\x02Configuration ZIP Files (*.zip)|*.zip\x02Export tunnels to zip\x02%[" +
+ "1]s (unsigned build, no updates)\x02Error Exiting WireGuard\x02Unable to" +
+ " exit service due to: %[1]v. You may want to stop WireGuard from the ser" +
+ "vice manager.\x02An update to WireGuard is available. It is highly advis" +
+ "able to update without delay.\x02Status: Waiting for user\x02Update Now" +
+ "\x02Status: Waiting for updater service\x02Error: %[1]v. Please try agai" +
+ "n.\x02Status: Complete!\x02http2: Framer %[1]p: failed to decode just-wr" +
+ "itten frame\x02http2: Framer %[1]p: wrote %[2]v\x02http2: Framer %[1]p: " +
+ "read %[2]v\x02http2: decoded hpack field %+[1]v"
+
+var faIndex = []uint32{ // 177 elements
+ // Entry 0 - 1F
+ 0x00000000, 0x00000007, 0x00000007, 0x00000007,
+ 0x0000002b, 0x0000002b, 0x00000093, 0x00000093,
+ 0x00000093, 0x00000093, 0x00000093, 0x000000a3,
+ 0x000000a3, 0x000000c6, 0x000000e9, 0x00000110,
+ 0x0000013b, 0x00000166, 0x00000173, 0x00000183,
+ 0x00000183, 0x00000183, 0x00000183, 0x00000183,
+ 0x00000183, 0x000001b0, 0x000001b0, 0x000001b0,
+ 0x000001b0, 0x000001b0, 0x000001ca, 0x000001e2,
+ // Entry 20 - 3F
+ 0x000001e2, 0x000001e2, 0x000001e2, 0x000001e2,
+ 0x000001e2, 0x000001e2, 0x000001e2, 0x000001e2,
+ 0x00000218, 0x00000218, 0x00000218, 0x00000218,
+ 0x0000022c, 0x0000027c, 0x000002a6, 0x000002a6,
+ 0x000002a6, 0x000002a6, 0x000002aa, 0x000002ae,
+ 0x000002c5, 0x000002c5, 0x000002c5, 0x000002ce,
+ 0x000002e5, 0x000002f1, 0x0000030c, 0x00000321,
+ 0x00000336, 0x00000349, 0x0000034e, 0x00000361,
+ // Entry 40 - 5F
+ 0x00000375, 0x0000039d, 0x000003b0, 0x000003c5,
+ 0x000003f0, 0x000003f0, 0x000003fe, 0x0000040e,
+ 0x0000040e, 0x0000040e, 0x0000040e, 0x0000040e,
+ 0x0000041e, 0x00000427, 0x00000444, 0x0000045a,
+ 0x00000463, 0x00000479, 0x0000048c, 0x0000048c,
+ 0x0000048c, 0x00000498, 0x0000049f, 0x000004b2,
+ 0x000004c8, 0x000004e9, 0x000004e9, 0x0000052f,
+ 0x0000055c, 0x0000055c, 0x0000055c, 0x0000055c,
+ // Entry 60 - 7F
+ 0x0000055c, 0x00000565, 0x00000585, 0x00000594,
+ 0x000005ba, 0x000005d6, 0x000005ec, 0x000005fa,
+ 0x000005fa, 0x0000061b, 0x00000624, 0x00000645,
+ 0x00000645, 0x00000681, 0x0000069c, 0x000006b0,
+ 0x000006b0, 0x000006b0, 0x000006b0, 0x000006b0,
+ 0x000006b0, 0x000006cd, 0x000006e7, 0x00000708,
+ 0x00000708, 0x00000708, 0x00000724, 0x00000724,
+ 0x00000736, 0x0000074f, 0x00000769, 0x0000078b,
+ // Entry 80 - 9F
+ 0x000007a9, 0x000007a9, 0x000007de, 0x00000817,
+ 0x00000817, 0x00000827, 0x00000835, 0x00000863,
+ 0x00000879, 0x0000089e, 0x000008d3, 0x000008d3,
+ 0x0000090c, 0x0000090c, 0x0000090c, 0x0000090c,
+ 0x0000090c, 0x0000090c, 0x0000090c, 0x0000092e,
+ 0x00000971, 0x000009c9, 0x000009f6, 0x00000a2b,
+ 0x00000a2b, 0x00000a47, 0x00000a47, 0x00000a47,
+ 0x00000a79, 0x00000a79, 0x00000aae, 0x00000aae,
+ // Entry A0 - BF
+ 0x00000aae, 0x00000ae1, 0x00000b1d, 0x00000b4b,
+ 0x00000b4b, 0x00000b81, 0x00000b81, 0x00000b81,
+ 0x00000bb2, 0x00000bdb, 0x00000c24, 0x00000c5c,
+ 0x00000c77, 0x00000c77, 0x00000c77, 0x00000c77,
+ 0x00000c77,
+} // Size: 732 bytes
+
+const faData string = "" + // Size: 3191 bytes
+ "\x02خطا\x02گزینه\u200cهای خط فرمان\x02شما باید نگارش ۶۴-بیت WireGuard را" +
+ " در این رایانه استفاده کنید.\x02هم اکنون\x14\x01\x81\x01\x00\x02\x0d\x02" +
+ "%[1]d سال\x00\x0d\x02%[1]d سال\x14\x01\x81\x01\x00\x02\x0d\x02%[1]d روز" +
+ "\x00\x0d\x02%[1]d روز\x14\x01\x81\x01\x00\x02\x0f\x02%[1]d ساعت\x00\x0f" +
+ "\x02%[1]d ساعت\x14\x01\x81\x01\x00\x02\x11\x02%[1]d دقیقه\x00\x11\x02%[1" +
+ "]d دقیقه\x14\x01\x81\x01\x00\x02\x11\x02%[1]d ثانیه\x00\x11\x02%[1]d ثان" +
+ "یه\x02%[1]s پیش\x02%[1]d\u00a0بایت\x02نشانی آی\u200cپی نامعتبر است\x02M" +
+ "TU نامعتبر است\x02پورت نامعتبر\x02کلید باید یک مقدار داشته باشد\x02[مشخص" +
+ " نشده]\x02همه همتاها باید کلید\u200cهای عمومی داشته باشند\x02خطا در دریا" +
+ "فت پیکربندی\x02، \x02، \x02درباره WireGuard\x02بستن\x02♥&کمک\u200cمالی!" +
+ "\x02وضعیت:\x02&غیرفعال\u200cسازی\x02&فعال\u200cسازی\x02کلید عمومی:\x02پو" +
+ "رت شنود:\x02MTU:\x02نشانی\u200cها:\x02سرورهای DNS:\x02کلید از پیش تقسیم" +
+ " شده:\x02IPهای مجاز:\x02نقطه پایان:\x02زنده نگه\u200cداشتن پیوسته:\x02ان" +
+ "تقال:\x02فعال شده\x02رابط: %[1]s\x02همتا\x02ایجاد تونل جدید\x02ویرایش ت" +
+ "ونل\x02&نام:\x02&کلید عمومی:\x02(ناشناخته)\x02&ذخیره\x02لغو\x02&پیکربند" +
+ "ی:\x02نام نامعتبر\x02یک نام الزامی است.\x02نمی\u200cتوان تونل\u200cهای " +
+ "موجود را فهرست کرد\x02تونل هم\u200cاکنون موجود است\x02فعال\x02در حال فع" +
+ "ال\u200cسازی\x02غیرفعال\x02در حال غیرفعال\u200cسازی\x02وضعیت ناشناخته" +
+ "\x02گزارش وقایع\x02&روگرفت\x02&ذخیره در پرونده…\x02زمان\x02پیام گزارش رو" +
+ "یداد\x02برون\u200cبرد گزارش رویداد به پرونده\x02&درباره WireGuard…\x02خ" +
+ "طالی تونل\x02وضعیت: ناشناخته\x02نشانی\u200cها: هیچ\x02&مدیریت تونل" +
+ "\u200cها…\x02خطای تونل WireGuard\x02وضعیت: %[1]s\x02نشانی\u200cها: %[1]s" +
+ "\x02WireGuard فعال\u200cشد\x02تونل %[1]s فعال\u200cشده.\x02WireGuard غیر" +
+ "فعال شد\x02یک به\u200cروزرسانی در دسترس است!\x02به\u200cروزرسانی WireGu" +
+ "ard در دسترس است\x02تونل\u200cها\x02&ویرایش\x02افزودن &خالی\u200cکردن تو" +
+ "نل…\x02افزودن تونل\x02حذف تونل(ها) انتخابی\x02برون\u200cبری همه تونل" +
+ "\u200cها به زیپ\x02برون\u200cبری همه تونل\u200cها به &زیپ…\x02تونل\u200c" +
+ "های وارد شده\x14\x01\x81\x01\x00\x02\x1d\x02%[1]d تونل وارد شد\x00\x1d" +
+ "\x02%[1]d تونل وارد شد\x14\x02\x80\x01\x02(\x02%[1]d از %[2]d تونل وارد " +
+ "شد\x00(\x02%[1]d از %[2]d تونل وارد شد\x02نمی\u200cتوان تونل ایجاد کرد" +
+ "\x14\x01\x81\x01\x00\x02\x16\x02حذف %[1]d تونل\x00\x16\x02حذف %[1]d تونل" +
+ "\x02حذف تونل ‘%[1]s’\x02حذف تونل\u200c امکان\u200cپذیر نیست\x02نمی\u200c" +
+ "توان تونل\u200cها را حذف کرد\x02وارد کردن تونل(ها) از پرونده\x02پرونده" +
+ "\u200cهای پیکربندی زیپ (*.zip)|*.zip\x02برون\u200cبری تونل\u200cها به زی" +
+ "پ\x02خطا در هنگام خارج شدن از WireGuard\x02وضعیت: درانتظار برای کاربر" +
+ "\x02اکنون به\u200cروز رسانی کن\x02وضعیت: درانتظار برای سرویس به\u200cروز" +
+ "رسانی\x02خطا: %[1]v. لطفا دوباره تلاش کنید.\x02وضعیت: کامل شد!"
var frIndex = []uint32{ // 177 elements
// Entry 0 - 1F
@@ -528,45 +626,45 @@ var frIndex = []uint32{ // 177 elements
0x00000433, 0x00000465, 0x00000474, 0x00000484,
// Entry 20 - 3F
0x000004bb, 0x000004d3, 0x00000500, 0x0000053b,
- 0x00000557, 0x00000570, 0x0000059c, 0x000005b7,
- 0x000005e3, 0x0000060a, 0x00000632, 0x0000064a,
- 0x00000682, 0x000006a9, 0x000006d5, 0x000006f7,
- 0x00000723, 0x00000726, 0x00000728, 0x0000073f,
- 0x0000075a, 0x000007e0, 0x000007e7, 0x000007fb,
- 0x00000803, 0x00000810, 0x00000819, 0x00000829,
- 0x0000083a, 0x00000840, 0x0000084b, 0x0000085a,
+ 0x00000557, 0x00000570, 0x0000059c, 0x0000059c,
+ 0x000005b7, 0x000005e3, 0x0000060a, 0x00000632,
+ 0x0000064a, 0x00000682, 0x000006a9, 0x000006d5,
+ 0x000006f7, 0x00000723, 0x00000726, 0x00000728,
+ 0x0000073f, 0x0000075a, 0x000007e0, 0x000007e7,
+ 0x000007fb, 0x00000803, 0x00000810, 0x00000819,
+ 0x00000829, 0x0000083a, 0x00000840, 0x0000084b,
// Entry 40 - 5F
- 0x00000870, 0x0000088a, 0x000008a1, 0x000008cf,
- 0x000008f6, 0x00000902, 0x0000090d, 0x0000092e,
- 0x0000095a, 0x00000979, 0x0000099d, 0x000009af,
- 0x000009b9, 0x000009d2, 0x000009e5, 0x000009ec,
- 0x000009fd, 0x00000a0a, 0x00000a3d, 0x00000b98,
- 0x00000ba5, 0x00000bad, 0x00000bbe, 0x00000bcd,
- 0x00000be5, 0x00000c0f, 0x00000c44, 0x00000c5a,
- 0x00000c8e, 0x00000cbe, 0x00000cdc, 0x00000d1b,
+ 0x0000085a, 0x00000870, 0x0000088a, 0x000008a1,
+ 0x000008cf, 0x000008f6, 0x00000902, 0x0000090d,
+ 0x0000092e, 0x0000095a, 0x00000979, 0x0000099d,
+ 0x000009af, 0x000009b9, 0x000009d2, 0x000009e5,
+ 0x000009ec, 0x000009fd, 0x00000a0a, 0x00000a3d,
+ 0x00000b98, 0x00000ba5, 0x00000bad, 0x00000bbe,
+ 0x00000bcd, 0x00000be5, 0x00000c0f, 0x00000c44,
+ 0x00000c5a, 0x00000c8e, 0x00000cbe, 0x00000cdc,
// Entry 60 - 7F
- 0x00000d26, 0x00000d3a, 0x00000d47, 0x00000d5f,
- 0x00000d6d, 0x00000d75, 0x00000d7d, 0x00000d91,
- 0x00000db1, 0x00000db7, 0x00000dca, 0x00000e03,
- 0x00000e27, 0x00000e3f, 0x00000e50, 0x00000e9a,
- 0x00000eac, 0x00000ece, 0x00000f10, 0x00000f27,
- 0x00000f37, 0x00000f49, 0x00000f61, 0x00000f93,
- 0x00000f9c, 0x00000fb7, 0x00000fc9, 0x00000fd7,
- 0x00000fe8, 0x00000ffa, 0x00001018, 0x0000102e,
+ 0x00000d1b, 0x00000d26, 0x00000d3a, 0x00000d47,
+ 0x00000d5f, 0x00000d6d, 0x00000d75, 0x00000d7d,
+ 0x00000d91, 0x00000db1, 0x00000db7, 0x00000dca,
+ 0x00000e03, 0x00000e27, 0x00000e3f, 0x00000e50,
+ 0x00000e9a, 0x00000eac, 0x00000ece, 0x00000f10,
+ 0x00000f27, 0x00000f37, 0x00000f49, 0x00000f61,
+ 0x00000f93, 0x00000f9c, 0x00000fb7, 0x00000fc9,
+ 0x00000fd7, 0x00000fe8, 0x00000ffa, 0x00001018,
// Entry 80 - 9F
- 0x00001050, 0x00001069, 0x0000108f, 0x00001104,
- 0x0000110c, 0x00001116, 0x00001131, 0x00001143,
- 0x0000116e, 0x00001191, 0x0000119b, 0x000011c2,
- 0x000011e7, 0x00001213, 0x00001251, 0x00001288,
- 0x000012b4, 0x000012e3, 0x000012f5, 0x0000132c,
- 0x00001375, 0x00001394, 0x000013cc, 0x00001430,
- 0x00001450, 0x00001486, 0x000014b5, 0x000014d7,
- 0x0000150c, 0x00001530, 0x0000159c, 0x000015ef,
+ 0x0000102e, 0x00001050, 0x00001069, 0x0000108f,
+ 0x00001104, 0x0000110c, 0x00001116, 0x00001131,
+ 0x00001143, 0x0000116e, 0x00001191, 0x0000119b,
+ 0x000011c2, 0x000011e7, 0x00001213, 0x00001251,
+ 0x00001288, 0x000012b4, 0x000012e3, 0x000012f5,
+ 0x0000132c, 0x00001375, 0x00001394, 0x000013cc,
+ 0x00001430, 0x00001450, 0x00001486, 0x000014b5,
+ 0x000014d7, 0x0000150c, 0x00001530, 0x0000159c,
// Entry A0 - BF
- 0x0000161d, 0x00001649, 0x00001667, 0x00001698,
- 0x000016b6, 0x00001731, 0x000017aa, 0x000017cf,
- 0x000017e9, 0x00001818, 0x0000183d, 0x0000184e,
- 0x00001893, 0x000018b8, 0x000018da, 0x000018fe,
+ 0x000015ef, 0x0000161d, 0x00001649, 0x00001667,
+ 0x00001698, 0x000016b6, 0x00001731, 0x000017aa,
+ 0x000017cf, 0x000017e9, 0x00001818, 0x0000183d,
+ 0x0000184e, 0x00001893, 0x000018b8, 0x000018da,
0x000018fe,
} // Size: 732 bytes
@@ -671,6 +769,100 @@ const frData string = "" + // Size: 6398 bytes
".\x02http2: Trameur %[1]p: a écrit %[2]v\x02http2: Trameur %[1]p : a lu " +
"%[2]v\x02http2 : champ hpack %+[1]v décodé"
+var idIndex = []uint32{ // 177 elements
+ // Entry 0 - 1F
+ 0x00000000, 0x0000000a, 0x00000047, 0x00000062,
+ 0x00000074, 0x000000bf, 0x000000fe, 0x0000012f,
+ 0x00000187, 0x000001e0, 0x00000215, 0x0000021e,
+ 0x00000231, 0x00000250, 0x00000262, 0x00000273,
+ 0x00000286, 0x00000299, 0x000002a9, 0x000002b1,
+ 0x000002bd, 0x000002c9, 0x000002d5, 0x000002e1,
+ 0x000002ee, 0x00000304, 0x0000031f, 0x0000033f,
+ 0x00000359, 0x0000037f, 0x0000038f, 0x000003a0,
+ // Entry 20 - 3F
+ 0x000003c1, 0x000003d7, 0x000003ff, 0x00000431,
+ 0x0000044b, 0x00000463, 0x00000480, 0x00000480,
+ 0x0000049b, 0x000004c5, 0x000004ea, 0x0000050f,
+ 0x00000520, 0x00000548, 0x0000056c, 0x00000596,
+ 0x000005ad, 0x000005d2, 0x000005d5, 0x000005d5,
+ 0x000005e7, 0x000005e7, 0x0000064e, 0x00000654,
+ 0x00000661, 0x00000669, 0x00000669, 0x00000669,
+ 0x00000669, 0x00000669, 0x00000669, 0x00000669,
+ // Entry 40 - 5F
+ 0x00000669, 0x00000669, 0x00000669, 0x00000669,
+ 0x00000669, 0x00000669, 0x00000669, 0x00000669,
+ 0x00000669, 0x00000669, 0x00000669, 0x00000669,
+ 0x00000669, 0x00000669, 0x00000669, 0x00000669,
+ 0x00000669, 0x00000669, 0x00000669, 0x00000669,
+ 0x00000669, 0x00000669, 0x00000669, 0x00000669,
+ 0x00000669, 0x00000669, 0x00000669, 0x00000669,
+ 0x00000669, 0x00000669, 0x00000669, 0x00000669,
+ // Entry 60 - 7F
+ 0x00000669, 0x0000066f, 0x0000067c, 0x00000685,
+ 0x00000693, 0x000006aa, 0x000006b2, 0x000006b8,
+ 0x000006c4, 0x000006e1, 0x000006e7, 0x000006f1,
+ 0x00000721, 0x00000739, 0x0000074f, 0x0000075b,
+ 0x00000791, 0x000007a4, 0x000007bb, 0x000007f0,
+ 0x00000809, 0x00000821, 0x00000830, 0x00000843,
+ 0x0000085e, 0x00000866, 0x0000087c, 0x0000088d,
+ 0x0000089b, 0x0000089b, 0x0000089b, 0x0000089b,
+ // Entry 80 - 9F
+ 0x0000089b, 0x0000089b, 0x0000089b, 0x0000089b,
+ 0x0000089b, 0x0000089b, 0x0000089b, 0x0000089b,
+ 0x0000089b, 0x0000089b, 0x0000089b, 0x0000089b,
+ 0x000008ba, 0x000008d3, 0x000008ea, 0x00000920,
+ 0x00000920, 0x00000920, 0x00000920, 0x00000920,
+ 0x00000920, 0x00000920, 0x00000920, 0x00000920,
+ 0x00000920, 0x00000920, 0x00000920, 0x00000920,
+ 0x00000920, 0x00000920, 0x00000920, 0x00000920,
+ // Entry A0 - BF
+ 0x00000920, 0x00000920, 0x00000920, 0x00000920,
+ 0x00000920, 0x00000920, 0x00000920, 0x00000920,
+ 0x00000920, 0x00000920, 0x00000920, 0x00000920,
+ 0x00000920, 0x00000920, 0x00000920, 0x00000920,
+ 0x00000920,
+} // Size: 732 bytes
+
+const idData string = "" + // Size: 2336 bytes
+ "\x02Kesalahan\x02(tidak ada argumen): naikkan akses dan instal servis ma" +
+ "najer\x02Penggunaan: %[1]s [\x0a%[2]s]\x02Opsi Command Line\x02Tidak dap" +
+ "at menentukan apakah proses sedang berjalan di bawah WOW64: %[1]v\x02And" +
+ "a harus menggunakan WireGuard versi 64-bit di komputer ini.\x02Tidak dap" +
+ "at membuka token proses saat ini: %[1]v\x02WireGuard hanya dapat digunak" +
+ "an oleh pengguna yang merupakan anggota grup Bawaan %[1]s.\x02WireGuard " +
+ "sedang berjalan, tetapi UI hanya dapat diakses dari desktop grup Bawaan " +
+ "%[1]s.\x02Ikon sistem WireGuard tidak muncul setelah 30 detik.\x02Sekara" +
+ "ng\x02Jam sistem mundur!\x14\x01\x81\x01\x00\x00\x18\x02%[1]d tahun\x0a%" +
+ "[1]d tahun\x14\x01\x81\x01\x00\x00\x0b\x02%[1]d Hari\x14\x01\x81\x01\x00" +
+ "\x00\x0a\x02%[1]d jam\x14\x01\x81\x01\x00\x00\x0c\x02%[1]d menit\x14\x01" +
+ "\x81\x01\x00\x00\x0c\x02%[1]d detik\x02%[1]s yang lalu\x02%[1]d B\x02%.2" +
+ "[1]f KiB\x02%.2[1]f MiB\x02%.2[1]f GiB\x02%.2[1]f TiB\x02%[1]s: %[2]q" +
+ "\x02Alamat IP tidak valid\x02Network prefix tidak valid\x02Port belum te" +
+ "risi dari endpoint\x02Host endpoint tidak valid\x02Dalam Kurung harus be" +
+ "risi alamat IPv6\x02MTU tidak valid\x02Port tidak valid\x02Persistent ke" +
+ "epalive tidak valid\x02Kunci tidak sah:%[1]v\x02Kunci harus diterjemahka" +
+ "n tepat 32 byte\x02Nomor harus diantara 0 sampai dengan 2^64-1:%[1]v\x02" +
+ "Dua koma dalam satu baris\x02Nama Tunnel tidak valid\x02Garis harus munc" +
+ "ul perbagian\x02Kunci harus memiliki value\x02Kunci tidak valid pada bag" +
+ "ian [Interface]\x02Kunci tidak valid pada bagian [Peer]\x02Interface har" +
+ "us memiliki Private Key\x02Tidak Ditetapkan\x02Semua peers harus memilik" +
+ "i kunci publik\x02Eror ketika mendapatkan konfigurasi\x02Kunci tidak val" +
+ "id pada bagian [Interface]\x02Versi protokol harus 1\x02Kunci tidak vali" +
+ "d pada bagian [Peer]\x02, \x02Tentang WireGuard\x02Versi Aplikasi: %[1]s" +
+ "\x0aVersi back-end Go: %[2]s\x0aVersi Go: %[3]s\x0aSistem Operasi: %[4]s" +
+ "\x0aArsitektur: %[5]s\x02Tutup\x02♥ &Donasi!\x02Status:\x02Aktif\x02Meng" +
+ "aktifkan\x02Nonaktif\x02Menonaktifkan\x02Status tidak diketahui\x02Catat" +
+ "an\x02Salin\x02Pilih semua\x02Menyimpan ke dalam berkas…\x02Waktu\x02Pes" +
+ "an log\x02Berkas Txt (*.Txt)|*.Txt|Semua berkas (*.*)|*.*\x02Ekspor log " +
+ "kedalam file\x02&Tentang WireGuard…\x02Tunnel eror\x02%[1]s\x0a\x0aSilak" +
+ "an baca log untuk informasi lebih lanjut.\x02%[1]s (kadaluarsa)\x02Detek" +
+ "si eror WireGuard\x02Tidak dapat menunggu jendela WireGuard muncul: %[1]" +
+ "v\x02WireGuard: Dinonaktifkan\x02Status: Tidak diketahui\x02Alamat: Koso" +
+ "ng\x02&Manajer Tunnel…\x02&Impor tunnel dari file…\x02&Keluar\x02Wiregua" +
+ "rd Tunnel Eror\x02WireGuard: %[1]s\x02Status: %[1]s\x02Ekspor semua tunn" +
+ "el ke &zip…\x02Ubah tunnel &terpilih…\x02&Hapus tunnel terpilih\x02Tidak" +
+ " dapat mengimpor konfigurasi yang dipilih: %[1]v"
+
var itIndex = []uint32{ // 177 elements
// Entry 0 - 1F
0x00000000, 0x00000007, 0x00000044, 0x0000005d,
@@ -683,45 +875,45 @@ var itIndex = []uint32{ // 177 elements
0x000003fa, 0x0000042a, 0x00000439, 0x0000044a,
// Entry 20 - 3F
0x0000046a, 0x00000483, 0x000004b5, 0x000004f4,
- 0x0000050c, 0x0000052d, 0x0000055a, 0x00000579,
- 0x000005a6, 0x000005ce, 0x000005fb, 0x0000060d,
- 0x0000063b, 0x0000066b, 0x0000069d, 0x000006c6,
- 0x000006ec, 0x000006ef, 0x000006f1, 0x0000070b,
- 0x0000072a, 0x000007a2, 0x000007a9, 0x000007c1,
- 0x000007c8, 0x000007d3, 0x000007db, 0x000007ec,
- 0x000007fe, 0x00000803, 0x0000080e, 0x0000081a,
+ 0x0000050c, 0x0000052d, 0x0000055a, 0x0000055a,
+ 0x00000579, 0x000005a6, 0x000005ce, 0x000005fb,
+ 0x0000060d, 0x0000063b, 0x0000066b, 0x0000069d,
+ 0x000006c6, 0x000006ec, 0x000006ef, 0x000006f1,
+ 0x0000070b, 0x0000072a, 0x000007a2, 0x000007a9,
+ 0x000007c1, 0x000007c8, 0x000007d3, 0x000007db,
+ 0x000007ec, 0x000007fe, 0x00000803, 0x0000080e,
// Entry 40 - 5F
- 0x00000830, 0x0000083f, 0x00000849, 0x0000085f,
- 0x00000874, 0x00000883, 0x0000088d, 0x000008ab,
- 0x000008de, 0x00000902, 0x00000929, 0x0000093c,
- 0x00000941, 0x0000094d, 0x0000095d, 0x00000964,
- 0x00000976, 0x00000984, 0x000009b4, 0x00000add,
- 0x00000ae4, 0x00000aec, 0x00000afd, 0x00000b0d,
- 0x00000b23, 0x00000b51, 0x00000b79, 0x00000b8f,
- 0x00000bc4, 0x00000bef, 0x00000c0f, 0x00000c46,
+ 0x0000081a, 0x00000830, 0x0000083f, 0x00000849,
+ 0x0000085f, 0x00000874, 0x00000883, 0x0000088d,
+ 0x000008ab, 0x000008de, 0x00000902, 0x00000929,
+ 0x0000093c, 0x00000941, 0x0000094d, 0x0000095d,
+ 0x00000964, 0x00000976, 0x00000984, 0x000009b4,
+ 0x00000add, 0x00000ae4, 0x00000aec, 0x00000afd,
+ 0x00000b0d, 0x00000b23, 0x00000b51, 0x00000b79,
+ 0x00000b8f, 0x00000bc4, 0x00000bef, 0x00000c0f,
// Entry 60 - 7F
- 0x00000c4d, 0x00000c59, 0x00000c62, 0x00000c71,
- 0x00000c83, 0x00000c87, 0x00000c8e, 0x00000c9f,
- 0x00000cb1, 0x00000cb7, 0x00000cc8, 0x00000cfb,
- 0x00000d0f, 0x00000d2d, 0x00000d3f, 0x00000d72,
- 0x00000d83, 0x00000da6, 0x00000deb, 0x00000e02,
- 0x00000e15, 0x00000e28, 0x00000e3e, 0x00000e59,
- 0x00000e5f, 0x00000e7a, 0x00000e8b, 0x00000e98,
- 0x00000ea9, 0x00000ebc, 0x00000edf, 0x00000ef5,
+ 0x00000c46, 0x00000c4d, 0x00000c59, 0x00000c62,
+ 0x00000c71, 0x00000c83, 0x00000c87, 0x00000c8e,
+ 0x00000c9f, 0x00000cb1, 0x00000cb7, 0x00000cc8,
+ 0x00000cfb, 0x00000d0f, 0x00000d2d, 0x00000d3f,
+ 0x00000d72, 0x00000d83, 0x00000da6, 0x00000deb,
+ 0x00000e02, 0x00000e15, 0x00000e28, 0x00000e3e,
+ 0x00000e59, 0x00000e5f, 0x00000e7a, 0x00000e8b,
+ 0x00000e98, 0x00000ea9, 0x00000ebc, 0x00000edf,
// Entry 80 - 9F
- 0x00000f1b, 0x00000f3c, 0x00000f63, 0x00000fc2,
- 0x00000fc9, 0x00000fd3, 0x00000fea, 0x00000ffa,
- 0x00001015, 0x00001033, 0x0000103c, 0x0000105b,
- 0x0000107e, 0x0000109c, 0x000010d7, 0x00001107,
- 0x0000113b, 0x0000116a, 0x0000117b, 0x000011b2,
- 0x000011fa, 0x00001217, 0x0000124a, 0x000012ab,
- 0x000012c6, 0x000012fb, 0x0000132b, 0x0000134b,
- 0x0000137d, 0x0000139c, 0x00001403, 0x0000144e,
+ 0x00000ef5, 0x00000f1b, 0x00000f3c, 0x00000f63,
+ 0x00000fc2, 0x00000fc9, 0x00000fd3, 0x00000fea,
+ 0x00000ffa, 0x00001015, 0x00001033, 0x0000103c,
+ 0x0000105b, 0x0000107e, 0x0000109c, 0x000010d7,
+ 0x00001107, 0x0000113b, 0x0000116a, 0x0000117b,
+ 0x000011b2, 0x000011fa, 0x00001217, 0x0000124a,
+ 0x000012ab, 0x000012c6, 0x000012fb, 0x0000132b,
+ 0x0000134b, 0x0000137d, 0x0000139c, 0x00001403,
// Entry A0 - BF
- 0x00001465, 0x0000148e, 0x000014a4, 0x000014d7,
- 0x000014ff, 0x00001571, 0x000015d6, 0x000015f3,
- 0x00001600, 0x0000162f, 0x0000164c, 0x0000165d,
- 0x000016a3, 0x000016c9, 0x000016ed, 0x00001714,
+ 0x0000144e, 0x00001465, 0x0000148e, 0x000014a4,
+ 0x000014d7, 0x000014ff, 0x00001571, 0x000015d6,
+ 0x000015f3, 0x00001600, 0x0000162f, 0x0000164c,
+ 0x0000165d, 0x000016a3, 0x000016c9, 0x000016ed,
0x00001714,
} // Size: 732 bytes
@@ -833,45 +1025,45 @@ var jaIndex = []uint32{ // 177 elements
0x00000424, 0x00000455, 0x00000463, 0x0000047c,
// Entry 20 - 3F
0x000004a7, 0x000004bb, 0x000004ed, 0x00000540,
- 0x00000564, 0x00000583, 0x000005ae, 0x000005df,
- 0x00000614, 0x00000644, 0x0000067b, 0x0000068a,
- 0x000006bb, 0x000006ef, 0x00000722, 0x00000765,
- 0x00000793, 0x00000796, 0x00000798, 0x000007af,
- 0x000007c6, 0x00000831, 0x0000083b, 0x00000857,
- 0x0000085f, 0x0000086d, 0x0000087b, 0x00000886,
- 0x0000089d, 0x000008a2, 0x000008b0, 0x000008bf,
+ 0x00000564, 0x00000583, 0x000005ae, 0x000005ae,
+ 0x000005df, 0x00000614, 0x00000644, 0x0000067b,
+ 0x0000068a, 0x000006bb, 0x000006ef, 0x00000722,
+ 0x00000765, 0x00000793, 0x00000796, 0x00000798,
+ 0x000007af, 0x000007c6, 0x00000831, 0x0000083b,
+ 0x00000857, 0x0000085f, 0x0000086d, 0x0000087b,
+ 0x00000886, 0x0000089d, 0x000008a2, 0x000008b0,
// Entry 40 - 5F
- 0x000008d0, 0x000008dd, 0x000008f4, 0x00000914,
- 0x00000934, 0x0000093c, 0x00000943, 0x0000096b,
- 0x0000099c, 0x000009ca, 0x000009f8, 0x00000a18,
- 0x00000a1f, 0x00000a3b, 0x00000a51, 0x00000a5d,
- 0x00000a6c, 0x00000a75, 0x00000ace, 0x00000c02,
- 0x00000c0d, 0x00000c1d, 0x00000c29, 0x00000c39,
- 0x00000c52, 0x00000c81, 0x00000caf, 0x00000cd7,
- 0x00000d26, 0x00000d57, 0x00000d7c, 0x00000dce,
+ 0x000008bf, 0x000008d0, 0x000008dd, 0x000008f4,
+ 0x00000914, 0x00000934, 0x0000093c, 0x00000943,
+ 0x0000096b, 0x0000099c, 0x000009ca, 0x000009f8,
+ 0x00000a18, 0x00000a1f, 0x00000a3b, 0x00000a51,
+ 0x00000a5d, 0x00000a6c, 0x00000a75, 0x00000ace,
+ 0x00000c02, 0x00000c0d, 0x00000c1d, 0x00000c29,
+ 0x00000c39, 0x00000c52, 0x00000c81, 0x00000caf,
+ 0x00000cd7, 0x00000d26, 0x00000d57, 0x00000d7c,
// Entry 60 - 7F
- 0x00000dd5, 0x00000de2, 0x00000de9, 0x00000df6,
- 0x00000e06, 0x00000e0d, 0x00000e1b, 0x00000e2f,
- 0x00000e4c, 0x00000e53, 0x00000e6a, 0x00000eb4,
- 0x00000edf, 0x00000efc, 0x00000f12, 0x00000f47,
- 0x00000f5c, 0x00000f76, 0x00000fb8, 0x00000fd3,
- 0x00000fe2, 0x00000ff7, 0x00001014, 0x0000104c,
- 0x00001057, 0x00001077, 0x00001088, 0x00001096,
- 0x000010aa, 0x000010c4, 0x000010f6, 0x00001110,
+ 0x00000dce, 0x00000dd5, 0x00000de2, 0x00000de9,
+ 0x00000df6, 0x00000e06, 0x00000e0d, 0x00000e1b,
+ 0x00000e2f, 0x00000e4c, 0x00000e53, 0x00000e6a,
+ 0x00000eb4, 0x00000edf, 0x00000efc, 0x00000f12,
+ 0x00000f47, 0x00000f5c, 0x00000f76, 0x00000fb8,
+ 0x00000fd3, 0x00000fe2, 0x00000ff7, 0x00001014,
+ 0x0000104c, 0x00001057, 0x00001077, 0x00001088,
+ 0x00001096, 0x000010aa, 0x000010c4, 0x000010f6,
// Entry 80 - 9F
- 0x00001142, 0x00001161, 0x0000118a, 0x000011f2,
- 0x000011ff, 0x0000120a, 0x0000122d, 0x00001243,
- 0x00001265, 0x00001299, 0x000012aa, 0x000012e5,
- 0x0000130e, 0x00001334, 0x00001381, 0x000013bf,
- 0x0000140b, 0x00001443, 0x00001468, 0x000014a0,
- 0x000014e4, 0x00001509, 0x0000152c, 0x00001568,
- 0x0000158b, 0x000015c6, 0x000015f7, 0x0000161c,
- 0x00001651, 0x00001676, 0x000016b1, 0x00001704,
+ 0x00001110, 0x00001142, 0x00001161, 0x0000118a,
+ 0x000011f2, 0x000011ff, 0x0000120a, 0x0000122d,
+ 0x00001243, 0x00001265, 0x00001299, 0x000012aa,
+ 0x000012e5, 0x0000130e, 0x00001334, 0x00001381,
+ 0x000013bf, 0x0000140b, 0x00001443, 0x00001468,
+ 0x000014a0, 0x000014e4, 0x00001509, 0x0000152c,
+ 0x00001568, 0x0000158b, 0x000015c6, 0x000015f7,
+ 0x0000161c, 0x00001651, 0x00001676, 0x000016b1,
// Entry A0 - BF
- 0x00001735, 0x0000175f, 0x00001787, 0x000017bd,
- 0x000017d7, 0x0000185b, 0x000018c0, 0x000018ea,
- 0x000018fa, 0x0000192d, 0x00001962, 0x00001974,
- 0x000019ba, 0x000019ee, 0x00001a22, 0x00001a62,
+ 0x00001704, 0x00001735, 0x0000175f, 0x00001787,
+ 0x000017bd, 0x000017d7, 0x0000185b, 0x000018c0,
+ 0x000018ea, 0x000018fa, 0x0000192d, 0x00001962,
+ 0x00001974, 0x000019ba, 0x000019ee, 0x00001a22,
0x00001a62,
} // Size: 732 bytes
@@ -933,6 +1125,64 @@ const jaData string = "" + // Size: 6754 bytes
"tp2: Framer %[1]p: %[2]v を書き込みました\x02http2: Framer %[1]p: %[2]v を読み込みました" +
"\x02http2: hpack フィールド %+[1]v をデコードしました"
+var plIndex = []uint32{ // 177 elements
+ // Entry 0 - 1F
+ 0x00000000, 0x00000007, 0x00000007, 0x00000007,
+ 0x0000001e, 0x0000001e, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ // Entry 20 - 3F
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ // Entry 40 - 5F
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ // Entry 60 - 7F
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ // Entry 80 - 9F
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ // Entry A0 - BF
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b, 0x0000005b, 0x0000005b, 0x0000005b,
+ 0x0000005b,
+} // Size: 732 bytes
+
+const plData string = "" + // Size: 91 bytes
+ "\x02Błąd\x02Opcje wiersza poleceń\x02Musisz użyć 64-bitowej wersji WireG" +
+ "uard na tym komputerze."
+
var ruIndex = []uint32{ // 177 elements
// Entry 0 - 1F
0x00000000, 0x0000000d, 0x000000a9, 0x000000d4,
@@ -945,49 +1195,49 @@ var ruIndex = []uint32{ // 177 elements
0x0000062a, 0x00000662, 0x0000067f, 0x000006a1,
// Entry 20 - 3F
0x000006f7, 0x00000720, 0x00000775, 0x000007b4,
- 0x000007d7, 0x00000806, 0x00000839, 0x0000086b,
- 0x000008a5, 0x000008da, 0x00000924, 0x0000093a,
- 0x0000097e, 0x000009be, 0x00000a01, 0x00000a39,
- 0x00000a70, 0x00000a73, 0x00000a76, 0x00000a83,
- 0x00000a9c, 0x00000b5a, 0x00000b69, 0x00000b88,
- 0x00000b96, 0x00000ba8, 0x00000bbc, 0x00000bd9,
- 0x00000be3, 0x00000be8, 0x00000bf9, 0x00000c0d,
+ 0x000007d7, 0x00000806, 0x00000839, 0x00000839,
+ 0x0000086b, 0x000008a5, 0x000008da, 0x00000924,
+ 0x0000093a, 0x0000097e, 0x000009be, 0x00000a01,
+ 0x00000a39, 0x00000a70, 0x00000a73, 0x00000a76,
+ 0x00000a83, 0x00000a9c, 0x00000b5a, 0x00000b69,
+ 0x00000b88, 0x00000b96, 0x00000baa, 0x00000bc0,
+ 0x00000bdd, 0x00000be7, 0x00000bec, 0x00000bfd,
// Entry 40 - 5F
- 0x00000c22, 0x00000c4a, 0x00000c68, 0x00000c99,
- 0x00000cc4, 0x00000cd6, 0x00000ce7, 0x00000d1a,
- 0x00000d65, 0x00000d9d, 0x00000dd3, 0x00000ded,
- 0x00000df4, 0x00000e12, 0x00000e3c, 0x00000e45,
- 0x00000e63, 0x00000e7a, 0x00000eb8, 0x00001096,
- 0x000010aa, 0x000010b7, 0x000010d2, 0x000010f2,
- 0x0000110d, 0x00001147, 0x0000117f, 0x000011aa,
- 0x000011f2, 0x00001239, 0x0000125e, 0x000012c0,
+ 0x00000c11, 0x00000c26, 0x00000c4e, 0x00000c6c,
+ 0x00000c9d, 0x00000cc8, 0x00000cda, 0x00000ceb,
+ 0x00000d1e, 0x00000d69, 0x00000da1, 0x00000dd7,
+ 0x00000df1, 0x00000df8, 0x00000e16, 0x00000e40,
+ 0x00000e49, 0x00000e67, 0x00000e7e, 0x00000ebc,
+ 0x0000109a, 0x000010ae, 0x000010bb, 0x000010d6,
+ 0x000010f6, 0x00001111, 0x0000114b, 0x00001183,
+ 0x000011ae, 0x000011f6, 0x0000123d, 0x00001262,
// Entry 60 - 7F
- 0x000012d3, 0x000012ea, 0x000012fb, 0x00001310,
- 0x0000133a, 0x00001347, 0x0000135d, 0x00001374,
- 0x00001397, 0x000013a2, 0x000013c4, 0x0000140c,
- 0x00001436, 0x00001447, 0x00001463, 0x000014de,
- 0x000014f5, 0x00001523, 0x00001577, 0x0000159d,
- 0x000015c0, 0x000015d5, 0x00001601, 0x00001633,
- 0x0000163f, 0x00001665, 0x00001676, 0x0000168a,
- 0x0000169e, 0x000016b7, 0x000016e0, 0x000016fb,
+ 0x000012c4, 0x000012d7, 0x000012ee, 0x000012ff,
+ 0x00001314, 0x0000133e, 0x0000134b, 0x00001361,
+ 0x00001378, 0x0000139b, 0x000013a6, 0x000013c8,
+ 0x00001410, 0x0000143a, 0x0000144b, 0x00001467,
+ 0x000014e2, 0x000014f9, 0x00001527, 0x0000157b,
+ 0x000015a1, 0x000015c4, 0x000015d9, 0x00001605,
+ 0x00001637, 0x00001643, 0x00001669, 0x0000167a,
+ 0x0000168e, 0x000016a2, 0x000016bb, 0x000016e4,
// Entry 80 - 9F
- 0x00001722, 0x00001749, 0x00001779, 0x00001804,
- 0x00001813, 0x0000182f, 0x00001860, 0x00001880,
- 0x000018b1, 0x000018ec, 0x00001904, 0x00001943,
- 0x00001984, 0x000019b6, 0x00001a06, 0x00001a60,
- 0x00001aa7, 0x00001af7, 0x00001b25, 0x00001bf9,
- 0x00001cf5, 0x00001d27, 0x00001dc7, 0x00001f0f,
- 0x00001f39, 0x00001f89, 0x00001fd4, 0x00002006,
- 0x00002040, 0x00002072, 0x00002169, 0x000021c6,
+ 0x000016ff, 0x00001726, 0x0000174d, 0x0000177d,
+ 0x00001808, 0x00001817, 0x00001833, 0x00001864,
+ 0x00001884, 0x000018b5, 0x000018f0, 0x00001908,
+ 0x00001947, 0x00001988, 0x000019ba, 0x00001a0a,
+ 0x00001a64, 0x00001aab, 0x00001afb, 0x00001b29,
+ 0x00001bfd, 0x00001cf9, 0x00001d2b, 0x00001dcb,
+ 0x00001f13, 0x00001f3d, 0x00001f8d, 0x00001fd8,
+ 0x0000200a, 0x00002044, 0x00002076, 0x0000216d,
// Entry A0 - BF
- 0x000021f4, 0x0000222c, 0x0000225e, 0x000022ab,
- 0x000022d4, 0x0000236e, 0x000023f6, 0x0000242e,
- 0x0000244c, 0x0000246f, 0x000024a8, 0x000024ca,
- 0x0000253e, 0x00002568, 0x00002596, 0x000025ca,
- 0x000025ca,
+ 0x000021ca, 0x000021f8, 0x00002230, 0x00002262,
+ 0x000022af, 0x000022d8, 0x00002372, 0x000023fa,
+ 0x00002432, 0x00002450, 0x00002473, 0x000024ac,
+ 0x000024ce, 0x00002542, 0x0000256c, 0x0000259a,
+ 0x000025ce,
} // Size: 732 bytes
-const ruData string = "" + // Size: 9674 bytes
+const ruData string = "" + // Size: 9678 bytes
"\x02Ошибка\x02(нет аргумента): получить права администратора и установит" +
"ь административную службу\x02Использование: %[1]s [\x0a%[2]s]\x02Параме" +
"тры командной строки\x02Ошибка определения или процесс работает как WOW" +
@@ -1019,7 +1269,7 @@ const ruData string = "" + // Size: 9674 bytes
"для секции Пира\x02, \x02, \x02О WireGuard\x02Логотип WireGuard\x02Верс" +
"ия приложения: %[1]s\x0aВерсия бэкэнда: %[2]s\x0aВерсия перехода: %[3]s" +
"\x0aОперационная система: %[4]s\x0aАрхитектура: %[5]s\x02Закрыть\x02♥ &П" +
- "ожертвовать!\x02Статус:\x02&Отключен\x02&Подключен\x02Публичный ключ:" +
+ "ожертвовать!\x02Статус:\x02&Отключить\x02&Подключить\x02Публичный ключ:" +
"\x02Порт:\x02MTU:\x02IP-адреса:\x02DNS-серверы:\x02Общий ключ:\x02Разреш" +
"енные IP-адреса:\x02IP-адрес сервера:\x02Поддерживание соединения:\x02П" +
"оследнее рукопожатие:\x02Передача:\x02включено\x02Получено %[1]s, отпра" +
@@ -1096,45 +1346,45 @@ var slIndex = []uint32{ // 177 elements
0x0000045d, 0x00000483, 0x00000490, 0x0000049f,
// Entry 20 - 3F
0x000004c3, 0x000004da, 0x0000050b, 0x0000053f,
- 0x00000554, 0x0000056b, 0x00000586, 0x000005a1,
- 0x000005c6, 0x000005e6, 0x00000608, 0x00000616,
- 0x0000063d, 0x0000065d, 0x0000067f, 0x0000069d,
- 0x000006bf, 0x000006c2, 0x000006c4, 0x000006d1,
- 0x000006ef, 0x00000764, 0x0000076a, 0x00000778,
- 0x00000780, 0x0000078d, 0x00000798, 0x000007a6,
- 0x000007b9, 0x000007be, 0x000007c7, 0x000007d7,
+ 0x00000554, 0x0000056b, 0x00000586, 0x00000586,
+ 0x000005a1, 0x000005c6, 0x000005e6, 0x00000608,
+ 0x00000616, 0x0000063d, 0x0000065d, 0x0000067f,
+ 0x0000069d, 0x000006bf, 0x000006c2, 0x000006c4,
+ 0x000006d1, 0x000006ef, 0x00000764, 0x0000076a,
+ 0x00000778, 0x00000780, 0x0000078d, 0x00000798,
+ 0x000007a6, 0x000007b9, 0x000007be, 0x000007c7,
// Entry 40 - 5F
- 0x000007ed, 0x000007fe, 0x0000080e, 0x0000082a,
- 0x0000083c, 0x00000844, 0x0000084f, 0x0000086c,
- 0x00000890, 0x000008ae, 0x000008ce, 0x000008dd,
- 0x000008e5, 0x000008f7, 0x00000903, 0x00000909,
- 0x00000918, 0x00000922, 0x0000094c, 0x00000a6d,
- 0x00000a75, 0x00000a7f, 0x00000a8f, 0x00000a9c,
- 0x00000aac, 0x00000ace, 0x00000afe, 0x00000b10,
- 0x00000b3b, 0x00000b62, 0x00000b80, 0x00000bbb,
+ 0x000007d7, 0x000007ed, 0x000007fe, 0x0000080e,
+ 0x0000082a, 0x0000083c, 0x00000844, 0x0000084f,
+ 0x0000086c, 0x00000890, 0x000008ae, 0x000008ce,
+ 0x000008dd, 0x000008e5, 0x000008f7, 0x00000903,
+ 0x00000909, 0x00000918, 0x00000922, 0x0000094c,
+ 0x00000a6d, 0x00000a75, 0x00000a7f, 0x00000a8f,
+ 0x00000a9c, 0x00000aac, 0x00000ace, 0x00000afe,
+ 0x00000b10, 0x00000b3b, 0x00000b62, 0x00000b80,
// Entry 60 - 7F
- 0x00000bc3, 0x00000bcf, 0x00000bd9, 0x00000be7,
- 0x00000bf6, 0x00000bfe, 0x00000c07, 0x00000c13,
- 0x00000c2b, 0x00000c30, 0x00000c46, 0x00000c7e,
- 0x00000c98, 0x00000cab, 0x00000cb9, 0x00000ce8,
- 0x00000cfe, 0x00000d1b, 0x00000d56, 0x00000d6d,
- 0x00000d7c, 0x00000d8a, 0x00000da1, 0x00000dc0,
- 0x00000dc7, 0x00000ddf, 0x00000df0, 0x00000dfe,
- 0x00000e0d, 0x00000e21, 0x00000e3f, 0x00000e55,
+ 0x00000bbb, 0x00000bc3, 0x00000bcf, 0x00000bd9,
+ 0x00000be7, 0x00000bf6, 0x00000bfe, 0x00000c07,
+ 0x00000c13, 0x00000c2b, 0x00000c30, 0x00000c46,
+ 0x00000c7e, 0x00000c98, 0x00000cab, 0x00000cb9,
+ 0x00000ce8, 0x00000cfe, 0x00000d1b, 0x00000d56,
+ 0x00000d6d, 0x00000d7c, 0x00000d8a, 0x00000da1,
+ 0x00000dc0, 0x00000dc7, 0x00000ddf, 0x00000df0,
+ 0x00000dfe, 0x00000e0d, 0x00000e21, 0x00000e3f,
// Entry 80 - 9F
- 0x00000e75, 0x00000e8e, 0x00000eb1, 0x00000ef6,
- 0x00000efd, 0x00000f04, 0x00000f1d, 0x00000f29,
- 0x00000f41, 0x00000f59, 0x00000f63, 0x00000f81,
- 0x00000f9a, 0x00000fb3, 0x00000fe1, 0x00001014,
- 0x00001039, 0x0000105f, 0x0000106f, 0x000010d3,
- 0x0000115e, 0x0000117f, 0x000011e4, 0x000012d1,
- 0x000012ec, 0x00001327, 0x00001352, 0x0000136c,
- 0x00001394, 0x000013af, 0x00001463, 0x000014b0,
+ 0x00000e55, 0x00000e75, 0x00000e8e, 0x00000eb1,
+ 0x00000ef6, 0x00000efd, 0x00000f04, 0x00000f1d,
+ 0x00000f29, 0x00000f41, 0x00000f59, 0x00000f63,
+ 0x00000f81, 0x00000f9a, 0x00000fb3, 0x00000fe1,
+ 0x00001014, 0x00001039, 0x0000105f, 0x0000106f,
+ 0x000010d3, 0x0000115e, 0x0000117f, 0x000011e4,
+ 0x000012d1, 0x000012ec, 0x00001327, 0x00001352,
+ 0x0000136c, 0x00001394, 0x000013af, 0x00001463,
// Entry A0 - BF
- 0x000014c9, 0x000014f4, 0x00001511, 0x00001542,
- 0x00001562, 0x000015cf, 0x00001622, 0x0000163e,
- 0x0000164c, 0x00001673, 0x00001695, 0x000016a7,
- 0x000016ef, 0x00001713, 0x00001737, 0x0000175c,
+ 0x000014b0, 0x000014c9, 0x000014f4, 0x00001511,
+ 0x00001542, 0x00001562, 0x000015cf, 0x00001622,
+ 0x0000163e, 0x0000164c, 0x00001673, 0x00001695,
+ 0x000016a7, 0x000016ef, 0x00001713, 0x00001737,
0x0000175c,
} // Size: 732 bytes
@@ -1237,104 +1487,277 @@ const slData string = "" + // Size: 5980 bytes
" %[2]v\x02http2: Framer %[1]p: prebrano %[2]v\x02http2: dekodirano polje" +
" hpack %+[1]v"
+var viIndex = []uint32{ // 177 elements
+ // Entry 0 - 1F
+ 0x00000000, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000006,
+ 0x00000006, 0x00000006, 0x00000006, 0x00000011,
+ 0x00000011, 0x00000023, 0x00000036, 0x00000049,
+ 0x0000005c, 0x0000006f, 0x0000007e, 0x0000007e,
+ 0x0000007e, 0x0000007e, 0x0000007e, 0x0000007e,
+ 0x0000007e, 0x000000a0, 0x000000a0, 0x000000a0,
+ 0x000000a0, 0x000000a0, 0x000000a0, 0x000000c0,
+ // Entry 20 - 3F
+ 0x000000c0, 0x000000c0, 0x000000c0, 0x000000c0,
+ 0x000000c0, 0x000000db, 0x000000db, 0x000000db,
+ 0x000000db, 0x000000db, 0x000000db, 0x000000db,
+ 0x000000db, 0x000000db, 0x000000db, 0x000000db,
+ 0x000000db, 0x000000db, 0x000000db, 0x000000db,
+ 0x000000f5, 0x00000104, 0x0000019b, 0x000001a2,
+ 0x000001a2, 0x000001b1, 0x000001b1, 0x000001b1,
+ 0x000001b1, 0x000001b1, 0x000001b1, 0x000001b1,
+ // Entry 40 - 5F
+ 0x000001b1, 0x000001b1, 0x000001b1, 0x000001c0,
+ 0x000001c0, 0x000001c0, 0x000001c0, 0x000001d2,
+ 0x000001ec, 0x00000218, 0x00000236, 0x00000257,
+ 0x00000257, 0x0000026a, 0x00000274, 0x00000286,
+ 0x00000286, 0x00000286, 0x00000286, 0x00000286,
+ 0x00000286, 0x00000286, 0x0000028c, 0x0000028c,
+ 0x000002a3, 0x000002bb, 0x000002e1, 0x00000302,
+ 0x00000317, 0x00000344, 0x00000344, 0x00000344,
+ // Entry 60 - 7F
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ // Entry 80 - 9F
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ // Entry A0 - BF
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ 0x00000344, 0x00000344, 0x00000344, 0x00000344,
+ 0x00000344,
+} // Size: 732 bytes
+
+const viData string = "" + // Size: 836 bytes
+ "\x02Lỗi\x02Vừa xong\x14\x01\x81\x01\x00\x00\x0b\x02%[1]d năm\x14\x01\x81" +
+ "\x01\x00\x00\x0c\x02%[1]d ngày\x14\x01\x81\x01\x00\x00\x0c\x02%[1]d giờ" +
+ "\x14\x01\x81\x01\x00\x00\x0c\x02%[1]d phút\x14\x01\x81\x01\x00\x00\x0c" +
+ "\x02%[1]d giây\x02%[1]s trước\x02Địa chỉ IP không hợp lệ\x02Cổng (port) " +
+ "không hợp lệ\x02Tên VPN không hợp lệ\x02Thông tin về WireGuard\x02Logo W" +
+ "ireGuard\x02Phiên bản ứng dụng: %[1]s\x0aPhiên bản Golang của WG: %[2]s" +
+ "\x0aPhiên bản Golang: %[3]s\x0aHệ điều hành: %[4]s\x0aKiến trúc xử lý: %" +
+ "[5]s\x02Đóng\x02Trạng thái:\x02Đầu cuối:\x02đã kích hoạt\x02Nhận %[1]s, " +
+ "gứi %[2]s\x02Không thể xác định tình trạng VPN\x02Không thể kích hoạt VP" +
+ "N\x02Không thể vô hiệu hóa VPN\x02Mạng ngang hàng\x02Tạo VPN\x02Chỉnh sử" +
+ "a VPN\x02Huỷ\x02Tên không hợp lệ\x02Yêu cầu nhập tên.\x02Tên VPN ‘%[1]s'" +
+ " không hợp lệ.\x02Không thể liệt kê các VPN\x02VPN đã tồn tại\x02Đã tồn " +
+ "tại VPN với tên ‘%[1]s’."
+
var zh_CNIndex = []uint32{ // 177 elements
// Entry 0 - 1F
- 0x00000000, 0x00000007, 0x00000031, 0x00000048,
- 0x00000058, 0x0000008e, 0x000000cc, 0x000000f2,
- 0x00000137, 0x00000191, 0x000001c8, 0x000001cf,
- 0x000001e5, 0x000001f6, 0x00000207, 0x0000021b,
- 0x0000022f, 0x00000240, 0x0000024a, 0x00000252,
- 0x0000025f, 0x0000026c, 0x00000279, 0x00000286,
- 0x00000293, 0x000002a2, 0x000002bb, 0x000002d1,
- 0x000002e4, 0x00000306, 0x00000311, 0x0000031e,
+ 0x00000000, 0x00000007, 0x00000030, 0x00000047,
+ 0x00000057, 0x0000008b, 0x000000c8, 0x000000ee,
+ 0x00000133, 0x0000018d, 0x000001c4, 0x000001cb,
+ 0x000001e4, 0x000001f5, 0x00000206, 0x0000021a,
+ 0x0000022e, 0x0000023f, 0x00000249, 0x00000251,
+ 0x0000025e, 0x0000026b, 0x00000278, 0x00000285,
+ 0x00000292, 0x000002a1, 0x000002ba, 0x000002dc,
+ 0x00000303, 0x0000032b, 0x00000336, 0x00000343,
// Entry 20 - 3F
- 0x00000337, 0x0000034f, 0x00000373, 0x000003b1,
- 0x000003ca, 0x000003dd, 0x000003f9, 0x0000040f,
- 0x0000042e, 0x00000448, 0x00000464, 0x00000474,
- 0x00000496, 0x000004ac, 0x000004c5, 0x000004dd,
- 0x000004f6, 0x000004f9, 0x000004fc, 0x0000050d,
- 0x00000524, 0x0000058c, 0x00000593, 0x000005a0,
- 0x000005aa, 0x000005b2, 0x000005ba, 0x000005c2,
- 0x000005d0, 0x000005d5, 0x000005df, 0x000005ee,
+ 0x0000035c, 0x00000374, 0x0000039e, 0x000003cc,
+ 0x000003e5, 0x000003f8, 0x00000414, 0x00000439,
+ 0x0000044c, 0x0000046b, 0x00000485, 0x000004a1,
+ 0x000004ad, 0x000004cf, 0x000004e5, 0x000004fe,
+ 0x00000516, 0x0000052f, 0x00000533, 0x00000535,
+ 0x00000546, 0x0000055c, 0x000005c4, 0x000005cb,
+ 0x000005dc, 0x000005e4, 0x000005f0, 0x000005fc,
+ 0x00000604, 0x00000612, 0x00000617, 0x0000061f,
// Entry 40 - 5F
- 0x00000601, 0x00000611, 0x0000061b, 0x0000062f,
- 0x00000640, 0x00000648, 0x00000652, 0x00000673,
- 0x0000068c, 0x0000069f, 0x000006b2, 0x000006c1,
- 0x000006c8, 0x000006d8, 0x000006e5, 0x000006ee,
- 0x000006f7, 0x00000704, 0x0000072f, 0x00000814,
- 0x0000081c, 0x00000823, 0x0000082e, 0x0000083b,
- 0x00000851, 0x00000871, 0x0000088a, 0x0000089a,
- 0x000008c8, 0x000008e1, 0x000008f4, 0x00000930,
+ 0x0000062e, 0x0000063f, 0x0000064d, 0x00000655,
+ 0x00000669, 0x0000067d, 0x00000685, 0x0000068f,
+ 0x000006aa, 0x000006c3, 0x000006d6, 0x000006ef,
+ 0x000006fd, 0x00000704, 0x00000714, 0x00000721,
+ 0x0000072e, 0x0000073b, 0x00000744, 0x00000773,
+ 0x0000081d, 0x00000829, 0x00000830, 0x0000083d,
+ 0x0000084a, 0x00000860, 0x0000087e, 0x00000897,
+ 0x000008a7, 0x000008c8, 0x000008e1, 0x000008f4,
// Entry 60 - 7F
- 0x00000937, 0x00000941, 0x0000094b, 0x00000955,
- 0x00000962, 0x00000969, 0x00000971, 0x00000980,
- 0x00000994, 0x0000099b, 0x000009a8, 0x000009d7,
- 0x000009ed, 0x00000a02, 0x00000a0f, 0x00000a32,
- 0x00000a48, 0x00000a5f, 0x00000a8a, 0x00000aa1,
- 0x00000ab1, 0x00000abe, 0x00000acf, 0x00000ae9,
- 0x00000af1, 0x00000b08, 0x00000b19, 0x00000b29,
- 0x00000b39, 0x00000b50, 0x00000b73, 0x00000b8a,
+ 0x0000092f, 0x00000939, 0x00000946, 0x00000950,
+ 0x0000095d, 0x00000964, 0x0000096b, 0x00000977,
+ 0x00000983, 0x00000992, 0x00000999, 0x000009a6,
+ 0x000009d8, 0x000009e5, 0x000009fe, 0x00000a0b,
+ 0x00000a31, 0x00000a43, 0x00000a5a, 0x00000a85,
+ 0x00000a9a, 0x00000aa9, 0x00000ab5, 0x00000aca,
+ 0x00000ae8, 0x00000af4, 0x00000b0b, 0x00000b1c,
+ 0x00000b2a, 0x00000b38, 0x00000b4c, 0x00000b6a,
// Entry 80 - 9F
- 0x00000ba4, 0x00000bbd, 0x00000bda, 0x00000c1f,
- 0x00000c26, 0x00000c2e, 0x00000c42, 0x00000c4f,
- 0x00000c65, 0x00000c7e, 0x00000c86, 0x00000ca3,
- 0x00000cbe, 0x00000cd5, 0x00000cf9, 0x00000d1c,
- 0x00000d47, 0x00000d62, 0x00000d6f, 0x00000d8d,
- 0x00000dc3, 0x00000dd6, 0x00000df4, 0x00000e24,
- 0x00000e3d, 0x00000e65, 0x00000e87, 0x00000e9a,
- 0x00000eb6, 0x00000ec9, 0x00000eef, 0x00000f2d,
+ 0x00000b7e, 0x00000ba2, 0x00000bb2, 0x00000bc3,
+ 0x00000c05, 0x00000c0c, 0x00000c18, 0x00000c30,
+ 0x00000c3d, 0x00000c50, 0x00000c73, 0x00000c8b,
+ 0x00000cb6, 0x00000cd1, 0x00000ce9, 0x00000d03,
+ 0x00000d23, 0x00000d50, 0x00000d6a, 0x00000d77,
+ 0x00000d98, 0x00000dce, 0x00000de1, 0x00000dff,
+ 0x00000e32, 0x00000e4a, 0x00000e74, 0x00000e92,
+ 0x00000ea5, 0x00000ebf, 0x00000ed2, 0x00000ef9,
// Entry A0 - BF
- 0x00000f43, 0x00000f63, 0x00000f76, 0x00000f9a,
- 0x00000fb5, 0x00001011, 0x00001056, 0x0000106c,
- 0x00001079, 0x00001095, 0x000010b3, 0x000010c6,
- 0x000010fa, 0x00001122, 0x0000114a, 0x0000116f,
- 0x0000116f,
+ 0x00000f3a, 0x00000f50, 0x00000f6b, 0x00000f8e,
+ 0x00000fbb, 0x00000fd6, 0x00001037, 0x0000106f,
+ 0x00001084, 0x00001091, 0x000010ac, 0x000010c9,
+ 0x000010db, 0x0000110f, 0x00001137, 0x0000115f,
+ 0x00001184,
} // Size: 732 bytes
-const zh_CNData string = "" + // Size: 4463 bytes
- "\x02错误\x02(无参数):提升并安装管理服务\x02用法: %[1]s [\x0a%[2]s]\x02命令行选项\x02无法确定该进程是否" +
- "在WOW64下运行: %[1]v\x02您必须在此计算机上使用64位版本的 WireGuard 。\x02无法打开当前进程令牌: %[1]v" +
+const zh_CNData string = "" + // Size: 4484 bytes
+ "\x02错误\x02(无参数): 提升并安装管理服务\x02用法: %[1]s [\x0a%[2]s]\x02命令行选项\x02无法确定该进程是" +
+ "否在WOW64下运行: %[1]v\x02您必须在此计算机上使用64位版本的 WireGuard。\x02无法打开当前进程令牌: %[1]v" +
"\x02WireGuard 可能只能被内建的 %[1]s 小组中的成员使用。\x02WireGuard 正在运行,但用户界面只能从内建的 %[1" +
- "]s 小组的桌面访问。\x02WireGuard 系统托盘图标在30秒后没有出现。\x02刚刚\x02系统时钟倒转!\x14\x01\x81" +
+ "]s 小组的桌面访问。\x02WireGuard 系统托盘图标在30秒后没有出现。\x02刚刚\x02系统时间倒退了!\x14\x01\x81" +
"\x01\x00\x00\x0a\x02%[1]d 年\x14\x01\x81\x01\x00\x00\x0a\x02%[1]d 天\x14" +
"\x01\x81\x01\x00\x00\x0d\x02%[1]d 小时\x14\x01\x81\x01\x00\x00\x0d\x02%[1]" +
"d 分钟\x14\x01\x81\x01\x00\x00\x0a\x02%[1]d 秒\x02%[1]s 前\x02%[1]d B\x02%.2" +
"[1]f\u00a0KiB\x02%.2[1]f\u00a0MiB\x02%.2[1]f\u00a0GiB\x02%.2[1]f\u00a0Ti" +
- "B\x02%[1]s: %[2]q\x02IP地址无效\x02网络前缀长度无效\x02端点中缺少端口\x02端点主机无效\x02括号应包含一个 " +
- "IPv6 地址\x02MTU 无效\x02端口无效\x02连接保活间隔无效\x02无效的密钥:%[1]v\x02密钥必须解码为正好32字节" +
- "\x02数必须是一个介于 0 至 2^64-1 之间的数字:%[1]v\x02一行中有两个逗号\x02隧道名称无效\x02行必须出现在段落中" +
- "\x02键必须有一个值\x02[Interface] 段落的键无效\x02[Peer] 段落的键无效\x02接口必须有一个私钥\x02【未指定】" +
- "\x02所有节点必须拥有公钥。\x02获取配置时出错\x02接口段落的键无效\x02协议版本必须为 1\x02节点段落的键无效\x02, " +
- "\x02, \x02关于 WireGuard\x02WireGuard 标志图片\x02应用版本: %[1]s\x0aGo 后端版本: %[2]" +
- "s\x0aGo 版本: %[3]s\x0a操作系统: %[4]s\x0a架构: %[5]s\x02关闭\x02♥ &捐助!\x02状态:\x02" +
- "&停用\x02&启动\x02公钥:\x02监听端口:\x02MTU:\x02地址:\x02DNS 服务器:\x02预分享密钥:\x02允许的 I" +
- "P:\x02端点:\x02连接保活间隔:\x02最新的握手:\x02流量:\x02已启用\x02%[1]s 已收到, %[2]s 已发送\x02" +
- "判断隧道状态失败\x02启动隧道失败\x02停用隧道失败\x02接口:%[1]s\x02节点\x02创建新隧道\x02编辑隧道\x02&名称" +
- ":\x02&公钥:\x02(未知)\x02&拦截未经隧道的流量(禁用交换)\x02当配置只有一个节点,且该节点的允许 IP 列表至少包含 0.0" +
- ".0.0/0 或 ::/0 的其中一个 IP 时,隧道服务会使用防火墙规则集来拦截所有进出隧道接口的流量,但 DHCP 和 NDP 除外。" +
- "\x02&保存\x02取消\x02&配置:\x02名称无效\x02名称是必需的。\x02隧道名称 ”%[1]s“ 无效\x02无法列出现有隧道" +
- "\x02隧道已存在\x02另一个同名的隧道 \x22%[1]s\x22 已存在。\x02无法创建新的配置\x02写入文件失败\x02文件”%[1" +
- "]s“ 已存在。\x0a\x0a您确定要覆盖它吗?\x02激活\x02启动中\x02未激活\x02停用中\x02未知状态\x02日志\x02&复" +
- "制\x02选择 &所有\x02&保存到文件…\x02时间\x02记录消息\x02文本文件 (*.txt)|*.txt|All Files (" +
- "*.*)|*.*\x02导出日志到文件\x02&关于 WireGuard…\x02隧道错误\x02%[1]s\x0a\x0a更多信息请查看日志" +
- "\x02%[1]s (已过时)\x02WireGuard 检测错误\x02无法等待 WireGuard 窗口出现: %[1]v\x02WireG" +
- "uard :已停用\x02状态:未知\x02地址:无\x02&管理隧道…\x02&从文件导入隧道…\x02退&出\x02WireGuard 隧道" +
- "错误\x02WireGuard: %[1]s\x02状态: %[1]s\x02地址: %[1]s\x02WireGuard :已启动\x02" +
- "隧道 ”%[1]s“ 已被启动。\x02WireGuard :未启动\x02隧道 %[1]s 已停用。\x02有一项可用更新!\x02Wir" +
- "eGuard 有可用的更新\x02发现一个可用的 WireGuard 更新。强烈建议尽快安装。\x02隧道\x02&编辑\x02添加&空隧道…" +
- "\x02添加隧道\x02移除选择的隧道\x02导出所有隧道到zip\x02&切换\x02导出所有隧道到&zip…\x02编辑 &选择的隧道…" +
- "\x02&移除选择的隧道\x02无法导入选择的配置:%[1]v\x02无法列出现有的隧道: %[1]v\x02另一个同名的隧道 \x22%[1]" +
- "s\x22 已存在\x02无法导入配置:%[1]v\x02导入隧道\x14\x01\x81\x01\x00\x00\x17\x02导入了 %[1" +
- "]d 隧道\x14\x02\x80\x01\x000\x02导入了 %[2]d 个隧道中的 %[1]d 个隧道\x02无法创建隧道\x14" +
- "\x01\x81\x01\x00\x00\x17\x02删除 %[1]d 个隧道\x14\x01\x81\x01\x00\x00)\x02您确定" +
- "要删除 %[1]d 个隧道吗?\x02删除隧道 ”%[1]s“\x02您确定要删除隧道 \x22%[1]s\x22 吗?\x02%[1]s " +
- "您无法撤销此操作。\x02无法删除隧道\x02无法移除隧道: %[1]s\x02无法删除隧道\x14\x01\x81\x01\x00\x00" +
- "\x1f\x02%[1]d 隧道无法被移除。\x02配置文件 (*.zip, *.conf)|*.zip;*.conf|All Files (*" +
- ".*)|*.*\x02从文件导入隧道\x02配置 ZIP 文件 (*.zip)|*.zip\x02导出隧道为Zip\x02%[1]s (未签名构" +
- "建,无更新)\x02退出 WireGuard 时出错\x02因为: %[1]v 无法退出服务。您可能想要从服务管理器中停止 WireGuar" +
- "d 。\x02发现一个可用的 WireGuard 更新。强烈建议尽快安装。\x02状态:等待用户\x02立即更新\x02状态:等待更新服务" +
- "\x02错误:%[1]v。请重试。\x02状态:完成!\x02http2: 成帧器 %[1]p: 解码刚写入的帧失败\x02http2: 成帧器" +
- " %[1]p: 写入了 %[2]v\x02http2: 成帧器 %[1]p: 读取了 %[2]v\x02http2: 解码的 hpack 字段 " +
- "%+[1]v"
+ "B\x02%[1]s: %[2]q\x02IP地址无效\x02网络前缀长度无效\x02对端 (endpoint) 中缺少端口\x02对端主机名 " +
+ "(endpoint host) 无效\x02方括号中应包含一个 IPv6 地址\x02MTU 无效\x02端口无效\x02连接保活间隔无效" +
+ "\x02无效的密钥:%[1]v\x02解码后的密钥长度必须为32字节\x02数值必须介于 0 至 2^64-1 之间: %[1]v\x02一行中" +
+ "有两个逗号\x02隧道名称无效\x02行必须出现在段落中\x02配置项必须要有一个等于号\x02必须有一个值\x02[Interface] " +
+ "段落的键无效\x02[Peer] 段落的键无效\x02接口必须有一个私钥\x02[未指定]\x02所有节点必须拥有公钥。\x02获取配置时出" +
+ "错\x02接口段落的键无效\x02协议版本必须为 1\x02节点段落的键无效\x02、\x02 \x02关于 WireGuard\x02Wi" +
+ "reGuard logo 图片\x02应用版本: %[1]s\x0aGo 后端版本: %[2]s\x0aGo 版本: %[3]s\x0a操作系统" +
+ ": %[4]s\x0a架构: %[5]s\x02关闭\x02♥ 捐助! (&D)\x02状态:\x02断开 (&D)\x02连接 (&A)" +
+ "\x02公钥:\x02监听端口:\x02MTU:\x02地址:\x02DNS 服务器:\x02预共享密钥:\x02允许的 IP:\x02对端:" +
+ "\x02连接保活间隔:\x02上次握手时间:\x02流量:\x02已启用\x02接收 %[1]s, 发送 %[2]s\x02无法确认隧道状态" +
+ "\x02无法连接隧道\x02无法断开隧道连接\x02接口: %[1]s\x02节点\x02创建新隧道\x02编辑隧道\x02名称 (&N):" +
+ "\x02公钥 (&P):\x02(未知)\x02拦截未经隧道的流量 (kill-switch) (&B)\x02只有一个节点,且该节点允许的 I" +
+ "P 中包含 0.0.0.0/0 或 ::/0 时,使用防火墙规则拦截所有未通过隧道的流量 (DHCP 和 NDP 流量除外)。\x02保存 (&" +
+ "S)\x02取消\x02配置 (&C):\x02名称无效\x02必须输入名称。\x02隧道名「%[1]s」无效。\x02无法列出现有隧道\x02" +
+ "隧道已存在\x02隧道名「%[1]s」已存在。\x02无法创建新的配置\x02写入文件失败\x02文件「%[1]s」已存在。\x0a\x0a" +
+ "您确定要覆盖它吗?\x02已连接\x02正在连接\x02已断开\x02正在断开\x02未知\x02日志\x02复制 (&C)\x02全选 (" +
+ "&A)\x02导出… (&S)\x02时间\x02日志消息\x02文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*\x02导出" +
+ "日志\x02关于 WireGuard… (&A)\x02隧道错误\x02%[1]s\x0a\x0a更多信息请查看日志。\x02%[1]s (" +
+ "已过时)\x02WireGuard 检测错误\x02无法等待 WireGuard 窗口出现: %[1]v\x02WireGuard: 已断开" +
+ "\x02状态: 未知\x02地址: 无\x02管理隧道… (&M)\x02从文件导入隧道… (&I)\x02退出 (&E)\x02WireGua" +
+ "rd 隧道错误\x02WireGuard: %[1]s\x02状态: %[1]s\x02地址: %[1]s\x02WireGuard 已连接" +
+ "\x02隧道「%[1]s」已连接。\x02WireGuard 已断开\x02隧道「%[1]s」已断开连接。\x02发现更新!\x02WireGu" +
+ "ard 更新\x02新的 WireGuard 版本发布了。强烈建议您现在安装。\x02隧道\x02编辑 (&E)\x02新建空隧道… (&E)" +
+ "\x02新建隧道\x02删除所选隧道\x02导出所有隧道 (ZIP 压缩包)\x02切换连接状态 (&T)\x02导出所有隧道 (ZIP 压缩包" +
+ ")… (&Z)\x02编辑所选隧道… (&E)\x02删除所选隧道 (&R)\x02无法导入配置: %[1]v\x02无法列出现有隧道: %[1" +
+ "]v\x02另一个同名的隧道「%[1]s」已存在\x02无法导入配置: %[1]v\x02导入隧道\x14\x01\x81\x01\x00" +
+ "\x00\x1a\x02导入了 %[1]d 个隧道\x14\x02\x80\x01\x000\x02导入了 %[2]d 个隧道中的 %[1]d " +
+ "个隧道\x02无法创建隧道\x14\x01\x81\x01\x00\x00\x17\x02删除 %[1]d 个隧道\x14\x01\x81" +
+ "\x01\x00\x00,\x02您确定要删除这 %[1]d 个隧道吗?\x02删除隧道「%[1]s」\x02您确定要删除隧道「%[1]s」吗?" +
+ "\x02%[1]s此操作无法撤销。\x02无法删除隧道\x02无法删除隧道: %[1]s\x02无法删除隧道\x14\x01\x81\x01" +
+ "\x00\x00 \x02无法删除 %[1]d 个隧道。\x02配置文件 (*.zip, *.conf)|*.zip;*.conf|所有文件 (" +
+ "*.*)|*.*\x02从文件导入隧道\x02配置文件 (*.zip)|*.zip\x02导出配置文件 (ZIP 压缩包)\x02%[1]s (" +
+ "未签名版本,禁用自动更新)\x02退出 WireGuard 时出错\x02无法停止服务: %[1]v。您可能需要在服务管理器中手动停止 Wi" +
+ "reGuard 服务。\x02发现新版 WireGuard。强烈建议您现在安装。\x02状态: 等待用户\x02立即更新\x02状态: 等待更新" +
+ "服务\x02错误: %[1]v。请重试。\x02状态: 完成!\x02http2: 成帧器 %[1]p: 解码刚写入的帧失败\x02http" +
+ "2: 成帧器 %[1]p: 写入了 %[2]v\x02http2: 成帧器 %[1]p: 读取了 %[2]v\x02http2: 解码的 hpa" +
+ "ck 字段 %+[1]v"
+
+var zh_TWIndex = []uint32{ // 177 elements
+ // Entry 0 - 1F
+ 0x00000000, 0x00000007, 0x00000037, 0x00000056,
+ 0x00000066, 0x000000a4, 0x000000e3, 0x00000114,
+ 0x00000157, 0x000001bc, 0x000001f8, 0x00000205,
+ 0x0000021e, 0x0000022f, 0x00000240, 0x00000254,
+ 0x00000268, 0x00000279, 0x00000283, 0x0000028c,
+ 0x00000299, 0x000002a6, 0x000002b3, 0x000002c0,
+ 0x000002cf, 0x000002e3, 0x00000305, 0x00000324,
+ 0x0000033e, 0x00000366, 0x00000374, 0x00000384,
+ // Entry 20 - 3F
+ 0x000003aa, 0x000003c3, 0x000003e2, 0x0000040b,
+ 0x00000424, 0x00000437, 0x00000453, 0x0000047b,
+ 0x00000491, 0x000004b0, 0x000004ca, 0x000004f0,
+ 0x000004fc, 0x0000051e, 0x0000053a, 0x00000557,
+ 0x0000056f, 0x00000587, 0x0000058b, 0x0000058d,
+ 0x0000059e, 0x000005b4, 0x00000634, 0x0000063b,
+ 0x0000064e, 0x00000655, 0x00000667, 0x00000673,
+ 0x0000067a, 0x00000684, 0x00000688, 0x0000068f,
+ // Entry 40 - 5F
+ 0x0000069d, 0x000006ad, 0x000006bd, 0x000006c7,
+ 0x000006d8, 0x000006eb, 0x000006f2, 0x000006fc,
+ 0x0000071e, 0x00000737, 0x0000074a, 0x00000763,
+ 0x00000772, 0x00000779, 0x00000789, 0x0000079c,
+ 0x000007a8, 0x000007b4, 0x000007bd, 0x000007f2,
+ 0x00000893, 0x0000089f, 0x000008a6, 0x000008b2,
+ 0x000008c2, 0x000008d8, 0x000008fc, 0x00000915,
+ 0x00000925, 0x00000946, 0x00000965, 0x00000978,
+ // Entry 60 - 7F
+ 0x000009ab, 0x000009b5, 0x000009c5, 0x000009d5,
+ 0x000009e5, 0x000009ec, 0x000009f3, 0x000009ff,
+ 0x00000a0b, 0x00000a1a, 0x00000a21, 0x00000a2e,
+ 0x00000a5d, 0x00000a6d, 0x00000a83, 0x00000a90,
+ 0x00000abf, 0x00000ad4, 0x00000aec, 0x00000b19,
+ 0x00000b2f, 0x00000b3f, 0x00000b4c, 0x00000b5e,
+ 0x00000b76, 0x00000b82, 0x00000b99, 0x00000bab,
+ 0x00000bba, 0x00000bc9, 0x00000bdd, 0x00000bf8,
+ // Entry 80 - 9F
+ 0x00000c12, 0x00000c36, 0x00000c3d, 0x00000c4e,
+ 0x00000ca7, 0x00000cae, 0x00000cba, 0x00000cd2,
+ 0x00000cdf, 0x00000cf2, 0x00000d15, 0x00000d2d,
+ 0x00000d52, 0x00000d6a, 0x00000d85, 0x00000da1,
+ 0x00000dbd, 0x00000de7, 0x00000e03, 0x00000e13,
+ 0x00000e34, 0x00000e67, 0x00000e7a, 0x00000e98,
+ 0x00000ec8, 0x00000edd, 0x00000f07, 0x00000f2d,
+ 0x00000f40, 0x00000f5c, 0x00000f6f, 0x00000f93,
+ // Entry A0 - BF
+ 0x00000fd7, 0x00000ff3, 0x00001011, 0x0000102a,
+ 0x00001060, 0x00001078, 0x000010d9, 0x0000112e,
+ 0x00001147, 0x00001154, 0x00001170, 0x00001195,
+ 0x000011ab, 0x000011e4, 0x00001205, 0x00001225,
+ 0x00001247,
+} // Size: 732 bytes
+
+const zh_TWData string = "" + // Size: 4679 bytes
+ "\x02錯誤\x02(無參數):提升權限並安裝管理服務\x02使用方法: %[1]s [\x0a%[2]s]\x02命令列選項\x02無法確定該" +
+ "處理程序是否在 WOW64 下執行: %[1]v\x02您必須在此電腦上執行 64 位元版本的 WireGuard。\x02無法開啓目前處理" +
+ "程序的權杖: %[1]v\x02WireGuard 可能只能被內建的「%[1]s」群組成員使用。\x02WireGuard 正在執行,但 U" +
+ "I 只能從內建的內建的「%[1]s」群組成員的桌面存取。\x02WireGuard 的工作列圖示在 30 秒後並沒有顯示。\x02就是現在" +
+ "\x02系統時鐘倒退了!\x14\x01\x81\x01\x00\x00\x0a\x02%[1]d 年\x14\x01\x81\x01\x00" +
+ "\x00\x0a\x02%[1]d 天\x14\x01\x81\x01\x00\x00\x0d\x02%[1]d 小時\x14\x01\x81" +
+ "\x01\x00\x00\x0d\x02%[1]d 分鐘\x14\x01\x81\x01\x00\x00\x0a\x02%[1]d 秒\x02%" +
+ "[1]s 前\x02%[1]d\u00a0B\x02%.2[1]f\u00a0KiB\x02%.2[1]f\u00a0MiB\x02%.2[1]" +
+ "f\u00a0GiB\x02%.2[1]f\u00a0TiB\x02%[1]s: %[2]q\x02無效的 IP 位址\x02無效的網路位址首碼" +
+ "長度\x02Endpoint 中沒有指定埠號\x02無效的 Endpoint 位址\x02括號中必須包含一個 IPv6 位址\x02無效的 " +
+ "MTU\x02無效的埠號\x02無效的 Persistent Keepalive 設定\x02無效的金鑰: %[1]v\x02金鑰必須剛好長 3" +
+ "2 bytes\x02數值必須介於 0 到 2^64-1: %[1]v\x02一行中有兩個逗號\x02隧道名稱無效\x02行必須出現在段落中" +
+ "\x02設定的項目必須要有一個等號\x02必須要有一個值\x02[Interface] 中有無效選項\x02[Peer] 中有無效選項\x02I" +
+ "nterface 中必須要有一把私鑰\x02[未指定]\x02每個 Peer 都必須要有公鑰\x02讀取設定時發生錯誤\x02Interface" +
+ " 中的金鑰無效\x02協定版本必須為 1\x02Peer 中的金鑰無效\x02、\x02 \x02關於 WireGuard\x02WireGua" +
+ "rd logo 圖片\x02應用程式版本: %[1]s\x0a後端程式(Go 實作)版本: %[2]s\x0aGo 版本: %[3]s\x0a作" +
+ "業系統: %[4]s\x0a架構: %[5]s\x02關閉\x02♥ 捐贈! (&D)\x02狀態\x02中斷連線 (&D)\x02連線 (" +
+ "&A)\x02公鑰\x02監聽埠\x02MTU\x02位址\x02DNS 伺服器\x02預交換金鑰\x02允許的位址\x02連接點\x02Kee" +
+ "palive 間隔\x02最後交握時間\x02流量\x02已啓用\x02已收到 %[1]s;已傳送 %[2]s\x02無法確認隧道狀態\x02無" +
+ "法連接隧道\x02無法斷開隧道連線\x02[隧道] %[1]s\x02節點\x02建立新隧道\x02編輯隧道設定\x02名稱 (&N)" +
+ "\x02公鑰 (&P)\x02(未知)\x02阻斷未經過隧道的流量(kill-switch) (&B)\x02只有一個節點且該節點允許位址包含 " +
+ "0.0.0.0/0 或 ::/0 時,使用防火牆攔截所有非通過隧道的流量。\x0a(DHCP 及 NDP 流量除外)\x02儲存 (&S)" +
+ "\x02取消\x02設定 (&C)\x02無效的名稱\x02必須填寫名稱。\x02無效的隧道名稱「%[1]s」。\x02無法列出現有隧道\x02" +
+ "隧道已存在\x02已有同名隧道「%[1]s」。\x02無法建立新的隧道設定\x02檔案寫入失敗\x02檔案已存在: %[1]s\x0a" +
+ "\x0a您確定要覆蓋嗎?\x02已連線\x02正在連線…\x02已中斷連線\x02正在中斷…\x02未知\x02日誌\x02複製 (&C)" +
+ "\x02全選 (&A)\x02匯出… (&S)\x02時間\x02日誌訊息\x02純文字 (*.txt)|*.txt|所有檔案 (*.*)|*." +
+ "*\x02匯出日誌…\x02關於 WireGuard (&A)\x02隧道錯誤\x02%[1]s\x0a\x0a如需更多資訊,請查看日誌。" +
+ "\x02%[1]s(已過時)\x02偵測 WireGuard 錯誤\x02無法等待 WireGuard 視窗開啓: %[1]v\x02WireG" +
+ "uard - 未連線\x02[狀態] 未知\x02[位址] 無\x02管理隧道 (&M)\x02從檔案匯入… (&I)\x02離開 (&X)" +
+ "\x02WireGuard 隧道錯誤\x02WireGuard - %[1]s\x02[狀態] %[1]s\x02[位址] %[1]s\x02W" +
+ "ireGuard 已連線\x02已連線至隧道 - %[1]s\x02WireGuard 已中斷連線\x02已中斷與隧道的連線 - %[1]s" +
+ "\x02更新\x02WireGuard 更新\x02更新的 WireGuard 已經為您準備好了。\x0a強烈建議您立即更新 WireGuard" +
+ "。\x02隧道\x02編輯 (&E)\x02新增隧道精靈 (&E)\x02新增隧道\x02刪除選取隧道\x02匯出所有隧道(ZIP 格式)" +
+ "\x02切換連線狀態 (&T)\x02匯出所有隧道至 &ZIP 壓縮檔\x02編輯選取隧道 (&S)\x02刪除已選取隧道 (&R)\x02無法" +
+ "匯入設定: %[1]v\x02無法列出隧道: %[1]v\x02已有另一個同名的隧道「%[1]s」\x02無法匯入設定: %[1]v\x02" +
+ "已匯入隧道\x14\x01\x81\x01\x00\x00\x1a\x02已匯入 %[1]d 個隧道\x14\x02\x80\x01\x00" +
+ "-\x02已匯入 %[1]d 個隧道(共 %[2]d 個)\x02無法建立隧道\x14\x01\x81\x01\x00\x00\x17\x02刪" +
+ "除 %[1]d 個隧道\x14\x01\x81\x01\x00\x00)\x02您確定要刪除 %[1]d 個隧道嗎?\x02刪除隧道 - %" +
+ "[1]s\x02您確定要刪除隧道「%[1]s」嗎?\x02%[1]s\x0a\x0a您將無法復原此操作。\x02無法刪除隧道\x02無法刪除隧道" +
+ ": %[1]s\x02無法刪除隧道\x14\x01\x81\x01\x00\x00\x1d\x02無法刪除 %[1]d 個隧道\x02隧道設" +
+ "定檔 (*.zip, *.conf)|*.zip;*.conf|所有檔案 (*.*)|*.*\x02從檔案中匯入隧道…\x02隧道設定檔 (" +
+ "*.zip)|*.zip\x02匯出隧道設定至…\x02%[1]s(未簽署發行版本,無法自動更新)\x02離開 WireGuard 失敗\x02" +
+ "無法結束服務: %[1]v。\x0a您可能需要手動從服務管理中結束 WireGuard 服務。\x02更新的 WireGuard 已經為您準" +
+ "備好了。\x0a強烈建議您立即進行更新。\x02狀態:等待使用者\x02立即更新\x02狀態:等待更新服務\x02錯誤: %[1]v。請稍後" +
+ "再試。\x02狀態:已完成!\x02http2: Framer %[1]p: failed to decode just-written f" +
+ "rame\x02http2: Framer %[1]p: wrote %[2]v\x02http2: Framer %[1]p: read %[" +
+ "2]v\x02http2: decoded hpack field %+[1]v"
- // Total table size 56355 bytes (55KiB); checksum: 712539F7
+ // Total table size 71232 bytes (69KiB); checksum: E54E1611