Compare commits

...

48 Commits

Author SHA1 Message Date
Jason A. Donenfeld bcd8c33005 version: bump
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-05-05 13:30:28 +02:00
Harsh Shandilya e71c84a785 ui: replace deprecated string operations
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-05-05 16:56:56 +05:30
Jason A. Donenfeld 3474849b1d project: use kotlin official code style
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-05-05 13:19:04 +02:00
Jason A. Donenfeld f32c5cc222 tools: bump deps
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-05-05 13:02:56 +02:00
Harsh Shandilya cf6e1490f4 build: update AGP, Kotlin and AndroidX Lifecycle
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-05-05 12:29:23 +05:30
Harsh Shandilya 86951f509c build: bump fragment to 1.3.3
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-04-22 01:22:38 +05:30
Harsh Shandilya 8e9b2c6f05 ui: abstract out theme attributes to reduce overlap
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-04-21 17:17:42 +05:30
Harsh Shandilya 9ace8dd928 strings: replace three dots with ellipsis character
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-04-21 17:17:42 +05:30
Harsh Shandilya 8f727903f3 ui: remove unnecessary v21 styles override
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-04-21 17:17:42 +05:30
Harsh Shandilya b6aa09bc19 strings: remove invalid translation from Farsi
copied_to_clipboard is a format string and must have a format specifier

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-04-21 17:17:41 +05:30
Harsh Shandilya 782550318a ui: remove some more non-null assertions on binding fields
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-04-21 17:17:41 +05:30
Harsh Shandilya d02543639b ui: reduce size of QS tile drawable
This will be rendered on an even smaller scale on devices, but
400dp x 400dp was simply too big and could cause performance issues.

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-04-21 17:17:38 +05:30
Harsh Shandilya e1e16cdf3b strings: fix resource qualifier for Indonesian
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-04-21 16:31:12 +05:30
Harsh Shandilya 1bbcf83f43 TunnelListFragment: drop incorrect non-null assertion
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-04-21 16:25:12 +05:30
Harsh Shandilya 169bd408f2 gradle: bump wrapper to v7.0
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-04-11 22:03:25 +05:30
Harsh Shandilya 777e3b71ba strings: sync translations
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-04-11 21:52:27 +05:30
Harsh Shandilya 511e54764e build: bump to Kotlin 1.4.32
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-03-30 11:26:44 +05:30
Harsh Shandilya d0b5fb5107 build: upgrade dependencies
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-03-29 12:58:50 +05:30
Harsh Shandilya 7c3137e2c8 gradle: include mavenCentral in plugin search repositories
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-03-29 12:53:55 +05:30
Harsh Shandilya 12a3ec28bc build: remove JCenter repository
Force trove4j to be resolved from the newer coordinates used by AGP 7.0

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-03-16 14:31:51 +05:30
Harsh Shandilya 892295c42a build: upgrade AndroidX activity and fragment
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-03-11 10:04:22 +05:30
Harsh Shandilya ea9ef4af24 build: upgrade Kotlin and turn on IR compiler
Kotlin has been building a new JVM backend for a while now
and it is finally in Beta, scheduled to hit stable in Kotlin 1.4.50.
This is the time to enable it and report any bugs we hit, before it
becomes the default.

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-03-01 15:54:54 +05:30
Harsh Shandilya b8870f3599 build: upgrade to Gradle 6.8.3
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-02-23 17:08:01 +05:30
Jason A. Donenfeld 11301617d2 tunnel: update to go 1.16 and newer api
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-02-22 15:27:53 +01:00
Harsh Shandilya 617be576f8 build: upgrade to ZXING 4.1.0
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-02-19 19:30:17 +05:30
Jason A. Donenfeld 8523979c9c tunnel: report git commit as wgVersion
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-02-12 18:08:38 +01:00
Jason A. Donenfeld 8768acee68 README: move tunnel to maven central
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-02-12 17:37:31 +01:00
Harsh Shandilya a73d2121e1 build: update MDC to 1.3.0 stable release
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-02-11 22:34:43 +05:30
Harsh Shandilya dd58fad69e build: upgrade to Kotlin 1.4.30
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-02-11 22:33:17 +05:30
Harsh Shandilya ba9d689ef9 build: upgrade AndroidX libraries to stable versions
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-02-11 22:33:04 +05:30
Harsh Shandilya 97d82740d0 gradle: fix the distribution checksum
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-02-11 22:30:38 +05:30
Jason A. Donenfeld 0750c29c7f version: bump
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-02-11 16:40:34 +01:00
Jason A. Donenfeld 639ee6b5b2 tunnel: add developer information to pom xml
Otherwise sonatype gets upset.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-02-11 16:40:34 +01:00
Jason A. Donenfeld f764f2aaa9 build: update AGP to 4.1.2
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-02-11 16:11:57 +01:00
Jason A. Donenfeld d2a9c56d9c gradle: remove bad checksum from properties
The hash was wrong, causing crashes. Android studio told me to remove it
so I did. I don't quite like that, but I don't know how Harsh came up
with the previous hash.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-02-11 16:10:28 +01:00
Jason A. Donenfeld 4c3289aa52 tunnel: bump all tools
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-02-11 16:00:28 +01:00
Jason A. Donenfeld 79376bca64 tunnel: sign using gpg-agent
This way we don't have to have a separate java universe.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-02-11 15:55:20 +01:00
Harsh Shandilya b709d36c01 tunnel: switch publishing to MavenCentral
Since MavenCentral requires GPG signed artifacts, we'll need to configure
some things on the machine running the deployment. Specifically, these
three Gradle properties need to be set (preferably in ~/.gradle/gradle.properties)

```
signing.keyId= // Duh
signing.password= // I have absolutely no idea how this will work with HSMs
signing.secretKeyRingFile= // $HOME/.gnupg/... you know the deal
```

The BINTRAY_USER and BINTRAY_KEY variables are replaced by SONATYPE_USER
and SONATYPE_PASSWORD to better reflect their new contents.

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-02-11 01:58:41 +05:30
L.W.Reek 0301c85e2c build: include org.jetbrains.trove4j from jcenter
mavenCentral does not have org.jetbrains.trove4j which causes the
build to fail.

* What went wrong:
Execution failed for task ':tunnel:extractReleaseAnnotations'.
> Could not resolve all files for configuration ':tunnel:lintClassPath'.
   > Could not find org.jetbrains.trove4j:trove4j:20160824.
     Searched in the following locations:
       - https://dl.google.com/dl/android/maven2/org/jetbrains/trove4j/
         trove4j/20160824/trove4j-20160824.pom
       - https://repo.maven.apache.org/maven2/org/jetbrains/trove4j/
         trove4j/20160824/trove4j-20160824.pom
     Required by:
         project :tunnel > com.android.tools.lint:lint-gradle:27.1.1 >
                  com.android.tools:sdk-common:27.1.1
         project :tunnel > com.android.tools.lint:lint-gradle:27.1.1 >
                  com.android.tools.external.com-intellij:intellij-core:27.1.1

Fixes: 13cc4436ca ("build: switch to mavenCentral as the main repository")
Signed-off-by: L.W.Reek <syphyr@gmail.com>
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-02-10 18:31:36 +05:30
Harsh Shandilya 7e979817e2 build: upgrade to Gradle 6.8.2
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-02-05 22:25:52 +05:30
Harsh Shandilya 13cc4436ca build: switch to mavenCentral as the main repository
Retain JCenter but restrict it the single dependency we require off it

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-02-05 22:25:38 +05:30
Harsh Shandilya bcfbf37ed1 build: update fragment to 1.3.0-rc02
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-02-03 13:33:47 +05:30
Jason A. Donenfeld 74ff870cf5 tunnel: bump libwg-go and use newer logging function
We also plug a memory leak. C.CString was calling malloc, and these were
never freed.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-01-27 01:10:48 +01:00
Harsh Shandilya b4f54e8958 strings: sync translations
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-01-23 14:59:00 +05:30
L.W.Reek d179a3af15 libwg-go: update to go 1.15.6
Signed-off-by: L.W.Reek <syphyr@gmail.com>
2021-01-23 14:42:46 +05:30
Harsh Shandilya 2bac2feeb5 build: upgrade runtime dependencies
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-01-23 14:33:00 +05:30
Harsh Shandilya 261236c8ce gradle: bump wrapper to v6.8.1
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-01-23 14:01:44 +05:30
Jason A. Donenfeld 4a7969ef24 ClipboardUtils: localize clipboard notification snack
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-01-01 16:34:03 +01:00
46 changed files with 1071 additions and 270 deletions
+4 -9
View File
@@ -62,17 +62,9 @@
<package name="kotlinx.android.synthetic" alias="false" withSubpackages="true" />
</value>
</option>
<option name="PACKAGES_IMPORT_LAYOUT">
<value>
<package name="" alias="false" withSubpackages="true" />
<package name="java" alias="false" withSubpackages="true" />
<package name="javax" alias="false" withSubpackages="true" />
<package name="kotlin" alias="false" withSubpackages="true" />
<package name="" alias="true" withSubpackages="true" />
</value>
</option>
<option name="NAME_COUNT_TO_USE_STAR_IMPORT" value="10" />
<option name="NAME_COUNT_TO_USE_STAR_IMPORT_FOR_MEMBERS" value="10" />
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings>
<XML>
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
@@ -477,5 +469,8 @@
</rules>
</arrangement>
</codeStyleSettings>
<codeStyleSettings language="kotlin">
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</codeStyleSettings>
</code_scheme>
</component>
+1 -1
View File
@@ -16,7 +16,7 @@ macOS users may need [flock(1)](https://github.com/discoteq/flock).
## Embedding
The tunnel library is [on JCenter](https://bintray.com/wireguard/wireguard-android/wireguard-android/_latestVersion), alongside [extensive class library documentation](https://javadoc.io/doc/com.wireguard.android/tunnel).
The tunnel library is [on Maven Central](https://search.maven.org/artifact/com.wireguard.android/tunnel), alongside [extensive class library documentation](https://javadoc.io/doc/com.wireguard.android/tunnel).
```
implementation 'com.wireguard.android:tunnel:$wireguardTunnelVersion'
+22 -15
View File
@@ -1,25 +1,25 @@
buildscript {
ext {
activityVersion = '1.2.0-beta02'
agpVersion = '4.1.1'
annotationsVersion = '1.1.0'
activityVersion = '1.2.2'
agpVersion = '4.2.0'
annotationsVersion = '1.2.0'
appcompatVersion = '1.2.0'
biometricVersion = '1.1.0-rc01'
biometricVersion = '1.1.0'
collectionVersion = '1.1.0'
constraintLayoutVersion = '2.0.4'
coordinatorLayoutVersion = '1.1.0'
coreKtxVersion = '1.3.2'
coroutinesVersion = '1.4.2'
coroutinesVersion = '1.4.3'
datastoreVersion = '1.0.0-alpha02'
desugarVersion = '1.0.10'
fragmentVersion = '1.3.0-beta02'
fragmentVersion = '1.3.3'
jsr305Version = '3.0.2'
junitVersion = '4.13.1'
kotlinVersion = '1.4.21'
lifecycleRuntimeKtxVersion = '2.3.0-beta01'
materialComponentsVersion = '1.3.0-beta01'
junitVersion = '4.13.2'
kotlinVersion = '1.5.0'
lifecycleRuntimeKtxVersion = '2.3.1'
materialComponentsVersion = '1.3.0'
preferenceVersion = '1.1.1'
zxingEmbeddedVersion = '3.6.0'
zxingEmbeddedVersion = '4.2.0'
groupName = 'com.wireguard.android'
}
@@ -29,7 +29,7 @@ buildscript {
}
repositories {
google()
jcenter()
mavenCentral()
}
}
@@ -69,7 +69,14 @@ task crowdin(type: Copy, dependsOn: ['extractCrowdin']) {
allprojects {
repositories {
google()
jcenter()
mavenCentral()
}
configurations.all {
// New versions use different maven coordinates and are available on Maven Central
resolutionStrategy.dependencySubstitution {
substitute(module("org.jetbrains.trove4j:trove4j:20160824"))
.using(module("org.jetbrains.intellij.deps:trove4j:1.0.20181211"))
}
}
}
@@ -79,9 +86,9 @@ task clean(type: Delete) {
tasks {
wrapper {
gradleVersion = "6.7.1"
gradleVersion = "7.0"
distributionType = Wrapper.DistributionType.ALL
distributionSha256Sum = "22449f5231796abd892c98b2a07c9ceebe4688d192cd2d6763f8e3bf8acbedeb"
distributionSha256Sum = "81003f83b0056d20eedf48cddd4f52a9813163d4ba185bcf8abd34b8eeea4cbd"
}
}
+2 -2
View File
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionSha256Sum=22449f5231796abd892c98b2a07c9ceebe4688d192cd2d6763f8e3bf8acbedeb
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
distributionSha256Sum=81003f83b0056d20eedf48cddd4f52a9813163d4ba185bcf8abd34b8eeea4cbd
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
+6
View File
@@ -1,2 +1,8 @@
pluginManagement {
repositories {
gradlePluginPortal()
mavenCentral()
}
}
include ':tunnel'
include ':ui'
+14 -4
View File
@@ -1,4 +1,5 @@
apply plugin: 'maven-publish'
apply plugin: 'signing'
afterEvaluate {
publishing {
@@ -35,17 +36,21 @@ afterEvaluate {
name = 'WireGuard'
url = 'https://www.wireguard.com/'
}
developer {
name = 'WireGuard'
email = 'team@wireguard.com'
}
}
}
}
}
repositories {
maven {
name = "bintray"
url = uri("https://api.bintray.com/maven/wireguard/wireguard-android/wireguard-android/;publish=1;override=0")
name = "sonatype"
url = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/")
credentials {
username = hasProperty('BINTRAY_USER') ? getProperty('BINTRAY_USER') : System.getenv('BINTRAY_USER')
password = hasProperty('BINTRAY_KEY') ? getProperty('BINTRAY_KEY') : System.getenv('BINTRAY_KEY')
username = hasProperty('SONATYPE_USER') ? getProperty('SONATYPE_USER') : System.getenv('SONATYPE_USER')
password = hasProperty('SONATYPE_PASSWORD') ? getProperty('SONATYPE_PASSWORD') : System.getenv('SONATYPE_PASSWORD')
}
}
}
@@ -70,3 +75,8 @@ android.libraryVariants.all { variant ->
}
}
}
signing {
useGpgCmd()
sign publishing.publications
}
@@ -278,7 +278,7 @@ public final class GoBackend implements Backend {
try (final ParcelFileDescriptor tun = builder.establish()) {
if (tun == null)
throw new BackendException(Reason.TUN_CREATION_ERROR);
Log.d(TAG, "Go backend v" + wgVersion());
Log.d(TAG, "Go backend " + wgVersion());
currentTunnelHandle = wgTurnOn(tunnel.getName(), tun.detachFd(), goConfig);
}
if (currentTunnelHandle < 0)
+4 -3
View File
@@ -20,11 +20,12 @@ export GOARCH := $(NDK_GO_ARCH_MAP_$(ANDROID_ARCH_NAME))
export GOOS := android
export CGO_ENABLED := 1
GO_VERSION := 1.15.2
GO_VERSION := 1.16.3
GO_PLATFORM := $(shell uname -s | tr '[:upper:]' '[:lower:]')-$(NDK_GO_ARCH_MAP_$(shell uname -m))
GO_TARBALL := go$(GO_VERSION).$(GO_PLATFORM).tar.gz
GO_HASH_darwin-amd64 := 9bd39600d9fa1fa4a5ccce8761d249f7421cffe671376f791293c4138f3d7c62
GO_HASH_linux-amd64 := b49fda1ca29a1946d6bb2a5a6982cf07ccd2aba849289508ee0f9918f6bb4552
GO_HASH_darwin-amd64 := 6bb1cf421f8abc2a9a4e39140b7397cdae6aca3e8d36dcff39a1a77f4f1170ac
GO_HASH_darwin-arm64 := f4e96bbcd5d2d1942f5b55d9e4ab19564da4fad192012f6d7b0b9b055ba4208f
GO_HASH_linux-amd64 := 951a3c7c6ce4e56ad883f97d9db74d3d6d80d5fec77455c6ada6c1f7ac4776d2
default: $(DESTDIR)/libwg-go.so
+58 -34
View File
@@ -10,14 +10,13 @@ package main
import "C"
import (
"bufio"
"bytes"
"log"
"fmt"
"math"
"net"
"os"
"os/signal"
"runtime"
"runtime/debug"
"strings"
"unsafe"
@@ -29,13 +28,21 @@ import (
)
type AndroidLogger struct {
level C.int
interfaceName string
level C.int
tag *C.char
}
func (l AndroidLogger) Write(p []byte) (int, error) {
C.__android_log_write(l.level, C.CString("WireGuard/GoBackend/"+l.interfaceName), C.CString(string(p)))
return len(p), nil
func cstring(s string) *C.char {
b, err := unix.BytePtrFromString(s)
if err != nil {
b := [1]C.char{}
return &b[0]
}
return (*C.char)(unsafe.Pointer(b))
}
func (l AndroidLogger) Printf(format string, args ...interface{}) {
C.__android_log_write(l.level, l.tag, cstring(fmt.Sprintf(format, args...)))
}
type TunnelHandle struct {
@@ -55,39 +62,38 @@ func init() {
select {
case <-signals:
n := runtime.Stack(buf, true)
if n == len(buf) {
n--
}
buf[n] = 0
C.__android_log_write(C.ANDROID_LOG_ERROR, C.CString("WireGuard/GoBackend/Stacktrace"), (*C.char)(unsafe.Pointer(&buf[0])))
C.__android_log_write(C.ANDROID_LOG_ERROR, cstring("WireGuard/GoBackend/Stacktrace"), (*C.char)(unsafe.Pointer(&buf[0])))
}
}
}()
}
//export wgTurnOn
func wgTurnOn(ifnameRef string, tunFd int32, settings string) int32 {
interfaceName := string([]byte(ifnameRef))
func wgTurnOn(interfaceName string, tunFd int32, settings string) int32 {
tag := cstring("WireGuard/GoBackend/" + interfaceName)
logger := &device.Logger{
Debug: log.New(&AndroidLogger{level: C.ANDROID_LOG_DEBUG, interfaceName: interfaceName}, "", 0),
Info: log.New(&AndroidLogger{level: C.ANDROID_LOG_INFO, interfaceName: interfaceName}, "", 0),
Error: log.New(&AndroidLogger{level: C.ANDROID_LOG_ERROR, interfaceName: interfaceName}, "", 0),
Verbosef: AndroidLogger{level: C.ANDROID_LOG_DEBUG, tag: tag}.Printf,
Errorf: AndroidLogger{level: C.ANDROID_LOG_ERROR, tag: tag}.Printf,
}
logger.Debug.Println("Debug log enabled")
tun, name, err := tun.CreateUnmonitoredTUNFromFD(int(tunFd))
if err != nil {
unix.Close(int(tunFd))
logger.Error.Println(err)
logger.Errorf("CreateUnmonitoredTUNFromFD: %v", err)
return -1
}
logger.Info.Println("Attaching to interface", name)
device := device.NewDevice(tun, logger)
logger.Verbosef("Attaching to interface %v", name)
device := device.NewDevice(tun, conn.NewStdNetBind(), logger)
setError := device.IpcSetOperation(bufio.NewReader(strings.NewReader(settings)))
if setError != nil {
err = device.IpcSet(settings)
if err != nil {
unix.Close(int(tunFd))
logger.Error.Println(setError)
logger.Errorf("IpcSet: %v", err)
return -1
}
device.DisableSomeRoamingForBrokenMobileSemantics()
@@ -96,12 +102,12 @@ func wgTurnOn(ifnameRef string, tunFd int32, settings string) int32 {
uapiFile, err := ipc.UAPIOpen(name)
if err != nil {
logger.Error.Println(err)
logger.Errorf("UAPIOpen: %v", err)
} else {
uapi, err = ipc.UAPIListen(name, uapiFile)
if err != nil {
uapiFile.Close()
logger.Error.Println(err)
logger.Errorf("UAPIListen: %v", err)
} else {
go func() {
for {
@@ -115,8 +121,14 @@ func wgTurnOn(ifnameRef string, tunFd int32, settings string) int32 {
}
}
device.Up()
logger.Info.Println("Device started")
err = device.Up()
if err != nil {
logger.Errorf("Unable to bring up device: %v", err)
uapiFile.Close()
device.Close()
return -1
}
logger.Verbosef("Device started")
var i int32
for i = 0; i < math.MaxInt32; i++ {
@@ -125,7 +137,9 @@ func wgTurnOn(ifnameRef string, tunFd int32, settings string) int32 {
}
}
if i == math.MaxInt32 {
unix.Close(int(tunFd))
logger.Errorf("Unable to find empty handle")
uapiFile.Close()
device.Close()
return -1
}
tunnelHandles[i] = TunnelHandle{device: device, uapi: uapi}
@@ -185,19 +199,29 @@ func wgGetConfig(tunnelHandle int32) *C.char {
if !ok {
return nil
}
settings := new(bytes.Buffer)
writer := bufio.NewWriter(settings)
err := handle.device.IpcGetOperation(writer)
settings, err := handle.device.IpcGet()
if err != nil {
return nil
}
writer.Flush()
return C.CString(settings.String())
return C.CString(settings)
}
//export wgVersion
func wgVersion() *C.char {
return C.CString(device.WireGuardGoVersion)
info, ok := debug.ReadBuildInfo()
if !ok {
return C.CString("unknown")
}
for _, dep := range info.Deps {
if dep.Path == "golang.zx2c4.com/wireguard" {
parts := strings.Split(dep.Version, "-")
if len(parts) == 3 && len(parts[2]) == 12 {
return C.CString(parts[2][:7])
}
return C.CString(dep.Version)
}
}
return C.CString("unknown")
}
func main() {}
+5 -5
View File
@@ -1,10 +1,10 @@
module golang.zx2c4.com/wireguard/android
go 1.15
go 1.16
require (
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad // indirect
golang.org/x/net v0.0.0-20201216054612-986b41b23924 // indirect
golang.org/x/sys v0.0.0-20201223074533-0d417f636930
golang.zx2c4.com/wireguard v0.0.20201119-0.20201223215156-09728dc6b340
golang.org/x/crypto v0.0.0-20210503195802-e9a32991a82e // indirect
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125 // indirect
golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6
golang.zx2c4.com/wireguard v0.0.0-20210505094245-69a42a4eefc7
)
+13 -14
View File
@@ -1,24 +1,23 @@
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad h1:DN0cp81fZ3njFcrLCytUHRSUkqBjfTo4Tx9RJTWs0EY=
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/crypto v0.0.0-20210503195802-e9a32991a82e h1:8foAy0aoO5GkqCvAEJ4VC4P3zksTg4X4aJCDpZzmgQI=
golang.org/x/crypto v0.0.0-20210503195802-e9a32991a82e/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201216054612-986b41b23924 h1:QsnDpLLOKwHBBDa8nDws4DYNc/ryVW2vCpxCs09d4PY=
golang.org/x/net v0.0.0-20201216054612-986b41b23924/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125 h1:Ugb8sMTWuWRC3+sz5WeN/4kejDx9BvIwnPUiJBjJE+8=
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201223074533-0d417f636930 h1:vRgIt+nup/B/BwIS0g2oC0haq0iqbV3ZA+u6+0TlNCo=
golang.org/x/sys v0.0.0-20201223074533-0d417f636930/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210309040221-94ec62e08169/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6 h1:cdsMqa2nXzqlgs183pHxtvoVwU7CyzaCTAUOg94af4c=
golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.zx2c4.com/wireguard v0.0.20201119-0.20201223215156-09728dc6b340 h1:X6jrf2sUEj3n+q2oB/I3C088vQFKREz2UzgVJ8wENtI=
golang.zx2c4.com/wireguard v0.0.20201119-0.20201223215156-09728dc6b340/go.mod h1:ITsWNpkFv78VPB7f8MiyuxeEMcHR4jfxHGCJLPP3GHs=
golang.zx2c4.com/wireguard v0.0.0-20210505094245-69a42a4eefc7 h1:0dZZxfM3JoF0lcEcG1LRqWIOH1L+gp6CQgUExOrRNQc=
golang.zx2c4.com/wireguard v0.0.0-20210505094245-69a42a4eefc7/go.mod h1:a057zjmoc00UN7gVkaJt2sXVK523kMJcogDTEvPIasg=
@@ -1,6 +1,6 @@
From 1d1ba1da11afd73008c0e942db7621697055a6b6 Mon Sep 17 00:00:00 2001
From b83553d9f260ba20c6faaa52e6fe6f74309eb41a Mon Sep 17 00:00:00 2001
From: "Jason A. Donenfeld" <Jason@zx2c4.com>
Date: Tue, 15 Sep 2020 13:39:22 +0200
Date: Mon, 22 Feb 2021 02:36:03 +0100
Subject: [PATCH] runtime: use CLOCK_BOOTTIME in nanotime on Linux
This makes timers account for having expired while a computer was
@@ -28,10 +28,10 @@ Change-Id: I7b2a6ca0c5bc5fce57ec0eeafe7b68270b429321
8 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/src/runtime/sys_linux_386.s b/src/runtime/sys_linux_386.s
index 5b9b638ad7..448ad8b2e6 100644
index 1e3a834812..78b6021fc7 100644
--- a/src/runtime/sys_linux_386.s
+++ b/src/runtime/sys_linux_386.s
@@ -339,13 +339,13 @@ noswitch:
@@ -337,13 +337,13 @@ noswitch:
LEAL 8(SP), BX // &ts (struct timespec)
MOVL BX, 4(SP)
@@ -48,18 +48,18 @@ index 5b9b638ad7..448ad8b2e6 100644
INVOKE_SYSCALL
diff --git a/src/runtime/sys_linux_amd64.s b/src/runtime/sys_linux_amd64.s
index fe9c6bce85..4836a7c774 100644
index 37cb8dad03..e8b730bcaa 100644
--- a/src/runtime/sys_linux_amd64.s
+++ b/src/runtime/sys_linux_amd64.s
@@ -311,7 +311,7 @@ noswitch:
MOVQ runtime·vdsoClockgettimeSym(SB), AX
CMPQ AX, $0
JEQ fallback
@@ -302,7 +302,7 @@ noswitch:
SUBQ $16, SP // Space for results
ANDQ $~15, SP // Align for C code
- MOVL $1, DI // CLOCK_MONOTONIC
+ MOVL $7, DI // CLOCK_BOOTTIME
LEAQ 0(SP), SI
CALL AX
MOVQ 0(SP), AX // sec
MOVQ runtime·vdsoClockgettimeSym(SB), AX
CMPQ AX, $0
diff --git a/src/runtime/sys_linux_arm.s b/src/runtime/sys_linux_arm.s
index 475f52344c..bb567abcf4 100644
--- a/src/runtime/sys_linux_arm.s
@@ -105,10 +105,10 @@ index 198a5bacef..9715387f36 100644
CBZ R2, fallback
diff --git a/src/runtime/sys_linux_mips64x.s b/src/runtime/sys_linux_mips64x.s
index afad056d06..2c9162b903 100644
index c3e9f37694..e3879acd38 100644
--- a/src/runtime/sys_linux_mips64x.s
+++ b/src/runtime/sys_linux_mips64x.s
@@ -304,7 +304,7 @@ noswitch:
@@ -312,7 +312,7 @@ noswitch:
AND $~15, R1 // Align for C code
MOVV R1, R29
@@ -157,5 +157,5 @@ index c15a1d5364..f52c4d5098 100644
MOVW $SYS_clock_gettime, R1
SYSCALL
--
2.28.0
2.30.1
+1
View File
@@ -84,5 +84,6 @@ tasks.withType(JavaCompile) {
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8
useIR = true
}
}
+4 -1
View File
@@ -19,7 +19,7 @@
android:name="android.software.leanback"
android:required="false" />
<uses-feature
android:name="android.hardware.camera"
android:name="android.hardware.camera.any"
android:required="false" />
<permission
@@ -29,6 +29,9 @@
android:label="@string/permission_label"
android:protectionLevel="dangerous" />
<!-- This is safe to override, the APIs we use work perfectly fine on Android 6 -->
<uses-sdk tools:overrideLibrary="com.google.zxing.client.android" />
<application
android:name=".Application"
android:allowBackup="false"
@@ -43,7 +43,7 @@ class TunnelDetailFragment : BaseFragment() {
super.onCreateView(inflater, container, savedInstanceState)
binding = TunnelDetailFragmentBinding.inflate(inflater, container, false)
binding?.executePendingBindings()
return binding!!.root
return binding?.root
}
override fun onDestroyView() {
@@ -101,7 +101,7 @@ class TunnelListFragment : BaseFragment() {
}
executePendingBindings()
}
return binding!!.root
return binding?.root
}
override fun onDestroyView() {
@@ -239,7 +239,7 @@ class TunnelListFragment : BaseFragment() {
resources = null
animateFab(binding?.createFab, true)
checkedItems.clear()
binding!!.tunnelList.adapter!!.notifyDataSetChanged()
binding?.tunnelList?.adapter?.notifyDataSetChanged()
}
override fun onPrepareActionMode(mode: ActionMode, menu: Menu): Boolean {
@@ -5,8 +5,6 @@
package com.wireguard.android.model
import java.util.Locale
object TunnelComparator : Comparator<String> {
private class NaturalSortString(originalString: String) {
class NaturalSortToken(val maybeString: String?, val maybeNumber: Int?) : Comparable<NaturalSortToken> {
@@ -29,7 +27,7 @@ object TunnelComparator : Comparator<String> {
val tokens: MutableList<NaturalSortToken> = ArrayList()
init {
for (s in NATURAL_SORT_DIGIT_FINDER.findAll(originalString.split(WHITESPACE_FINDER).joinToString(" ").toLowerCase(Locale.ENGLISH))) {
for (s in NATURAL_SORT_DIGIT_FINDER.findAll(originalString.split(WHITESPACE_FINDER).joinToString(" ").lowercase())) {
try {
val n = s.value.toInt()
tokens.add(NaturalSortToken(null, n))
@@ -20,7 +20,6 @@ import com.wireguard.android.util.lifecycleScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.util.Locale
class VersionPreference(context: Context, attrs: AttributeSet?) : Preference(context, attrs) {
private var versionSummary: String? = null
@@ -49,12 +48,12 @@ class VersionPreference(context: Context, attrs: AttributeSet?) : Preference(con
init {
lifecycleScope.launch {
val backend = Application.getBackend()
versionSummary = getContext().getString(R.string.version_summary_checking, getBackendPrettyName(context, backend).toLowerCase(Locale.ENGLISH))
versionSummary = getContext().getString(R.string.version_summary_checking, getBackendPrettyName(context, backend).lowercase())
notifyChanged()
versionSummary = try {
getContext().getString(R.string.version_summary, getBackendPrettyName(context, backend), withContext(Dispatchers.IO) { backend.version })
} catch (_: Throwable) {
getContext().getString(R.string.version_summary_unknown, getBackendPrettyName(context, backend).toLowerCase(Locale.ENGLISH))
getContext().getString(R.string.version_summary_unknown, getBackendPrettyName(context, backend).lowercase())
}
notifyChanged()
}
@@ -11,6 +11,7 @@ import android.widget.TextView
import androidx.core.content.getSystemService
import com.google.android.material.snackbar.Snackbar
import com.google.android.material.textfield.TextInputEditText
import com.wireguard.android.R
/**
* Standalone utilities for interacting with the system clipboard.
@@ -28,6 +29,6 @@ object ClipboardUtils {
}
val service = view.context.getSystemService<ClipboardManager>() ?: return
service.setPrimaryClip(ClipData.newPlainText(data.second, data.first))
Snackbar.make(view, "${data.second} copied to clipboard", Snackbar.LENGTH_LONG).show()
Snackbar.make(view, view.context.getString(R.string.copied_to_clipboard, data.second), Snackbar.LENGTH_LONG).show()
}
}
@@ -25,7 +25,6 @@ import java.io.ByteArrayInputStream
import java.io.InputStreamReader
import java.nio.charset.StandardCharsets
import java.util.ArrayList
import java.util.Locale
import java.util.zip.ZipEntry
import java.util.zip.ZipInputStream
@@ -50,8 +49,8 @@ object TunnelImporter {
require(idx < name.length - 1) { context.getString(R.string.illegal_filename_error, name) }
name = name.substring(idx + 1)
}
val isZip = name.toLowerCase(Locale.ROOT).endsWith(".zip")
if (name.toLowerCase(Locale.ROOT).endsWith(".conf")) {
val isZip = name.lowercase().endsWith(".zip")
if (name.lowercase().endsWith(".conf")) {
name = name.substring(0, name.length - ".conf".length)
} else {
require(isZip) { context.getString(R.string.bad_extension_error) }
@@ -71,7 +70,7 @@ object TunnelImporter {
}
name = name.substring(name.lastIndexOf('/') + 1)
}
if (name.toLowerCase(Locale.ROOT).endsWith(".conf")) {
if (name.lowercase().endsWith(".conf")) {
name = name.substring(0, name.length - ".conf".length)
} else {
continue
+2 -2
View File
@@ -1,6 +1,6 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="400dp"
android:height="400dp"
android:width="200dp"
android:height="200dp"
android:viewportWidth="400.0"
android:viewportHeight="400.0">
<path
+8 -1
View File
@@ -97,10 +97,17 @@
<string name="create_output_dir_error">Konnte das Ausgabeverzeichnis nicht erstellen</string>
<string name="create_temp_dir_error">Lokales temporäres Verzeichnis kann nicht erstellt werden</string>
<string name="create_tunnel">Tunnel erstellen</string>
<string name="copied_to_clipboard">%s in die Zwischenanlage kopiert</string>
<string name="dark_theme_summary_off">Verwende helles Design (Tag)</string>
<string name="dark_theme_summary_on">Verwende dunkles Design (Nacht)</string>
<string name="dark_theme_title">Dunkles Design verwenden</string>
<string name="delete">Entfernen</string>
<string name="tv_delete">Wählen Sie den zu löschenden Tunnel aus</string>
<string name="tv_select_a_storage_drive">Wählen Sie ein Speicherlaufwerk</string>
<string name="tv_no_file_picker">Bitte installieren Sie ein Dateiverwaltungsprogramm, um Dateien zu durchsuchen</string>
<string name="tv_add_tunnel_get_started">Fügen Sie einen Tunnel hinzu, um loszulegen</string>
<string name="disable_config_export_title">Deaktivieren Sie den Konfigurationsexport</string>
<string name="disable_config_export_description">Durch Deaktivieren des Konfigurationsexports werden private Schlüssel weniger zugänglich</string>
<string name="dns_servers">DNS-Server</string>
<string name="edit">Bearbeiten</string>
<string name="endpoint">Endpunkt</string>
@@ -212,7 +219,7 @@
<string name="type_name_go_userspace">Go userspace</string>
<string name="type_name_kernel_module">Kernelmodul</string>
<string name="unknown_error">Unbekannter Fehler</string>
<string name="version_summary">%1$s Backend v%2$s</string>
<string name="version_summary">%1$s Backend %2$s</string>
<string name="version_summary_checking">Überprüfe %s Backend-Version</string>
<string name="version_summary_unknown">Unbekannte %s Version</string>
<string name="version_title">WireGuard für Android v%s</string>
+1 -1
View File
@@ -163,7 +163,7 @@
<string name="type_name_go_userspace">Ir al espacio de usuario</string>
<string name="type_name_kernel_module">Módulo Kernel</string>
<string name="unknown_error">Error desconocido</string>
<string name="version_summary">%1$s backend v%2$s</string>
<string name="version_summary">%1$s backend %2$s</string>
<string name="version_summary_checking">Comprobando versión de backend %s</string>
<string name="version_summary_unknown">Versión %s desconocida</string>
<string name="version_title">WireGuard para Android -%s</string>
+11
View File
@@ -102,6 +102,12 @@
<string name="dark_theme_summary_on">اکنون از پوسته تاریک(شب) استفاده می‌شود</string>
<string name="dark_theme_title">استفاده از پوسته تاریک</string>
<string name="delete">حذف</string>
<string name="tv_delete">موارد را برای حذف انتخاب کنید</string>
<string name="tv_select_a_storage_drive">حافظه ذخیره سازی موردنظر را انتخاب کنید</string>
<string name="tv_no_file_picker">برای مدیریت پوشه های حافظه، یک برنامه مدیریت فایل نصب کنید</string>
<string name="tv_add_tunnel_get_started">یک پروفایل تونل برای شروع انتخاب کنید</string>
<string name="disable_config_export_title">غیرفعال سازی خروجی گرفتن از کانفیگ ها</string>
<string name="disable_config_export_description">غیرفعال سازی خروجی گرفتن، دسترسی کلیدهای خصوصی را کم می کند</string>
<string name="dns_servers">سرورهای DNS</string>
<string name="edit">ویرایش</string>
<string name="endpoint">نقطه پایان</string>
@@ -141,12 +147,15 @@
<string name="module_disabler_disabled_title">فعال‌سازی ماژول کرنل ِبک اند</string>
<string name="module_disabler_enabled_title">غیرفعال‌سازی پس‌زمینه واحد هسته</string>
<string name="module_installer_error">مشکلی پیش آمد. لطفا دوباره تلاش کنید</string>
<string name="module_installer_initial">ماژول آزمایشی‌ِ کرنل می تواند کارایی را افزایش دهد</string>
<string name="module_installer_not_found">هیچ واحدی برای دستگاه شما در دسترس نیست</string>
<string name="module_installer_title">واحد هسته را بارگیری و نصب کن</string>
<string name="module_installer_working">در حال بارگیری و نصب…</string>
<string name="module_version_error">نمی‌توان نگارش واحد هسته را مشخص کرد</string>
<string name="mtu">MTU</string>
<string name="multiple_tunnels_summary_off">روشن کردن یک تونل ، تونل های دیگر را خاموش خواهد کرد</string>
<string name="multiple_tunnels_summary_on">تونل های چندتایی ممکن است استفاده همزمان را فعال کند</string>
<string name="multiple_tunnels_title">تونل چندگانه همزمان</string>
<string name="name">نام</string>
<string name="no_config_error">تلاش برای فعالسازی تونل بدون تنظیمات</string>
<string name="no_configs_error">هیچ پیکربندی یافت نشد</string>
@@ -184,6 +193,8 @@
<string name="transfer_mibibytes">%.2f MiB</string>
<string name="transfer_rx_tx">rx: %1$s, tx: %2$s</string>
<string name="transfer_tibibytes">%.2f TiB</string>
<string name="tun_create_error">نمی‌توان تونل را ساخت</string>
<string name="tunnel_config_error">ناتوان در کانفیگ و ساخت تونل (wg-quick returned %d)</string>
<string name="tunnel_create_error">نمی‌توان تونل را ساخت: %s</string>
<string name="tunnel_create_success">تونل “%s” با موفقیت ساخته شد</string>
<string name="tunnel_error_already_exists">تونل “%s” از قبل وجود دارد</string>
+8 -1
View File
@@ -97,10 +97,17 @@
<string name="create_output_dir_error">Impossible de créer le répertoire de sortie</string>
<string name="create_temp_dir_error">Impossible de créer le répertoire temporaire local</string>
<string name="create_tunnel">Créer un tunnel</string>
<string name="copied_to_clipboard">%s copié dans le presse-papier</string>
<string name="dark_theme_summary_off">Utilisation en cours du thème clair (jour)</string>
<string name="dark_theme_summary_on">Utilisation en cours du thème sombre (nuit)</string>
<string name="dark_theme_title">Utilisez le thème sombre</string>
<string name="delete">Supprimer</string>
<string name="tv_delete">Sélectionner le tunnel à supprimer</string>
<string name="tv_select_a_storage_drive">Sélectionner un disque de stockage</string>
<string name="tv_no_file_picker">Veuillez installer un utilitaire de gestion de fichiers pour parcourir les fichiers</string>
<string name="tv_add_tunnel_get_started">Ajouter un tunnel pour commencer</string>
<string name="disable_config_export_title">Désactiver l\'export de configuration</string>
<string name="disable_config_export_description">La désactivation de l\'export de configuration rend les clés privées moins accessibles</string>
<string name="dns_servers">Serveurs DNS</string>
<string name="edit">Modifier</string>
<string name="endpoint">Point de terminaison</string>
@@ -212,7 +219,7 @@
<string name="type_name_go_userspace">Nom de l\'espace utilisateur</string>
<string name="type_name_kernel_module">Module noyau</string>
<string name="unknown_error">Erreur inconnue</string>
<string name="version_summary">%1$s backend v%2$s</string>
<string name="version_summary">%1$s backend %2$s</string>
<string name="version_summary_checking">Vérification de la version %s du backend</string>
<string name="version_summary_unknown">Version %s inconnue</string>
<string name="version_title">WireGuard pour Android v%s</string>
+2 -2
View File
@@ -175,7 +175,7 @@
<string name="shell_exit_status_read_error">शेल बाहर निकलने की स्थिति नहीं पढ़ सकता</string>
<string name="shell_marker_count_error">शेल ने 4 मार्करों की अपेक्षा की, %d प्राप्त किया</string>
<string name="shell_start_error">शेल शुरू करने में विफल: %d</string>
<string name="success_application_will_restart">सफलता। एप्लीकेशन अब पुनः आरंभ होगा...</string>
<string name="success_application_will_restart">सफलता। एप्लीकेशन अब पुनः आरंभ होगा…</string>
<string name="toggle_all">सबको स्विच करे</string>
<string name="toggle_error">वायरगार्ड टनल टॉगल करने में त्रुटि: %s</string>
<string name="tools_installer_already">wg और wg-quick पहले से इंस्टॉल हैं</string>
@@ -203,7 +203,7 @@
<string name="type_name_go_userspace">userspace पे जाए </string>
<string name="type_name_kernel_module">कर्नेल मॉड्यूल</string>
<string name="unknown_error">अज्ञात त्रुटि</string>
<string name="version_summary">%1$s बैकएंड v%2$s</string>
<string name="version_summary">%1$s बैकएंड %2$s</string>
<string name="version_summary_checking">%s बैकएंड संस्करण की जाँच कर रहा है</string>
<string name="version_summary_unknown">अज्ञात %s संस्करण</string>
<string name="version_title">WireGuard for Android v%s</string>
+1 -1
View File
@@ -162,7 +162,7 @@
<string name="type_name_go_userspace">userspace पे जाए </string>
<string name="type_name_kernel_module">कर्नेल मॉड्यूल</string>
<string name="unknown_error">अज्ञात त्रुटि</string>
<string name="version_summary">%1$s बैकएंड v%2$s</string>
<string name="version_summary">%1$s बैकएंड %2$s</string>
<string name="version_summary_checking">%s बैकएंड संस्करण की जाँच कर रहा है</string>
<string name="version_summary_unknown">अज्ञात %s संस्करण</string>
<string name="version_title">WireGuard for Android v%s</string>
@@ -199,7 +199,7 @@
<string name="type_name_go_userspace">Ke userspace</string>
<string name="type_name_kernel_module">Modul kernel</string>
<string name="unknown_error">Eror tidak diketahui</string>
<string name="version_summary">%1$s backend v%2$s</string>
<string name="version_summary">%1$s backend %2$s</string>
<string name="version_summary_checking">Mengecek versi backend %s</string>
<string name="version_summary_unknown">Versi %s Tidak diketahui</string>
<string name="version_title">WireGuard untuk Android v%s</string>
+1 -1
View File
@@ -212,7 +212,7 @@
<string name="type_name_go_userspace">Spazio utente Go</string>
<string name="type_name_kernel_module">Modulo kernel</string>
<string name="unknown_error">Errore sconosciuto</string>
<string name="version_summary">Backend %1$s v%2$s</string>
<string name="version_summary">Backend %1$s %2$s</string>
<string name="version_summary_checking">Controllo versione backend %s</string>
<string name="version_summary_unknown">Versione %s sconosciuta</string>
<string name="version_title">WireGuard per Android v%s</string>
+8 -1
View File
@@ -84,10 +84,17 @@
<string name="create_output_dir_error">出力ディレクトリを作成できません</string>
<string name="create_temp_dir_error">ローカルに一時ディレクトリを作成できません</string>
<string name="create_tunnel">トンネルを作成</string>
<string name="copied_to_clipboard">%s をクリップボードにコピーしました</string>
<string name="dark_theme_summary_off">ライトテーマを使用中</string>
<string name="dark_theme_summary_on">ダークテーマを使用中</string>
<string name="dark_theme_title">ダークテーマを使用する</string>
<string name="delete">削除</string>
<string name="tv_delete">削除するトンネルを選択</string>
<string name="tv_select_a_storage_drive">ストレージを選択</string>
<string name="tv_no_file_picker">ファイルを参照するにはファイル管理アプリをインストールしてください</string>
<string name="tv_add_tunnel_get_started">トンネルを追加して開始する</string>
<string name="disable_config_export_title">設定のエクスポートを無効にする</string>
<string name="disable_config_export_description">設定のエクスポートを無効にすると、秘密鍵にアクセスしにくくなります</string>
<string name="dns_servers">DNS サーバ</string>
<string name="edit">編集</string>
<string name="endpoint">エンドポイント</string>
@@ -199,7 +206,7 @@
<string name="type_name_go_userspace">Go ユーザースペース</string>
<string name="type_name_kernel_module">カーネルモジュール</string>
<string name="unknown_error">未知のエラー</string>
<string name="version_summary">%1$s backend v%2$s</string>
<string name="version_summary">%1$s backend %2$s</string>
<string name="version_summary_checking">%s バックエンドのバージョンを確認中</string>
<string name="version_summary_unknown">未知の %s バージョン</string>
<string name="version_title">WireGuard for Android v%s</string>
+213
View File
@@ -4,9 +4,49 @@
<item quantity="one">Kan ikke slette %d tunnel %s</item>
<item quantity="other">Kan ikke slette %d tunneler %s</item>
</plurals>
<plurals name="delete_success">
<item quantity="one">Slettet %d tunnel</item>
<item quantity="other">Slettet %d tunneler</item>
</plurals>
<plurals name="delete_title">
<item quantity="one">%d tunnel valgt</item>
<item quantity="other">%d tunneler valgt</item>
</plurals>
<plurals name="import_partial_success">
<item quantity="one">Importerte %1$d av %2$d tunneler</item>
<item quantity="other">Importerte %1$d av %2$d tunneler</item>
</plurals>
<plurals name="import_total_success">
<item quantity="one">Importerte %d tunnel</item>
<item quantity="other">Importerte %d tunneler</item>
</plurals>
<plurals name="set_excluded_applications">
<item quantity="one">%d ekskludert program</item>
<item quantity="other">%d ekskluderte apper</item>
</plurals>
<plurals name="set_included_applications">
<item quantity="one">%d inkludert app</item>
<item quantity="other">%d inkluderte apper</item>
</plurals>
<plurals name="n_excluded_applications">
<item quantity="one">%d ekskludert</item>
<item quantity="other">%d ekskluderte</item>
</plurals>
<plurals name="n_included_applications">
<item quantity="one">%d inkludert</item>
<item quantity="other">%d inkluderte</item>
</plurals>
<string name="all_applications">Alle applikasjoner</string>
<string name="exclude_from_tunnel">Ekskluder</string>
<string name="include_in_tunnel">Inkluder kun</string>
<plurals name="include_n_applications">
<item quantity="one">Inkluder %d app</item>
<item quantity="other">Inkluder %d apper</item>
</plurals>
<plurals name="exclude_n_applications">
<item quantity="one">Ekskluder %d app</item>
<item quantity="other">Ekskluder %d apper</item>
</plurals>
<plurals name="persistent_keepalive_seconds_unit">
<item quantity="one">hvert %d sekund</item>
<item quantity="other">hvert %d sekund</item>
@@ -19,5 +59,178 @@
<string name="add_peer">Legg til peer</string>
<string name="addresses">Adresser</string>
<string name="applications">Applikasjoner</string>
<string name="allow_remote_control_intents_summary_off">Fjernstyrte apper kan ikke toggle tunneler (anbefalt)</string>
<string name="allow_remote_control_intents_summary_on">Fjernstyrte apper toggle tunneler (avansert)</string>
<string name="allow_remote_control_intents_title">Tillat fjernstyrte apper</string>
<string name="allowed_ips">Tillatte IP-adresser</string>
<string name="app_name">WireGuard</string>
<string name="bad_config_context">%1$s sin %2$s</string>
<string name="bad_config_context_top_level">%s</string>
<string name="bad_config_error">%1$s i %2$s</string>
<string name="bad_config_explanation_pka">: Må være positiv og ikke mer enn 65535</string>
<string name="bad_config_explanation_positive_number">: Må være positiv</string>
<string name="bad_config_explanation_udp_port">: Må være et gyldig UDP portnummer</string>
<string name="bad_config_reason_invalid_key">Ugyldig tegn</string>
<string name="bad_config_reason_invalid_number">Ugyldig tall</string>
<string name="bad_config_reason_invalid_value">Ugyldig verdi</string>
<string name="bad_config_reason_missing_attribute">Manglende attributt</string>
<string name="bad_config_reason_missing_section">Manglende seksjon</string>
<string name="bad_config_reason_syntax_error">Syntaksfeil</string>
<string name="bad_config_reason_unknown_attribute">Ukjent attributt</string>
<string name="bad_config_reason_unknown_section">Ukjent seksjon</string>
<string name="bad_config_reason_value_out_of_range">Verdien er utenfor gyldig område</string>
<string name="bad_extension_error">Filen må være .conf eller .zip</string>
<string name="cancel">Avbryt</string>
<string name="config_delete_error">Kan ikke slette konfigurasjonsfilen %s</string>
<string name="config_exists_error">Konfigurasjon for «%s» finnes allerede</string>
<string name="config_file_exists_error">Konfigurasjonsfil «%s» finnes allerede</string>
<string name="config_not_found_error">Konfigurasjonsfil «%s» ble ikke funnet</string>
<string name="config_rename_error">Kan ikke endre navn på konfigurasjonsfilen «%s»</string>
<string name="config_save_error">Kan ikke lagre konfigurasjonen for “%1$s”: %2$s</string>
<string name="config_save_success">Vellykket lagring av konfigurasjon for «%s»</string>
<string name="create_activity_title">Opprett WireGuard tunnel</string>
<string name="create_bin_dir_error">Kan ikke opprette lokal binærmappe</string>
<string name="create_downloads_file_error">Kan ikke opprette fil i nedlastingsmappen</string>
<string name="create_empty">Lag fra begynnelsen</string>
<string name="create_from_file">Importer fra fil eller arkiv</string>
<string name="create_from_qr_code">Skann QR-kode</string>
<string name="create_output_dir_error">Kan ikke opprette utdata-katalog</string>
<string name="create_temp_dir_error">Kan ikke opprette lokal, midlertidig mappe</string>
<string name="create_tunnel">Opprett tunnel</string>
<string name="copied_to_clipboard">%s kopiert til utklippstavlen</string>
<string name="dark_theme_summary_off">Bruker nå lyst (dag) tema</string>
<string name="dark_theme_summary_on">Bruker nå mørkt (natt) tema</string>
<string name="dark_theme_title">Bruk mørkt tema</string>
<string name="delete">Slett</string>
<string name="tv_delete">Velg tunnel som skal slettes</string>
<string name="tv_select_a_storage_drive">Velg en lagringsenhet</string>
<string name="tv_no_file_picker">Vennligst installer et filhåndteringsverktøy for å bla i filer</string>
<string name="tv_add_tunnel_get_started">Opprett en ny tunnel for å komme i gang</string>
<string name="disable_config_export_title">Deaktiver eksport av konfigurasjon</string>
<string name="disable_config_export_description">Deaktivering av konfigurasjonseksport gjør private nøkler mindre tilgjengelig</string>
<string name="dns_servers">DNS tjenere</string>
<string name="edit">Rediger</string>
<string name="endpoint">Endepunkt</string>
<string name="error_down">Feil når tunnel skulle tas ned: %s</string>
<string name="error_fetching_apps">Feil ved henting av applikasjonsliste: %s</string>
<string name="error_root">Vennligst få root-tilgang og prøv igjen</string>
<string name="error_up">Feil når tunnel skulle tas opp: %s</string>
<string name="exclude_private_ips">Utelukk private IP-adresser</string>
<string name="generate_new_private_key">Lag ny privat nøkkel</string>
<string name="generic_error">Ukjent «%s» feil</string>
<string name="hint_automatic">(automatisk)</string>
<string name="hint_generated">(generert)</string>
<string name="hint_optional">(valgfritt)</string>
<string name="hint_optional_discouraged">(valgfritt, anbefales ikke)</string>
<string name="hint_random">(tilfeldig)</string>
<string name="illegal_filename_error">Ugyldig filnavn «%s»</string>
<string name="import_error">Kan ikke importere tunnel: %s</string>
<string name="import_from_qr_code">Importer tunnel fra QR-kode</string>
<string name="import_success">Importerte «%s»</string>
<string name="interface_title">Grensesnitt</string>
<string name="key_contents_error">Ugyldig tegn i nøkkel</string>
<string name="key_length_error">Ugyldig nøkkellengde</string>
<string name="key_length_explanation_base64">: WireGuard base64-nøkler må være 44 tegn (32 byte)</string>
<string name="key_length_explanation_binary">: WireGuard nøkler må være 32 byte</string>
<string name="key_length_explanation_hex">: WireGuard hex-nøkler må være 64 tegn (32 byte)</string>
<string name="listen_port">Lytt på port</string>
<string name="log_export_error">Kan ikke eksportere logg: %s</string>
<string name="log_export_subject">WireGuard Android loggfil</string>
<string name="log_export_success">Lagret til «%s»</string>
<string name="log_export_title">Eksporter loggfil</string>
<string name="log_saver_activity_label">Lagre logg</string>
<string name="log_viewer_pref_summary">Logger kan være til hjelp med feilsøking</string>
<string name="log_viewer_pref_title">Vis programlogg</string>
<string name="log_viewer_title">Logg</string>
<string name="logcat_error">Kan ikke kjøre logcat: </string>
<string name="module_disabler_disabled_summary">Den eksperimentelle kjernemodulen kan gi bedre ytelse</string>
<string name="module_disabler_disabled_title">Aktiver backend for kjerne-modul</string>
<string name="module_disabler_enabled_summary">Backend i userspace er litt tregere men kan gi bedre stabilitet</string>
<string name="module_disabler_enabled_title">Deaktiver backend for kjerne-modul</string>
<string name="module_installer_error">Noe gikk galt. Vennligst prøv igjen</string>
<string name="module_installer_initial">Den eksperimentelle kjernemodulen kan gi bedre ytelse</string>
<string name="module_installer_not_found">Ingen moduler er tilgjengelige for din enhet</string>
<string name="module_installer_title">Last ned og installer kjernelenmodul</string>
<string name="module_installer_working">Laster ned og installerer…</string>
<string name="module_version_error">Kunne ikke finne versjon av kjerne-modulen</string>
<string name="mtu">MTU</string>
<string name="multiple_tunnels_summary_off">Når en tunnel slås på vil andre slås av</string>
<string name="multiple_tunnels_summary_on">Flere tunneler kan være aktivert samtidig</string>
<string name="multiple_tunnels_title">Tillat flere samtidige tunneler</string>
<string name="name">Navn</string>
<string name="no_config_error">Prøver å få opp en tunnel uten konfigurasjon</string>
<string name="no_configs_error">Ingen konfigurasjoner funnet</string>
<string name="no_tunnels_error">Ingen tunneler er opprettet</string>
<string name="parse_error_generic">streng</string>
<string name="parse_error_inet_address">IP-adresse</string>
<string name="parse_error_inet_endpoint">endepunkt</string>
<string name="parse_error_inet_network">IP nettverk</string>
<string name="parse_error_integer">nummer</string>
<string name="parse_error_reason">Kan ikke tolke %1$s “%2$s”</string>
<string name="peer">Partner</string>
<string name="permission_description">kontroller WireGuard-tunneler, aktiver og deaktiver dem. Kan potensielt ta ned internett-tilgangen</string>
<string name="permission_label">kontroller WireGuard-tunneler</string>
<string name="persistent_keepalive">Send keepalive-pakker</string>
<string name="pre_shared_key">Forhåndsdelt nøkkel</string>
<string name="pre_shared_key_enabled">aktivert</string>
<string name="private_key">Privat Nøkkel</string>
<string name="public_key">Offentlig nøkkel</string>
<string name="qr_code_hint">Tips: generer med `qrencode -t ansiutf8 &lt; tunnel.conf`.</string>
<string name="restore_on_boot_summary_off">Vil ikke ta opp aktive tunneler ved oppstart</string>
<string name="restore_on_boot_summary_on">Vil ta opp aktive tunneler ved oppstart</string>
<string name="restore_on_boot_title">Gjenopprett ved oppstart</string>
<string name="save">Lagre</string>
<string name="select_all">Velg alle</string>
<string name="settings">Innstillinger</string>
<string name="shell_exit_status_read_error">Skallet kan ikke lese avslutningsstatus</string>
<string name="shell_marker_count_error">Skallet forventet 4 markører, mottok %d</string>
<string name="shell_start_error">Skallet klarte ikke å starte: %d</string>
<string name="success_application_will_restart">Suksess. Programmet vil nå starte på nytt…</string>
<string name="toggle_all">Toggle alle</string>
<string name="toggle_error">Feil under toggling av WireGuard tunnel: %s</string>
<string name="tools_installer_already">wg og wg-quick er allerede installert</string>
<string name="tools_installer_failure">Kunne ikke installere kommandolinjeverktøy (ingen root-tilgang?)</string>
<string name="tools_installer_initial">Installer valgfrie verktøy for skripting</string>
<string name="tools_installer_initial_magisk">Installer valgfrie verktøy for skripting som Magisk modul</string>
<string name="tools_installer_initial_system">Installer valgfrie verktøy for skripting på systempartisjonen</string>
<string name="tools_installer_success_magisk">wg og wg-quick installert som en Magisk modul (omstart kreves)</string>
<string name="tools_installer_success_system">wg og wg-quick installert på systempartisjonen</string>
<string name="tools_installer_title">Installer kommandolinjeverktøy</string>
<string name="tools_installer_working">Installerer wg og wg-quick</string>
<string name="tools_unavailable_error">Påkrevde verktøy er ikke tilgjengelig</string>
<string name="transfer">Overfør</string>
<string name="transfer_bytes">%d B</string>
<string name="transfer_gibibytes">%.2f GiB</string>
<string name="transfer_kibibytes">%.2f KiB</string>
<string name="transfer_mibibytes">%.2f MiB</string>
<string name="transfer_rx_tx">rx: %1$s, tx: %2$s</string>
<string name="transfer_tibibytes">%.2f TiB</string>
<string name="tun_create_error">Kan ikke opprette tun enhetsfil</string>
<string name="tunnel_config_error">Kunne ikke konfigurere tunnel (wg-quick returnerte %d)</string>
<string name="tunnel_create_error">Kan ikke opprette tunnel: %s</string>
<string name="tunnel_create_success">Opprettet tunnelen «%s»</string>
<string name="tunnel_error_already_exists">Tunnel «%s» finnes allerede</string>
<string name="tunnel_error_invalid_name">Ugyldig navn</string>
<string name="tunnel_list_placeholder">Opprett ny tunnel med den blå knappen</string>
<string name="tunnel_name">Tunnelnavn</string>
<string name="tunnel_on_error">Kan ikke slå på tunnel (wgTurnOn returnerte %d)</string>
<string name="tunnel_rename_error">Kan ikke endre navn på tunnel: %s</string>
<string name="tunnel_rename_success">Endret navn på tunnelen til «%s»</string>
<string name="type_name_go_userspace">Bruk userspace</string>
<string name="type_name_kernel_module">Kjernemodul</string>
<string name="unknown_error">Ukjent feil</string>
<string name="version_summary">%1$s backend %2$s</string>
<string name="version_summary_checking">Sjekker %s backend versjon</string>
<string name="version_summary_unknown">Ukjent %s versjon</string>
<string name="version_title">WireGuard for Android v%s</string>
<string name="vpn_not_authorized_error">VPN-tjeneste er ikke autorisert av bruker</string>
<string name="vpn_start_error">Kan ikke starte Android VPN-tjenesten</string>
<string name="zip_export_error">Kan ikke eksportere tunneler: %s</string>
<string name="zip_export_success">Lagret til «%s»</string>
<string name="zip_export_summary">Zip-filen vil bli lagret i nedlastingsmappen</string>
<string name="zip_export_title">Eksporter tunneler til zip-fil</string>
<string name="biometric_prompt_zip_exporter_title">Autentiser for å eksportere tunneler</string>
<string name="biometric_prompt_private_key_title">Autentiser for å vise privatnøkkel</string>
<string name="biometric_auth_error">Autentiseringsfeil</string>
<string name="biometric_auth_error_reason">Autentiseringsfeil: %s</string>
</resources>
+8 -1
View File
@@ -97,10 +97,17 @@
<string name="create_output_dir_error">ਆਉਟਪੁੱਟ ਡਾਇਰੈਕਟਰੀ ਬਣਾਈ ਨਹੀਂ ਜਾ ਸਕਦੀ ਹੈ</string>
<string name="create_temp_dir_error">ਲੋਕਲ ਆਰਜ਼ੀ ਡਾਇਰੈਕਟਰੀ ਬਣਾਈ ਨਹੀਂ ਜਾ ਸਕਦੀ ਹੈ</string>
<string name="create_tunnel">ਟਨਲ ਬਣਾਓ</string>
<string name="copied_to_clipboard">%s ਕਲਿੱਪਬੋਰਡ ਵਿੱਚ ਕਾਪੀ ਕੀਤਾ</string>
<string name="dark_theme_summary_off">ਇਸ ਵੇਲੇ ਹਲਕਾ (ਦਿਨ) ਥੀਮ ਵਰਤਿਆ ਜਾ ਰਿਹਾ ਹੈ</string>
<string name="dark_theme_summary_on">ਇਸ ਵੇਲੇ ਗੂੜ੍ਹਾ (ਰਾਤ) ਥੀਮ ਵਰਤਿਆ ਜਾ ਰਿਹਾ ਹੈ</string>
<string name="dark_theme_title">ਗੂੜ੍ਹਾ ਥੀਮ ਵਰਤੋਂ</string>
<string name="delete">ਹਟਾਓ</string>
<string name="tv_delete">ਹਟਾਉਣ ਲਈ ਟਨਲ ਚੁਣੋ</string>
<string name="tv_select_a_storage_drive">ਸਟੋਰੇਜ਼ ਡਰਾਈਵ ਚੁਣੋ</string>
<string name="tv_no_file_picker">ਫਾਇਲਾਂ ਬਰਾਊਜ਼ ਕਰਨ ਲਈ ਫਾਇਲ ਪਰਬੰਧਕੀ ਸਹੂਲਤ ਇੰਸਟਾਲ ਕਰੋ</string>
<string name="tv_add_tunnel_get_started">ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਟਨਲ ਜੋੜੋ</string>
<string name="disable_config_export_title">ਸੰਰਚਨਾ ਐਕਸਪੋਰਟ ਕਰਨ ਨੂੰ ਅਸਮਰੱਥ ਕਰੋ</string>
<string name="disable_config_export_description">ਸੰਰਚਨਾ ਐਕਸਪੋਰਟ ਕਰਨ ਉੱਤੇ ਰੋਕ ਲਾਉਣ ਨਾਲ ਪ੍ਰਾਈਵੇਟ ਕੁੰਜੀਆਂ ਲਈ ਪਹੁੰਚ ਘਟੇਗੀ</string>
<string name="dns_servers">DNS ਸਰਵਰ</string>
<string name="edit">ਸੋਧੋ</string>
<string name="endpoint">ਐਂਡ-ਪੁਆਇੰਟ</string>
@@ -212,7 +219,7 @@
<string name="type_name_go_userspace">ਵਰਤੋਂ-ਸਪੇਸ ਤੇ ਜਾਓ</string>
<string name="type_name_kernel_module">ਕਰਨਲ ਮੋਡੀਊਲ</string>
<string name="unknown_error">ਅਣਪਛਾਤੀ ਗਲਤੀ</string>
<string name="version_summary">%1$s ਬੈਕਐਂਡ v%2$s</string>
<string name="version_summary">%1$s ਬੈਕਐਂਡ %2$s</string>
<string name="version_summary_checking">%s ਬੈਕਐਂਡ ਵਰਜ਼ਨ ਦੀ ਜਾਂਚ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ</string>
<string name="version_summary_unknown">ਅਣਪਛਾਤਾ %s ਵਰਜਨ</string>
<string name="version_title">Android ਲਈ WireGuard v%s</string>
+8 -1
View File
@@ -123,10 +123,17 @@
<string name="create_output_dir_error">Nie można utworzyć folderu wyjściowego</string>
<string name="create_temp_dir_error">Nie można stworzyć tymczasowego folderu lokalnego</string>
<string name="create_tunnel">Utwórz Tunel</string>
<string name="copied_to_clipboard">%s skopiowano do schowka</string>
<string name="dark_theme_summary_off">Obecnie używasz jasnego (dzień) motywu</string>
<string name="dark_theme_summary_on">Obecnie używa ciemnego (nocnego) motywu</string>
<string name="dark_theme_title">Użyj ciemnego motywu</string>
<string name="delete">Usuń</string>
<string name="tv_delete">Wybierz tunel do usunięcia</string>
<string name="tv_select_a_storage_drive">Wybierz dysk pamięci</string>
<string name="tv_no_file_picker">Zainstaluj narzędzie do zarządzania plikami, aby przeglądać pliki</string>
<string name="tv_add_tunnel_get_started">Dodaj tunel, aby rozpocząć</string>
<string name="disable_config_export_title">Wyłącz eksportowanie konfiguracji</string>
<string name="disable_config_export_description">Wyłączenie eksportowania konfiguracji sprawi, że klucze prywatne będą mniej dostępne</string>
<string name="dns_servers">Serwery DNS</string>
<string name="edit">Edytuj</string>
<string name="endpoint">Punkt końcowy</string>
@@ -238,7 +245,7 @@
<string name="type_name_go_userspace">Przestrzeń użytkownika Go</string>
<string name="type_name_kernel_module">Moduł jądra</string>
<string name="unknown_error">Nieznany błąd</string>
<string name="version_summary">Implementacja %1$s v%2$s</string>
<string name="version_summary">Implementacja %1$s %2$s</string>
<string name="version_summary_checking">Sprawdzanie wersji %s implementacji</string>
<string name="version_summary_unknown">Nieznana %s wersja</string>
<string name="version_title">WireGuard dla systemu Android v%s</string>
+8 -1
View File
@@ -110,10 +110,17 @@
<string name="create_output_dir_error">Nu se poate crea directorul de ieșire</string>
<string name="create_temp_dir_error">Nu se poate crea directorul temporar local</string>
<string name="create_tunnel">Creare tunel</string>
<string name="copied_to_clipboard">%s a fost copiat în memoria temporară</string>
<string name="dark_theme_summary_off">În prezent este utilizată tema luminoasă (zi)</string>
<string name="dark_theme_summary_on">În prezent este utilizată tema întunecată (noapte)</string>
<string name="dark_theme_title">Utilizare temă întunecată</string>
<string name="delete">Ștergere</string>
<string name="tv_delete">Selectează tunelul de șters</string>
<string name="tv_select_a_storage_drive">Selectează o unitate de stocare</string>
<string name="tv_no_file_picker">Instalează un serviciu de administrare a fișierelor pentru a căuta fișiere</string>
<string name="tv_add_tunnel_get_started">Adaugă un tunel pentru a începe</string>
<string name="disable_config_export_title">Dezactivează exportarea configurației</string>
<string name="disable_config_export_description">Dezactivarea exportării configurației face mai puțin accesibile cheile private</string>
<string name="dns_servers">Servere DNS</string>
<string name="edit">Editare</string>
<string name="endpoint">Punct final</string>
@@ -225,7 +232,7 @@
<string name="type_name_go_userspace">Spațiu de utilizator Go</string>
<string name="type_name_kernel_module">Modul nucleu</string>
<string name="unknown_error">Eroare necunoscută</string>
<string name="version_summary">Bibliotecă %1$s v%2$s</string>
<string name="version_summary">Bibliotecă %1$s %2$s</string>
<string name="version_summary_checking">Se verifică versiunea bibliotecii %s</string>
<string name="version_summary_unknown">Versiune %s necunoscută</string>
<string name="version_title">WireGuard pentru Android v%s</string>
+75 -68
View File
@@ -20,43 +20,43 @@
</plurals>
<plurals name="import_partial_success">
<item quantity="one">Импортирован %1$d из %2$d туннелей</item>
<item quantity="few">Импортировано %1$d из %2$d туннеля</item>
<item quantity="few">Импортировано %1$d из %2$d туннелей</item>
<item quantity="many">Импортировано %1$d из %2$d туннелей</item>
<item quantity="other">Импортировано %1$d из %2$d туннелей</item>
</plurals>
<plurals name="import_total_success">
<item quantity="one">Импортированный %d туннель</item>
<item quantity="one">Импортирован %d туннель</item>
<item quantity="few">Импортировано %d туннеля</item>
<item quantity="many">Импортировано %d туннелей</item>
<item quantity="other">Импортировано %d туннелей</item>
</plurals>
<plurals name="set_excluded_applications">
<item quantity="one">%d Исключенное приложение</item>
<item quantity="few">%d Исключенных приложений</item>
<item quantity="few">%d Исключенных приложения</item>
<item quantity="many">%d Исключенных приложений</item>
<item quantity="other">%d Исключенных приложений</item>
</plurals>
<plurals name="set_included_applications">
<item quantity="one">%d Включенное приложение</item>
<item quantity="few">%d Включенных приложений</item>
<item quantity="many">%d Включенных приложений</item>
<item quantity="other">%d Включенных приложений</item>
<item quantity="one">%d включенное приложение</item>
<item quantity="few">%d включенных приложения</item>
<item quantity="many">%d включенных приложений</item>
<item quantity="other">%d включенных приложений</item>
</plurals>
<plurals name="n_excluded_applications">
<item quantity="one">%d исключен</item>
<item quantity="one">%d исключено</item>
<item quantity="few">%d исключено</item>
<item quantity="many">%d исключено</item>
<item quantity="other">%d исключено</item>
</plurals>
<plurals name="n_included_applications">
<item quantity="one">%d влючен</item>
<item quantity="one">%d влючено</item>
<item quantity="few">%d включено</item>
<item quantity="many">%d включено</item>
<item quantity="other">%d включено</item>
</plurals>
<string name="all_applications">Все приложения</string>
<string name="exclude_from_tunnel">Исключить</string>
<string name="include_in_tunnel">Только включить</string>
<string name="exclude_from_tunnel">Исключить для</string>
<string name="include_in_tunnel">Включить для</string>
<plurals name="include_n_applications">
<item quantity="one">Включить %d приложение</item>
<item quantity="few">Включить %d приложения</item>
@@ -70,65 +70,72 @@
<item quantity="other">Исключить %d приложений</item>
</plurals>
<plurals name="persistent_keepalive_seconds_unit">
<item quantity="one">каждую %d секунду</item>
<item quantity="one">каждую секунду</item>
<item quantity="few">каждые %d секунды</item>
<item quantity="many">каждые %d секунд</item>
<item quantity="other">каждые %d секунд</item>
</plurals>
<plurals name="persistent_keepalive_seconds_suffix">
<item quantity="one">секунда</item>
<item quantity="few">секунд</item>
<item quantity="few">секунды</item>
<item quantity="many">секунд</item>
<item quantity="other">секунд</item>
</plurals>
<string name="use_all_applications">Использовать все приложения</string>
<string name="add_peer">Добавить пира</string>
<string name="addresses">IP-адреса</string>
<string name="add_peer">Добавить пир</string>
<string name="addresses">Адреса</string>
<string name="applications">Приложения</string>
<string name="allow_remote_control_intents_summary_off">Сторонние приложения не могут переключать туннели (рекомендуется)</string>
<string name="allow_remote_control_intents_summary_on">Сторонние приложения могут переключать туннели (дополнительно)</string>
<string name="allow_remote_control_intents_title">Доступ к другим приложениям</string>
<string name="allow_remote_control_intents_summary_off">Внешние приложения не могут переключать туннели (рекомендуется)</string>
<string name="allow_remote_control_intents_summary_on">Внешние приложения могут переключать туннели (продвинутые)</string>
<string name="allow_remote_control_intents_title">Разрешить управление через внешние приложения</string>
<string name="allowed_ips">Разрешенные IP-адреса</string>
<string name="app_name">WireGuard</string>
<string name="bad_config_context">%1$s из %2$s</string>
<string name="bad_config_context_top_level">%s</string>
<string name="bad_config_error">%1$s в %2$s</string>
<string name="bad_config_explanation_pka">: Должен быть положительный и не больше 65535</string>
<string name="bad_config_explanation_positive_number">: Должен быть положительный</string>
<string name="bad_config_explanation_pka">: Значение должно быть больше нуля, но меньше 65535</string>
<string name="bad_config_explanation_positive_number">: Значение должно быть больше нуля</string>
<string name="bad_config_explanation_udp_port">: Должен быть действительный номер порта UDP</string>
<string name="bad_config_reason_invalid_key">Неправильный ключ</string>
<string name="bad_config_reason_invalid_number">Неправильный номер</string>
<string name="bad_config_reason_invalid_value">Неправильное значение</string>
<string name="bad_config_reason_invalid_value">Недопустимое значение</string>
<string name="bad_config_reason_missing_attribute">Несуществующий атрибут</string>
<string name="bad_config_reason_missing_section">Несуществующий раздел</string>
<string name="bad_config_reason_syntax_error">Синтаксическая ошибка</string>
<string name="bad_config_reason_unknown_attribute">Неизвестный атрибут</string>
<string name="bad_config_reason_unknown_section">Неизвестный раздел</string>
<string name="bad_config_reason_value_out_of_range">Значение вне диапазона</string>
<string name="bad_extension_error">Файл должен быть .conf или .zip</string>
<string name="bad_extension_error">Файл должен иметь формат .conf или .zip</string>
<string name="cancel">Отмена</string>
<string name="config_delete_error">Не удалось удалить файл конфигурации %s</string>
<string name="config_exists_error">Конфигурация для “%s” уже существует</string>
<string name="config_file_exists_error">Файл конфигурации “%s” уже существует</string>
<string name="config_not_found_error">Файл конфигурации “%s” не найден</string>
<string name="config_rename_error">Не удалось переименовать файл конфигурации “%s”</string>
<string name="config_save_error">Не удается сохранить конфигурацию для “%1$s”: %2$s</string>
<string name="config_save_error">Не удалось сохранить конфигурацию для “%1$s”: %2$s</string>
<string name="config_save_success">Конфигурация для “%s” успешно сохранена</string>
<string name="create_activity_title">Создать WireGuard туннель</string>
<string name="create_bin_dir_error">Не удалось создать локальный двоичный каталог</string>
<string name="create_activity_title">Создать туннель WireGuard</string>
<string name="create_bin_dir_error">Не удалось создать локальный бинарный каталог</string>
<string name="create_downloads_file_error">Не удалось создать файл в каталоге загрузок</string>
<string name="create_empty">Создать вручную</string>
<string name="create_empty">Создать с нуля</string>
<string name="create_from_file">Импорт из файла или архива</string>
<string name="create_from_qr_code">Сканировать QR-код</string>
<string name="create_output_dir_error">Не удалось создать выходной каталог</string>
<string name="create_temp_dir_error">Не удалось создать временный локальный каталог</string>
<string name="create_tunnel">Создать туннель</string>
<string name="copied_to_clipboard">Скопирован(о) в буфер обмена: %s</string>
<string name="dark_theme_summary_off">В данный момент используется светлая (дневная) тема</string>
<string name="dark_theme_summary_on">В данный момент используется темная (ночная) тема</string>
<string name="dark_theme_title">Использовать темную тему</string>
<string name="delete">Удалить</string>
<string name="tv_delete">Выберите туннель для удаления</string>
<string name="tv_select_a_storage_drive">Выберите накопитель</string>
<string name="tv_no_file_picker">Пожалуйста установите утилиту управления файлами для их просмотра</string>
<string name="tv_add_tunnel_get_started">Добавьте туннель, чтобы начать</string>
<string name="disable_config_export_title">Отключить экспорт конфигурации</string>
<string name="disable_config_export_description">Отключение экспорта конфигурации делает приватные ключи менее доступными</string>
<string name="dns_servers">DNS-серверы</string>
<string name="edit">Редактировать</string>
<string name="edit">Изменить</string>
<string name="endpoint">Конечная точка</string>
<string name="error_down">Ошибка при выходе из туннеля: %s</string>
<string name="error_fetching_apps">Ошибка при получении списка приложений: %s</string>
@@ -140,43 +147,43 @@
<string name="hint_automatic">(авто)</string>
<string name="hint_generated">(сгенерирован)</string>
<string name="hint_optional">(опционально)</string>
<string name="hint_optional_discouraged">(опционально, не рекомендуется)</string>
<string name="hint_random">(авто)</string>
<string name="illegal_filename_error">Неверное имя файла “%s”</string>
<string name="import_error">Не удалось импортировать туннель: %s</string>
<string name="hint_optional_discouraged">(необязательно, не рекомендуется)</string>
<string name="hint_random">(случайно)</string>
<string name="illegal_filename_error">Недопустимое имя файла “%s”</string>
<string name="import_error">Невозможно импортировать туннель: %s</string>
<string name="import_from_qr_code">Импортировать туннель из QR-кода</string>
<string name="import_success">Импортировано “%s”</string>
<string name="interface_title">Интерфейс</string>
<string name="key_contents_error">Плохие символы в ключе</string>
<string name="key_length_error">Неверная длина ключа</string>
<string name="key_length_explanation_base64">: Ключи WireGuard base64 должны содержать 44 символа (32 байта)</string>
<string name="key_length_explanation_binary">: Ключи WireGuard должны быть 32 байта</string>
<string name="key_length_error">Неправильная длина ключа</string>
<string name="key_length_explanation_base64">: ключи WireGuard base64 должны содержать 44 символа (32 байта)</string>
<string name="key_length_explanation_binary">: ключи WireGuard должны быть 32 байта</string>
<string name="key_length_explanation_hex">: HEX ключи WireGuard должны содержать 64 символа (32 байта)</string>
<string name="listen_port">Порт</string>
<string name="log_export_error">Не удалось экспортировать логи: %s</string>
<string name="log_export_subject">Файл логов WireGuard Android</string>
<string name="log_export_error">Не удалось экспортировать журнал: %s</string>
<string name="log_export_subject">Файл журнала WireGuard Android</string>
<string name="log_export_success">Сохранено в “%s”</string>
<string name="log_export_title">Экспорт логов в файл</string>
<string name="log_saver_activity_label">Сохранить логи</string>
<string name="log_viewer_pref_summary">Логи могут помочь с отладкой</string>
<string name="log_viewer_pref_title">Просмотр логов приложения</string>
<string name="log_viewer_title">Логи</string>
<string name="log_export_title">Экспорт журнала в файл</string>
<string name="log_saver_activity_label">Сохранить журнал</string>
<string name="log_viewer_pref_summary">Журналы могут помочь при отладке</string>
<string name="log_viewer_pref_title">Просмотр журналов приложения</string>
<string name="log_viewer_title">Журнал</string>
<string name="logcat_error">Не удалось запустить logcat: </string>
<string name="module_disabler_disabled_summary">Экспериментальный модуль ядра приоритетнее и улучшает производительность</string>
<string name="module_disabler_disabled_title">Включить модуль ядра</string>
<string name="module_disabler_disabled_summary">Экспериментальный модуль ядра может улучшить производительность</string>
<string name="module_disabler_disabled_title">Включить бэкэнд модуля ядра</string>
<string name="module_disabler_enabled_summary">Пользовательское пространство немного медленнее и улучшает стабильность</string>
<string name="module_disabler_enabled_title">Выключить модуль ядра</string>
<string name="module_disabler_enabled_title">Отключить бэкэнд модуля ядра</string>
<string name="module_installer_error">Что-то пошло не так. Пожалуйста, попробуйте еще раз</string>
<string name="module_installer_initial">Экспериментальный модуль ядра может улучшить производительность</string>
<string name="module_installer_not_found">Для вашего устройства нет доступных модулей</string>
<string name="module_installer_title">Скачать и установить модуль ядра</string>
<string name="module_installer_working">Скачивание и установка…</string>
<string name="module_version_error">Не удалось определить версию модуля ядра</string>
<string name="module_version_error">Невозможно определить версию модуля ядра</string>
<string name="mtu">MTU</string>
<string name="multiple_tunnels_summary_off">Только один туннель, выключит другие</string>
<string name="multiple_tunnels_summary_on">Могут быть включены несколько туннелей одновременно</string>
<string name="multiple_tunnels_summary_off">Включение одного туннеля отключит другие</string>
<string name="multiple_tunnels_summary_on">Одновременно можно включить несколько туннелей</string>
<string name="multiple_tunnels_title">Несколько туннелей</string>
<string name="name">Имя</string>
<string name="name">Название</string>
<string name="no_config_error">Попытка поднять туннель без конфигурации</string>
<string name="no_configs_error">Конфигурации не найдены</string>
<string name="no_tunnels_error">Туннелей не существует</string>
@@ -185,7 +192,7 @@
<string name="parse_error_inet_endpoint">конечная точка</string>
<string name="parse_error_inet_network">IP-сеть</string>
<string name="parse_error_integer">число</string>
<string name="parse_error_reason">Не могу разобрать %1$s “%2$s”</string>
<string name="parse_error_reason">Не удается спарсить %1$s “%2$s”</string>
<string name="peer">Пир</string>
<string name="permission_description">управлять туннелями WireGuard, включая и отключая туннели по желанию, потенциально перенаправляя интернет-трафик</string>
<string name="permission_label">управлять туннелями WireGuard</string>
@@ -197,21 +204,21 @@
<string name="qr_code_hint">Совет: генерировать с `qrencode -t ansiutf8 &lt; tunnel.conf`.</string>
<string name="restore_on_boot_summary_off">Не поднимать ранее выбранные туннели при загрузке</string>
<string name="restore_on_boot_summary_on">Поднимать ранее выбранные туннели при загрузке</string>
<string name="restore_on_boot_title">Восстанавливать при загрузке</string>
<string name="restore_on_boot_title">Восстановить при загрузке</string>
<string name="save">Сохранить</string>
<string name="select_all">Выбрать все</string>
<string name="settings">Настройки</string>
<string name="shell_exit_status_read_error">Shell не может прочитать статус выхода</string>
<string name="shell_marker_count_error">Shell ожидает 4 маркера, получено %d</string>
<string name="shell_start_error">Не удалось запустить Shell: %d</string>
<string name="success_application_will_restart">Успех. Приложение перезапустится…</string>
<string name="success_application_will_restart">Успешно. Приложение будет перезапущено…</string>
<string name="toggle_all">Инвертировать все</string>
<string name="toggle_error">Ошибка переключения туннеля WireGuard: %s</string>
<string name="tools_installer_already">wg и wg-quick уже установлены</string>
<string name="tools_installer_failure">Не удалось установить инструменты командной строки (нет root?)</string>
<string name="tools_installer_initial">Установите дополнительные инструменты для сценариев</string>
<string name="tools_installer_initial_magisk">Установите дополнительные инструменты для сценариев в качестве модуля Magisk</string>
<string name="tools_installer_initial_system">Установите дополнительные инструменты для сценариев в системный раздел</string>
<string name="tools_installer_initial">Установить дополнительные инструменты для сценариев</string>
<string name="tools_installer_initial_magisk">Установить дополнительные инструменты для сценариев в качестве модуля Magisk</string>
<string name="tools_installer_initial_system">Установить дополнительные инструменты для сценариев в системный раздел</string>
<string name="tools_installer_success_magisk">wg и wg-quick установлены как модуль Magisk (требуется перезагрузка)</string>
<string name="tools_installer_success_system">wg и wg-quick установлены в системный раздел</string>
<string name="tools_installer_title">Установить инструменты командной строки</string>
@@ -219,37 +226,37 @@
<string name="tools_unavailable_error">Необходимые инструменты недоступны</string>
<string name="transfer">Статистика</string>
<string name="transfer_bytes">%d Б</string>
<string name="transfer_gibibytes">%.2f Гб</string>
<string name="transfer_kibibytes">%.2f Кб</string>
<string name="transfer_mibibytes">%.2f Мб</string>
<string name="transfer_rx_tx">Принято: %1$s, Отдано: %2$s</string>
<string name="transfer_tibibytes">%.2f Тб</string>
<string name="transfer_gibibytes">%.2f ГиБ</string>
<string name="transfer_kibibytes">%.2f КиБ</string>
<string name="transfer_mibibytes">%.2f МиБ</string>
<string name="transfer_rx_tx">Принято: %1$s, Передано: %2$s</string>
<string name="transfer_tibibytes">%.2f ТиБ</string>
<string name="tun_create_error">Не удалось создать устройство tun</string>
<string name="tunnel_config_error">Не удалось настроить туннель (wg-quick вернул %d)</string>
<string name="tunnel_create_error">Не удалось создать туннель: %s</string>
<string name="tunnel_create_success">Успешно созданный туннель “%s”</string>
<string name="tunnel_create_success">Успешно создан туннель “%s”</string>
<string name="tunnel_error_already_exists">Туннель “%s” уже существует</string>
<string name="tunnel_error_invalid_name">Неправильное имя</string>
<string name="tunnel_error_invalid_name">Некорректное название</string>
<string name="tunnel_list_placeholder">Добавьте туннель с помощью синей кнопки</string>
<string name="tunnel_name">Название туннеля</string>
<string name="tunnel_on_error">Не удалось включить туннель (wgTurnOn вернул %d)</string>
<string name="tunnel_rename_error">Не удалось переименовать туннель: %s</string>
<string name="tunnel_rename_success">Туннель успешно переименован в “%s”</string>
<string name="type_name_go_userspace">Пользовательское пространство</string>
<string name="type_name_go_userspace">Перейти в пользовательское пространство</string>
<string name="type_name_kernel_module">Модуль ядра</string>
<string name="unknown_error">Неизвестная ошибка</string>
<string name="version_summary">%1$s v%2$s</string>
<string name="version_summary_checking">Проверка версии %s</string>
<string name="version_summary">%1$s бэкэнд %2$s</string>
<string name="version_summary_checking">Проверка версии бэкэнда %s</string>
<string name="version_summary_unknown">Неизвестная версия %s</string>
<string name="version_title">WireGuard для Android v%s</string>
<string name="vpn_not_authorized_error">VPN-сервис не авторизован пользователем</string>
<string name="vpn_not_authorized_error">Сервис VPN не авторизован пользователем</string>
<string name="vpn_start_error">Не удалось запустить службу Android VPN</string>
<string name="zip_export_error">Не удалось экспортировать туннели: %s</string>
<string name="zip_export_success">Сохранено в “%s”</string>
<string name="zip_export_summary">Zip-архив будет сохранен в папке загрузок</string>
<string name="zip_export_title">Экспорт туннелей в zip-архив</string>
<string name="zip_export_summary">Zip-файл будет сохранен в папке загрузок</string>
<string name="zip_export_title">Экспорт туннелей в zip-файл</string>
<string name="biometric_prompt_zip_exporter_title">Аутентификация для экспорта туннелей</string>
<string name="biometric_prompt_private_key_title">Аутентификация для просмотра приватного ключа</string>
<string name="biometric_prompt_private_key_title">Аутентификация для просмотра закрытого ключа</string>
<string name="biometric_auth_error">Ошибка аутентификации</string>
<string name="biometric_auth_error_reason">Ошибка аутентификации: %s</string>
</resources>
+142
View File
@@ -0,0 +1,142 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="all_applications">Všetky aplikácie</string>
<string name="exclude_from_tunnel">Vylúč</string>
<string name="include_in_tunnel">Zahrň len</string>
<string name="use_all_applications">Použi všetky aplikácie</string>
<string name="add_peer">Pridať peera</string>
<string name="addresses">Adresy</string>
<string name="applications">Aplikácie</string>
<string name="allow_remote_control_intents_title">Povoliť aplikáciám vzdialenú správu</string>
<string name="allowed_ips">Povolené IP adresy</string>
<string name="app_name">WireGuard</string>
<string name="bad_config_context_top_level">%s</string>
<string name="bad_config_explanation_pka">: Musí byť kladné a nie väčšie ako 65535</string>
<string name="bad_config_explanation_positive_number">: Musí byť kladné</string>
<string name="bad_config_explanation_udp_port">: Musí byť platné číslo UDP portu</string>
<string name="bad_config_reason_invalid_key">Neplatný kľúč</string>
<string name="bad_config_reason_invalid_number">Neplatné číslo</string>
<string name="bad_config_reason_invalid_value">Neplatná hodnota</string>
<string name="bad_config_reason_missing_attribute">Chýbajúci atribút</string>
<string name="bad_config_reason_missing_section">Chýbajúc sekcia</string>
<string name="bad_config_reason_syntax_error">Chyba syntaxu</string>
<string name="bad_config_reason_unknown_attribute">Neznámy atribút</string>
<string name="bad_config_reason_unknown_section">Neznáma sekcia</string>
<string name="bad_config_reason_value_out_of_range">Hodnota mimo povoleného rozsahu</string>
<string name="bad_extension_error">Súbor musí byť .conf alebo .zip</string>
<string name="cancel">Zrušiť</string>
<string name="config_delete_error">Nemožete vymazať konfiguračný súbor %s</string>
<string name="config_exists_error">Konfigurácia pre “%s” už existuje</string>
<string name="config_file_exists_error">Konfiguračný súbor pre “%s” už existuje</string>
<string name="config_not_found_error">Konfiguračný súbor “%s” sa nenašiel</string>
<string name="config_rename_error">Nemôžete premenovať konfiguračný súbor “%s”</string>
<string name="config_save_error">Nemôžete uložiť konfiguráciu pre “%1$s”: %2$s</string>
<string name="config_save_success">Úspešne sa podarilo uložiť konfiguráciu pre “%s”</string>
<string name="create_activity_title">Vytvoriť WireGuard tunel</string>
<string name="create_bin_dir_error">Nemôžete vytvoriť lokálny binárny súbor</string>
<string name="create_downloads_file_error">Nemôžete vytvoriť súbor v priečinku downloads</string>
<string name="create_empty">Vytvoriť od počiatku</string>
<string name="create_from_file">Importovať zo súboru alebo archívu</string>
<string name="create_from_qr_code">Skenovať z QR kódu</string>
<string name="create_tunnel">Vytvoriť tunel</string>
<string name="copied_to_clipboard">%s skopírované do schránky</string>
<string name="dark_theme_summary_off">Momentálne používate svetlý (denný) vzhľad</string>
<string name="dark_theme_summary_on">Momentálne používate tmavý (nočný) vzhľad</string>
<string name="dark_theme_title">Používať tmavý vzhľad</string>
<string name="delete">Odstrániť</string>
<string name="tv_delete">Vyberte tunel na odstránenie</string>
<string name="tv_select_a_storage_drive">Vyberte úložnú jednotku</string>
<string name="tv_no_file_picker">Prosím nainštalujte manažéra súbor aby ste mohli prehliadať súbory</string>
<string name="tv_add_tunnel_get_started">Pridajte tunel aby ste mohli začať</string>
<string name="dns_servers">Servery DNS</string>
<string name="edit">Upraviť</string>
<string name="endpoint">Koncový bod</string>
<string name="error_down">Chyba pri vypínaní tunela: %s</string>
<string name="error_fetching_apps">Chyba pri načítaní zoznamu aplikácií: %s</string>
<string name="error_root">Získajte prístup root a skúste znova</string>
<string name="error_up">Chyba pri vyvolávaní tunela: %s</string>
<string name="exclude_private_ips">Vynechať privátne IP</string>
<string name="generate_new_private_key">Generovať nový privátny kľúč</string>
<string name="generic_error">Neznáma “%s” chyba</string>
<string name="hint_generated">(generované)</string>
<string name="hint_optional">(voliteľné)</string>
<string name="hint_optional_discouraged">(voliteľné, neodporúča sa)</string>
<string name="hint_random">(náhodné)</string>
<string name="illegal_filename_error">Ilegálne meno súboru “%s”</string>
<string name="import_error">Nepodarilo sa importovať tunel: %s</string>
<string name="import_from_qr_code">Importovať tunel z QR kódu</string>
<string name="import_success">Podarilo sa importovať “%s”</string>
<string name="interface_title">Rozhranie</string>
<string name="key_contents_error">Nepovolené charaktery v kľúči</string>
<string name="key_length_error">Nesprávna dĺžka kľúču</string>
<string name="key_length_explanation_base64">: WireGuard base64 kľúče musia mať 44 charakterov (32 bytes)</string>
<string name="key_length_explanation_binary">: WireGuard kľúče musia byť 32 bytové</string>
<string name="key_length_explanation_hex">: WireGuard hex kľúče musia mať 64 charakterov (32 bytes)</string>
<string name="log_export_error">Nepodarilo sa exportovať log: %s</string>
<string name="log_export_success">Uložené do “%s”</string>
<string name="log_export_title">Exportovať denník udalostí</string>
<string name="log_saver_activity_label">Uložiť denník udalostí</string>
<string name="log_viewer_pref_summary">Denník udalosti môžu byt nápomocné pri ladení aplikácie</string>
<string name="log_viewer_pref_title">Zobraziť denník udalostí aplikácie</string>
<string name="module_disabler_enabled_summary">Pomalšie užívatelské prostredie môže zlepšiť stabilitu</string>
<string name="module_installer_error">Niečo sa pokazilo. Prosím, skúste znova</string>
<string name="module_installer_not_found">Pre vaše zariadenie nie sú k dispozícii žiadne moduly</string>
<string name="module_installer_title">Stiahni a nainštaluj kernel modul</string>
<string name="module_installer_working">Sťahuje a inštalujem…</string>
<string name="mtu">Maximálna prenosová jednotka</string>
<string name="multiple_tunnels_summary_off">Zapnutím jedného tunela vypnete ostatné</string>
<string name="multiple_tunnels_summary_on">Môžu byť zapnuté viaceré tunele naraz</string>
<string name="name">Názov</string>
<string name="no_config_error">Pokúšam sa vyvolať tunel bez konfigurácie</string>
<string name="no_configs_error">Nenašli sa žiadne konfigurácie</string>
<string name="no_tunnels_error">Neexistujú žiadne tunely</string>
<string name="parse_error_inet_address">IP adresa</string>
<string name="parse_error_inet_endpoint">koncový bod</string>
<string name="parse_error_inet_network">IP sieť</string>
<string name="parse_error_integer">číslo</string>
<string name="pre_shared_key_enabled">povolené</string>
<string name="private_key">Súkromný kľúč</string>
<string name="public_key">Verejný kľúč</string>
<string name="restore_on_boot_title">Obnov po štarte</string>
<string name="save">Uložiť</string>
<string name="select_all">Označiť všetko</string>
<string name="settings">Nastavenia</string>
<string name="toggle_all">Prepnúť všetko</string>
<string name="tools_installer_already">wg a wg-quick už sú nainštalované</string>
<string name="tools_installer_initial">Nainštalovať voliteľné nástroje pre skriptovanie</string>
<string name="tools_installer_initial_magisk">Nainštalovať voliteľné nástroje pre skriptovanie ako Magisk module</string>
<string name="tools_installer_success_magisk">wg a wg-quick sú nainštalované ako Magisk modul (reštart požadovaný)</string>
<string name="tools_installer_title">Inštalácia nástrojov príkazového riadku</string>
<string name="tools_installer_working">Inštalácia wg a wg-quick</string>
<string name="tools_unavailable_error">Potrebné nástroje nie sú k dispozícii</string>
<string name="transfer">Prenos</string>
<string name="transfer_bytes">%d B</string>
<string name="transfer_gibibytes">%.2f GiB</string>
<string name="transfer_kibibytes">%.2f KiB</string>
<string name="transfer_mibibytes">%.2f MiB</string>
<string name="transfer_rx_tx">sem: %1$s, tam: %2$s</string>
<string name="transfer_tibibytes">%.2f TiB</string>
<string name="tun_create_error">Nepodarilo sa vytvoriť tun zariadenie</string>
<string name="tunnel_create_error">Nepodarilo sa vytvoriť tunel: %s</string>
<string name="tunnel_create_success">Úspešne vytvorený tunel “%s”</string>
<string name="tunnel_error_already_exists">Tunel “%s” už existuje</string>
<string name="tunnel_error_invalid_name">Neplatný názov</string>
<string name="tunnel_list_placeholder">Pridajte tunel pomocou modrého tlačidla</string>
<string name="tunnel_name">Meno tunelu</string>
<string name="tunnel_rename_error">Nepodarilo sa premenovať tunel: %s</string>
<string name="tunnel_rename_success">Úspešne premenovaný tunel na “%s”</string>
<string name="type_name_kernel_module">Modul jadra</string>
<string name="unknown_error">Neznáma chyba</string>
<string name="version_summary_unknown">Neznáma %s verzia</string>
<string name="version_title">WireGuard pre Android v%s</string>
<string name="vpn_not_authorized_error">VPN služba neautorizovaná používateľom</string>
<string name="vpn_start_error">Nepodarilo sa spustiť Android VPN službu</string>
<string name="zip_export_error">Nepodarilo sa exportovať tunely: %s</string>
<string name="zip_export_success">Uložené ako “%s”</string>
<string name="zip_export_summary">Zip súbor bude uložený do priečinka na sťahovanie</string>
<string name="zip_export_title">Export tunelov do zip súboru</string>
<string name="biometric_prompt_zip_exporter_title">Overovanie pre export tunelov</string>
<string name="biometric_prompt_private_key_title">Overovanie pre zobrazenie privátneho kľúča</string>
<string name="biometric_auth_error">Overovanie zlyhalo</string>
<string name="biometric_auth_error_reason">Overovanie zlyhalo: %s</string>
</resources>
+6 -1
View File
@@ -127,6 +127,11 @@
<string name="dark_theme_summary_on">V uporabi temna (nočna) tema</string>
<string name="dark_theme_title">Uporabi temno temo</string>
<string name="delete">Izbriši</string>
<string name="tv_delete">Izberi tunel za izbris</string>
<string name="tv_no_file_picker">Prosim namesti orodje za upravljanje datotek za njihov ogled</string>
<string name="tv_add_tunnel_get_started">Za začetek dodaj tunel</string>
<string name="disable_config_export_title">Onemogoči izvoz nastavitev</string>
<string name="disable_config_export_description">Onemogočavnje nastavitev za izvoz nastavitev naredi tajne kluče manj dostopne</string>
<string name="dns_servers">Strežniki DNS</string>
<string name="edit">Uredi</string>
<string name="endpoint">Končna točka</string>
@@ -238,7 +243,7 @@
<string name="type_name_go_userspace">Uporabniški prostor Go</string>
<string name="type_name_kernel_module">Modul jedra</string>
<string name="unknown_error">Neznana napaka</string>
<string name="version_summary">Zaledje %1$s v%2$s</string>
<string name="version_summary">Zaledje %1$s %2$s</string>
<string name="version_summary_checking">Preverjam verzijo zaledja %s</string>
<string name="version_summary_unknown">Neznana verzija %s</string>
<string name="version_title">WireGuard za Android v%s</string>
+162
View File
@@ -0,0 +1,162 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="delete_error">
<item quantity="one">Kunde inte ta bort %d tunnel: %s</item>
<item quantity="other">Kunde inte ta bort %d tunnlar: %s</item>
</plurals>
<plurals name="delete_success">
<item quantity="one">Tog bort %d tunneln</item>
<item quantity="other">Tog bort %d tunnlar</item>
</plurals>
<plurals name="delete_title">
<item quantity="one">%d tunnel vald</item>
<item quantity="other">%d tunnlar valda</item>
</plurals>
<plurals name="import_partial_success">
<item quantity="one">Importerade %1$d av %2$d tunnlar</item>
<item quantity="other">Importerade %1$d av %2$d tunnlar</item>
</plurals>
<plurals name="import_total_success">
<item quantity="one">Importerade %d tunnel</item>
<item quantity="other">Importerade %d tunnlar</item>
</plurals>
<plurals name="set_excluded_applications">
<item quantity="one">%d exkluderad applikation</item>
<item quantity="other">%d Exkluderade applikationer</item>
</plurals>
<plurals name="set_included_applications">
<item quantity="one">%d inkluderad applikation</item>
<item quantity="other">%d inkluderade applikationer</item>
</plurals>
<plurals name="n_excluded_applications">
<item quantity="one">%d exkluderad</item>
<item quantity="other">%d exkluderade</item>
</plurals>
<plurals name="n_included_applications">
<item quantity="one">%d inkluderad</item>
<item quantity="other">%d inkluderade</item>
</plurals>
<string name="all_applications">Alla applikationer</string>
<string name="exclude_from_tunnel">Exkludera</string>
<string name="include_in_tunnel">Inkludera endast</string>
<plurals name="include_n_applications">
<item quantity="one">Inkludera %d app</item>
<item quantity="other">Inkludera %d appar</item>
</plurals>
<plurals name="exclude_n_applications">
<item quantity="one">Exkludera %d app</item>
<item quantity="other">Exkludera %d appar</item>
</plurals>
<plurals name="persistent_keepalive_seconds_unit">
<item quantity="one">varje sekund</item>
<item quantity="other">varje %d sekunder</item>
</plurals>
<plurals name="persistent_keepalive_seconds_suffix">
<item quantity="one">sekund</item>
<item quantity="other">sekunder</item>
</plurals>
<string name="use_all_applications">Använd alla appar</string>
<string name="add_peer">Lägg till klient</string>
<string name="addresses">Adresser</string>
<string name="applications">Applikationer</string>
<string name="allow_remote_control_intents_summary_off">Externa appar kan inte växla tunnlar (rekommenderas)</string>
<string name="allow_remote_control_intents_summary_on">Externa appar kan växla tunnlar (avancerat)</string>
<string name="allow_remote_control_intents_title">Tillåt fjärrstyrningsappar</string>
<string name="allowed_ips">Tillåtna IP-adresser</string>
<string name="app_name">WireGuard</string>
<string name="bad_config_context_top_level">%s</string>
<string name="bad_config_error">%1$s i %2$s</string>
<string name="bad_config_explanation_pka">: Måste vara positivt och högst 65535</string>
<string name="bad_config_explanation_positive_number">: Måste vara positivt</string>
<string name="bad_config_explanation_udp_port">: Måste vara ett giltigt UDP-portnummer</string>
<string name="bad_config_reason_invalid_key">Ogiltig nyckel</string>
<string name="bad_config_reason_invalid_number">Ogiltigt nummer</string>
<string name="bad_config_reason_invalid_value">Ogiltigt värde</string>
<string name="bad_config_reason_missing_attribute">Attribut saknas</string>
<string name="bad_config_reason_missing_section">Avsnitt saknas</string>
<string name="bad_config_reason_syntax_error">Syntaxfel</string>
<string name="bad_config_reason_unknown_attribute">Okänt attribut</string>
<string name="bad_config_reason_unknown_section">Okänt avsnitt</string>
<string name="bad_config_reason_value_out_of_range">Värde utanför giltigt intervall</string>
<string name="bad_extension_error">Filen måste vara .conf eller .zip</string>
<string name="cancel">Avbryt</string>
<string name="config_delete_error">Kan inte ta bort konfigurationsfilen %s</string>
<string name="config_exists_error">Konfiguration för ”%s” finns redan</string>
<string name="config_file_exists_error">Konfigurationsfil ”%s” finns redan</string>
<string name="config_not_found_error">Konfigurationsfil ”%s” hittades inte</string>
<string name="config_rename_error">Kan inte byta namn på konfigurationsfil ”%s”</string>
<string name="config_save_error">Kan inte spara konfigurationen för ”%1$s”: %2$s</string>
<string name="config_save_success">Konfigurationen för ”%s ” sparades</string>
<string name="create_activity_title">Skapa WireGuard Tunnel</string>
<string name="create_from_file">Importera från fil eller arkiv</string>
<string name="create_from_qr_code">Skanna från QR-kod</string>
<string name="create_output_dir_error">Kan inte skapa utdatakatalog</string>
<string name="create_temp_dir_error">Kan inte skapa lokal temporär katalog</string>
<string name="create_tunnel">Skapa tunnel</string>
<string name="copied_to_clipboard">%s kopierades till urklipp</string>
<string name="dark_theme_summary_off">Använder just nu ljust (dag) tema</string>
<string name="dark_theme_summary_on">Använder just nu mörkt (natt) tema</string>
<string name="dark_theme_title">Använd mörkt tema</string>
<string name="delete">Radera</string>
<string name="tv_delete">Välj tunnel att ta bort</string>
<string name="tv_select_a_storage_drive">Välj en lagringsenhet</string>
<string name="tv_no_file_picker">Installera ett filhanteringsverktyg för att bläddra bland filer</string>
<string name="tv_add_tunnel_get_started">Lägg till en tunnel för att komma igång</string>
<string name="disable_config_export_title">Inaktivera export av konfiguration</string>
<string name="disable_config_export_description">Inaktivering av konfigurationsexport gör privata nycklar mindre tillgängliga</string>
<string name="dns_servers">DNS-servrar</string>
<string name="edit">Redigera</string>
<string name="endpoint">Ändpunkt</string>
<string name="error_down">Fel vid nedtagning av tunnel: %s</string>
<string name="error_fetching_apps">Fel vid hämtning av applista: %s</string>
<string name="error_root">Vänligen få rootbehörighet och försök igen</string>
<string name="log_saver_activity_label">Spara logg</string>
<string name="log_viewer_pref_summary">Loggar kan hjälpa till med felsökning</string>
<string name="log_viewer_pref_title">Visa applikationslogg</string>
<string name="log_viewer_title">Logg</string>
<string name="logcat_error">Kunde inte köra logcat: </string>
<string name="module_disabler_disabled_summary">Den experimentella kärnmodulen kan förbättra prestanda</string>
<string name="module_disabler_disabled_title">Aktivera backend för kärnmodul</string>
<string name="module_disabler_enabled_summary">Den långsammare backend för användarrymden kan förbättra stabiliteten</string>
<string name="module_disabler_enabled_title">Inaktivera backend för kärnmodul</string>
<string name="module_installer_error">Något gick fel. Vänligen försök igen</string>
<string name="module_installer_initial">Den experimentella kärnmodulen kan förbättra prestanda</string>
<string name="module_installer_not_found">Inga moduler finns tillgängliga för din enhet</string>
<string name="module_installer_title">Ladda ner och installera kärnmodul</string>
<string name="module_installer_working">Hämtar och installerar…</string>
<string name="module_version_error">Kunde inte bestämma version av kärnmodulen</string>
<string name="mtu">MTU</string>
<string name="multiple_tunnels_summary_off">Att slå på en tunnel stänger av andra</string>
<string name="multiple_tunnels_summary_on">Flera tunnlar kan slås på samtidigt</string>
<string name="multiple_tunnels_title">Tillåt flera samtidiga tunnlar</string>
<string name="name">Namn</string>
<string name="no_config_error">Försöker bygga en tunnel utan konfiguration</string>
<string name="no_configs_error">Inga konfigurationer hittades</string>
<string name="no_tunnels_error">Inga tunnlar finns</string>
<string name="parse_error_generic">sträng</string>
<string name="parse_error_inet_address">IP-adress</string>
<string name="parse_error_inet_endpoint">endpoint</string>
<string name="parse_error_inet_network">IP-nätverk</string>
<string name="parse_error_integer">nummer</string>
<string name="parse_error_reason">Kan inte tolka %1$s ”%2$s”</string>
<string name="peer">Klient</string>
<string name="permission_label">kontrollera WireGuard tunnlar</string>
<string name="persistent_keepalive">Beständig keepalive</string>
<string name="pre_shared_key">Fördelad nyckel</string>
<string name="pre_shared_key_enabled">aktiverad</string>
<string name="private_key">Privat nyckel</string>
<string name="public_key">Publik nyckel</string>
<string name="qr_code_hint">Tips: generera med `qrencode -t ansiutf8 &lt; tunnel.conf`.</string>
<string name="restore_on_boot_summary_off">Kommer inte ta upp aktiverade tunnlar vid uppstart</string>
<string name="restore_on_boot_summary_on">Kommer ta upp aktiverade tunnlar vid uppstart</string>
<string name="restore_on_boot_title">Återställ vid uppstart</string>
<string name="save">Spara</string>
<string name="select_all">Markera alla</string>
<string name="settings">Inställningar</string>
<string name="shell_exit_status_read_error">Shell kan inte läsa avslutningsstatus</string>
<string name="shell_marker_count_error">Shell förväntade sig 4 markörer, tog emot %d</string>
<string name="shell_start_error">Shell kunde inte starta: %d</string>
<string name="success_application_will_restart">Framgång. Applikationen kommer nu att starta om…</string>
<string name="toggle_all">Växla alla</string>
<string name="toggle_error">Fel vid växling av WireGuard-tunnel: %s</string>
</resources>
+225 -13
View File
@@ -1,24 +1,236 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="delete_error">
<item quantity="one">%d tüneli silinemiyor: %s</item>
<item quantity="other">%d tünelleri silinemiyor: %s</item>
</plurals>
<plurals name="delete_success">
<item quantity="one">%d tüneli başarıyla silindi</item>
<item quantity="other">%d tünelleri başarıyla silindi</item>
</plurals>
<plurals name="delete_title">
<item quantity="one">%d tüneli seçildi</item>
<item quantity="other">%d tünelleri seçildi</item>
</plurals>
<plurals name="import_partial_success">
<item quantity="one">%1$d/%2$d tünel içe aktarıldı</item>
<item quantity="other">%1$d/%2$d tünel içe aktarıldı</item>
</plurals>
<plurals name="import_total_success">
<item quantity="one">%d tünel içe aktarıldı</item>
<item quantity="other">%d tünel içe aktarıldı</item>
</plurals>
<plurals name="set_excluded_applications">
<item quantity="one">%d Hariç Tutulan Uygulama</item>
<item quantity="other">%d Hariç Tutulan Uygulamalar</item>
</plurals>
<plurals name="set_included_applications">
<item quantity="one">%d Dahil Edilen Uygulama</item>
<item quantity="other">%d Dahil Edilen Uygulamalar</item>
</plurals>
<plurals name="n_excluded_applications">
<item quantity="one">%d hariç tutuldu</item>
<item quantity="other">%d hariç tutuldu</item>
</plurals>
<plurals name="n_included_applications">
<item quantity="one">%d dahil edildi</item>
<item quantity="other">%d dahil edildi</item>
</plurals>
<string name="all_applications">Tüm Uygulamalar</string>
<string name="exclude_from_tunnel">Hariç</string>
<string name="include_in_tunnel">Yalnızca dahil</string>
<plurals name="include_n_applications">
<item quantity="one">%d uygulamasını dahil et</item>
<item quantity="other">%d uygulamalarını dahil et</item>
</plurals>
<plurals name="exclude_n_applications">
<item quantity="one">%d uygulamasını hariç tut</item>
<item quantity="other">%d uygulamalarını hariç tut</item>
</plurals>
<plurals name="persistent_keepalive_seconds_unit">
<item quantity="one">her saniye</item>
<item quantity="other">%d saniyede bir</item>
</plurals>
<plurals name="persistent_keepalive_seconds_suffix">
<item quantity="one">saniye</item>
<item quantity="other">saniye</item>
</plurals>
<string name="use_all_applications">Tüm uygulamaları kullan</string>
<string name="add_peer">Eş ekle</string>
<string name="addresses">Adresler</string>
<string name="applications">Uygulamalar</string>
<string name="allow_remote_control_intents_summary_off">Harici uygulamalar tünelleri değiştiremez (önerilir)</string>
<string name="allow_remote_control_intents_summary_on">Harici uygulamalar tünelleri değiştirebilir (gelişmiş)</string>
<string name="allow_remote_control_intents_title">Uzaktan kontrol uygulamalarına izin ver</string>
<string name="allowed_ips">İzin verilen IP\'ler</string>
<string name="app_name">WireGuard</string>
<string name="bad_config_context">%1$s\'in %2$s</string>
<string name="bad_config_context_top_level">%s</string>
<string name="bad_config_error">%2$s içinde %1$s</string>
<string name="bad_config_explanation_pka">: Pozitif olmalı ve 65535\'ten fazla olmamalıdır</string>
<string name="bad_config_explanation_positive_number">: Pozitif olmalıdır</string>
<string name="bad_config_explanation_udp_port">: Geçerli bir UDP Port numarası olmalıdır</string>
<string name="bad_config_reason_invalid_key">Geçersiz anahtar</string>
<string name="bad_config_reason_invalid_number">Geçersiz numara</string>
<string name="bad_config_reason_invalid_value">Geçersiz değer</string>
<string name="bad_config_reason_missing_attribute">Eksik öznitelik</string>
<string name="bad_config_reason_missing_section">Eksik bölüm</string>
<string name="bad_config_reason_syntax_error">Sözdizimi hatası</string>
<string name="bad_config_reason_unknown_attribute">Bilinmeyen öznitelik</string>
<string name="bad_config_reason_unknown_section">Bilinmeyen bölüm</string>
<string name="bad_config_reason_value_out_of_range">Aralık dışı değer</string>
<string name="bad_extension_error">Dosya .conf veya .zip olmalıdır</string>
<string name="cancel">İptal</string>
<string name="config_delete_error">%s konfigürasyon dosyası silinemiyor</string>
<string name="config_exists_error">“%s” için konfigürasyon zaten var</string>
<string name="config_file_exists_error">“%s“ için konfigürasyon dosyası zaten var</string>
<string name="config_not_found_error">“%s“ konfigürasyon dosyası bulunamadı</string>
<string name="config_rename_error">“%s” konfigürasyon dosyası yeniden adlandırılamıyor</string>
<string name="config_save_error">“%1$s” için konfigürasyon kaydedilemiyor: %2$s</string>
<string name="config_save_success">“%s“ için konfigürasyon başarıyla kaydedildi</string>
<string name="create_activity_title">WireGuard Tüneli Yarat</string>
<string name="create_downloads_file_error">İndirilenler klasöründe dosya yaratılamadı</string>
<string name="create_empty">Sıfırdan Yaratın</string>
<string name="create_from_file">Arşivden geri yükle</string>
<string name="create_from_qr_code">QR Kodu Tara</string>
<string name="create_output_dir_error">Çıkış klasörü yaratılamadı</string>
<string name="create_tunnel">Tünel Yarat</string>
<string name="dark_theme_title">Koyu renk Temayı Kullan</string>
<string name="create_bin_dir_error">Yerel ikili dizin oluşturulamıyor</string>
<string name="create_downloads_file_error">İndirilenler klasöründe dosya oluşturulamadı</string>
<string name="create_empty">Sıfırdan oluştur</string>
<string name="create_from_file">Dosya veya arşivden ekle</string>
<string name="create_from_qr_code">QR kodundan ekle</string>
<string name="create_output_dir_error">Çıktı klasörü oluşturulamıyor</string>
<string name="create_temp_dir_error">Yerel geçici dizin oluşturulamıyor</string>
<string name="create_tunnel">Tünel Oluştur</string>
<string name="copied_to_clipboard">%s panoya kopyalandı</string>
<string name="dark_theme_summary_off">Şu anda açık (gündüz) teması kullanılıyor</string>
<string name="dark_theme_summary_on">Şu anda karanlık (gece) teması kullanılıyor</string>
<string name="dark_theme_title">Koyu tema kullan</string>
<string name="delete">Sil</string>
<string name="tv_delete">Silinecek tüneli seçin</string>
<string name="tv_select_a_storage_drive">Bir depolama sürücüsü seçin</string>
<string name="tv_no_file_picker">Dosyalara göz atmak için lütfen bir dosya yönetim aracı yükleyin</string>
<string name="tv_add_tunnel_get_started">Başlamak için bir tünel ekleyin</string>
<string name="disable_config_export_title">Ayarları dışa aktarmayı kapa</string>
<string name="disable_config_export_description">Ayarları dışa aktarmayı kapamak gizli anahtarları daha az erişilebilir kılar</string>
<string name="dns_servers">DNS sunucuları</string>
<string name="edit">Düzenle</string>
<string name="endpoint">Uç nokta</string>
<string name="error_down">Tünel kapatılırken hata oluştu: %s</string>
<string name="error_fetching_apps">Uygulama listesi getirilirken hata oluştu: %s</string>
<string name="error_root">Lütfen root erişimi elde edin ve tekrar deneyin</string>
<string name="error_up">Tünel açılırken hata oluştu: %s</string>
<string name="exclude_private_ips">Özel IP’leri hariç tut</string>
<string name="generate_new_private_key">Yeni özel anahtar oluştur</string>
<string name="generic_error">Bilinmeyen “%s” hatası</string>
<string name="hint_automatic">(otomatik)</string>
<string name="hint_generated">(oluşturuldu)</string>
<string name="hint_optional">(isteğe bağlı)</string>
<string name="hint_optional_discouraged">(İsteğe bağlı-Önerilmez)</string>
<string name="hint_random">(Rastgele)</string>
<string name="import_from_qr_code">Tüneli içeri QR ile al</string>
<string name="hint_optional_discouraged">(isteğe bağlı, önerilmez)</string>
<string name="hint_random">(rastgele)</string>
<string name="illegal_filename_error">Geçersiz dosya ismi “%s”</string>
<string name="import_error">Tünel içeri aktarılamıyor: %s</string>
<string name="import_from_qr_code">Tüneli QR Kod ile İçe Aktar</string>
<string name="import_success">İçe aktarıldı “%s”</string>
<string name="interface_title">Arayüz</string>
<string name="listen_port">Dinleme portu</string>
<string name="log_export_title">Dosyayı Dışarı Aktar</string>
<string name="key_contents_error">Anahtardaki yanlış karakterler</string>
<string name="key_length_error">Yanlış anahtar uzunluğu</string>
<string name="key_length_explanation_base64">: WireGuard base64 anahtarları 44 karakter (32 bayt) olmalıdır</string>
<string name="key_length_explanation_binary">: WireGuard anahtarları 32 bayt olmalıdır</string>
<string name="key_length_explanation_hex">: WireGuard onaltılık anahtarları 64 karakter (32 bayt) olmalıdır</string>
<string name="listen_port">Dinlenen port</string>
<string name="log_export_error">Günlük dışa aktarılamıyor: %s</string>
<string name="log_export_subject">WireGuard Android Günlük Dosyası</string>
<string name="log_export_success">“%s” ’e kaydedildi</string>
<string name="log_export_title">Günlük dosyasını dışa aktar</string>
<string name="log_saver_activity_label">Günlüğü kaydet</string>
<string name="log_viewer_pref_title">Uygulama günlüğüne bak</string>
<string name="log_viewer_pref_summary">Günlükler hata ayıklamaya yardımcı olabilir</string>
<string name="log_viewer_pref_title">Uygulama günlüğünü görüntüle</string>
<string name="log_viewer_title">Günlük</string>
<string name="logcat_error">Logcat çalıştırılamıyor: </string>
<string name="module_disabler_disabled_summary">Deneysel çekirdek modülü performansı artırabilir</string>
<string name="module_disabler_disabled_title">Çekirdek modülü arka ucunu etkinleştir</string>
<string name="module_disabler_enabled_summary">Daha yavaş kullanıcı alanı arka ucu kararlılığı artırabilir</string>
<string name="module_disabler_enabled_title">Çekirdek modülü arka ucunu devre dışı bırak</string>
<string name="module_installer_error">Bir şeyler yanlış gitti. Lütfen tekrar deneyin</string>
<string name="module_installer_initial">Deneysel çekirdek modülü performansı artırabilir</string>
<string name="module_installer_not_found">Cihazınız için uygun modül yok</string>
<string name="module_installer_title">Çekirdek modülünü indir ve yükle</string>
<string name="module_installer_working">İndiriliyor ve yükleniyor…</string>
<string name="module_version_error">Çekirdek modülü sürümü belirlenemiyor</string>
<string name="mtu">MTU</string>
<string name="multiple_tunnels_summary_off">Bir tüneli açmak diğerlerini kapatır</string>
<string name="multiple_tunnels_summary_on">Aynı anda birden fazla tünel açılabilir</string>
<string name="multiple_tunnels_title">Birden çok eşzamanlı tünele izin verin</string>
<string name="name">İsim</string>
<string name="no_config_error">Konfigürasyonsuz bir tünel açmaya çalışılıyor</string>
<string name="no_configs_error">Konfigürasyon bulunamadı</string>
<string name="no_tunnels_error">Tünel yok</string>
<string name="parse_error_generic">dizi</string>
<string name="parse_error_inet_address">IP adresi</string>
<string name="parse_error_inet_endpoint">uç nokta</string>
<string name="parse_error_inet_network">IP ağı</string>
<string name="parse_error_integer">numara</string>
<string name="parse_error_reason">%1$s “%2$s” ayrıştırılamıyor</string>
<string name="peer">Eş</string>
<string name="permission_description">WireGuard tünellerini kontrol edin, tünelleri istediğiniz zaman etkinleştirin ve devre dışı bırakın, İnternet trafiğini potansiyel olarak yanlış yönlendirin</string>
<string name="permission_label">WireGuard tünellerini kontrol edin</string>
<string name="persistent_keepalive">Kalıcı canlı tutma</string>
<string name="pre_shared_key">Önceden paylaşılan anahtar</string>
<string name="pre_shared_key_enabled">etkinleştirildi</string>
<string name="private_key">Özel anahtar</string>
<string name="public_key">Genel anahtar</string>
<string name="qr_code_hint">İpucu: `qrencode -t ansiutf8 &lt; tunnel.conf` ile oluşturun.</string>
<string name="restore_on_boot_summary_off">Önyüklemede etkin tünelleri açmayacak</string>
<string name="restore_on_boot_summary_on">Önyüklemede etkin tünelleri açacak</string>
<string name="restore_on_boot_title">Cihaz açılırken başlat</string>
<string name="save">Kaydet</string>
<string name="select_all">Tümünü seç</string>
<string name="settings">Ayarlar</string>
<string name="shell_exit_status_read_error">Kabuk, çıktı durumunu okuyamıyor</string>
<string name="shell_marker_count_error">Kabuk 4 işaret bekledi, %d aldı</string>
<string name="shell_start_error">Kabuk başlatılamadı: %d</string>
<string name="success_application_will_restart">Başarı. Uygulama şimdi yeniden başlayacak…</string>
<string name="toggle_all">Tümünü Değiştir</string>
<string name="toggle_error">WireGuard tüneli değiştirilirken hata oluştu: %s</string>
<string name="tools_installer_already">wg ve wg-quick zaten kurulu</string>
<string name="tools_installer_failure">Komut satırı araçları yüklenemiyor (root yok mu?)</string>
<string name="tools_installer_initial">Komut dosyası oluşturmak için isteğe bağlı araçları yükleyin</string>
<string name="tools_installer_initial_magisk">Magisk modülü olarak komut dosyası oluşturmak için isteğe bağlı araçları yükleyin</string>
<string name="tools_installer_initial_system">Sistem bölümüne komut dosyası oluşturmak için isteğe bağlı araçlar yükleyin</string>
<string name="tools_installer_success_magisk">wg ve wg-quick bir Magisk modülü olarak kuruldu (yeniden başlatma gerekir)</string>
<string name="tools_installer_success_system">wg ve wg-quick, sistem bölümüne yüklendi</string>
<string name="tools_installer_title">Komut satırı araçlarını yükleyin</string>
<string name="tools_installer_working">wg ve wg-quick kuruluyor</string>
<string name="tools_unavailable_error">Gerekli araçlar mevcut değil</string>
<string name="transfer">Transfer</string>
<string name="transfer_bytes">%d B</string>
<string name="transfer_gibibytes">%.2f GiB</string>
<string name="transfer_kibibytes">%.2f KiB</string>
<string name="transfer_mibibytes">%.2f MiB</string>
<string name="transfer_rx_tx">rx: %1$s, tx: %2$s</string>
<string name="transfer_tibibytes">%.2f TiB</string>
<string name="tun_create_error">Tun cihazı oluşturulamıyor</string>
<string name="tunnel_config_error">Tünel yapılandırılamıyor (wg-quick döndürdü: %d)</string>
<string name="tunnel_create_error">Tünel oluşturulamıyor: %s</string>
<string name="tunnel_create_success">Tünel başarıyla oluşturuldu “%s”</string>
<string name="tunnel_error_already_exists">“%s” tüneli zaten mevcut</string>
<string name="tunnel_error_invalid_name">Geçersiz isim</string>
<string name="tunnel_list_placeholder">Mavi düğmeyi kullanarak bir tünel ekleyin</string>
<string name="tunnel_name">Tünel İsmi</string>
<string name="tunnel_on_error">Tünel aktif edilemiyor (wgTornOn döndürdü: %d)</string>
<string name="tunnel_rename_error">Tünel yeniden adlandırılamıyor: %s</string>
<string name="tunnel_rename_success">Tünel başarıyla yeniden adlandırıldı “%s”</string>
<string name="type_name_go_userspace">Kullanıcı alanına git</string>
<string name="type_name_kernel_module">Çekirdek modülü</string>
<string name="unknown_error">Bilinmeyen hata</string>
<string name="version_summary">%1$s backend %2$s</string>
<string name="version_summary_checking">%s arka uç sürümü kontrol ediliyor</string>
<string name="version_summary_unknown">Bilinmeyen %s sürümü</string>
<string name="version_title">Android için WireGuard v%s</string>
<string name="vpn_not_authorized_error">VPN hizmeti kullanıcı tarafından yetkilendirilmemiş</string>
<string name="vpn_start_error">Android VPN hizmeti başlatılamıyor</string>
<string name="zip_export_error">Tüneller dışa aktarılamıyor: %s</string>
<string name="zip_export_success">“%s” ’e kaydedildi</string>
<string name="zip_export_summary">Zip dosyası indirilenler klasörüne kaydedilecek</string>
<string name="zip_export_title">Tünelleri zip dosyasına aktar</string>
<string name="biometric_prompt_zip_exporter_title">Tünelleri dışa aktarmak için kimlik doğrulama</string>
<string name="biometric_prompt_private_key_title">Özel anahtarı görüntülemek için kimlik doğrulaması</string>
<string name="biometric_auth_error">Kimlik doğrulama hatası</string>
<string name="biometric_auth_error_reason">Kimlik doğrulama hatası: %s</string>
</resources>
-26
View File
@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
<item name="colorPrimary">@color/primary_color</item>
<item name="colorOnPrimary">@color/color_control_normal</item>
<item name="colorPrimaryDark">@color/primary_color</item>
<item name="colorPrimaryVariant">@color/primary_light_color</item>
<item name="colorSecondary">@color/secondary_color</item>
<item name="colorOnSecondary">@color/secondary_text_color</item>
<item name="colorSurface">@color/primary_color</item>
<item name="colorOnSurface">@color/color_control_normal</item>
<item name="colorBackground">@color/primary_color</item>
<item name="colorMultiselectActiveBackground">@color/list_multiselect_background</item>
<item name="colorControlNormal">@color/color_control_normal</item>
<item name="elevationOverlayColor">@color/primary_light_color</item>
<item name="elevationOverlayEnabled">true</item>
<item name="android:statusBarColor">#000000</item>
<item name="android:navigationBarColor">#000000</item>
<item name="android:windowBackground">@color/primary_color</item>
<item name="alertDialogTheme">@style/AppTheme.Dialog</item>
<item name="materialAlertDialogTheme">@style/AppTheme.Dialog</item>
<item name="textInputStyle">@style/TextInputLayoutBase</item>
<item name="materialCardViewStyle">@style/AppTheme.MaterialCardView</item>
</style>
</resources>
+1 -21
View File
@@ -1,29 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
<item name="colorPrimary">@color/primary_color</item>
<item name="colorOnPrimary">@color/color_control_normal</item>
<item name="colorPrimaryDark">@color/primary_color</item>
<item name="colorPrimaryVariant">@color/primary_light_color</item>
<item name="colorSecondary">@color/secondary_color</item>
<item name="colorOnSecondary">@color/secondary_text_color</item>
<item name="colorSurface">@color/primary_color</item>
<item name="colorOnSurface">@color/color_control_normal</item>
<item name="colorBackground">@color/primary_color</item>
<item name="colorControlNormal">@color/color_control_normal</item>
<item name="colorMultiselectActiveBackground">@color/list_multiselect_background</item>
<item name="elevationOverlayColor">@color/primary_light_color</item>
<item name="elevationOverlayEnabled">true</item>
<item name="android:colorBackground">@color/primary_color</item>
<style name="AppTheme" parent="WireGuardTheme">
<item name="android:navigationBarColor">@color/navigation_bar_color</item>
<item name="android:statusBarColor">@color/status_bar_color</item>
<item name="android:windowLightNavigationBar">@bool/light_navigation_bar</item>
<item name="android:windowLightStatusBar">@bool/light_status_bar</item>
<item name="android:windowBackground">@color/primary_color</item>
<item name="alertDialogTheme">@style/AppTheme.Dialog</item>
<item name="materialAlertDialogTheme">@style/AppTheme.Dialog</item>
<item name="textInputStyle">@style/TextInputLayoutBase</item>
<item name="materialCardViewStyle">@style/AppTheme.MaterialCardView</item>
</style>
</resources>
+12 -5
View File
@@ -27,7 +27,7 @@
<plurals name="n_included_applications">
<item quantity="other">对 %d 个应用生效</item>
</plurals>
<string name="all_applications">对全部应用生效</string>
<string name="all_applications">应用过滤</string>
<string name="exclude_from_tunnel">不生效</string>
<string name="include_in_tunnel">生效</string>
<plurals name="include_n_applications">
@@ -84,10 +84,17 @@
<string name="create_output_dir_error">无法创建输出目录</string>
<string name="create_temp_dir_error">无法创建本地临时目录</string>
<string name="create_tunnel">创建隧道</string>
<string name="copied_to_clipboard">%s 已复制到剪贴板</string>
<string name="dark_theme_summary_off">正在使用亮色(白昼)主题</string>
<string name="dark_theme_summary_on">正在使用暗色(黑夜)主题</string>
<string name="dark_theme_title">使用暗色主题</string>
<string name="delete">删除</string>
<string name="tv_delete">选择要删除的隧道</string>
<string name="tv_select_a_storage_drive">选择一个存储驱动器</string>
<string name="tv_no_file_picker">请安装一个文件管理工具以浏览文件</string>
<string name="tv_add_tunnel_get_started">添加第一个隧道</string>
<string name="disable_config_export_title">禁止导出配置</string>
<string name="disable_config_export_description">禁止导出配置可降低私钥泄露的风险</string>
<string name="dns_servers">DNS 服务器</string>
<string name="edit">编辑</string>
<string name="endpoint">对端</string>
@@ -131,7 +138,7 @@
<string name="module_installer_initial">使用内核模块可以提升性能(实验性)</string>
<string name="module_installer_not_found">没有可用于此设备的模块</string>
<string name="module_installer_title">下载并安装内核模块</string>
<string name="module_installer_working">正在下载安装...</string>
<string name="module_installer_working">正在下载安装…</string>
<string name="module_version_error">无法确定内核模块版本</string>
<string name="mtu">MTU</string>
<string name="multiple_tunnels_summary_off">当前一次只能开启一条隧道</string>
@@ -165,7 +172,7 @@
<string name="shell_exit_status_read_error">Shell 无法读取退出状态</string>
<string name="shell_marker_count_error">Shell 应获取 4 个标记,获取到 %d 个</string>
<string name="shell_start_error">Shell 启动失败:%d</string>
<string name="success_application_will_restart">成功,应用即将重启...</string>
<string name="success_application_will_restart">成功,应用即将重启…</string>
<string name="toggle_all">反选</string>
<string name="toggle_error">切换隧道状态时出错:%s</string>
<string name="tools_installer_already">wg 与 wg-quick 已安装</string>
@@ -176,7 +183,7 @@
<string name="tools_installer_success_magisk">wg 与 wg-quick 已安装为 Magisk 模块(重启后生效)</string>
<string name="tools_installer_success_system">wg 与 wg-quick 已安装至系统分区</string>
<string name="tools_installer_title">安装命令行工具</string>
<string name="tools_installer_working">正在安装 wg 与 wg-quick...</string>
<string name="tools_installer_working">正在安装 wg 与 wg-quick…</string>
<string name="tools_unavailable_error">所需工具不可用</string>
<string name="transfer">流量</string>
<string name="transfer_bytes">%d B</string>
@@ -199,7 +206,7 @@
<string name="type_name_go_userspace">Go userspace</string>
<string name="type_name_kernel_module">Kernel module</string>
<string name="unknown_error">未知错误</string>
<string name="version_summary">%1$s backend v%2$s</string>
<string name="version_summary">%1$s backend %2$s</string>
<string name="version_summary_checking">正在检查 %s backend 版本</string>
<string name="version_summary_unknown">未知的 %s 版本</string>
<string name="version_title">WireGuard for Android v%s</string>
+2 -1
View File
@@ -97,6 +97,7 @@
<string name="create_output_dir_error">Cannot create output directory</string>
<string name="create_temp_dir_error">Cannot create local temporary directory</string>
<string name="create_tunnel">Create Tunnel</string>
<string name="copied_to_clipboard">%s copied to clipboard</string>
<string name="dark_theme_summary_off">Currently using light (day) theme</string>
<string name="dark_theme_summary_on">Currently using dark (night) theme</string>
<string name="dark_theme_title">Use dark theme</string>
@@ -218,7 +219,7 @@
<string name="type_name_go_userspace">Go userspace</string>
<string name="type_name_kernel_module">Kernel module</string>
<string name="unknown_error">Unknown error</string>
<string name="version_summary">%1$s backend v%2$s</string>
<string name="version_summary">%1$s backend %2$s</string>
<string name="version_summary_checking">Checking %s backend version</string>
<string name="version_summary_unknown">Unknown %s version</string>
<string name="version_title">WireGuard for Android v%s</string>
+3 -1
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
<style name="WireGuardTheme" parent="Theme.MaterialComponents.DayNight">
<item name="colorPrimary">@color/primary_color</item>
<item name="colorOnPrimary">@color/color_control_normal</item>
<item name="colorPrimaryDark">@color/primary_color</item>
@@ -23,6 +23,8 @@
<item name="materialCardViewStyle">@style/AppTheme.MaterialCardView</item>
</style>
<style name="AppTheme" parent="WireGuardTheme" />
<style name="AppTheme.MaterialCardView" parent="Widget.MaterialComponents.CardView">
<item name="cornerRadius">4dp</item>
<item name="cardElevation">4dp</item>
+2 -2
View File
@@ -1,6 +1,6 @@
buildscript {
ext {
wireguardVersionCode = 485
wireguardVersionName = '1.0.20201224'
wireguardVersionCode = 487
wireguardVersionName = '1.0.20210505'
}
}