mirror of
https://github.com/amnezia-vpn/amneziawg-windows-client.git
synced 2026-07-03 14:05:10 +02:00
Compare commits
9 Commits
sync-fixes
..
1.0.1
| Author | SHA1 | Date | |
|---|---|---|---|
| e20bacac0f | |||
| 0a0e995735 | |||
| 0ed31be796 | |||
| 301b4cc067 | |||
| 1eec79f681 | |||
| 26ccea78a4 | |||
| fb42168fbb | |||
| a9cee076bc | |||
| d8c67fab86 |
@@ -18,6 +18,7 @@ In addition to this [`README.md`](README.md), the following documents are also a
|
||||
- [`buildrun.md`](docs/buildrun.md) – Instructions on building, localizing, running, and developing for this repository.
|
||||
- [`enterprise.md`](docs/enterprise.md) – A summary of various features and tips for making the application usable in enterprise settings.
|
||||
- [`netquirk.md`](docs/netquirk.md) – A description of various networking quirks and "kill-switch" semantics.
|
||||
- [`userregistry.md`](docs/userregistry.md) – A list of registry keys settable by the user for changing the behavior of the application.
|
||||
|
||||
## License
|
||||
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
# Registry Keys for Users
|
||||
|
||||
#### `HKCU\Software\AmneziaWG\Language`
|
||||
|
||||
When this key is set, the UI will try to use the specified language as display language.
|
||||
Supported languages: "ca", "cs", "de", "en", "es_ES", "et", "fa", "fi", "fr", "id", "it", "ja", "ko", "nl", "pa_IN", "pl", "pt_BR", "ro", "ru", "si_LK", "sk", "sl", "sv_SE", "tr", "uk", "vi", "zh_CN", "zh_TW".
|
||||
|
||||
```
|
||||
> reg add HKCU\Software\AmneziaWG /v Language /t REG_SZ /d "en" /f
|
||||
```
|
||||
@@ -4,7 +4,7 @@ go 1.22.3
|
||||
|
||||
require (
|
||||
github.com/amnezia-vpn/amneziawg-go v0.2.12
|
||||
github.com/amnezia-vpn/amneziawg-windows v0.1.4-0.20240526104134-db18f2297e5e
|
||||
github.com/amnezia-vpn/amneziawg-windows v0.1.4
|
||||
github.com/lxn/walk v0.0.0-20210112085537-c389da54e794
|
||||
github.com/lxn/win v0.0.0-20210218163916-a377121e959e
|
||||
golang.org/x/crypto v0.21.0
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
github.com/amnezia-vpn/amneziawg-go v0.2.12 h1:CxIQETy5kZ0ip/dFBpmnDxAcS/KuIQaJkOxDv5OQhVI=
|
||||
github.com/amnezia-vpn/amneziawg-go v0.2.12/go.mod h1:d7WpNfzCRLy7ufGElJBYpD58WRmNjyLyt3IDHPY8AmM=
|
||||
github.com/amnezia-vpn/amneziawg-windows v0.1.4-0.20240526104134-db18f2297e5e h1:pLoZBHiMDKdGScjrcX6q/yIwm8JDzCVo805H33+8Crg=
|
||||
github.com/amnezia-vpn/amneziawg-windows v0.1.4-0.20240526104134-db18f2297e5e/go.mod h1:3lkvRI7XTPifPvnAyNoI8eLjSSpKXyrnUu7KlnWlCnA=
|
||||
github.com/amnezia-vpn/amneziawg-windows v0.1.4 h1:D2T689FS6pFge+EA49fLXToEgQGO0VrQfLE3Sjmx52w=
|
||||
github.com/amnezia-vpn/amneziawg-windows v0.1.4/go.mod h1:yYNGWzB5ec+cpTIo4khP0EW/dm02B4XEPLW1j2gnGsA=
|
||||
github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4=
|
||||
github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA=
|
||||
github.com/tevino/abool/v2 v2.1.0 h1:7w+Vf9f/5gmKT4m4qkayb33/92M+Um45F2BkHOR+L/c=
|
||||
|
||||
@@ -8,11 +8,16 @@ package l18n
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"github.com/amnezia-vpn/amneziawg-windows-client/services"
|
||||
"golang.org/x/sys/windows"
|
||||
"golang.org/x/text/language"
|
||||
"golang.org/x/text/message"
|
||||
)
|
||||
|
||||
const (
|
||||
LanguageUserKey = "Language"
|
||||
)
|
||||
|
||||
var (
|
||||
printer *message.Printer
|
||||
printerLock sync.Mutex
|
||||
@@ -35,6 +40,15 @@ func prn() *message.Printer {
|
||||
|
||||
// lang returns the user preferred UI language we have most confident translation in the default catalog available.
|
||||
func lang() (tag language.Tag) {
|
||||
keyString := services.UserKeyString(LanguageUserKey)
|
||||
parseTag, err := language.Parse(keyString)
|
||||
if err == nil {
|
||||
matchTag := message.MatchLanguage(keyString)
|
||||
if parseTag == matchTag {
|
||||
tag = parseTag
|
||||
return
|
||||
}
|
||||
}
|
||||
tag = language.English
|
||||
confidence := language.No
|
||||
languages, err := windows.GetUserPreferredUILanguages(windows.MUI_LANGUAGE_NAME)
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"golang.org/x/sys/windows/registry"
|
||||
)
|
||||
|
||||
const userRegKey = `Software\AmneziaWG`
|
||||
|
||||
var userKey registry.Key
|
||||
|
||||
func openUserKey() (registry.Key, error) {
|
||||
if userKey != 0 {
|
||||
return userKey, nil
|
||||
}
|
||||
var err error
|
||||
userKey, err = registry.OpenKey(registry.CURRENT_USER, userRegKey, registry.QUERY_VALUE)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return userKey, nil
|
||||
}
|
||||
|
||||
func createUserKey() (registry.Key, error) {
|
||||
closeUserKey()
|
||||
var err error
|
||||
userKey, _, err = registry.CreateKey(registry.CURRENT_USER, userRegKey, registry.SET_VALUE)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return userKey, nil
|
||||
}
|
||||
|
||||
func closeUserKey() {
|
||||
if userKey == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
userKey.Close()
|
||||
userKey = 0
|
||||
}
|
||||
|
||||
func UserKeyString(name string) string {
|
||||
key, err := openUserKey()
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
val, _, err := key.GetStringValue(name)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
return val
|
||||
}
|
||||
|
||||
func SetUserKeyString(name string, value string) error {
|
||||
key, err := createUserKey()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer closeUserKey()
|
||||
err = key.SetStringValue(name, value)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
+1
-1
@@ -6,5 +6,5 @@
|
||||
package version
|
||||
|
||||
const (
|
||||
Number = "1.0.0"
|
||||
Number = "1.0.1"
|
||||
)
|
||||
|
||||
+4551
-3299
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user