Compare commits

...

81 Commits

Author SHA1 Message Date
Jason A. Donenfeld 32fc760053 version: bump
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-09-24 14:07:12 -06:00
Jason A. Donenfeld 5459c6d531 tools: bump deps
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-09-24 14:07:12 -06:00
Harsh Shandilya a1889b801c build: upgrade Kotlin and AndroidX dependencies
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-09-24 12:02:04 +05:30
Jason A. Donenfeld a86dff9433 tunnel: bump deps
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-09-13 16:39:46 +02:00
Jason A. Donenfeld 02f59b6b27 tools: bump for android 12
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-09-09 23:39:03 +02:00
Harsh Shandilya 29bb93cdf7 gradle: update property set with AGP 7 experimental flags
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-07-29 12:30:07 +05:30
Harsh Shandilya eae06aade7 build: fix CMake warning
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-07-29 11:21:26 +05:30
Harsh Shandilya a8b2fc15de strings: sync translations
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-07-29 11:21:24 +05:30
Harsh Shandilya f699d9cf9a build: switch to modern plugin application layout
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-07-29 10:12:04 +05:30
Harsh Shandilya ae00e8ce6e gradle: upgrade to AGP 7.0.0
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-07-29 10:12:03 +05:30
Harsh Shandilya 2730e75474 ui: mark app_name string as untranslatable
WireGuard is a brand name that should not be localized.

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-07-29 10:11:34 +05:30
Harsh Shandilya 00e0224fd1 gradle: fix distribution checksum
This should've been updated when we switched the distribution type to -bin

Fixes: a23c57bab0 ("gradle: switch to -bin distribution")
Reported-by: Vladimir Nikishkin <lockywolf@gmail.com>
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-07-29 10:03:29 +05:30
Harsh Shandilya 82c9b75ea1 gradle: disable Jetifier that is no longer necessary
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-07-28 15:32:49 +05:30
Harsh Shandilya a23c57bab0 gradle: switch to -bin distribution
-all is a noticeably larger distribution than -bin and the sources
it packages can be fetched on-demand by IDEs.

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-07-25 21:45:58 +05:30
Harsh Shandilya 02b92c178a build: upgrade AndroidX dependencies
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-07-25 21:45:57 +05:30
Harsh Shandilya 8dd6c3e35e build: upgrade AndroidX dependencies
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-07-18 02:24:23 +05:30
Harsh Shandilya 78f2fda6ca gradle: bump to 7.1.1
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-07-18 02:24:21 +05:30
Harsh Shandilya 2f822aa1f6 build: drop obsolete dependency substitution
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-06-16 10:37:23 +05:30
Harsh Shandilya 40f2f073cd gradle: bump to v7.1
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-06-16 08:59:53 +05:30
Harsh Shandilya 37fabf0229 build: bump desugar_jdk_libs and Kotlin
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-05-27 21:48:03 +05:30
Jason A. Donenfeld fe61522f2a tunnel: retry DNS resolution for 10 seconds
This has several problems: 1) it blocks the main thread; 2) it doesn't
distinguish between a permanent error and a transient one; 3) the 10
seconds is hard coded; 4) there's no way for the user to cancel it.

We'll have to improve this.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-05-26 18:07:28 +02:00
Harsh Shandilya 24ded8070f build: upgrade AndroidX dependencies
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-05-19 01:33:06 +05:30
Harsh Shandilya 24569a4c49 gradle: use longer timeouts for Gradle publish tasks
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2021-05-07 14:06:44 +05:30
Jason A. Donenfeld b448d605f0 version: bump
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-05-07 10:28:51 +02:00
Jason A. Donenfeld 0dcfde35f4 tunnel: bump deps
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-05-07 10:28:51 +02:00
Jason A. Donenfeld 6acc1125b8 tunnel: download hash list in chunks if necessary
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-05-07 10:25:10 +02:00
Jason A. Donenfeld 94ecb13d2f ui: update datastore and rework api
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-05-06 17:02:28 +02:00
Jason A. Donenfeld 6008efcd95 ui: remove hack for broken kotlin compiler
Seems like things are finally fixed.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-05-06 16:22:58 +02:00
Jason A. Donenfeld d6a8e9d4dc tunnel: avoid race between shutdown and stats
wgTurnOff can block for a while, in which case, calling getStatistics
will use a stale handle and stale tunnel. Not only that, but wgGetConfig
might return null, in which case string.split throws.

    java.lang.NullPointerException: Attempt to invoke virtual method
    'java.lang.String[] java.lang.String.split(java.lang.String)' on a null
    at com.wireguard.android.backend.GoBackend.getStatistics

Reported-by: tomt@adslweb.co.uk
Link: https://lists.zx2c4.com/pipermail/wireguard/2021-May/006709.html
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2021-05-06 10:50:20 +02:00
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
Jason A. Donenfeld f670ff22c6 version: bump
A Christmas eve special.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2020-12-24 14:30:11 +01:00
Jason A. Donenfeld cb3194f10a tunnel: bump libwg-go
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2020-12-23 22:55:56 +01:00
Jason A. Donenfeld f6b2bbf433 strings: sync with crowdin
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2020-12-21 17:52:24 +01:00
Harsh Shandilya 56a4862442 build: upgrade to MDC 1.3.0-beta01
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-12-17 14:22:43 +05:30
68 changed files with 2489 additions and 443 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'
+17 -35
View File
@@ -1,40 +1,30 @@
buildscript {
ext {
activityVersion = '1.2.0-beta02'
agpVersion = '4.1.1'
annotationsVersion = '1.1.0'
appcompatVersion = '1.2.0'
biometricVersion = '1.1.0-rc01'
activityVersion = '1.3.1'
annotationsVersion = '1.2.0'
appcompatVersion = '1.3.1'
biometricVersion = '1.1.0'
collectionVersion = '1.1.0'
constraintLayoutVersion = '2.0.4'
constraintLayoutVersion = '2.1.0'
coordinatorLayoutVersion = '1.1.0'
coreKtxVersion = '1.3.2'
coroutinesVersion = '1.4.2'
datastoreVersion = '1.0.0-alpha02'
desugarVersion = '1.0.10'
fragmentVersion = '1.3.0-beta02'
coreKtxVersion = '1.6.0'
coroutinesVersion = '1.5.2'
datastoreVersion = '1.0.0'
desugarVersion = '1.1.5'
fragmentVersion = '1.3.6'
jsr305Version = '3.0.2'
junitVersion = '4.13.1'
kotlinVersion = '1.4.21'
lifecycleRuntimeKtxVersion = '2.3.0-beta01'
materialComponentsVersion = '1.3.0-alpha04'
junitVersion = '4.13.2'
lifecycleRuntimeKtxVersion = '2.3.1'
materialComponentsVersion = '1.4.0'
preferenceVersion = '1.1.1'
zxingEmbeddedVersion = '3.6.0'
zxingEmbeddedVersion = '4.2.0'
groupName = 'com.wireguard.android'
}
dependencies {
classpath "com.android.tools.build:gradle:$agpVersion"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
}
repositories {
google()
jcenter()
}
}
plugins {
id "de.undercouch.download" version "4.1.1"
id "de.undercouch.download" version "4.1.2"
}
task downloadCrowdin(type: Download) {
@@ -66,22 +56,14 @@ task crowdin(type: Copy, dependsOn: ['extractCrowdin']) {
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
tasks {
wrapper {
gradleVersion = "6.7.1"
distributionType = Wrapper.DistributionType.ALL
distributionSha256Sum = "22449f5231796abd892c98b2a07c9ceebe4688d192cd2d6763f8e3bf8acbedeb"
gradleVersion = "7.1.1"
distributionSha256Sum = "bf8b869948901d422e9bb7d1fa61da6a6e19411baa7ad6ee929073df85d6365d"
}
}
+63 -21
View File
@@ -1,30 +1,72 @@
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
android.enableJetifier=true
android.useAndroidX=true
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.caching=true
# https://jakewharton.com/increased-accuracy-of-aapt2-keep-rules/
android.useMinimalKeepRules=true
# Enable Kotlin incremental compilation
kotlin.incremental=true
# Enable rudimentary R class namespacing where each library only contains
# Enable AndroidX support
android.useAndroidX=true
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m
# Turn off AP discovery in compile path to enable compile avoidance
kapt.include.compile.classpath=false
# Enable AndroidX
android.useAndroidX=true
# Enable non-transitive R class namespacing where each library only contains
# references to the resources it declares instead of declarations plus all
# transitive dependency references.
android.namespacedRClass=true
android.nonTransitiveRClass=true
# Experimental AGP flags
# Generate compile-time only R class for app modules.
android.enableAppCompileTimeRClass=true
# Keep AAPT2 daemons alive between incremental builds.
android.keepWorkerActionServicesBetweenBuilds=true
# Make R fields non-final to improve build speeds.
# http://tools.android.com/tips/non-constant-fields
android.nonFinalResIds=true
# Enable the newly refactored resource shrinker.
android.experimental.enableNewResourceShrinker=true
# Enable precise shrinking in the new resource shrinker.
android.experimental.enableNewResourceShrinker.preciseShrinking=true
# Generate manifest class as a .class directly rather than a Java source file.
android.generateManifestClass=true
# Generate the text map of source sets and absolute paths to allow
# generating relative paths from absolute paths later in the build.
android.experimental.enableSourceSetPathsMap=true
# Use relative paths for better Gradle caching of library build tasks
android.experimental.cacheCompileLibResources=true
# Default Android build features
# Disable BuildConfig generation by default
android.defaults.buildfeatures.buildconfig=false
# Disable AIDL stub generation by default
android.defaults.buildfeatures.aidl=false
# Disable RenderScript compilation by default
android.defaults.buildfeatures.renderscript=false
# Disable resource values generation by default in libraries
android.defaults.buildfeatures.resvalues=false
# Disable shader compilation by default
android.defaults.buildfeatures.shaders=false
# Disable Android resource processing by default
android.library.defaults.buildfeatures.androidresources=false
# Suppress warnings for some features that aren't yet stabilized
android.suppressUnsupportedOptionWarnings=android.enableR8.fullMode,android.useMinimalKeepRules,android.namespacedRClass,android.suppressUnsupportedOptionWarnings
android.suppressUnsupportedOptionWarnings=android.keepWorkerActionServicesBetweenBuilds,\
android.experimental.enableNewResourceShrinker,android.experimental.enableNewResourceShrinker.preciseShrinking,\
android.enableAppCompileTimeRClass,android.experimental.enableSourceSetPathsMap,android.experimental.cacheCompileLibResources,\
android.suppressUnsupportedOptionWarnings
# OSSRH sometimes struggles with slow deployments, so this makes Gradle
# more tolerant to those delays.
systemProp.org.gradle.internal.http.connectionTimeout=500000
systemProp.org.gradle.internal.http.socketTimeout=500000
Binary file not shown.
+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=bf8b869948901d422e9bb7d1fa61da6a6e19411baa7ad6ee929073df85d6365d
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Vendored
+1 -1
View File
@@ -72,7 +72,7 @@ case "`uname`" in
Darwin* )
darwin=true
;;
MINGW* )
MSYS* | MINGW* )
msys=true
;;
NONSTOP* )
+26
View File
@@ -1,2 +1,28 @@
pluginManagement {
def agpVersion = "7.0.2"
def kotlinVersion = "1.5.31"
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
plugins {
id("com.android.application") version "$agpVersion"
id("com.android.library") version "$agpVersion"
id("org.jetbrains.kotlin.android") version "$kotlinVersion"
id("org.jetbrains.kotlin.kapt") version "$kotlinVersion"
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "wireguard-android"
include ':tunnel'
include ':ui'
+3 -4
View File
@@ -1,4 +1,6 @@
apply plugin: 'com.android.library'
plugins {
id 'com.android.library'
}
version wireguardVersionName
group groupName
@@ -20,9 +22,6 @@ android {
path 'tools/CMakeLists.txt'
}
}
libraryVariants.all {
it.generateBuildConfigProvider.configure { enabled = false }
}
testOptions.unitTests.all {
testLogging {
events 'passed', 'skipped', 'failed', 'standardOut', 'standardError'
+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
}
@@ -55,6 +55,7 @@ public final class BackendException extends Exception {
VPN_NOT_AUTHORIZED,
UNABLE_TO_START_VPN,
TUN_CREATION_ERROR,
GO_ACTIVATION_ERROR_CODE
GO_ACTIVATION_ERROR_CODE,
DNS_RESOLUTION_FAILURE,
}
}
@@ -16,6 +16,7 @@ import com.wireguard.android.backend.BackendException.Reason;
import com.wireguard.android.backend.Tunnel.State;
import com.wireguard.android.util.SharedLibraryLoader;
import com.wireguard.config.Config;
import com.wireguard.config.InetEndpoint;
import com.wireguard.config.InetNetwork;
import com.wireguard.config.Peer;
import com.wireguard.crypto.Key;
@@ -40,6 +41,7 @@ import androidx.collection.ArraySet;
*/
@NonNullForAll
public final class GoBackend implements Backend {
private static final int DNS_RESOLUTION_RETRIES = 10;
private static final String TAG = "WireGuard/GoBackend";
@Nullable private static AlwaysOnCallback alwaysOnCallback;
private static GhettoCompletableFuture<VpnService> vpnService = new GhettoCompletableFuture<>();
@@ -68,7 +70,7 @@ public final class GoBackend implements Backend {
alwaysOnCallback = cb;
}
private static native String wgGetConfig(int handle);
@Nullable private static native String wgGetConfig(int handle);
private static native int wgGetSocketV4(int handle);
@@ -115,10 +117,11 @@ public final class GoBackend implements Backend {
@Override
public Statistics getStatistics(final Tunnel tunnel) {
final Statistics stats = new Statistics();
if (tunnel != currentTunnel) {
if (tunnel != currentTunnel || currentTunnelHandle == -1)
return stats;
}
final String config = wgGetConfig(currentTunnelHandle);
if (config == null)
return stats;
Key key = null;
long rx = 0;
long tx = 0;
@@ -233,6 +236,25 @@ public final class GoBackend implements Backend {
return;
}
dnsRetry: for (int i = 0; i < DNS_RESOLUTION_RETRIES; ++i) {
// Pre-resolve IPs so they're cached when building the userspace string
for (final Peer peer : config.getPeers()) {
final InetEndpoint ep = peer.getEndpoint().orElse(null);
if (ep == null)
continue;
if (ep.getResolved().orElse(null) == null) {
if (i < DNS_RESOLUTION_RETRIES - 1) {
Log.w(TAG, "DNS host \"" + ep.getHost() + "\" failed to resolve; trying again");
Thread.sleep(1000);
continue dnsRetry;
} else
throw new BackendException(Reason.DNS_RESOLUTION_FAILURE, ep.getHost());
}
}
break;
}
// Build config
final String goConfig = config.toWgUserspaceString();
@@ -278,7 +300,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)
@@ -294,11 +316,11 @@ public final class GoBackend implements Backend {
Log.w(TAG, "Tunnel already down");
return;
}
wgTurnOff(currentTunnelHandle);
int handleToClose = currentTunnelHandle;
currentTunnel = null;
currentTunnelHandle = -1;
currentConfig = null;
wgTurnOff(handleToClose);
}
tunnel.onStateChange(state);
@@ -94,7 +94,11 @@ public class ModuleLoader {
final byte[] input = new byte[1024 * 1024 * 3 /* 3MiB */];
int len;
try (final InputStream inputStream = connection.getInputStream()) {
len = inputStream.read(input);
int offset = 0;
while (input.length - offset > 0 && (len = inputStream.read(input, offset, input.length - offset)) > 0) {
offset += len;
}
len = offset;
}
if (len <= 0)
throw new IOException("Hash list was empty");
+1
View File
@@ -3,6 +3,7 @@
# Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
cmake_minimum_required(VERSION 3.4.1)
project("WireGuard")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
# Work around https://github.com/android-ndk/ndk/issues/602
+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.17.1
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 := 3c452046b1dfa27b70d3217c9fe6de266f9fd74d83aad81382fead70efcdffca
GO_HASH_darwin-arm64 := 48f48a3cfe49b7bb448510ec9bf1682439e4e95fa6888580914a3115fe853d8c
GO_HASH_linux-amd64 := dab7d9c34361dc21ec237d584590d72500652e7c909bf082758fb63064fca0ef
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.14
go 1.16
require (
golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9 // indirect
golang.org/x/net v0.0.0-20201216054612-986b41b23924 // indirect
golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e
golang.zx2c4.com/wireguard v0.0.20201119-0.20201215171155-74008520cdd9
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect
golang.org/x/net v0.0.0-20210924151903-3ad01bbaa167 // indirect
golang.org/x/sys v0.0.0-20210923061019-b8560ed6a9b7
golang.zx2c4.com/wireguard v0.0.0-20210923155401-217ac1016bc5
)
+14 -14
View File
@@ -1,24 +1,24 @@
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-20201208171446-5f87f3452ae9 h1:sYNJzB4J8toYPQTM6pAkcmBRgw9SnQKP9oXCHfgy604=
golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9/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-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
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-20210924151903-3ad01bbaa167 h1:eDd+TJqbgfXruGQ5sJRU7tEtp/58OAx4+Ayjxg4SM+4=
golang.org/x/net v0.0.0-20210924151903-3ad01bbaa167/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-20201214210602-f9fddec55a1e h1:AyodaIpKjppX+cBfTASF2E1US3H2JFBj920Ot3rtDjs=
golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210923061019-b8560ed6a9b7 h1:c20P3CcPbopVp2f7099WLOqSNKURf30Z0uq66HpijZY=
golang.org/x/sys v0.0.0-20210923061019-b8560ed6a9b7/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.20201215171155-74008520cdd9 h1:rdbSLajsO6nfT4NViHeB/6lMW4vaO1bfsTvmeDpYvVs=
golang.zx2c4.com/wireguard v0.0.20201119-0.20201215171155-74008520cdd9/go.mod h1:ITsWNpkFv78VPB7f8MiyuxeEMcHR4jfxHGCJLPP3GHs=
golang.zx2c4.com/wireguard v0.0.0-20210923155401-217ac1016bc5 h1:iXtWdri0M6DdLa0wsT6zVSXqlyFBJAoEQPGMGmsYh4E=
golang.zx2c4.com/wireguard v0.0.0-20210923155401-217ac1016bc5/go.mod h1:laHzsbfMhGSobUmruXWAyMKKHSqvIcrqZJMyHD+/3O8=
@@ -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
+11 -6
View File
@@ -1,6 +1,8 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'org.jetbrains.kotlin.kapt'
}
version wireguardVersionName
group groupName
@@ -11,8 +13,11 @@ final def keystorePropertiesFile = rootProject.file("keystore.properties")
android {
compileSdkVersion 30
buildFeatures.dataBinding = true
buildFeatures.viewBinding = true
buildFeatures {
buildConfig = true
dataBinding = true
viewBinding = true
}
defaultConfig {
applicationId 'com.wireguard.android'
minSdkVersion 21
@@ -64,7 +69,6 @@ dependencies {
implementation "androidx.coordinatorlayout:coordinatorlayout:$coordinatorLayoutVersion"
implementation "androidx.biometric:biometric:$biometricVersion"
implementation "androidx.core:core-ktx:$coreKtxVersion"
implementation "androidx.databinding:databinding-runtime:$agpVersion"
implementation "androidx.fragment:fragment-ktx:$fragmentVersion"
implementation "androidx.preference:preference-ktx:$preferenceVersion"
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycleRuntimeKtxVersion"
@@ -84,5 +88,6 @@ tasks.withType(JavaCompile) {
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8
useIR = true
}
}
+1 -1
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">WireGuard β</string>
<string name="app_name" translatable="false">WireGuard β</string>
</resources>
+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"
@@ -12,9 +12,10 @@ import android.os.StrictMode.ThreadPolicy
import android.os.StrictMode.VmPolicy
import android.util.Log
import androidx.appcompat.app.AppCompatDelegate
import androidx.datastore.DataStore
import androidx.datastore.preferences.Preferences
import androidx.datastore.preferences.createDataStore
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.PreferenceDataStoreFactory
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.preferencesDataStoreFile
import com.wireguard.android.backend.Backend
import com.wireguard.android.backend.GoBackend
import com.wireguard.android.backend.WgQuickBackend
@@ -100,7 +101,7 @@ class Application : android.app.Application() {
rootShell = RootShell(applicationContext)
toolsInstaller = ToolsInstaller(applicationContext, rootShell)
moduleLoader = ModuleLoader(applicationContext, rootShell, USER_AGENT)
preferencesDataStore = applicationContext.createDataStore(name = "settings")
preferencesDataStore = PreferenceDataStoreFactory.create { applicationContext.preferencesDataStoreFile("settings") }
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
coroutineScope.launch {
AppCompatDelegate.setDefaultNightMode(
@@ -114,7 +114,7 @@ class LogViewerActivity : AppCompatActivity() {
val key = KeyPair().privateKey.toHex()
LOGS[key] = rawLogLines.toString().toByteArray(Charsets.UTF_8)
lastUri = Uri.parse("content://${BuildConfig.APPLICATION_ID}.exported-log/$key")
val shareIntent = ShareCompat.IntentBuilder.from(this)
val shareIntent = ShareCompat.IntentBuilder(this)
.setType("text/plain")
.setSubject(getString(R.string.log_export_subject))
.setStream(lastUri)
@@ -202,11 +202,7 @@ class LogViewerActivity : AppCompatActivity() {
it.scrollToPosition(logLines.size - 1)
}
} else {
/* TODO: I'd prefer for the next line to be:
* logLines.lastOrNull()?.msg += "\n$line"
* However, as of writing, that causes the kotlin compiler to freak out and crash, spewing bytecode.
*/
logLines.lastOrNull()?.apply { msg += "\n$line" }
logLines.lastOrNull()?.msg += "\n$line"
if (haveScrolled) logAdapter.notifyDataSetChanged()
}
if (!haveScrolled) {
@@ -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))
@@ -5,12 +5,15 @@
package com.wireguard.android.preference
import androidx.datastore.DataStore
import androidx.datastore.preferences.Preferences
import androidx.datastore.preferences.edit
import androidx.datastore.preferences.preferencesKey
import androidx.datastore.preferences.preferencesSetKey
import androidx.datastore.preferences.remove
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.core.booleanPreferencesKey
import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.core.floatPreferencesKey
import androidx.datastore.preferences.core.intPreferencesKey
import androidx.datastore.preferences.core.longPreferencesKey
import androidx.datastore.preferences.core.stringPreferencesKey
import androidx.datastore.preferences.core.stringSetPreferencesKey
import androidx.preference.PreferenceDataStore
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.first
@@ -21,7 +24,7 @@ import kotlinx.coroutines.runBlocking
class PreferencesPreferenceDataStore(private val coroutineScope: CoroutineScope, private val dataStore: DataStore<Preferences>) : PreferenceDataStore() {
override fun putString(key: String?, value: String?) {
if (key == null) return
val pk = preferencesKey<String>(key)
val pk = stringPreferencesKey(key)
coroutineScope.launch {
dataStore.edit {
if (value == null) it.remove(pk)
@@ -32,7 +35,7 @@ class PreferencesPreferenceDataStore(private val coroutineScope: CoroutineScope,
override fun putStringSet(key: String?, values: Set<String?>?) {
if (key == null) return
val pk = preferencesSetKey<String>(key)
val pk = stringSetPreferencesKey(key)
val filteredValues = values?.filterNotNull()?.toSet()
coroutineScope.launch {
dataStore.edit {
@@ -44,7 +47,7 @@ class PreferencesPreferenceDataStore(private val coroutineScope: CoroutineScope,
override fun putInt(key: String?, value: Int) {
if (key == null) return
val pk = preferencesKey<Int>(key)
val pk = intPreferencesKey(key)
coroutineScope.launch {
dataStore.edit {
it[pk] = value
@@ -54,7 +57,7 @@ class PreferencesPreferenceDataStore(private val coroutineScope: CoroutineScope,
override fun putLong(key: String?, value: Long) {
if (key == null) return
val pk = preferencesKey<Long>(key)
val pk = longPreferencesKey(key)
coroutineScope.launch {
dataStore.edit {
it[pk] = value
@@ -64,7 +67,7 @@ class PreferencesPreferenceDataStore(private val coroutineScope: CoroutineScope,
override fun putFloat(key: String?, value: Float) {
if (key == null) return
val pk = preferencesKey<Float>(key)
val pk = floatPreferencesKey(key)
coroutineScope.launch {
dataStore.edit {
it[pk] = value
@@ -74,7 +77,7 @@ class PreferencesPreferenceDataStore(private val coroutineScope: CoroutineScope,
override fun putBoolean(key: String?, value: Boolean) {
if (key == null) return
val pk = preferencesKey<Boolean>(key)
val pk = booleanPreferencesKey(key)
coroutineScope.launch {
dataStore.edit {
it[pk] = value
@@ -84,7 +87,7 @@ class PreferencesPreferenceDataStore(private val coroutineScope: CoroutineScope,
override fun getString(key: String?, defValue: String?): String? {
if (key == null) return defValue
val pk = preferencesKey<String>(key)
val pk = stringPreferencesKey(key)
return runBlocking {
dataStore.data.map { it[pk] ?: defValue }.first()
}
@@ -92,7 +95,7 @@ class PreferencesPreferenceDataStore(private val coroutineScope: CoroutineScope,
override fun getStringSet(key: String?, defValues: Set<String?>?): Set<String?>? {
if (key == null) return defValues
val pk = preferencesSetKey<String>(key)
val pk = stringSetPreferencesKey(key)
return runBlocking {
dataStore.data.map { it[pk] ?: defValues }.first()
}
@@ -100,7 +103,7 @@ class PreferencesPreferenceDataStore(private val coroutineScope: CoroutineScope,
override fun getInt(key: String?, defValue: Int): Int {
if (key == null) return defValue
val pk = preferencesKey<Int>(key)
val pk = intPreferencesKey(key)
return runBlocking {
dataStore.data.map { it[pk] ?: defValue }.first()
}
@@ -108,7 +111,7 @@ class PreferencesPreferenceDataStore(private val coroutineScope: CoroutineScope,
override fun getLong(key: String?, defValue: Long): Long {
if (key == null) return defValue
val pk = preferencesKey<Long>(key)
val pk = longPreferencesKey(key)
return runBlocking {
dataStore.data.map { it[pk] ?: defValue }.first()
}
@@ -116,7 +119,7 @@ class PreferencesPreferenceDataStore(private val coroutineScope: CoroutineScope,
override fun getFloat(key: String?, defValue: Float): Float {
if (key == null) return defValue
val pk = preferencesKey<Float>(key)
val pk = floatPreferencesKey(key)
return runBlocking {
dataStore.data.map { it[pk] ?: defValue }.first()
}
@@ -124,7 +127,7 @@ class PreferencesPreferenceDataStore(private val coroutineScope: CoroutineScope,
override fun getBoolean(key: String?, defValue: Boolean): Boolean {
if (key == null) return defValue
val pk = preferencesKey<Boolean>(key)
val pk = booleanPreferencesKey(key)
return runBlocking {
dataStore.data.map { it[pk] ?: defValue }.first()
}
@@ -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()
}
}
@@ -36,7 +36,8 @@ object ErrorMessages {
BackendException.Reason.VPN_NOT_AUTHORIZED to R.string.vpn_not_authorized_error,
BackendException.Reason.UNABLE_TO_START_VPN to R.string.vpn_start_error,
BackendException.Reason.TUN_CREATION_ERROR to R.string.tun_create_error,
BackendException.Reason.GO_ACTIVATION_ERROR_CODE to R.string.tunnel_on_error
BackendException.Reason.GO_ACTIVATION_ERROR_CODE to R.string.tunnel_on_error,
BackendException.Reason.DNS_RESOLUTION_FAILURE to R.string.tunnel_dns_failure
)
private val KFE_FORMAT_MAP = mapOf(
Key.Format.BASE64 to R.string.key_length_explanation_base64,
@@ -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
@@ -5,16 +5,16 @@
package com.wireguard.android.util
import androidx.datastore.preferences.edit
import androidx.datastore.preferences.preferencesKey
import androidx.datastore.preferences.preferencesSetKey
import androidx.datastore.preferences.remove
import androidx.datastore.preferences.core.booleanPreferencesKey
import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.core.stringPreferencesKey
import androidx.datastore.preferences.core.stringSetPreferencesKey
import com.wireguard.android.Application
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
object UserKnobs {
private val DISABLE_KERNEL_MODULE = preferencesKey<Boolean>("disable_kernel_module")
private val DISABLE_KERNEL_MODULE = booleanPreferencesKey("disable_kernel_module")
val disableKernelModule: Flow<Boolean>
get() = Application.getPreferencesDataStore().data.map {
it[DISABLE_KERNEL_MODULE] ?: false
@@ -29,31 +29,31 @@ object UserKnobs {
}
}
private val MULTIPLE_TUNNELS = preferencesKey<Boolean>("multiple_tunnels")
private val MULTIPLE_TUNNELS = booleanPreferencesKey("multiple_tunnels")
val multipleTunnels: Flow<Boolean>
get() = Application.getPreferencesDataStore().data.map {
it[MULTIPLE_TUNNELS] ?: false
}
private val DARK_THEME = preferencesKey<Boolean>("dark_theme")
private val DARK_THEME = booleanPreferencesKey("dark_theme")
val darkTheme: Flow<Boolean>
get() = Application.getPreferencesDataStore().data.map {
it[DARK_THEME] ?: false
}
private val ALLOW_REMOTE_CONTROL_INTENTS = preferencesKey<Boolean>("allow_remote_control_intents")
private val ALLOW_REMOTE_CONTROL_INTENTS = booleanPreferencesKey("allow_remote_control_intents")
val allowRemoteControlIntents: Flow<Boolean>
get() = Application.getPreferencesDataStore().data.map {
it[ALLOW_REMOTE_CONTROL_INTENTS] ?: false
}
private val RESTORE_ON_BOOT = preferencesKey<Boolean>("restore_on_boot")
private val RESTORE_ON_BOOT = booleanPreferencesKey("restore_on_boot")
val restoreOnBoot: Flow<Boolean>
get() = Application.getPreferencesDataStore().data.map {
it[RESTORE_ON_BOOT] ?: false
}
private val LAST_USED_TUNNEL = preferencesKey<String>("last_used_tunnel")
private val LAST_USED_TUNNEL = stringPreferencesKey("last_used_tunnel")
val lastUsedTunnel: Flow<String?>
get() = Application.getPreferencesDataStore().data.map {
it[LAST_USED_TUNNEL]
@@ -68,7 +68,7 @@ object UserKnobs {
}
}
private val RUNNING_TUNNELS = preferencesSetKey<String>("enabled_configs")
private val RUNNING_TUNNELS = stringSetPreferencesKey("enabled_configs")
val runningTunnels: Flow<Set<String>>
get() = Application.getPreferencesDataStore().data.map {
it[RUNNING_TUNNELS] ?: emptySet()
+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
+19
View File
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="delete_success">
<item quantity="zero">تم حذف نفق %d بنجاح</item>
<item quantity="one">تم حذف %d نفق بنجاح</item>
<item quantity="two">تم حذف %d نفق بنجاح</item>
<item quantity="few">تم حذف %d نفق بنجاح</item>
<item quantity="many">تم حذف %d نفق بنجاح</item>
<item quantity="other">تم حذف %d انفاق بنجاح</item>
</plurals>
<plurals name="delete_title">
<item quantity="zero">%d نفق محدد</item>
<item quantity="one">%d نفق محدد</item>
<item quantity="two">%d نفق محدد</item>
<item quantity="few">%d عنصر محدد</item>
<item quantity="many">%d عنصر محدد</item>
<item quantity="other">%d عنصر محدد</item>
</plurals>
</resources>
+28
View File
@@ -1,5 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="delete_error">
<item quantity="one">No s\'ha pogut esborrar %d túnel: %s</item>
<item quantity="other">No s\'han pogut esborrar %d túnels: %s</item>
</plurals>
<plurals name="delete_title">
<item quantity="one">%d túnel seleccionat</item>
<item quantity="other">%d túnels seleccionats</item>
</plurals>
<plurals name="n_excluded_applications">
<item quantity="one">%d exclòs</item>
<item quantity="other">%d exclosos</item>
@@ -27,6 +35,7 @@
<item quantity="one">segon</item>
<item quantity="other">segons</item>
</plurals>
<string name="add_peer">Afegir parell</string>
<string name="addresses">Adreces</string>
<string name="applications">Aplicacions</string>
<string name="allowed_ips">IPs permeses</string>
@@ -38,7 +47,12 @@
<string name="bad_config_reason_unknown_attribute">Atribut desconegut</string>
<string name="bad_config_reason_unknown_section">Secció desconeguda</string>
<string name="cancel">Cancel·la</string>
<string name="create_activity_title">Crear túnel WireGuard</string>
<string name="create_empty">Crea des de zero</string>
<string name="create_from_file">Importa des de fitxer o arxiu</string>
<string name="create_from_qr_code">Escaneja codi QR</string>
<string name="create_tunnel">Crear túnel</string>
<string name="dark_theme_title">Utilitza tema fosc</string>
<string name="delete">Elimina</string>
<string name="dns_servers">Servidors DNS</string>
<string name="edit">Edita</string>
@@ -49,22 +63,36 @@
<string name="hint_optional">(opcional)</string>
<string name="hint_optional_discouraged">(opcional, no recomanat)</string>
<string name="hint_random">(aleatori)</string>
<string name="import_from_qr_code">Importa túnel desde codi QR</string>
<string name="import_success">Importat “%s”</string>
<string name="interface_title">Interfície</string>
<string name="key_length_error">Longitud de clau incorrecta</string>
<string name="log_export_success">Guardat a \"%s\"</string>
<string name="log_export_title">Exporta el registre</string>
<string name="log_saver_activity_label">Guarda registre</string>
<string name="log_viewer_pref_title">Mostra el registre d\'aplicació</string>
<string name="log_viewer_title">Registre</string>
<string name="multiple_tunnels_title">Permet múltiples túnels simultanis</string>
<string name="name">Nom</string>
<string name="no_tunnels_error">No existeixen túnels</string>
<string name="parse_error_inet_address">Adreça IP</string>
<string name="parse_error_inet_network">Xarxa IP</string>
<string name="parse_error_integer">número</string>
<string name="peer">Parell</string>
<string name="pre_shared_key_enabled">activat</string>
<string name="private_key">Clau privada</string>
<string name="public_key">Clau pública</string>
<string name="restore_on_boot_title">Restableix a l\'inici</string>
<string name="save">Guarda</string>
<string name="select_all">Selecciona-ho tot</string>
<string name="settings">Configuració</string>
<string name="tunnel_error_already_exists">El túnel \"%s\" ja existeix</string>
<string name="tunnel_error_invalid_name">Nom no vàlid</string>
<string name="tunnel_list_placeholder">Afegiu un túnel usant el botó blau</string>
<string name="tunnel_name">Nom del túnel</string>
<string name="unknown_error">Error desconegut</string>
<string name="version_summary_unknown">Versió de %s desconeguda</string>
<string name="zip_export_success">Guardat a \"%s\"</string>
<string name="biometric_auth_error">Error d\'autenticació</string>
<string name="biometric_auth_error_reason">Error d\'autenticació: %s</string>
</resources>
+135
View File
@@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="delete_error">
<item quantity="one">%d tunel nelze smazat: %s</item>
<item quantity="few">%d tunely nelze smazat: %s</item>
<item quantity="many">%d tunelů nelze smazat: %s</item>
<item quantity="other">%d tunelů nelze smazat: %s</item>
</plurals>
<plurals name="delete_success">
<item quantity="one">%d tunel byl smazán</item>
<item quantity="few">%d tunely byly smazány</item>
<item quantity="many">%d tunelů bylo smazáno</item>
<item quantity="other">%d tunelů bylo smazáno</item>
</plurals>
<plurals name="delete_title">
<item quantity="one">Vybrán %d tunel</item>
<item quantity="few">Vybrány %d tunely</item>
<item quantity="many">Vybráno %d tunelů</item>
<item quantity="other">Vybráno %d tunelů</item>
</plurals>
<plurals name="import_partial_success">
<item quantity="one">Importován %1$d z %2$d tunelů</item>
<item quantity="few">Importovány %1$d z %2$d tunelů</item>
<item quantity="many">Importováno %1$d z %2$d tunelů</item>
<item quantity="other">Importováno %1$d z %2$d tunelů</item>
</plurals>
<plurals name="import_total_success">
<item quantity="one">Importován %d tunel</item>
<item quantity="few">Importovány %d tunely</item>
<item quantity="many">Importováno %d tunelů</item>
<item quantity="other">Importováno %d tunelů</item>
</plurals>
<plurals name="set_excluded_applications">
<item quantity="one">%d vyloučená aplikace</item>
<item quantity="few">%d vyloučené aplikace</item>
<item quantity="many">%d vyloučených aplikací</item>
<item quantity="other">%d vyloučených aplikací</item>
</plurals>
<plurals name="set_included_applications">
<item quantity="one">%d zahrnutá aplikace</item>
<item quantity="few">%d zahrnuté aplikace</item>
<item quantity="many">%d zahrnutých aplikací</item>
<item quantity="other">%d zahrnutých aplikací</item>
</plurals>
<plurals name="n_excluded_applications">
<item quantity="one">%d vyloučena</item>
<item quantity="few">%d vyloučeny</item>
<item quantity="many">%d vyloučeno</item>
<item quantity="other">%d vyloučeno</item>
</plurals>
<plurals name="n_included_applications">
<item quantity="one">%d zahrnuta</item>
<item quantity="few">%d zahrnuty</item>
<item quantity="many">%d zahrnuto</item>
<item quantity="other">%d zahrnuto</item>
</plurals>
<string name="all_applications">Všechny aplikace</string>
<string name="exclude_from_tunnel">Vyloučit</string>
<string name="include_in_tunnel">Zahrnout pouze</string>
<plurals name="include_n_applications">
<item quantity="one">Zahrnout %d aplikaci</item>
<item quantity="few">Zahrnout %d aplikace</item>
<item quantity="many">Zahrnout %d aplikací</item>
<item quantity="other">Zahrnout %d aplikací</item>
</plurals>
<plurals name="exclude_n_applications">
<item quantity="one">Vyloučit %d aplikaci</item>
<item quantity="few">Vyloučit %d aplikace</item>
<item quantity="many">Vyloučit %d aplikací</item>
<item quantity="other">Vyloučit %d aplikací</item>
</plurals>
<plurals name="persistent_keepalive_seconds_unit">
<item quantity="one">každou sekundu</item>
<item quantity="few">každé %d sekundy</item>
<item quantity="many">každých %d sekund</item>
<item quantity="other">každých %d sekund</item>
</plurals>
<plurals name="persistent_keepalive_seconds_suffix">
<item quantity="one">sekunda</item>
<item quantity="few">sekundy</item>
<item quantity="many">sekund</item>
<item quantity="other">sekund</item>
</plurals>
<string name="use_all_applications">Použít všechny aplikace</string>
<string name="add_peer">Přidat peera</string>
<string name="addresses">Adresy</string>
<string name="applications">Aplikace</string>
<string name="allow_remote_control_intents_summary_off">Externí aplikace nemohou přepínat tunely (doporučeno)</string>
<string name="allow_remote_control_intents_summary_on">Externí aplikace mohou přepínat tunely (pokročilé)</string>
<string name="allow_remote_control_intents_title">Povolit aplikace vzdálené správy</string>
<string name="allowed_ips">Povolené IP</string>
<string name="bad_config_context">%2$s položky %1$s</string>
<string name="bad_config_context_top_level">%s</string>
<string name="bad_config_error">%1$s v %2$s</string>
<string name="bad_config_explanation_pka">: Musí být kladný a maximálně 65535</string>
<string name="bad_config_explanation_positive_number">: Musí být kladný</string>
<string name="bad_config_explanation_udp_port">: Musí být platné číslo UDP portu</string>
<string name="bad_config_reason_invalid_key">Neplatný klíč</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">Chybějící atribut</string>
<string name="bad_config_reason_missing_section">Chybějící sekce</string>
<string name="bad_config_reason_syntax_error">Syntaktická chyba</string>
<string name="bad_config_reason_unknown_attribute">Neznámý atribut</string>
<string name="bad_config_reason_unknown_section">Neznámá sekce</string>
<string name="bad_config_reason_value_out_of_range">Hodnota je mimo rozsah</string>
<string name="bad_extension_error">Soubor musí být .conf nebo .zip</string>
<string name="cancel">Zrušit</string>
<string name="config_delete_error">Nelze smazat konfigurační soubor %s</string>
<string name="config_exists_error">Konfigurace pro „%s“ již existuje</string>
<string name="config_file_exists_error">Konfigurační soubor „%s“ již existuje</string>
<string name="config_not_found_error">Konfigurační soubor „%s“ nebyl nalezen</string>
<string name="config_rename_error">Konfigurační soubor „%s“ nelze přejmenovat</string>
<string name="config_save_error">Nelze uložit konfiguraci pro „%1$s“: %2$s</string>
<string name="config_save_success">Konfigurace pro „%s“ byla úspěšně uložena</string>
<string name="create_activity_title">Vytvořit WireGuard tunel</string>
<string name="log_viewer_pref_summary">Logy mohou pomoci s debuggingem</string>
<string name="log_viewer_pref_title">Zobrazit log aplikace</string>
<string name="log_viewer_title">Log</string>
<string name="logcat_error">Nelze spustit logcat: </string>
<string name="module_disabler_disabled_summary">Experimentální kernel modul může zlepšit výkon</string>
<string name="module_disabler_disabled_title">Povolit backend kernel modulu</string>
<string name="module_disabler_enabled_title">Vypnout backend kernel modulu</string>
<string name="module_installer_error">Něco se pokazilo. Zkuste to prosím znovu</string>
<string name="module_installer_initial">Experimentální kernel modul může zlepšit výkon</string>
<string name="module_installer_not_found">Pro toto zařízení nejsou dostupné žádné moduly</string>
<string name="module_installer_title">Stáhnout a nainstalovat kernel modul</string>
<string name="module_installer_working">Stahování a instalace…</string>
<string name="module_version_error">Nelze určit verzi kernel modulu</string>
<string name="mtu">MTU</string>
<string name="multiple_tunnels_summary_off">Zapnutí jednoho tunelu vypne ostatní tunely</string>
<string name="multiple_tunnels_summary_on">Více tunelů může být zapnuto najednou</string>
<string name="multiple_tunnels_title">Povolit více simultánních tunelů</string>
<string name="name">Název</string>
</resources>
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="delete_error">
<item quantity="one">Kan ikke slette %d tunnel: %s</item>
<item quantity="other">Ikke i stand til at slette %d tunneler: %s</item>
</plurals>
<plurals name="delete_success">
<item quantity="one">Slettede %d tunnel</item>
<item quantity="other">%d tunneller blev slettet</item>
</plurals>
</resources>
+10 -5
View File
@@ -56,14 +56,13 @@
<item quantity="other">Sekunden</item>
</plurals>
<string name="use_all_applications">Alle Apps verwenden</string>
<string name="add_peer">Teilnehmer hinzufügen</string>
<string name="add_peer">Gegenüber hinzufügen</string>
<string name="addresses">Adressen</string>
<string name="applications">Anwendungen</string>
<string name="allow_remote_control_intents_summary_off">Externe Apps dürfen keine Tunnel umschalten (empfohlen)</string>
<string name="allow_remote_control_intents_summary_on">Externe Apps dürfen Tunnel umschalten (erweitert)</string>
<string name="allow_remote_control_intents_title">Erlaube Steuerung über externe Apps</string>
<string name="allowed_ips">Erlaubte IPs</string>
<string name="app_name">WireGuard</string>
<string name="bad_config_context">%2$s des %1$s</string>
<string name="bad_config_context_top_level">%s</string>
<string name="bad_config_error">%1$s in %2$s</string>
@@ -97,11 +96,18 @@
<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="dns_servers">DNS-Server</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">Nameserver</string>
<string name="edit">Bearbeiten</string>
<string name="endpoint">Endpunkt</string>
<string name="error_down">Fehler beim Abschalten des Tunnels: %s</string>
@@ -112,7 +118,7 @@
<string name="generate_new_private_key">Neuen privaten Schlüssel generieren</string>
<string name="generic_error">Unbekannter „%s“ Fehler</string>
<string name="hint_automatic">(auto)</string>
<string name="hint_generated">(generiert)</string>
<string name="hint_generated">(erzeugt)</string>
<string name="hint_optional">(optional)</string>
<string name="hint_optional_discouraged">(optional, nicht empfohlen)</string>
<string name="hint_random">(zufällig)</string>
@@ -212,7 +218,6 @@
<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_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>
+179
View File
@@ -0,0 +1,179 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="n_excluded_applications">
<item quantity="one">%d excluido</item>
<item quantity="other">%d excluidos</item>
</plurals>
<string name="all_applications">Todas las Aplicaciones</string>
<string name="exclude_from_tunnel">Excluir</string>
<string name="include_in_tunnel">Sólo inclusión</string>
<string name="use_all_applications">Usar todas las aplicaciones</string>
<string name="add_peer">Añadir par</string>
<string name="addresses">Direcciones</string>
<string name="applications">Aplicaciones</string>
<string name="allow_remote_control_intents_summary_off">Las aplicaciones externas no pueden cambiar túneles (recomendado)</string>
<string name="allow_remote_control_intents_summary_on">Las aplicaciones externas pueden cambiar túneles (avanzado)</string>
<string name="allow_remote_control_intents_title">Permitir aplicaciones de mando remoto</string>
<string name="allowed_ips">IPs permitidas</string>
<string name="bad_config_context">%1$s de %2$s</string>
<string name="bad_config_context_top_level">%s</string>
<string name="bad_config_error">%1$s en %2$s</string>
<string name="bad_config_explanation_pka">: Debe ser positivo y no más de 65535</string>
<string name="bad_config_explanation_positive_number">: Debe ser positivo</string>
<string name="bad_config_explanation_udp_port">: Debe ser un número válido de puerto UDP</string>
<string name="bad_config_reason_invalid_key">Clave inválida</string>
<string name="bad_config_reason_invalid_number">Número inválido</string>
<string name="bad_config_reason_invalid_value">Valor inválido</string>
<string name="bad_config_reason_missing_attribute">Falta atributo</string>
<string name="bad_config_reason_missing_section">Sección faltante</string>
<string name="bad_config_reason_syntax_error">Error de sintaxis</string>
<string name="bad_config_reason_unknown_attribute">Atributo desconocido</string>
<string name="bad_config_reason_unknown_section">Sección desconocida</string>
<string name="bad_config_reason_value_out_of_range">Valor fuera de rango</string>
<string name="bad_extension_error">El archivo debe ser .conf o .zip</string>
<string name="cancel">Cancelar</string>
<string name="config_delete_error">No se puede eliminar el archivo de configuración %s</string>
<string name="config_exists_error">La configuración para “%s” ya existe</string>
<string name="config_file_exists_error">El archivo de configuración “%s” ya existe</string>
<string name="config_not_found_error">Archivo de configuración “%s” no encontrado</string>
<string name="config_rename_error">No se puede renombrar el archivo de configuración “%s”</string>
<string name="config_save_error">No se puede guardar la configuración para “%1$s”: %2$s</string>
<string name="config_save_success">Configuración guardada correctamente para “%s”</string>
<string name="create_activity_title">Crear túnel WireGuard</string>
<string name="create_bin_dir_error">No se puede crear el directorio binario local</string>
<string name="create_downloads_file_error">No se puede crear archivo en el directorio de descargas</string>
<string name="create_empty">Crear de cero</string>
<string name="create_from_file">Importar desde archivo</string>
<string name="create_from_qr_code">Escanear desde código QR</string>
<string name="create_output_dir_error">No se puede crear el directorio de salida</string>
<string name="create_temp_dir_error">No se puede crear la carpeta temporal</string>
<string name="create_tunnel">Crear túnel</string>
<string name="dark_theme_summary_off">Actualmente usando tema claro (día)</string>
<string name="dark_theme_summary_on">Actualmente usando tema oscuro (noche)</string>
<string name="dark_theme_title">Usar tema oscuro</string>
<string name="delete">Eliminar</string>
<string name="dns_servers">Servidores DNS</string>
<string name="edit">Editar</string>
<string name="endpoint">Punto final</string>
<string name="error_down">Error al bajar el túnel: %s</string>
<string name="error_fetching_apps">Error al obtener la lista de aplicaciones: %s</string>
<string name="error_root">Por favor, obtén acceso root y vuelve a intentarlo</string>
<string name="error_up">Error al abrir el túnel: %s</string>
<string name="exclude_private_ips">Excluir direcciones privadas</string>
<string name="generate_new_private_key">Generar nueva clave privada</string>
<string name="generic_error">Error desconocido “%s”</string>
<string name="hint_automatic">(auto)</string>
<string name="hint_generated">(generado)</string>
<string name="hint_optional">(opcional)</string>
<string name="hint_optional_discouraged">(opcional, no recomendado)</string>
<string name="hint_random">(aleatorio)</string>
<string name="illegal_filename_error">Nombre de archivo no válido “%s”</string>
<string name="import_error">No se puede importar túnel: %s</string>
<string name="import_from_qr_code">Importar túnel desde código QR</string>
<string name="import_success">Importado “%s”</string>
<string name="interface_title">Interfaz</string>
<string name="key_contents_error">Caracteres incorrectos en la clave</string>
<string name="key_length_error">Longitud de clave incorrecta</string>
<string name="key_length_explanation_base64">Las claves base64 de WireGuard deben tener 44 caracteres (32 bytes)</string>
<string name="key_length_explanation_binary">: Las claves WireGuard deben tener 32 bytes</string>
<string name="key_length_explanation_hex">: Las claves hexadecimales de Wirex deben tener 64 caracteres (32 bytes)</string>
<string name="listen_port">Puerto de escucha</string>
<string name="log_export_error">No se pudo exportar el registro: %s</string>
<string name="log_export_subject">Archivo de registro WireGuard Android</string>
<string name="log_export_success">Guardado en “%s”</string>
<string name="log_export_title">Exportar archivo de registro</string>
<string name="log_saver_activity_label">Guardar registro</string>
<string name="log_viewer_pref_summary">Los registros pueden ayudar con la depuración</string>
<string name="log_viewer_pref_title">Ver registro de aplicación</string>
<string name="log_viewer_title">Registro</string>
<string name="logcat_error">No se puede ejecutar logcat: </string>
<string name="module_disabler_disabled_summary">El módulo experimental del kernel puede mejorar el rendimiento</string>
<string name="module_disabler_disabled_title">Habilitar backend del módulo del kernel</string>
<string name="module_disabler_enabled_summary">El backend más lento del espacio de usuario puede mejorar la estabilidad</string>
<string name="module_disabler_enabled_title">Desactivar backend del módulo del kernel</string>
<string name="module_installer_error">Ocurrió un error. Intente de nuevo</string>
<string name="module_installer_initial">El módulo experimental del kernel puede mejorar el rendimiento</string>
<string name="module_installer_not_found">No hay módulos disponibles para tu dispositivo</string>
<string name="module_installer_title">Descargar e instalar el módulo del kernel</string>
<string name="module_installer_working">Descargando e instalando…</string>
<string name="module_version_error">No se puede determinar la versión del módulo del kernel</string>
<string name="mtu">MTU</string>
<string name="multiple_tunnels_summary_off">Activar un túnel apagará los demás</string>
<string name="multiple_tunnels_summary_on">Múltiples túneles pueden ser activados simultáneamente</string>
<string name="multiple_tunnels_title">Permitir múltiples túneles simultáneos</string>
<string name="name">Nombre</string>
<string name="no_config_error">Intentando abrir un túnel sin configuración</string>
<string name="no_configs_error">No se encontraron configuraciones</string>
<string name="no_tunnels_error">No existen túneles</string>
<string name="parse_error_generic">cadena</string>
<string name="parse_error_inet_address">Dirección IP</string>
<string name="parse_error_inet_endpoint">punto final</string>
<string name="parse_error_inet_network">Red IP</string>
<string name="parse_error_integer">número</string>
<string name="parse_error_reason">No se puede analizar %1$s “%2$s”</string>
<string name="peer">Pares</string>
<string name="permission_description">controlar túneles de WireGuard, habilitando y desactivando túneles a su antojo, lo que podría conducir mal al tráfico de Internet</string>
<string name="permission_label">controlar túneles de WireGuard</string>
<string name="persistent_keepalive">Mantenimiento persistente</string>
<string name="pre_shared_key">Clave precompartida</string>
<string name="pre_shared_key_enabled">activado</string>
<string name="private_key">Clave privada</string>
<string name="public_key">Clave pública</string>
<string name="qr_code_hint">Consejo: generar con `qrencode -t ansiutf8 &lt; tunnel.conf`.</string>
<string name="restore_on_boot_summary_off">No mostrará túneles habilitados al arrancar</string>
<string name="restore_on_boot_summary_on">Mostrará túneles habilitados al arrancar</string>
<string name="restore_on_boot_title">Restaurar al arrancar</string>
<string name="save">Guardar</string>
<string name="select_all">Seleccionar todo</string>
<string name="settings">Preferencias</string>
<string name="shell_exit_status_read_error">Shell no puede leer estado de salida</string>
<string name="shell_marker_count_error">Shell esperaba 4 marcadores, recibió %d</string>
<string name="shell_start_error">No se pudo iniciar Shell: %d</string>
<string name="success_application_will_restart">Éxito. La aplicación se reiniciará ahora…</string>
<string name="toggle_all">Cambiar Todos</string>
<string name="toggle_error">Error al cambiar el túnel WireGuard: %s</string>
<string name="tools_installer_already">wg y wg-quick ya están instalados</string>
<string name="tools_installer_failure">No se puede instalar herramientas de línea de comandos (sin root?)</string>
<string name="tools_installer_initial">Instalar herramientas opcionales para el scripting</string>
<string name="tools_installer_initial_magisk">Instalar herramientas opcionales para el scripting como módulo Magisk</string>
<string name="tools_installer_initial_system">Instalar herramientas opcionales para el scripting en la partición del sistema</string>
<string name="tools_installer_success_magisk">wg y wg-quick instalados como un módulo Magisk (requiere reinicio)</string>
<string name="tools_installer_success_system">wg y wg-quick instalados en la partición del sistema</string>
<string name="tools_installer_title">Instalar herramientas de línea de comandos</string>
<string name="tools_installer_working">Instalando wg y wg-quick</string>
<string name="tools_unavailable_error">Herramientas requeridas no disponibles</string>
<string name="transfer">Transferir</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">No se puede crear el dispositivo túnel</string>
<string name="tunnel_config_error">No se puede configurar el túnel (wg-quick devuelto %d)</string>
<string name="tunnel_create_error">No se puede crear el dispositivo túnel: %s</string>
<string name="tunnel_create_success">Túnel creado con éxito “%s”</string>
<string name="tunnel_error_already_exists">Túnel “%s” ya existe</string>
<string name="tunnel_error_invalid_name">Nombre inválido</string>
<string name="tunnel_list_placeholder">Añadir un túnel usando el botón azul</string>
<string name="tunnel_name">Nombre del túnel</string>
<string name="tunnel_on_error">No se puede activar el túnel (wgTurnOn devolvió %d)</string>
<string name="tunnel_rename_error">No se puede renombrar túnel: %s</string>
<string name="tunnel_rename_success">Túnel renombrado con éxito a “%s”</string>
<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_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>
<string name="vpn_not_authorized_error">Servicio VPN no autorizado por el usuario</string>
<string name="vpn_start_error">No se puede iniciar el servicio VPN Android</string>
<string name="zip_export_error">No se pueden exportar túneles: %s</string>
<string name="zip_export_success">Guardado en “%s”</string>
<string name="zip_export_summary">El archivo Zip se guardará en la carpeta de descargas</string>
<string name="zip_export_title">Exportar túneles a archivo zip</string>
<string name="biometric_prompt_zip_exporter_title">Autenticar para exportar túneles</string>
<string name="biometric_prompt_private_key_title">Autenticar para ver la clave privada</string>
<string name="biometric_auth_error">Error de autenticación</string>
<string name="biometric_auth_error_reason">Error de autenticación: %s</string>
</resources>
+26 -2
View File
@@ -64,7 +64,6 @@
<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\'s %2$s</string>
<string name="bad_config_context_top_level">%s</string>
<string name="bad_config_error">%1$s در %2$s</string>
@@ -102,6 +101,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>
@@ -139,14 +144,18 @@
<string name="logcat_error">نمی‌توان logcat را اجرا کرد: </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_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>
@@ -165,14 +174,27 @@
<string name="pre_shared_key_enabled">فعال شده</string>
<string name="private_key">کلید خصوصی</string>
<string name="public_key">کلید عمومی</string>
<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="save">ذخیره</string>
<string name="select_all">انتخاب همه</string>
<string name="settings">تنظیمات</string>
<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="toggle_all">معکوس کردن همه</string>
<string name="toggle_error">خطا در ضامن تونل WireGuard: %s</string>
<string name="tools_installer_already">wg و wg-quick قبلاً نصب شده اند</string>
<string name="tools_installer_failure">ابزارهای خط-فرمان نصب نمی‌شود (روت نیستید؟)</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-fast در پارتیشن سیستم نصب شده است</string>
<string name="tools_installer_title">ابزارهای خط فرمان را نصب کنید</string>
<string name="tools_installer_working">در حال نصب wg و wg-quick</string>
<string name="tools_unavailable_error">ابزارهای لازم در دسترس نیست</string>
@@ -183,18 +205,20 @@
<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>
<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_kernel_module">واحد هسته</string>
<string name="unknown_error">خطای نامشخص</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 برای اندروید نگارش %s</string>
+63
View File
@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="persistent_keepalive_seconds_unit">
<item quantity="one">joka sekunti</item>
<item quantity="other">%d sekunnin välein</item>
</plurals>
<plurals name="persistent_keepalive_seconds_suffix">
<item quantity="one">sekunti</item>
<item quantity="other">sekuntia</item>
</plurals>
<string name="use_all_applications">Käytä kaikkia sovelluksia</string>
<string name="add_peer">Lisää toinen osapuoli</string>
<string name="addresses">Osoitteet</string>
<string name="applications">Sovellukset</string>
<string name="allowed_ips">Sallitut IP-osoitteet</string>
<string name="bad_config_context_top_level">%s</string>
<string name="bad_config_reason_invalid_key">Virheellinen avain</string>
<string name="bad_config_reason_invalid_number">Virheellinen luku</string>
<string name="bad_config_reason_invalid_value">Virheellinen arvo</string>
<string name="bad_config_reason_missing_attribute">Attribuutti puuttuu</string>
<string name="bad_config_reason_missing_section">Osio puuttuu</string>
<string name="bad_config_reason_syntax_error">Syntaksivirhe</string>
<string name="bad_config_reason_unknown_attribute">Tuntematon määrite</string>
<string name="bad_config_reason_unknown_section">Tuntematon osio</string>
<string name="bad_config_reason_value_out_of_range">Arvo alueen ulkopuolella</string>
<string name="bad_extension_error">Tiedoston on oltava .conf tai .zip</string>
<string name="cancel">Peruuta</string>
<string name="config_not_found_error">Asetustiedostoa “%s” ei löydy</string>
<string name="config_rename_error">Asetustiedostoa \"%s\" ei voi nimetä uudelleen</string>
<string name="config_save_success">Asetustiedosto \"%s\" tallennettu onnistuneesti</string>
<string name="create_activity_title">Luo WireGuard Tunnel</string>
<string name="exclude_private_ips">Jätä pois yksityiset IP-osoitteet</string>
<string name="generate_new_private_key">Luo uusi yksityinen avain</string>
<string name="generic_error">Tuntematon ”%s” virhe</string>
<string name="hint_automatic">(oletus)</string>
<string name="hint_generated">(generoitu)</string>
<string name="hint_optional">(valinnainen)</string>
<string name="hint_optional_discouraged">(valinnainen, ei suositeltava)</string>
<string name="hint_random">(satunnainen)</string>
<string name="illegal_filename_error">Virheellinen tiedostonimi “%s”</string>
<string name="import_error">Tunnelia \"%s\" ei voitu tuoda</string>
<string name="import_from_qr_code">Tuo tunneli QR-koodista</string>
<string name="import_success">Tuotu ”%s”</string>
<string name="key_contents_error">Virheellinen merkki avaimessa</string>
<string name="key_length_error">Virheellinen avaimen pituus</string>
<string name="key_length_explanation_base64">: WireGuardin base64-avainten pituus on oltava 44 merkkiä (32 tavua)</string>
<string name="key_length_explanation_binary">: WireGuard-avainten on oltava 32 tavua</string>
<string name="key_length_explanation_hex">: WireGuardin base64-avainten pituus on oltava 64 merkkiä (32 tavua)</string>
<string name="listen_port">Kuuntele porttia</string>
<string name="mtu">MTU</string>
<string name="no_configs_error">Asetuksia ei löydy</string>
<string name="no_tunnels_error">Tunneleita ei ole</string>
<string name="parse_error_generic">merkkijono</string>
<string name="parse_error_inet_address">IP-osoite</string>
<string name="parse_error_inet_network">IP-verkko</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="tunnel_name">Tunnelin nimi</string>
</resources>
+7 -2
View File
@@ -63,7 +63,6 @@
<string name="allow_remote_control_intents_summary_on">Les applications externes peuvent activer les tunnels (avancés)</string>
<string name="allow_remote_control_intents_title">Autoriser les applications de contrôle à distance</string>
<string name="allowed_ips">Adresses IP autorisées</string>
<string name="app_name">WireGuard</string>
<string name="bad_config_context">%1$s de %2$s</string>
<string name="bad_config_context_top_level">%s</string>
<string name="bad_config_error">%1$s dans %2$s</string>
@@ -97,10 +96,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 +218,6 @@
<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_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>
+1 -3
View File
@@ -63,7 +63,6 @@
<string name="allow_remote_control_intents_summary_on">बाहरी ऐप्स टनल्स को चालू कर सकते है (एडवांस्ड)</string>
<string name="allow_remote_control_intents_title">रिमोट कंट्रोल ऐप्स की अनुमति दें</string>
<string name="allowed_ips">अनुमत आईपी</string>
<string name="app_name">WireGuard</string>
<string name="bad_config_explanation_pka">: सकारात्मक होना चाहिए और 65535 से अधिक नहीं होना चाहिए</string>
<string name="bad_config_explanation_positive_number">: सकारात्मक होना चाहिए</string>
<string name="bad_config_explanation_udp_port">: एक वैध यूडीपी पोर्ट नंबर होना चाहिए</string>
@@ -175,7 +174,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 +202,6 @@
<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_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>
@@ -19,7 +19,7 @@
<item quantity="other">%d Aplikasi Dikecualikan</item>
</plurals>
<plurals name="set_included_applications">
<item quantity="other">%d Aplikasi Dikecualikan</item>
<item quantity="other">%d Aplikasi Disertakan</item>
</plurals>
<plurals name="n_excluded_applications">
<item quantity="other">%d dikecualikan</item>
@@ -46,11 +46,10 @@
<string name="add_peer">Tambahkan rekan</string>
<string name="addresses">Alamat</string>
<string name="applications">Aplikasi</string>
<string name="allow_remote_control_intents_summary_off">Apl eksternal tidak dapat mengalihkan tunnel (disarankan)</string>
<string name="allow_remote_control_intents_summary_off">Aplikasi eksternal tidak dapat mengalihkan tunnel (disarankan)</string>
<string name="allow_remote_control_intents_summary_on">Apl eksternal dapat mengalihkan tunnel (lanjutan)</string>
<string name="allow_remote_control_intents_title">Izinkan apl kendali jarak jauh</string>
<string name="allow_remote_control_intents_title">Izinkan kendali jarak jauh</string>
<string name="allowed_ips">IP diizinkan</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 di %2$s</string>
@@ -84,10 +83,17 @@
<string name="create_output_dir_error">Tidak dapat membuat direktori keluaran</string>
<string name="create_temp_dir_error">Tidak dapat membuat direktori lokal sementara</string>
<string name="create_tunnel">Buat tunel</string>
<string name="copied_to_clipboard">%s Disalin ke Clipboard</string>
<string name="dark_theme_summary_off">Saat ini menggunakan tema terang (siang)</string>
<string name="dark_theme_summary_on">Saat ini menggunakan tema gelap (malam)</string>
<string name="dark_theme_title">Gunakan tema gelap</string>
<string name="delete">Hapus</string>
<string name="tv_delete">Pilih tunnel yang akan dihapus</string>
<string name="tv_select_a_storage_drive">Pilih lokasi penyimpanan</string>
<string name="tv_no_file_picker">Silakan instal aplikasi file manajer untuk memilih file</string>
<string name="tv_add_tunnel_get_started">Tambahkan tunnel untuk memulai</string>
<string name="disable_config_export_title">Nonaktifkan ekspor konfigurasi</string>
<string name="disable_config_export_description">Menonaktifkan ekspor konfigurasi akan membuat kunci pribadi sulit diakses</string>
<string name="dns_servers">Server DNS</string>
<string name="edit">Edit</string>
<string name="endpoint">Endpoint</string>
@@ -199,7 +205,6 @@
<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_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>
+7 -2
View File
@@ -63,7 +63,6 @@
<string name="allow_remote_control_intents_summary_on">Le applicazioni esterne possono attivare tunnel (avanzato)</string>
<string name="allow_remote_control_intents_title">Consenti applicazioni di controllo remoto</string>
<string name="allowed_ips">IP consentiti</string>
<string name="app_name">WireGuard</string>
<string name="bad_config_context">%2$s di %1$s</string>
<string name="bad_config_context_top_level">%s</string>
<string name="bad_config_error">%1$s in %2$s</string>
@@ -97,10 +96,17 @@
<string name="create_output_dir_error">Impossibile creare la cartella di output</string>
<string name="create_temp_dir_error">Impossibile creare la cartella locale temporanea</string>
<string name="create_tunnel">Crea tunnel</string>
<string name="copied_to_clipboard">%s copiato negli appunti</string>
<string name="dark_theme_summary_off">Stai usando il tema chiaro (giorno)</string>
<string name="dark_theme_summary_on">Stai usando il tema scuro (notte)</string>
<string name="dark_theme_title">Usa tema scuro</string>
<string name="delete">Elimina</string>
<string name="tv_delete">Seleziona il tunnel da eliminare</string>
<string name="tv_select_a_storage_drive">Seleziona un\'unità di archiviazione</string>
<string name="tv_no_file_picker">Installa un\'utilità di gestione file per sfogliare i file</string>
<string name="tv_add_tunnel_get_started">Aggiungi un tunnel per iniziare</string>
<string name="disable_config_export_title">Disattiva esportazione config</string>
<string name="disable_config_export_description">Disabilitare l\'esportazione della configurazione rende le chiavi private meno accessibili</string>
<string name="dns_servers">Server DNS</string>
<string name="edit">Modifica</string>
<string name="endpoint">Endpoint</string>
@@ -212,7 +218,6 @@
<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_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>
+7 -2
View File
@@ -50,7 +50,6 @@
<string name="allow_remote_control_intents_summary_on">外部アプリにトンネルの制御を許可(上級者向け)</string>
<string name="allow_remote_control_intents_title">外部アプリからの制御</string>
<string name="allowed_ips">Allowed IPs</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">%2$s 中の %1$s</string>
@@ -84,10 +83,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 +205,6 @@
<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_checking">%s バックエンドのバージョンを確認中</string>
<string name="version_summary_unknown">未知の %s バージョン</string>
<string name="version_title">WireGuard for Android v%s</string>
+221
View File
@@ -0,0 +1,221 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="delete_error">
<item quantity="other">%d개의 터널을 삭제할 수 없습니다: %s</item>
</plurals>
<plurals name="delete_success">
<item quantity="other">%d개의 터널을 성공적으로 삭제했습니다</item>
</plurals>
<plurals name="delete_title">
<item quantity="other">%d개의 터널이 선택되었습니다</item>
</plurals>
<plurals name="import_partial_success">
<item quantity="other">%2$d개의 터널 중에서 %1$d개를 가져왔습니다</item>
</plurals>
<plurals name="import_total_success">
<item quantity="other">%d개의 터널을 가져왔습니다</item>
</plurals>
<plurals name="set_excluded_applications">
<item quantity="other">%d개의 앱이 제외됨</item>
</plurals>
<plurals name="set_included_applications">
<item quantity="other">%d개의 앱이 포함됨</item>
</plurals>
<plurals name="n_excluded_applications">
<item quantity="other">%d개 제외됨</item>
</plurals>
<plurals name="n_included_applications">
<item quantity="other">%d개 포함됨</item>
</plurals>
<string name="all_applications">모든 앱</string>
<string name="exclude_from_tunnel">제외</string>
<string name="include_in_tunnel">이것만 포함</string>
<plurals name="include_n_applications">
<item quantity="other">%d개의 앱을 포함함</item>
</plurals>
<plurals name="exclude_n_applications">
<item quantity="other">%d개의 앱을 제외함</item>
</plurals>
<plurals name="persistent_keepalive_seconds_unit">
<item quantity="other">%d초 마다</item>
</plurals>
<plurals name="persistent_keepalive_seconds_suffix">
<item quantity="other">초</item>
</plurals>
<string name="use_all_applications">모든 앱을 사용</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="allowed_ips">허용된 IP</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">%2$s의 %1$s</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_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="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_success">\"%s\"에 대한 설정을 성공적으로 저장했습니다</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_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="endpoint">엔드포인트</string>
<string name="error_down">터널 중단 시 오류 발생: %s</string>
<string name="error_fetching_apps">앱 목록을 받는 도중 오류 발생: %s</string>
<string name="error_root">관리자 권한이 필요함</string>
<string name="error_up">터널을 시작 시 오류 발생: %s</string>
<string name="exclude_private_ips">사설 IP 제외</string>
<string name="generate_new_private_key">새로운 개인 키 만들기</string>
<string name="generic_error">알려지지 않은 오류: “%s”</string>
<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="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_explanation_hex">: WireGuard의 16진수 키는 반드시 64 글자(32 바이트)임</string>
<string name="listen_port">수신 대기 포트</string>
<string name="log_export_error">로그를 내보낼 수 없음: %s</string>
<string name="log_export_subject">WireGuard 안드로이드 로그 파일</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="logcat_error">logcat을 실행할 수 없음: </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_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>
<string name="no_tunnels_error">터널이 존재하지 않음</string>
<string name="parse_error_generic">문자열</string>
<string name="parse_error_inet_address">IP 주소</string>
<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="peer">피어</string>
<string name="permission_description">마음대로 터널을 활성화 및 비활성화하는 등 WireGuard 터널을 제어하면, 인터넷 트래픽을 잘못 전달할 위험이 있음</string>
<string name="permission_label">WireGuard 터널 제어</string>
<string name="persistent_keepalive">Persistent keepalive</string>
<string name="pre_shared_key">사전 공유 키</string>
<string name="pre_shared_key_enabled">활성화됨</string>
<string name="private_key">개인 키</string>
<string name="public_key">공개 키</string>
<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="save">저장</string>
<string name="select_all">모두 선택</string>
<string name="settings">설정</string>
<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="toggle_all">모두 반전</string>
<string name="toggle_error">WireGuard 터널 토글링 오류: %s</string>
<string name="tools_installer_already">wg와 wg-quick 모두 이미 설치되었음</string>
<string name="tools_installer_failure">커맨드라인 도구 설치 불가 (루트 권한 필요)</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>
<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>
<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">수신: %1$s, 송신: %2$s</string>
<string name="transfer_tibibytes">%.2f TiB</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_error_already_exists">터널 \"%s\"가 이미 존재함</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">Go userspace</string>
<string name="type_name_kernel_module">커널 모듈</string>
<string name="unknown_error">알 수 없는 오류</string>
<string name="version_summary_checking">%s 백엔드 버전 확인 중</string>
<string name="version_summary_unknown">알 수 없는 버전: %s</string>
<string name="version_title">WireGuard for 안드로이드 v%s</string>
<string name="vpn_not_authorized_error">VPN 서비스는 사용자에 의해 승인되지 않았음</string>
<string name="vpn_start_error">안드로이드 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="biometric_prompt_zip_exporter_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>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="delete_error">
<item quantity="one">Kan %d tunnel niet verwijderen: %s</item>
<item quantity="other">Kan %d tunnels niet verwijderen: %s</item>
</plurals>
</resources>
+212 -1
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,176 @@
<string name="add_peer">Legg til peer</string>
<string name="addresses">Adresser</string>
<string name="applications">Applikasjoner</string>
<string name="app_name">WireGuard</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="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_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>
+234
View File
@@ -0,0 +1,234 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="delete_error">
<item quantity="one">%d ਟਨਲ ਹਟਾਉਣ ਲਈ ਅਸਮਰੱਥ: %s</item>
<item quantity="other">%d ਟਨਲਾਂ ਹਟਾਉਣ ਲਈ ਅਸਮਰੱਥ: %s</item>
</plurals>
<plurals name="delete_success">
<item quantity="one">%d ਟਨਲ ਕਾਮਯਾਬੀ ਨਾਲ ਹਟਾਈ</item>
<item quantity="other">%d ਟਨਲਾਂ ਕਾਮਯਾਬੀ ਨਾਲ ਹਟਾਈਆਂ</item>
</plurals>
<plurals name="delete_title">
<item quantity="one">%d ਟਨਲ ਚੁਣੀ</item>
<item quantity="other">%d ਟਨਲਾਂ ਚੁਣੀਆਂ</item>
</plurals>
<plurals name="import_partial_success">
<item quantity="one">%2$d ਟਨਲਾਂ ਵਿੱਚੋਂ %1$d ਇੰਪੋਰਟ ਕੀਤੀ</item>
<item quantity="other">%2$d ਟਨਲਾਂ ਵਿੱਚੋਂ %1$d ਇੰਪੋਰਟ ਕੀਤੀਆਂ</item>
</plurals>
<plurals name="import_total_success">
<item quantity="one">%d ਟਨਲ ਇੰਪੋਰਟ ਕੀਤੀ</item>
<item quantity="other">%d ਟਨਲਾਂ ਇੰਪੋਰਟ ਕੀਤੀਆਂ</item>
</plurals>
<plurals name="set_excluded_applications">
<item quantity="one">%d ਅਲਹਿਦਾ ਕੀਤੀ ਐਪਲੀਕੇਸ਼ਨ</item>
<item quantity="other">%d ਅਲਹਿਦਾ ਕੀਤੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ</item>
</plurals>
<plurals name="set_included_applications">
<item quantity="one">%d ਐਪਲੀਕੇਸ਼ਨ ਸਮੇਤ</item>
<item quantity="other">%d ਐਪਲੀਕੇਸ਼ਨਾਂ ਸਮੇਤ</item>
</plurals>
<plurals name="n_excluded_applications">
<item quantity="one">%d ਅਲਹਿਦਾ ਰੱਖਿਆ</item>
<item quantity="other">%d ਅਲਹਿਦਾ ਰੱਖੇ</item>
</plurals>
<plurals name="n_included_applications">
<item quantity="one">%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>
<plurals name="include_n_applications">
<item quantity="one">%d ਐਪ ਸ਼ਾਮਲ ਕਰੋ</item>
<item quantity="other">%d ਐਪਾਂ ਸ਼ਾਮਲ ਕਰੋ</item>
</plurals>
<plurals name="exclude_n_applications">
<item quantity="one">%d ਐਪ ਅਲਹਿਦਾ ਰੱਖੋ</item>
<item quantity="other">%d ਐਪਾਂ ਅਲਹਿਦਾ ਰੱਖੋ</item>
</plurals>
<plurals name="persistent_keepalive_seconds_unit">
<item quantity="one">ਹਰ ਸਕਿੰਟ</item>
<item quantity="other">ਹਰ %d ਸਕਿੰਟ</item>
</plurals>
<plurals name="persistent_keepalive_seconds_suffix">
<item quantity="one">ਸਕਿੰਟ</item>
<item quantity="other">ਸਕਿੰਟ</item>
</plurals>
<string name="use_all_applications">ਸਾਰੀਆਂ ਐਪਾਂ ਵਰਤੋਂ</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="allowed_ips">ਮਨਜ਼ੂਰ ਕੀਤੇ IP</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">%2$s ਵਿੱਚ %1$s</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_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="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_success">“%s” ਲਈ ਸੰਰਚਨਾ ਕਾਮਯਾਬੀ ਨਾਲ ਸੰਭਾਲੀ ਗਈ ਹੈ</string>
<string name="create_activity_title">ਵਾਇਰਗਾਰਡ ਟਨਲ ਬਣਾਓ</string>
<string name="create_bin_dir_error">ਲੋਕਲ ਬਾਈਨਰੀ ਡਾਇਰੈਕਟਰੀ ਬਣਾਈ ਨਹੀਂ ਜਾ ਸਕਦੀ ਹੈ</string>
<string name="create_downloads_file_error">ਡਾਊਨਲੋਡ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਫ਼ਾਇਲ ਬਣਾਈ ਨਹੀਂ ਜਾ ਸਕਦੀ ਹੈ</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="endpoint">ਐਂਡ-ਪੁਆਇੰਟ</string>
<string name="error_down">ਟਨਲ ਬੰਦ ਕਰਨ ਦੌਰਾਨ ਗ਼ਲਤੀ: %s</string>
<string name="error_fetching_apps">ਐਪ ਸੂਚੀ ਲੈਣ ਦੌਰਾਨ ਗ਼ਲਤੀ: %s</string>
<string name="error_root">ਰੂਟ ਪਹੁੰਚ ਲਵੋ ਅਤੇ ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰੋ</string>
<string name="error_up">ਟਨਲ ਚਾਲੂ ਕਰਨ ਦੌਰਾਨ ਗ਼ਲਤੀ: %s</string>
<string name="exclude_private_ips">ਪ੍ਰਾਈਵੇਟ IP ਅਲਹਿਦਾ ਰੱਖੋ</string>
<string name="generate_new_private_key">ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਕੁੰਜੀ ਬਣਾਓ</string>
<string name="generic_error">ਅਣਪਛਾਤੀ “%s” ਗਲਤੀ</string>
<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="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_explanation_hex">: WireGuard ਹੈਕਸਾ ਕੁੰਜੀਆਂ ਵਿੱਚ 64 ਅੱਖਰ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ (32 ਬਾਈਟ)</string>
<string name="listen_port">ਸੁਣਨ ਵਾਲੀ ਪੋਰਟ</string>
<string name="log_export_error">ਲਾਗ ਐਕਸਪੋਰਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ: %s</string>
<string name="log_export_subject">ਵਾਇਰਗਾਰਡ ਐਂਡਰਾਈਡ ਲਾਗ ਫ਼ਾਇਲ</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="logcat_error">logcat ਚਲਾਉਣ ਲਈ ਅਸਮਰੱਥ: </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_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>
<string name="no_tunnels_error">ਕੋਈ ਟਨਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ</string>
<string name="parse_error_generic">ਸਤਰ</string>
<string name="parse_error_inet_address">IP ਸਿਰਨਾਵਾਂ</string>
<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="peer">ਪੀਅਰ</string>
<string name="permission_description">ਵਾਇਰਗਾਰਡ ਟਨਲਾਂ ਨੂੰ ਕੰਟਰੋਲ ਕਰੋ, ਮਨਮਰਜ਼ੀ ਮੁਤਾਬਕ ਟਨਲਾਂ ਨੂੰ ਸਮਰੱਥ ਤੇ ਅਸਮਰੱਥ ਕਰੋ, ਸੰਭਾਵਿਤ ਇੰਟਰਨੈੱਟ ਟਰੈਫਿਕ ਦੀ ਦਿਸ਼ਾ ਬਦਲੋ</string>
<string name="permission_label">ਵਾਇਰਗਰਾਡ ਟਨਲਾਂ ਕੰਟਰੋਲ ਕਰੋ</string>
<string name="persistent_keepalive">ਸਥਿਰ ਲਗਾਤਾਰ ਜਾਰੀ ਰੱਖੋ</string>
<string name="pre_shared_key">ਪਹਿਲਾਂ-ਸਾਂਝੀ ਕੀਤੀ ਕੁੰਜੀ</string>
<string name="pre_shared_key_enabled">ਸਮਰੱਥ ਹੈ</string>
<string name="private_key">ਪ੍ਰਾਈਵੇਟ ਕੁੰਜੀ</string>
<string name="public_key">ਪਬਲਿਕ ਕੁੰਜੀ</string>
<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="save">ਸੰਭਾਲੋ</string>
<string name="select_all">ਸਾਰੇ ਚੁਣੋ</string>
<string name="settings">ਸੈਟਿੰਗਾਂ</string>
<string name="shell_exit_status_read_error">ਸ਼ੈਲ ਬਾਹਰ ਜਾਣ (exit) ਸਥਿਤੀ ਪੜ੍ਹ ਨਹੀਂ ਸਕਦੀ</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="toggle_all">ਸਭ ਪਲਟੋ</string>
<string name="toggle_error">ਵਾਇਰਗਾਰਡ ਟਨਲ ਬਦਲਣ ਦੌਰਾਨ ਗ਼ਲਤੀ: %s</string>
<string name="tools_installer_already">wg ਅਤੇ wg-quick ਪਹਿਲਾਂ ਹੀ ਇੰਸਟਾਲ ਹਨ</string>
<string name="tools_installer_failure">ਕਮਾਂਡ-ਲਾਈਨ ਟੂਲ ਇੰਸਟਾਲ ਕਰਨ ਲਈ ਅਸਮਰੱਥ (ਰੂਟ ਨਹੀਂ ਹੋ?)</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>
<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>
<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 ਡਿਵਾਈਸ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ</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_error_already_exists">ਟਨਲ “%s” ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ</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_kernel_module">ਕਰਨਲ ਮੋਡੀਊਲ</string>
<string name="unknown_error">ਅਣਪਛਾਤੀ ਗਲਤੀ</string>
<string name="version_summary_checking">%s ਬੈਕਐਂਡ ਵਰਜ਼ਨ ਦੀ ਜਾਂਚ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ</string>
<string name="version_summary_unknown">ਅਣਪਛਾਤਾ %s ਵਰਜਨ</string>
<string name="version_title">Android ਲਈ WireGuard v%s</string>
<string name="vpn_not_authorized_error">VPN ਸੇਵਾ ਨੂੰ ਵਰਤੋਂਕਾਰ ਨੇ ਪਰਮਾਣਿਤ ਨਹੀਂ ਕੀਤਾ</string>
<string name="vpn_start_error">ਐਂਡਰਾਈਡ VPN ਸੇਵਾ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਅਸਮਰੱਥ</string>
<string name="zip_export_error">ਟਨਲਾਂ ਐਕਸਪੋਰਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ: %s</string>
<string name="zip_export_success">“%s” ਉੱਤੇ ਸੰਭਾਲਿਆ ਗਿਆ</string>
<string name="zip_export_summary">ਜ਼ਿਪ ਫਾਈਲ ਨੂੰ ਡਾਊਨਲੋਡ ਫੋਲਡਰ ਵਿੱਚ ਸੰਭਾਲਿਆ ਜਾਵੇਗਾ</string>
<string name="zip_export_title">ਟਨਲ ਨੂੰ ਜ਼ਿੱਪ ਫ਼ਾਇਲ ਵਜੋਂ ਬਰਾਮਦ ਕਰੋ</string>
<string name="biometric_prompt_zip_exporter_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>
+61 -56
View File
@@ -14,7 +14,7 @@
</plurals>
<plurals name="delete_title">
<item quantity="one">%d wybrany tunel</item>
<item quantity="few">%d wybranych tuneli</item>
<item quantity="few">%d wybrane tunele</item>
<item quantity="many">%d wybranych tuneli</item>
<item quantity="other">%d wybranych tuneli</item>
</plurals>
@@ -81,23 +81,22 @@
<item quantity="many">sekund</item>
<item quantity="other">sekundy</item>
</plurals>
<string name="use_all_applications">Używaj wszystkich aplikacji</string>
<string name="add_peer">Dodaj Peer\'a</string>
<string name="use_all_applications">Użyj wszystkich</string>
<string name="add_peer">Dodaj klienta</string>
<string name="addresses">Adresy</string>
<string name="applications">Aplikacje</string>
<string name="allow_remote_control_intents_summary_off">Zewnętrzne aplikacje nie mogą przełączać tuneli (zalecane)</string>
<string name="allow_remote_control_intents_summary_on">Zewnętrzne aplikacje mogą przełączać tunele (zaawansowane)</string>
<string name="allow_remote_control_intents_title">Zezwól na kontrolowanie przez zewnętrzne aplikacje</string>
<string name="allowed_ips">Dozwolone adresy IP</string>
<string name="app_name">WireGuard</string>
<string name="bad_config_context">%1$s dla %2$s</string>
<string name="bad_config_context_top_level">%s</string>
<string name="bad_config_error">%1$s w %2$s</string>
<string name="bad_config_explanation_pka">: Musi być dodatnia i nie większa niż 65535</string>
<string name="bad_config_explanation_pka">: Musi być dodatni i nie większy niż 65535</string>
<string name="bad_config_explanation_positive_number">: Musi być dodatni</string>
<string name="bad_config_explanation_udp_port">: Musi być poprawnym numerem portu UDP</string>
<string name="bad_config_explanation_udp_port">: Musi być prawidłowym numerem portu UDP</string>
<string name="bad_config_reason_invalid_key">Nieprawidłowy klucz</string>
<string name="bad_config_reason_invalid_number">Numer jest nieprawidłowy</string>
<string name="bad_config_reason_invalid_number">Nieprawidłowa liczba</string>
<string name="bad_config_reason_invalid_value">Nieprawidłowa wartość</string>
<string name="bad_config_reason_missing_attribute">Brakujący atrybut</string>
<string name="bad_config_reason_missing_section">Brakująca sekcja</string>
@@ -105,88 +104,95 @@
<string name="bad_config_reason_unknown_attribute">Nieznany atrybut</string>
<string name="bad_config_reason_unknown_section">Nieznana sekcja</string>
<string name="bad_config_reason_value_out_of_range">Wartość poza zakresem</string>
<string name="bad_extension_error">Plik musi być .conf lub .zip</string>
<string name="bad_extension_error">Plik musi posiadać rozszerzenie CONF lub ZIP</string>
<string name="cancel">Anuluj</string>
<string name="config_delete_error">Nie można usunąć pliku konfiguracyjnego %s</string>
<string name="config_exists_error">Konfiguracja dla \"%s\" już istnieje</string>
<string name="config_file_exists_error">Plik konfiguracyjny \"%s\" już istnieje</string>
<string name="config_not_found_error">Plik konfiguracyjny \"%s\" nie został znaleziony</string>
<string name="config_rename_error">Nie można zmienić nazwy pliku konfiguracyjnego \"%s\"</string>
<string name="config_save_error">Nie można zapisać konfiguracji dla \"%1$s\": %2$s</string>
<string name="config_save_success">Pomyślnie zapisano konfigurację dla \"%s\"</string>
<string name="config_delete_error">Nie można usunąć pliku konfiguracyjnego „%s”</string>
<string name="config_exists_error">Konfiguracja dla „%s” już istnieje</string>
<string name="config_file_exists_error">Plik konfiguracyjny „%s” już istnieje</string>
<string name="config_not_found_error">Nie znaleziono pliku konfiguracyjnego „%s”</string>
<string name="config_rename_error">Nie można zmienić nazwy pliku konfiguracyjnego „%s”</string>
<string name="config_save_error">Nie można zapisać konfiguracji dla „%1$s”: %2$s</string>
<string name="config_save_success">Pomyślnie zapisano konfigurację dla „%s”</string>
<string name="create_activity_title">Utwórz tunel WireGuard</string>
<string name="create_bin_dir_error">Nie można stworzyć tymczasowego folderu lokalnego</string>
<string name="create_bin_dir_error">Nie można utworzyć lokalnego folderu dla plików wykonywalnych</string>
<string name="create_downloads_file_error">Nie można utworzyć pliku w folderze pobierania</string>
<string name="create_empty">Utwórz od podstaw</string>
<string name="create_empty">Utwórz ręcznie</string>
<string name="create_from_file">Utwórz z pliku lub archiwum</string>
<string name="create_from_qr_code">Zeskanuj kod QR</string>
<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="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="create_temp_dir_error">Nie można utworzyć 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żywany jest jasny motyw</string>
<string name="dark_theme_summary_on">Obecnie używany jest ciemny motyw</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>
<string name="error_down">Błąd podczas zamykania tunelu: %s</string>
<string name="error_fetching_apps">Błąd podczas pobierania listy aplikacji: %s</string>
<string name="error_root">Proszę uzyskać dostęp do root\'a i spróbować ponownie</string>
<string name="error_up">Błąd podczas włączania tunelu: %s</string>
<string name="error_root">Proszę uzyskać dostęp do root-a i spróbować ponownie</string>
<string name="error_up">Błąd podczas otwierania tunelu: %s</string>
<string name="exclude_private_ips">Wyklucz prywatne adresy IP</string>
<string name="generate_new_private_key">Wygeneruj nowy klucz prywatny</string>
<string name="generic_error">Nieznany błąd \"%s\"</string>
<string name="hint_automatic">(automatycznie)</string>
<string name="hint_generated">(wygenerowane)</string>
<string name="generic_error">Nieznany błąd „%s”</string>
<string name="hint_automatic">(auto.)</string>
<string name="hint_generated">(wygenerowany)</string>
<string name="hint_optional">(opcjonalnie)</string>
<string name="hint_optional_discouraged">(opcjonalnie, niezalecane)</string>
<string name="hint_random">(losowy)</string>
<string name="illegal_filename_error">Niedozwolona nazwa pliku \"%s\"</string>
<string name="illegal_filename_error">Niedozwolona nazwa pliku „%s”</string>
<string name="import_error">Nie można zaimportować tunelu: %s</string>
<string name="import_from_qr_code">Importuj tunel za pomocą kodu QR</string>
<string name="import_success">Zaimportowano \"%s\"</string>
<string name="import_success">Zaimportowano „%s”</string>
<string name="interface_title">Interfejs</string>
<string name="key_contents_error">Niepoprawne znaki w kluczu</string>
<string name="key_length_error">Niewłaściwa długość klucza</string>
<string name="key_length_explanation_base64">: klucze base64 WireGuard\'a muszą mieć długość 44 znaków (32 bajty)</string>
<string name="key_length_explanation_binary">: klucze WireGuard\'a muszą wynosić 32 bajty</string>
<string name="key_length_explanation_hex">: klucze hex WireGuard\'a muszą mieć długość 64 znaków (32 bajty)</string>
<string name="key_contents_error">Nieprawidłowe znaki w kluczu</string>
<string name="key_length_error">Nieprawidłowa długość klucza</string>
<string name="key_length_explanation_base64">: Klucze Base64 WireGuard-a muszą mieć długość 44 znaków (32 bajty)</string>
<string name="key_length_explanation_binary">: Klucze WireGuard-a muszą mieć wielkość 32 bajtów</string>
<string name="key_length_explanation_hex">: Klucze Hex WireGuard-a muszą mieć długość 64 znaków (32 bajty)</string>
<string name="listen_port">Port nasłuchu</string>
<string name="log_export_error">Nie można wyeksportować logu: %s</string>
<string name="log_export_subject">Plik logu programu WireGuard dla systemu Android</string>
<string name="log_export_success">Zapisano w \"%s\"</string>
<string name="log_export_success">Zapisano w „%s”</string>
<string name="log_export_title">Wyeksportuj plik logu</string>
<string name="log_saver_activity_label">Zapisz log</string>
<string name="log_viewer_pref_summary">Logi mogą pomóc w debugowaniu</string>
<string name="log_viewer_pref_title">Wyświetl log aplikacji</string>
<string name="log_viewer_title">Log</string>
<string name="logcat_error">Nie można uruchomić logcat: </string>
<string name="logcat_error">Nie można uruchomić narzędzia logcat: </string>
<string name="module_disabler_disabled_summary">Eksperymentalny moduł jądra może poprawić wydajność</string>
<string name="module_disabler_disabled_title">Włącz moduł jądra</string>
<string name="module_disabler_enabled_summary">Wolniejsza implementacja w przestrzeni użytkownika może poprawić stabilność</string>
<string name="module_disabler_enabled_title">Wyłącz moduł jądra</string>
<string name="module_installer_error">Coś poszło nie tak. Proszę spróbować ponownie</string>
<string name="module_installer_initial">Eksperymentalny moduł jądra może poprawić wydajność</string>
<string name="module_installer_not_found">Brak dostępnych modułów dla twojego urządzenia</string>
<string name="module_installer_not_found">Brak dostępnych modułów dla tego urządzenia</string>
<string name="module_installer_title">Pobierz i zainstaluj moduł jądra</string>
<string name="module_installer_working">Pobieranie i instalowanie…</string>
<string name="module_version_error">Nie można określić wersji modułu jądra</string>
<string name="mtu">MTU</string>
<string name="multiple_tunnels_summary_off">Włączenie jednego tunelu spowoduje wyłączenie innych</string>
<string name="multiple_tunnels_summary_on">Wiele tuneli może być włączonych jednocześnie</string>
<string name="multiple_tunnels_title">Zezwalaj na wiele tuneli równoległych</string>
<string name="multiple_tunnels_title">Zezwól na wiele równoległych tuneli</string>
<string name="name">Nazwa</string>
<string name="no_config_error">Próba przywołania tunelu bez konfiguracji</string>
<string name="no_config_error">Próba otwarcia tunelu bez konfiguracji</string>
<string name="no_configs_error">Nie odnaleziono żadnych konfiguracji</string>
<string name="no_tunnels_error">Brak tuneli</string>
<string name="parse_error_generic">ciągu</string>
<string name="parse_error_generic">ciąg</string>
<string name="parse_error_inet_address">Adresy IP</string>
<string name="parse_error_inet_endpoint">punkt końcowy</string>
<string name="parse_error_inet_network">Sieć IP</string>
<string name="parse_error_integer">numer</string>
<string name="parse_error_integer">liczba</string>
<string name="parse_error_reason">Nie można przetworzyć %1$s „%2$s”</string>
<string name="peer">Peer</string>
<string name="peer">Klient</string>
<string name="permission_description">kontrolowanie tuneli WireGuard, włączanie i wyłączanie tuneli, potencjalnie błędne kierowanie ruchem internetowym</string>
<string name="permission_label">sterowanie tunelami WireGuard</string>
<string name="persistent_keepalive">Utrzymanie połączenia</string>
@@ -195,9 +201,9 @@
<string name="private_key">Klucz prywatny</string>
<string name="public_key">Klucz publiczny</string>
<string name="qr_code_hint">Wskazówka: wygeneruj za pomocą `qrencode -t ansiutf8 &lt; tunnel.conf`.</string>
<string name="restore_on_boot_summary_off">Włączone tunele nie zostaną przywrócone przy uruchomieniu</string>
<string name="restore_on_boot_summary_on">Włączone tunele zostaną przywrócone przy uruchomieniu</string>
<string name="restore_on_boot_title">Przywróć przy uruchomieniu</string>
<string name="restore_on_boot_summary_off">Włączone tunele nie zostaną przywrócone podczas uruchamiania</string>
<string name="restore_on_boot_summary_on">Włączone tunele zostaną przywrócone podczas uruchamiania</string>
<string name="restore_on_boot_title">Przywróć podczas uruchamiania</string>
<string name="save">Zapisz</string>
<string name="select_all">Wybierz wszystko</string>
<string name="settings">Ustawienia</string>
@@ -207,13 +213,13 @@
<string name="success_application_will_restart">Ukończono pomyślnie. Aplikacja zostanie uruchomiona ponownie…</string>
<string name="toggle_all">Przełącz wszystkie</string>
<string name="toggle_error">Błąd podczas przełączania tunelu WireGuard: %s</string>
<string name="tools_installer_already">wg i wg-quick są już zainstalowane</string>
<string name="tools_installer_failure">Nie można zainstalować narzędzi wiersza poleceń (brak root\'a?)</string>
<string name="tools_installer_already">Narzędzia wg i wg-quick są już zainstalowane</string>
<string name="tools_installer_failure">Nie można zainstalować narzędzi wiersza poleceń (brak root-a?)</string>
<string name="tools_installer_initial">Zainstaluj opcjonalne narzędzia do tworzenia skryptów</string>
<string name="tools_installer_initial_magisk">Zainstaluj opcjonalne narzędzia do tworzenia skryptów jako moduł Magisk</string>
<string name="tools_installer_initial_system">Zainstaluj opcjonalne narzędzia do tworzenia skryptów w partycji systemowej</string>
<string name="tools_installer_success_magisk">wg i wg-quick zostały zainstalowane jako moduł Magisk (wymagane ponowne uruchomienie)</string>
<string name="tools_installer_success_system">wg i wg-quick zostały zainstalowane w partycji systemowej</string>
<string name="tools_installer_initial_system">Zainstaluj opcjonalne narzędzia do tworzenia skryptów na partycji systemowej</string>
<string name="tools_installer_success_magisk">Narzędzia wg i wg-quick zostały zainstalowane jako moduł Magisk (wymagane ponowne uruchomienie)</string>
<string name="tools_installer_success_system">Narzędzia wg i wg-quick zostały zainstalowane na partycji systemowej</string>
<string name="tools_installer_title">Zainstaluj narzędzia wiersza poleceń</string>
<string name="tools_installer_working">Instalowanie wg i wg-quick</string>
<string name="tools_unavailable_error">Wymagane narzędzia są niedostępne</string>
@@ -224,28 +230,27 @@
<string name="transfer_mibibytes">%.2f MiB</string>
<string name="transfer_rx_tx">odebrano: %1$s, wysłano: %2$s</string>
<string name="transfer_tibibytes">%.2f TiB</string>
<string name="tun_create_error">Nie można utworzyć urządzenia tun</string>
<string name="tun_create_error">Nie można utworzyć urządzenia TUN</string>
<string name="tunnel_config_error">Nie można skonfigurować tunelu (wg-quick zwróciło %d)</string>
<string name="tunnel_create_error">Nie można utworzyć tunelu: %s</string>
<string name="tunnel_create_success">Pomyślnie utworzono tunel \"%s\"</string>
<string name="tunnel_create_success">Pomyślnie utworzono tunel „%s”</string>
<string name="tunnel_error_already_exists">Tunel \"%s\" już istnieje</string>
<string name="tunnel_error_invalid_name">Nieprawidłowa nazwa</string>
<string name="tunnel_list_placeholder">Dodaj tunel za pomocą niebieskiego przycisku</string>
<string name="tunnel_name">Nazwa tunelu</string>
<string name="tunnel_on_error">Nie można włączyć tunelu (wgTurnOn zwróciło %d)</string>
<string name="tunnel_rename_error">Nie można zmienić nazwy tunelu: %s</string>
<string name="tunnel_rename_success">Pomyślnie zmieniono nazwę tunelu na \"%s\"</string>
<string name="tunnel_rename_success">Pomyślnie zmieniono nazwę tunelu na „%s”</string>
<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_checking">Sprawdzanie wersji %s implementacji</string>
<string name="version_summary_unknown">Nieznana %s wersja</string>
<string name="version_summary_checking">Sprawdzanie wersji implementacji: %s</string>
<string name="version_summary_unknown">Nieznana wersja %s</string>
<string name="version_title">WireGuard dla systemu Android v%s</string>
<string name="vpn_not_authorized_error">Usługa VPN nie została autoryzowana przez użytkownika</string>
<string name="vpn_start_error">Nie można uruchomić usługi VPN systemu Android</string>
<string name="zip_export_error">Nie można wyeksportować tuneli: %s</string>
<string name="zip_export_success">Zapisano w \"%s\"</string>
<string name="zip_export_success">Zapisano w „%s”</string>
<string name="zip_export_summary">Plik ZIP zostanie zapisany w folderze pobierania</string>
<string name="zip_export_title">Wyeksportuj tunele do pliku ZIP</string>
<string name="biometric_prompt_zip_exporter_title">Uwierzytelnij, aby wyeksportować tunele</string>
+234
View File
@@ -0,0 +1,234 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="delete_error">
<item quantity="one">Não foi possível apagar %d túnel: %s</item>
<item quantity="other">Não foi possível apagar %d túneis: %s</item>
</plurals>
<plurals name="delete_success">
<item quantity="one">%d túnel apagado com sucesso</item>
<item quantity="other">%d túneis apagados com sucesso</item>
</plurals>
<plurals name="delete_title">
<item quantity="one">%d túnel selecionado</item>
<item quantity="other">%d túneis selecionados</item>
</plurals>
<plurals name="import_partial_success">
<item quantity="one">Importado %1$d de %2$d túneis</item>
<item quantity="other">Importados %1$d de %2$d túneis</item>
</plurals>
<plurals name="import_total_success">
<item quantity="one">%d túnel importado</item>
<item quantity="other">%d túneis importados</item>
</plurals>
<plurals name="set_excluded_applications">
<item quantity="one">%d Aplicação Excluída</item>
<item quantity="other">%d Aplicações Excluídas</item>
</plurals>
<plurals name="set_included_applications">
<item quantity="one">%d Aplicação Incluída</item>
<item quantity="other">%d Aplicações incluídas</item>
</plurals>
<plurals name="n_excluded_applications">
<item quantity="one">%d Excluída</item>
<item quantity="other">%d Excluídas</item>
</plurals>
<plurals name="n_included_applications">
<item quantity="one">%d Incluída</item>
<item quantity="other">%d Incluídas</item>
</plurals>
<string name="all_applications">Todas as Aplicações</string>
<string name="exclude_from_tunnel">Excluir</string>
<string name="include_in_tunnel">Apenas aplicações incluídas</string>
<plurals name="include_n_applications">
<item quantity="one">Incluir %d Aplicação</item>
<item quantity="other">Incluir %d Aplicações</item>
</plurals>
<plurals name="exclude_n_applications">
<item quantity="one">Excluir %d Aplicação</item>
<item quantity="other">Exluir %d Aplicações</item>
</plurals>
<plurals name="persistent_keepalive_seconds_unit">
<item quantity="one">a cada %d segundo</item>
<item quantity="other">a cada %d segundos</item>
</plurals>
<plurals name="persistent_keepalive_seconds_suffix">
<item quantity="one">segundo</item>
<item quantity="other">segundos</item>
</plurals>
<string name="use_all_applications">Usar todas as aplicações</string>
<string name="add_peer">Adicionar nó</string>
<string name="addresses">Endereços</string>
<string name="applications">Aplicações</string>
<string name="allow_remote_control_intents_summary_off">Aplicações externas não podem controlar túneis (recomendado)</string>
<string name="allow_remote_control_intents_summary_on">Aplicações externas podem controlar túneis (avançado)</string>
<string name="allow_remote_control_intents_title">Permitir controlo remoto por outras aplicações</string>
<string name="allowed_ips">IPs permitidos</string>
<string name="bad_config_context">%2$s de %1$s</string>
<string name="bad_config_context_top_level">%s</string>
<string name="bad_config_error">%1$s em %2$s</string>
<string name="bad_config_explanation_pka">: Tem que ser positivo e não mais do que 65535</string>
<string name="bad_config_explanation_positive_number">: tem que ser positivo</string>
<string name="bad_config_explanation_udp_port">: Tem que ser um número de porta UDP válido</string>
<string name="bad_config_reason_invalid_key">Chave inválida</string>
<string name="bad_config_reason_invalid_number">Número inválido</string>
<string name="bad_config_reason_invalid_value">Valor inválido</string>
<string name="bad_config_reason_missing_attribute">Atributo em falta</string>
<string name="bad_config_reason_missing_section">Secção em falta</string>
<string name="bad_config_reason_syntax_error">Erro de sintaxe</string>
<string name="bad_config_reason_unknown_attribute">Atributo desconhecido</string>
<string name="bad_config_reason_unknown_section">Secção desconhecida</string>
<string name="bad_config_reason_value_out_of_range">Valor fora do intervalo</string>
<string name="bad_extension_error">O ficheiro tem que ser do tipo .conf ou .zip</string>
<string name="cancel">Cancelar</string>
<string name="config_delete_error">Não é possível apagar arquivo de configuração %s</string>
<string name="config_exists_error">A configuração para \"%s\" já existe</string>
<string name="config_file_exists_error">O ficheiro de configuração \"%s\" já existe</string>
<string name="config_not_found_error">O ficheiro de configuração \"%s\" não foi encontrado</string>
<string name="config_rename_error">Não foi possível renomear o ficheiro de configuração “%s\"</string>
<string name="config_save_error">Não foi possível guardar a configuração para “%1$s”: %2$s</string>
<string name="config_save_success">A configuração para \"%s\" foi guardada com sucesso</string>
<string name="create_activity_title">Criar túnel WireGuard</string>
<string name="create_bin_dir_error">Não foi possível criar diretoria de binários local</string>
<string name="create_downloads_file_error">Não foi possível criar diretoria de downloads local</string>
<string name="create_empty">Criar do zero</string>
<string name="create_from_file">Importar de ficheiro ou arquivo</string>
<string name="create_from_qr_code">Digitalizar a partir de código QR</string>
<string name="create_output_dir_error">Não foi possível criar diretoria de saída</string>
<string name="create_temp_dir_error">Não foi possível criar diretoria local temporária</string>
<string name="create_tunnel">Criar túnel</string>
<string name="copied_to_clipboard">%s copiado para a área de transferências</string>
<string name="dark_theme_summary_off">Atualmente a usar tema claro (dia)</string>
<string name="dark_theme_summary_on">Atualmente a usar tema escuro (noite)</string>
<string name="dark_theme_title">Usar tema escuro</string>
<string name="delete">Eliminar</string>
<string name="tv_delete">Selecione o túnel para apagar</string>
<string name="tv_select_a_storage_drive">Selecione uma unidade de armazenamento</string>
<string name="tv_no_file_picker">Por favor, instale um utilitário de gestão de ficheiros para procurar arquivos</string>
<string name="tv_add_tunnel_get_started">Adicionar um túnel para começar</string>
<string name="disable_config_export_title">Desativar exportação de configuração</string>
<string name="disable_config_export_description">Desativar a exportação de configuração torna as chaves privadas menos acessíveis</string>
<string name="dns_servers">Servidores de DNS</string>
<string name="edit">Editar</string>
<string name="endpoint">Endpoint</string>
<string name="error_down">Erro ao fechar túnel: %s</string>
<string name="error_fetching_apps">Erro ao obter lista de aplicações: %s</string>
<string name="error_root">Por favor, obtenha acesso root e tente novamente</string>
<string name="error_up">Erro ao abrir túnel: %s</string>
<string name="exclude_private_ips">Excluir IPs privados</string>
<string name="generate_new_private_key">Gerar nova chave privada</string>
<string name="generic_error">Erro desconhecido “%s”</string>
<string name="hint_automatic">(automático)</string>
<string name="hint_generated">(gerado)</string>
<string name="hint_optional">(opcional)</string>
<string name="hint_optional_discouraged">(opcional, não recomendado)</string>
<string name="hint_random">(aleatório)</string>
<string name="illegal_filename_error">Nome de arquivo inválido “%s”</string>
<string name="import_error">Não foi possível importar túnel: %s</string>
<string name="import_from_qr_code">Importar Túnel a partir de Código QR</string>
<string name="import_success">“%s” Importado</string>
<string name="interface_title">Interface</string>
<string name="key_contents_error">Caracteres inválidos na chave</string>
<string name="key_length_error">Tamanho de chave incorreto</string>
<string name="key_length_explanation_base64">: Chaves base64 do WireGuard têm que ter 44 caracteres (32 bytes)</string>
<string name="key_length_explanation_binary">: Chaves de WireGuard têm que ter 32 bytes</string>
<string name="key_length_explanation_hex">: Chaves hexadecimais do WireGuard têm que ter 64 caracteres (32 bytes)</string>
<string name="listen_port">Porta de escuta</string>
<string name="log_export_error">Não foi possível exportar o log: %s</string>
<string name="log_export_subject">Arquivo de log do WireGuard Android</string>
<string name="log_export_success">Guardado em “%s”</string>
<string name="log_export_title">Exportar ficheiro de log</string>
<string name="log_saver_activity_label">Guardar log</string>
<string name="log_viewer_pref_summary">Logs podem ajudar na depuração</string>
<string name="log_viewer_pref_title">Ver log da aplicação</string>
<string name="log_viewer_title">Log</string>
<string name="logcat_error">Não foi possível executar o logcat: </string>
<string name="module_disabler_disabled_summary">O módulo experimental de kernel pode melhorar o desempenho</string>
<string name="module_disabler_disabled_title">Habilitar módulo backend do kernel</string>
<string name="module_disabler_enabled_summary">O backend do userspace mais lento pode aumentar a estabilidade</string>
<string name="module_disabler_enabled_title">Desabilitar módulo backend do kernel</string>
<string name="module_installer_error">Ocorreu um erro. Por favor, tente novamente</string>
<string name="module_installer_initial">O módulo experimental do kernel pode melhorar o desempenho</string>
<string name="module_installer_not_found">Não há módulos disponíveis para o seu dispositivo</string>
<string name="module_installer_title">Transferir e instalar módulo de kernel</string>
<string name="module_installer_working">A transferir e instalar…</string>
<string name="module_version_error">Não foi possível determinar a versão do módulo de kernel</string>
<string name="mtu">MTU</string>
<string name="multiple_tunnels_summary_off">Ativar um túnel irá desativar todos os outros</string>
<string name="multiple_tunnels_summary_on">Vários túneis podem ser ativados simultaneamente</string>
<string name="multiple_tunnels_title">Permitir vários túneis em simultâneo</string>
<string name="name">Nome</string>
<string name="no_config_error">A tentar abrir um túnel sem configuração</string>
<string name="no_configs_error">Nenhuma configuração encontrada</string>
<string name="no_tunnels_error">Não existem túneis</string>
<string name="parse_error_generic">texto</string>
<string name="parse_error_inet_address">Endereço IP</string>
<string name="parse_error_inet_endpoint">endpoint</string>
<string name="parse_error_inet_network">Rede de IP</string>
<string name="parse_error_integer">número</string>
<string name="parse_error_reason">Não foi possível analisar %1$s “%2$s”</string>
<string name="peer">Nó</string>
<string name="permission_description">controlar túneis WireGuard, ativando e desativando túneis a vontade, potencialmente desviando o tráfego na Internet</string>
<string name="permission_label">controlar túneis WireGuard</string>
<string name="persistent_keepalive">Keepalive persistente</string>
<string name="pre_shared_key">Chave pré-partilhada</string>
<string name="pre_shared_key_enabled">ativo</string>
<string name="private_key">Chave privada</string>
<string name="public_key">Chave Pública</string>
<string name="qr_code_hint">Dica: gerar com `qrencode -t ansiutf8 &lt; tunnel.conf`.</string>
<string name="restore_on_boot_summary_off">Não abrirá túneis ativos durante o arranque</string>
<string name="restore_on_boot_summary_on">Abrirá túneis ativos durante o arranque</string>
<string name="restore_on_boot_title">Restaurar no arranque</string>
<string name="save">Guardar</string>
<string name="select_all">Selecionar tudo</string>
<string name="settings">Definições</string>
<string name="shell_exit_status_read_error">A shell não pôde ler o estado de saída</string>
<string name="shell_marker_count_error">A shell esperava 4 marcadores, recebeu %d</string>
<string name="shell_start_error">A shell falhou ao iniciar: %d</string>
<string name="success_application_will_restart">Sucesso. A aplicação irá reiniciar…</string>
<string name="toggle_all">Ativar/Desativar todos</string>
<string name="toggle_error">Erro ao alterar o túnel WireGuard: %s</string>
<string name="tools_installer_already">wg e wg-quick já estão instalados</string>
<string name="tools_installer_failure">Não foi possível instalar as ferramentas de linha de comando (sem root?)</string>
<string name="tools_installer_initial">Instalar ferramentas opcionais para scripting</string>
<string name="tools_installer_initial_magisk">Instalar ferramentas opcionais para scripting como módulo Magisk</string>
<string name="tools_installer_initial_system">Instalar ferramentas opcionais para scripting na partição de sistema</string>
<string name="tools_installer_success_magisk">wg e wg-quick instalados como módulo Magisk (requer reinicialização)</string>
<string name="tools_installer_success_system">wg e wg-quick instalados na partição do sistema</string>
<string name="tools_installer_title">Instalar ferramentas de linha de comando</string>
<string name="tools_installer_working">A instalar wg e wg-quick</string>
<string name="tools_unavailable_error">Ferramentas necessárias não disponíveis</string>
<string name="transfer">Transferência</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">Não foi possível criar dispositivo tun</string>
<string name="tunnel_config_error">Não foi possível configurar o túnel (wg-quick retornou %d)</string>
<string name="tunnel_create_error">Não foi possível criar o túnel: %s</string>
<string name="tunnel_create_success">Túnel criado com sucesso “%s”</string>
<string name="tunnel_error_already_exists">O túnel “%s” já existe</string>
<string name="tunnel_error_invalid_name">Nome inválido</string>
<string name="tunnel_list_placeholder">Adicionar um túnel com o botão azul</string>
<string name="tunnel_name">Nome do túnel</string>
<string name="tunnel_on_error">Não foi possível ligar o túnel (wgTurnOn retornou %d)</string>
<string name="tunnel_rename_error">Não foi possível renomear o túnel: %s</string>
<string name="tunnel_rename_success">Túnel renomeado com sucesso para “%s”</string>
<string name="type_name_go_userspace">Go userspace</string>
<string name="type_name_kernel_module">Módulo de kernel</string>
<string name="unknown_error">Erro desconhecido</string>
<string name="version_summary_checking">A verificar versão de backend %s</string>
<string name="version_summary_unknown">Versão %s desconhecida</string>
<string name="version_title">WireGuard para Android v%s</string>
<string name="vpn_not_authorized_error">Serviço VPN não foi autorizado pelo utilizador</string>
<string name="vpn_start_error">Não foi possível iniciar o serviço de VPN do Android</string>
<string name="zip_export_error">Não foi possível exportar túneis: %s</string>
<string name="zip_export_success">Guardado em “%s”</string>
<string name="zip_export_summary">O arquivo Zip será guardado na pasta de downloads</string>
<string name="zip_export_title">Exportar túneis para arquivo zip</string>
<string name="biometric_prompt_zip_exporter_title">Autenticar para exportar túneis</string>
<string name="biometric_prompt_private_key_title">Autenticar para ver a chave privada</string>
<string name="biometric_auth_error">Falha de autenticação</string>
<string name="biometric_auth_error_reason">Falha de autenticação: %s</string>
</resources>
+7 -2
View File
@@ -76,7 +76,6 @@
<string name="allow_remote_control_intents_summary_on">Aplicațiile externe pot comuta tunelurile (avansat)</string>
<string name="allow_remote_control_intents_title">Permite aplicații de control la distanță</string>
<string name="allowed_ips">IP-uri permise</string>
<string name="app_name">WireGuard</string>
<string name="bad_config_context">%2$s pentru %1$s</string>
<string name="bad_config_context_top_level">%s</string>
<string name="bad_config_error">%1$s în %2$s</string>
@@ -110,10 +109,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 +231,6 @@
<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_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>
+74 -69
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,71 @@
<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 +146,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 +191,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 +203,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 +225,36 @@
<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">Пользовательское пространство Go</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_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>
+141
View File
@@ -0,0 +1,141 @@
<?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="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>
+5 -2
View File
@@ -89,7 +89,6 @@
<string name="allow_remote_control_intents_summary_on">Zunanje aplikacije lahko preklapljajo tunele (napredno)</string>
<string name="allow_remote_control_intents_title">Dovoljeno upravljanje preko zunanjih aplikacij</string>
<string name="allowed_ips">Dovoljeni naslovi IP</string>
<string name="app_name">WireGuard</string>
<string name="bad_config_context">%1$s-ov %2$s</string>
<string name="bad_config_context_top_level">%s</string>
<string name="bad_config_error">%1$s v %2$s</string>
@@ -127,6 +126,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 +242,6 @@
<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_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>
+161
View File
@@ -0,0 +1,161 @@
<?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="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>
+223 -13
View File
@@ -1,24 +1,234 @@
<?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="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_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>
+11 -6
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">
@@ -50,7 +50,6 @@
<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">在 %2$s发生了%1$s的问题</string>
@@ -84,10 +83,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 +137,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 +171,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 +182,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 +205,6 @@
<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_checking">正在检查 %s backend 版本</string>
<string name="version_summary_unknown">未知的 %s 版本</string>
<string name="version_title">WireGuard for Android v%s</string>
+51
View File
@@ -9,14 +9,45 @@
<plurals name="delete_title">
<item quantity="other">選擇了 %d 個通道</item>
</plurals>
<plurals name="import_partial_success">
<item quantity="other">已匯入 %1$d 個隧道(共 %2$d 個)</item>
</plurals>
<plurals name="import_total_success">
<item quantity="other">匯入了 %d 個通道</item>
</plurals>
<plurals name="set_excluded_applications">
<item quantity="other">排除了 %d 個應用程式</item>
</plurals>
<plurals name="set_included_applications">
<item quantity="other">套用到 %d 個應用程式</item>
</plurals>
<plurals name="n_excluded_applications">
<item quantity="other">已排除 %d</item>
</plurals>
<plurals name="n_included_applications">
<item quantity="other">已套用 %d</item>
</plurals>
<string name="all_applications">套用到所有應用程式</string>
<string name="exclude_from_tunnel">排除</string>
<string name="include_in_tunnel">只套用到</string>
<plurals name="include_n_applications">
<item quantity="other">套用到 %d 個應用程式</item>
</plurals>
<plurals name="exclude_n_applications">
<item quantity="other">排除了 %d 個應用程式</item>
</plurals>
<plurals name="persistent_keepalive_seconds_unit">
<item quantity="other">每隔 %d 秒</item>
</plurals>
<plurals name="persistent_keepalive_seconds_suffix">
<item quantity="other">秒</item>
</plurals>
<string name="use_all_applications">套用到所有應用程式</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="allowed_ips">允許的 IPs</string>
<string name="bad_config_context">錯誤設定: %1$s 的 %2$s</string>
@@ -52,10 +83,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>
@@ -64,22 +102,35 @@
<string name="error_root">請取得 root 存取權再試一次</string>
<string name="error_up">起用通道錯誤: %s</string>
<string name="exclude_private_ips">排除私有 IPs</string>
<string name="generate_new_private_key">產生新的私鑰</string>
<string name="generic_error">不明的「%s」錯誤</string>
<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="import_from_qr_code">從 QR Code 匯入通道</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_explanation_hex">: WireGuard 的16進位密鑰必須是 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_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="logcat_error">無法執行 logcat: </string>
<string name="module_disabler_disabled_summary">使用還在實驗階段的 kernel module 以便改善效能</string>
<string name="module_disabler_disabled_title">啟用 kernel module</string>
<string name="save">儲存</string>
<string name="select_all">全選</string>
<string name="toggle_all">切換全部</string>
+4 -2
View File
@@ -63,7 +63,7 @@
<string name="allow_remote_control_intents_summary_on">External apps may toggle tunnels (advanced)</string>
<string name="allow_remote_control_intents_title">Allow remote control apps</string>
<string name="allowed_ips">Allowed IPs</string>
<string name="app_name">WireGuard</string>
<string name="app_name" translatable="false">WireGuard</string>
<string name="bad_config_context">%1$s\'s %2$s</string>
<string name="bad_config_context_top_level">%s</string>
<string name="bad_config_error">%1$s in %2$s</string>
@@ -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>
@@ -213,12 +214,13 @@
<string name="tunnel_list_placeholder">Add a tunnel using the blue button</string>
<string name="tunnel_name">Tunnel Name</string>
<string name="tunnel_on_error">Unable to turn tunnel on (wgTurnOn returned %d)</string>
<string name="tunnel_dns_failure">Unable to resolve DNS hostname: “%s”</string>
<string name="tunnel_rename_error">Unable to rename tunnel: %s</string>
<string name="tunnel_rename_success">Successfully renamed tunnel to “%s”</string>
<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 = 484
wireguardVersionName = '1.0.20201216'
wireguardVersionCode = 489
wireguardVersionName = '1.0.20210924'
}
}