Compare commits

..

54 Commits

Author SHA1 Message Date
Zane Schepke 16d0642a51 chore: release 4.2.1 2025-12-19 11:35:43 -05:00
Zane Schepke eac674c996 fix: auto-tunnel screen not loading without wifi
Fixes auto tunnel screen failing to load if you haven't connected to wifi once.

Fixes import via url.

Closes #1108
Closes #1105
2025-12-19 11:30:39 -05:00
Zane Schepke 394188b55f chore: release 4.2.0 2025-12-19 01:10:11 -05:00
Weblate (bot) d61a4213cf Translations update from Hosted Weblate (#1030)
Co-authored-by: Fill read-only add-on <noreply-addon-fill@weblate.org>
Co-authored-by: solokot <solokot@gmail.com>
Co-authored-by: Matthaiks <kitynska@gmail.com>
Co-authored-by: Qotsa1984 <carlominzi@inwind.it>
Co-authored-by: jaime-grj <weblate.4ljj9@aleeas.com>
Co-authored-by: catelixor <catelixor+weblate@proton.me>
Co-authored-by: Priit Jõerüüt <jrthwlate@users.noreply.hosted.weblate.org>
Co-authored-by: Prefill add-on <noreply-addon-prefill@weblate.org>
Co-authored-by: Kachelkaiser <kachelkaiser@htpst.de>
Co-authored-by: Henrik Sozzi <henrik_sozzi@hotmail.com>
Co-authored-by: EESF-2 <eesf-2@users.noreply.hosted.weblate.org>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: Aleksandre Ghvineria <Ghvinerias@gmail.com>
Co-authored-by: lateweb <weblate@techkoala.net>
Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Alvar Kusma <kaabuta@gmail.com>
Co-authored-by: Denny Schwender <denny.schwender@gmail.com>
Co-authored-by: Salizan <sohrab.sy1@gmail.com>
Co-authored-by: Jacob <jacob.venborg@gmail.com>
Co-authored-by: CyanWolf <hydemr@pm.me>
2025-12-18 22:05:31 -05:00
Zane Schepke 90a693abb4 feat: copy split config from existing 2025-12-18 16:28:44 -05:00
Patryk 05b950fbb3 fix: add check if kernel supports WG (#993) 2025-12-18 10:25:31 -05:00
Zane Schepke 5310cf17e6 chore: bump deps 2025-12-17 23:19:55 -05:00
dependabot[bot] 3ffc8c5e39 chore(deps): bump actions/upload-artifact from 5 to 6 (#1096)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-16 22:50:36 -05:00
dependabot[bot] e538ec80d0 chore(deps): bump actions/download-artifact from 6 to 7 (#1097)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-16 22:50:12 -05:00
Zane Schepke 6b24cca551 feat: improve amnezia label names
closes #1089
2025-12-15 12:36:50 -05:00
Zane Schepke f0c885708b fix: amnezia 2.0 header ranges 2025-12-14 22:30:54 -05:00
Zane Schepke c028b9b5b6 fix: logger start and clear 2025-12-09 10:45:34 -05:00
Zane Schepke de8b39d848 fix: amnezia 2.0 backwards compat, bump deps 2025-12-08 11:02:08 -05:00
Zane Schepke a573208db6 feat: amnezia 2.0 2025-12-03 00:53:35 -05:00
dependabot[bot] 0e9a63c850 chore(deps): bump actions/checkout from 5 to 6 (#1065)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-25 00:38:39 -05:00
Zane Schepke 341a806f29 chore: bump deps 2025-11-25 00:37:32 -05:00
Zane Schepke 8d257a604c fix: improve quickly state sync, nightly icon
closes #1056
closes #1055
2025-11-24 23:57:13 -05:00
Zane Schepke 0b674684ba fix: redundant location queries in legacy mode
closes #1062
2025-11-18 23:37:02 -05:00
Zane Schepke 85a27f48a2 chore: release v4.1.8 2025-11-14 14:11:22 -05:00
Zane Schepke 1f978cdf96 fix: rapid network changes race in network monitoring 2025-11-14 14:06:59 -05:00
Zane Schepke 4f816fa175 chore: release v4.1.7 2025-11-12 15:12:53 -05:00
Zane Schepke ee4ac4e968 fix: improve qr device support and scanner
#844
closes #1040
2025-11-12 14:13:35 -05:00
Zane Schepke ff53454966 fix: underlying network detection race
#1052
2025-11-12 11:59:20 -05:00
Zane Schepke 22c17ef66b fix: tile update crash when triggerd from non-user profile 2025-11-11 17:43:30 -05:00
Zane Schepke 7a60b90d2b fix: qr scanning scanning can cause crash 2025-11-11 17:29:05 -05:00
Zane Schepke 5fd3f89a59 feat: show tunnel uptime, improve duration display
closes #820
2025-11-11 16:20:08 -05:00
Zane Schepke 9510f43252 fix: global overrides regression, support prompt bug 2025-11-10 20:51:41 -05:00
Zane Schepke 064aa6aa74 fix: error notification bug 2025-11-10 00:56:56 -05:00
Zane Schepke 0c09add0e4 chore: add custom funding link 2025-11-09 12:42:21 -05:00
Zane Schepke fd0fd33f71 chore: release v4.1.6 2025-11-08 20:23:09 -05:00
Zane Schepke aaeb251bbf chore: shorten ur short description 2025-11-08 20:11:48 -05:00
Zane Schepke e563608e49 chore: bump deps 2025-11-08 20:06:09 -05:00
Zane Schepke 584f0386b6 fix: network monitor ignoring valid states for underlying networks 2025-11-08 14:00:14 -05:00
Zane Schepke cf49c34bff ci: simplify publish 2025-11-08 00:43:47 -05:00
Zane Schepke a0f89d40f5 chore: DE short description length too long 2025-11-08 00:17:29 -05:00
Zane Schepke 4da05e23f1 chore: release v4.1.5 2025-11-07 23:58:45 -05:00
Zane Schepke 6749719e21 chore: bump deps, update app description 2025-11-07 23:50:07 -05:00
Zane Schepke 1c160ff5f9 fix: network monitor should ignore default network VPN events
#1038
2025-11-07 21:54:16 -05:00
Zane Schepke 861440b7db fix: disable metered option for Android 9 and lower
closes #1044

#1031
2025-11-07 20:49:32 -05:00
Zane Schepke bdb0d27b53 ci: add aab build workflow 2025-11-05 00:47:46 -05:00
Zane Schepke 9b3283a2b1 chore: release 4.1.4 2025-11-04 20:20:41 -05:00
Zane Schepke 78def29980 fix: keep network monitor for full app lifecyle 2025-11-04 20:16:23 -05:00
Zane Schepke e83bbdf23a fix: tunnel service bind race 2025-11-04 19:59:30 -05:00
Zane Schepke 4beeb4e01e fix: network monitoring bug 2025-11-04 17:48:40 -05:00
Zane Schepke 4bcd810b38 chore: release 4.1.3 2025-11-04 03:57:24 -05:00
Zane Schepke e71174995b fix: tab back navigation bug 2025-11-04 03:39:23 -05:00
Zane Schepke f256a32bda fix: restore proper metered tunnel default
closes #1035
2025-11-04 03:03:24 -05:00
Zane Schepke c49666303a fix: network monitor changes for Android 10 2025-11-04 02:00:58 -05:00
Zane Schepke 3a9b435e50 fix: default wifi method needs flag 2025-11-03 11:52:34 -05:00
Zane Schepke 0993f60977 fix: auto tunnel service binder 2025-11-03 10:55:57 -05:00
Zane Schepke 3d88feb97c fix: r8 ip parsing bug
closes #1031
2025-11-03 09:45:56 -05:00
Zane Schepke f61e6d6c6e fix: network detection bug
closes #1032
2025-11-03 08:20:35 -05:00
Zane Schepke df864ade95 fix: binder leak 2025-11-03 02:24:19 -05:00
Zane Schepke 0abe3f67ef chore: fix fastlane deploy 2025-11-02 03:30:16 -05:00
432 changed files with 11486 additions and 1506 deletions
+1
View File
@@ -1,3 +1,4 @@
ko_fi: zaneschepke
liberapay: zaneschepke
github: zaneschepke
custom: ["https://wgtunnel.com/donate/"]
+130
View File
@@ -0,0 +1,130 @@
name: build-aab
permissions:
contents: read
on:
workflow_dispatch:
inputs:
build_type:
type: choice
description: "Build type"
required: true
default: release
options:
- release
flavor:
type: choice
description: "Product flavor"
required: true
default: google
options:
- google
secrets:
SIGNING_KEY_ALIAS:
required: false
SIGNING_KEY_PASSWORD:
required: false
SIGNING_STORE_PASSWORD:
required: false
SERVICE_ACCOUNT_JSON:
required: false
KEYSTORE:
required: false
workflow_call:
inputs:
build_type:
type: string
description: "Build type"
required: true
default: release
flavor:
type: string
description: "Product flavor"
required: false
default: google
secrets:
SIGNING_KEY_ALIAS:
required: false
SIGNING_KEY_PASSWORD:
required: false
SIGNING_STORE_PASSWORD:
required: false
SERVICE_ACCOUNT_JSON:
required: false
KEYSTORE:
required: false
env:
UPLOAD_DIR_ANDROID: android_artifacts
jobs:
build:
runs-on: ubuntu-latest
env:
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
KEY_STORE_FILE: 'android_keystore.jks'
KEY_STORE_LOCATION: ${{ github.workspace }}/app/keystore/
outputs:
UPLOAD_DIR_ANDROID: ${{ env.UPLOAD_DIR_ANDROID }}
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up JDK 17
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '17'
cache: gradle
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Decode Keystore
id: decode_keystore
uses: timheuer/base64-to-file@v1.2
with:
fileName: ${{ env.KEY_STORE_FILE }}
fileDir: ${{ env.KEY_STORE_LOCATION }}
encodedString: ${{ secrets.KEYSTORE }}
- name: Create keystore path env var
if: ${{ inputs.build_type != 'debug' }}
run: |
store_path=${{ env.KEY_STORE_LOCATION }}${{ env.KEY_STORE_FILE }}
echo "KEY_STORE_PATH=$store_path" >> $GITHUB_ENV
- name: Build AAB (noSplits=true)
run: |
flavor=${{ inputs.flavor }}
build_type=${{ inputs.build_type }}
case $build_type in
"release")
./gradlew :app:bundle${flavor^}Release \
-PnoSplits=true \
--info
;;
esac
- name: Get release AAB path
id: aab-path
run: |
AAB_PATH=$(find app/build/outputs/bundle -iname "*google*release*.aab" -type f | head -1)
if [ -z "$AAB_PATH" ]; then
echo "Error: AAB not found!" >&2
exit 1
fi
echo "Found AAB: $AAB_PATH"
echo "path=$AAB_PATH" >> $GITHUB_OUTPUT
- name: Upload AAB Artifact
uses: actions/upload-artifact@v6
with:
name: google-play-aab
path: ${{ steps.aab-path.outputs.path }}
retention-days: 7
if-no-files-found: error
+2 -2
View File
@@ -72,7 +72,7 @@ jobs:
outputs:
UPLOAD_DIR_ANDROID: ${{ env.UPLOAD_DIR_ANDROID }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up JDK 17
@@ -115,7 +115,7 @@ jobs:
id: apk-path
run: echo "path=$(find . -regex '^.*/build/outputs/apk/${{ inputs.flavor }}/${{ inputs.build_type }}/.*\.apk$' -type f | head -1 | tail -c+2)" >> $GITHUB_OUTPUT
- name: Upload All APK Artifacts
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: android_artifacts_${{ inputs.flavor }}
path: >-
+3 -3
View File
@@ -16,7 +16,7 @@ jobs:
has_new_commits: ${{ steps.check.outputs.new_commits }}
steps:
- name: Checkout Repository
uses: actions/checkout@v5
uses: actions/checkout@v6
- name: Check for new commits
id: check
env:
@@ -43,7 +43,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- name: Install system dependencies
run: |
@@ -71,7 +71,7 @@ jobs:
run: mkdir ${{ github.workspace }}/temp
- name: Download artifacts
uses: actions/download-artifact@v6
uses: actions/download-artifact@v7
with:
pattern: android_artifacts_*
path: ${{ github.workspace }}/temp
+1 -1
View File
@@ -10,7 +10,7 @@ jobs:
format_check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- name: Set up JDK 17
uses: actions/setup-java@v5
with:
+28 -18
View File
@@ -32,14 +32,6 @@ on:
description: "Tag name for release"
required: false
default: 1.1.1
flavor:
type: choice
description: "Product flavor"
required: true
default: standalone
options:
- fdroid
- standalone
workflow_call:
inputs:
flavor:
@@ -51,7 +43,11 @@ on:
jobs:
build-fdroid:
if: ${{ github.event_name == 'push' || inputs.release_type == 'release' || inputs.flavor == 'fdroid' }}
if: >-
${{
github.event_name == 'push' ||
inputs.release_type != 'none'
}}
uses: ./.github/workflows/build.yml
secrets: inherit
with:
@@ -59,20 +55,30 @@ jobs:
flavor: fdroid
build-standalone:
if: ${{ github.event_name == 'push' || inputs.release_type == 'release' || inputs.release_type == 'debug' || inputs.flavor == 'standalone' }}
if: >-
${{
github.event_name == 'push' ||
inputs.release_type != 'none'
}}
uses: ./.github/workflows/build.yml
secrets: inherit
with:
build_type: ${{ github.event_name == 'push' && 'release' || inputs.release_type }}
flavor: standalone
publish:
publish-github:
if: >-
${{
github.event_name == 'push' ||
inputs.release_type != 'none'
}}
needs:
- build-standalone
- build-fdroid
- build-standalone
name: publish-github
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
with:
ref: ${{ github.event_name == 'push' && github.ref || 'master' }}
- name: Install system dependencies
@@ -109,7 +115,7 @@ jobs:
run: mkdir ${{ github.workspace }}/temp
- name: Download artifacts
uses: actions/download-artifact@v6
uses: actions/download-artifact@v7
with:
pattern: android_artifacts_*
path: ${{ github.workspace }}/temp
@@ -118,7 +124,7 @@ jobs:
- name: Set version release notes
if: ${{ github.event_name == 'push' || inputs.release_type == 'release' }}
run: |
VERSION_CODE=$(grep "const val VERSION_CODE" buildSrc/src/main/kotlin/Constants.kt | awk -F'"' '{print $2}')
VERSION_CODE=$(sed -nE 's/.*const val VERSION_CODE[[:space:]]*=[[:space:]]*([0-9]+).*/\1/p' buildSrc/src/main/kotlin/Constants.kt)
RELEASE_NOTES="$(cat ${{ github.workspace }}/fastlane/metadata/android/en-US/changelogs/${VERSION_CODE}.txt || echo "No changelog found for ${VERSION_CODE}")"
echo "RELEASE_NOTES<<EOF" >> $GITHUB_ENV
echo "$RELEASE_NOTES" >> $GITHUB_ENV
@@ -166,9 +172,13 @@ jobs:
publish-fdroid-public:
runs-on: ubuntu-latest
if: >-
${{
github.event_name == 'push' ||
inputs.release_type != 'none'
}}
needs:
- build-fdroid
if: ${{ github.event_name == 'push' || inputs.release_type == 'release' }}
- publish-github
steps:
- name: Dispatch update for fdroid repo
uses: peter-evans/repository-dispatch@v4
@@ -190,7 +200,7 @@ jobs:
KEY_STORE_LOCATION: ${{ github.workspace }}/app/keystore/
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- name: Set up JDK 17
uses: actions/setup-java@v5
with:
+6 -2
View File
@@ -30,10 +30,10 @@ android {
splits {
abi {
isEnable = true
isEnable = !project.hasProperty("noSplits")
reset()
include("armeabi-v7a", "arm64-v8a")
isUniversalApk = true
isUniversalApk = !project.hasProperty("noSplits")
}
}
@@ -136,6 +136,8 @@ android {
licensee {
allowedLicenses().forEach { allow(it) }
allowedLicenseUrls().forEach { allowUrl(it) }
// foss, but missing license
ignoreDependencies("com.github.T8RIN.QuickieExtended")
}
android.applicationVariants.all {
@@ -242,6 +244,8 @@ dependencies {
debugImplementation(libs.androidx.compose.ui.tooling)
debugImplementation(libs.androidx.compose.manifest)
debugImplementation(libs.leakcanary.android)
// Room database backup
implementation(libs.roomdatabasebackup) {
exclude(group = "org.reactivestreams", module = "reactive-streams")
@@ -0,0 +1,523 @@
{
"formatVersion": 1,
"database": {
"version": 29,
"identityHash": "345471c118dee1b7688afa81d835e62c",
"entities": [
{
"tableName": "tunnel_config",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT NOT NULL, `wg_quick` TEXT NOT NULL, `tunnel_networks` TEXT NOT NULL DEFAULT '', `is_mobile_data_tunnel` INTEGER NOT NULL DEFAULT false, `is_primary_tunnel` INTEGER NOT NULL DEFAULT false, `am_quick` TEXT NOT NULL DEFAULT '', `is_Active` INTEGER NOT NULL DEFAULT false, `restart_on_ping_failure` INTEGER NOT NULL DEFAULT false, `ping_target` TEXT DEFAULT null, `is_ethernet_tunnel` INTEGER NOT NULL DEFAULT false, `is_ipv4_preferred` INTEGER NOT NULL DEFAULT true, `position` INTEGER NOT NULL DEFAULT 0, `auto_tunnel_apps` TEXT NOT NULL DEFAULT '[]', `is_metered` INTEGER NOT NULL DEFAULT false)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "wgQuick",
"columnName": "wg_quick",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "tunnelNetworks",
"columnName": "tunnel_networks",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "''"
},
{
"fieldPath": "isMobileDataTunnel",
"columnName": "is_mobile_data_tunnel",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "false"
},
{
"fieldPath": "isPrimaryTunnel",
"columnName": "is_primary_tunnel",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "false"
},
{
"fieldPath": "amQuick",
"columnName": "am_quick",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "''"
},
{
"fieldPath": "isActive",
"columnName": "is_Active",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "false"
},
{
"fieldPath": "restartOnPingFailure",
"columnName": "restart_on_ping_failure",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "false"
},
{
"fieldPath": "pingTarget",
"columnName": "ping_target",
"affinity": "TEXT",
"defaultValue": "null"
},
{
"fieldPath": "isEthernetTunnel",
"columnName": "is_ethernet_tunnel",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "false"
},
{
"fieldPath": "isIpv4Preferred",
"columnName": "is_ipv4_preferred",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "true"
},
{
"fieldPath": "position",
"columnName": "position",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "autoTunnelApps",
"columnName": "auto_tunnel_apps",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'[]'"
},
{
"fieldPath": "isMetered",
"columnName": "is_metered",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "false"
}
],
"primaryKey": {
"autoGenerate": true,
"columnNames": [
"id"
]
},
"indices": [
{
"name": "index_tunnel_config_name",
"unique": true,
"columnNames": [
"name"
],
"orders": [],
"createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_tunnel_config_name` ON `${TABLE_NAME}` (`name`)"
}
]
},
{
"tableName": "proxy_settings",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `socks5_proxy_enabled` INTEGER NOT NULL DEFAULT 0, `socks5_proxy_bind_address` TEXT, `http_proxy_enable` INTEGER NOT NULL DEFAULT 0, `http_proxy_bind_address` TEXT, `proxy_username` TEXT, `proxy_password` TEXT)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "socks5ProxyEnabled",
"columnName": "socks5_proxy_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "socks5ProxyBindAddress",
"columnName": "socks5_proxy_bind_address",
"affinity": "TEXT"
},
{
"fieldPath": "httpProxyEnabled",
"columnName": "http_proxy_enable",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "httpProxyBindAddress",
"columnName": "http_proxy_bind_address",
"affinity": "TEXT"
},
{
"fieldPath": "proxyUsername",
"columnName": "proxy_username",
"affinity": "TEXT"
},
{
"fieldPath": "proxyPassword",
"columnName": "proxy_password",
"affinity": "TEXT"
}
],
"primaryKey": {
"autoGenerate": true,
"columnNames": [
"id"
]
}
},
{
"tableName": "general_settings",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_shortcuts_enabled` INTEGER NOT NULL DEFAULT 0, `is_restore_on_boot_enabled` INTEGER NOT NULL DEFAULT 0, `is_multi_tunnel_enabled` INTEGER NOT NULL DEFAULT 0, `global_split_tunnel_enabled` INTEGER NOT NULL DEFAULT 0, `app_mode` INTEGER NOT NULL DEFAULT 0, `theme` TEXT NOT NULL DEFAULT 'AUTOMATIC', `locale` TEXT, `remote_key` TEXT, `is_remote_control_enabled` INTEGER NOT NULL DEFAULT 0, `is_pin_lock_enabled` INTEGER NOT NULL DEFAULT 0, `is_always_on_vpn_enabled` INTEGER NOT NULL DEFAULT 0, `already_donated` INTEGER NOT NULL DEFAULT 0)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "isShortcutsEnabled",
"columnName": "is_shortcuts_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "isRestoreOnBootEnabled",
"columnName": "is_restore_on_boot_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "isMultiTunnelEnabled",
"columnName": "is_multi_tunnel_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "isGlobalSplitTunnelEnabled",
"columnName": "global_split_tunnel_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "appMode",
"columnName": "app_mode",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "theme",
"columnName": "theme",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'AUTOMATIC'"
},
{
"fieldPath": "locale",
"columnName": "locale",
"affinity": "TEXT"
},
{
"fieldPath": "remoteKey",
"columnName": "remote_key",
"affinity": "TEXT"
},
{
"fieldPath": "isRemoteControlEnabled",
"columnName": "is_remote_control_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "isPinLockEnabled",
"columnName": "is_pin_lock_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "isAlwaysOnVpnEnabled",
"columnName": "is_always_on_vpn_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "alreadyDonated",
"columnName": "already_donated",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
}
],
"primaryKey": {
"autoGenerate": true,
"columnNames": [
"id"
]
}
},
{
"tableName": "auto_tunnel_settings",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_tunnel_enabled` INTEGER NOT NULL DEFAULT 0, `is_tunnel_on_mobile_data_enabled` INTEGER NOT NULL DEFAULT 0, `trusted_network_ssids` TEXT NOT NULL DEFAULT '', `is_tunnel_on_ethernet_enabled` INTEGER NOT NULL DEFAULT 0, `is_tunnel_on_wifi_enabled` INTEGER NOT NULL DEFAULT 0, `is_wildcards_enabled` INTEGER NOT NULL DEFAULT 0, `is_stop_on_no_internet_enabled` INTEGER NOT NULL DEFAULT 0, `debounce_delay_seconds` INTEGER NOT NULL DEFAULT 3, `is_tunnel_on_unsecure_enabled` INTEGER NOT NULL DEFAULT 0, `wifi_detection_method` INTEGER NOT NULL DEFAULT 0, `start_on_boot` INTEGER NOT NULL DEFAULT 0)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "isAutoTunnelEnabled",
"columnName": "is_tunnel_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "isTunnelOnMobileDataEnabled",
"columnName": "is_tunnel_on_mobile_data_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "trustedNetworkSSIDs",
"columnName": "trusted_network_ssids",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "''"
},
{
"fieldPath": "isTunnelOnEthernetEnabled",
"columnName": "is_tunnel_on_ethernet_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "isTunnelOnWifiEnabled",
"columnName": "is_tunnel_on_wifi_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "isWildcardsEnabled",
"columnName": "is_wildcards_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "isStopOnNoInternetEnabled",
"columnName": "is_stop_on_no_internet_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "debounceDelaySeconds",
"columnName": "debounce_delay_seconds",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "3"
},
{
"fieldPath": "isTunnelOnUnsecureEnabled",
"columnName": "is_tunnel_on_unsecure_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "wifiDetectionMethod",
"columnName": "wifi_detection_method",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "startOnBoot",
"columnName": "start_on_boot",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
}
],
"primaryKey": {
"autoGenerate": true,
"columnNames": [
"id"
]
}
},
{
"tableName": "monitoring_settings",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_ping_enabled` INTEGER NOT NULL DEFAULT 0, `is_ping_monitoring_enabled` INTEGER NOT NULL DEFAULT 1, `tunnel_ping_interval_sec` INTEGER NOT NULL DEFAULT 30, `tunnel_ping_attempts` INTEGER NOT NULL DEFAULT 3, `tunnel_ping_timeout_sec` INTEGER, `show_detailed_ping_stats` INTEGER NOT NULL DEFAULT 0, `is_local_logs_enabled` INTEGER NOT NULL DEFAULT 0)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "isPingEnabled",
"columnName": "is_ping_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "isPingMonitoringEnabled",
"columnName": "is_ping_monitoring_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "1"
},
{
"fieldPath": "tunnelPingIntervalSeconds",
"columnName": "tunnel_ping_interval_sec",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "30"
},
{
"fieldPath": "tunnelPingAttempts",
"columnName": "tunnel_ping_attempts",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "3"
},
{
"fieldPath": "tunnelPingTimeoutSeconds",
"columnName": "tunnel_ping_timeout_sec",
"affinity": "INTEGER"
},
{
"fieldPath": "showDetailedPingStats",
"columnName": "show_detailed_ping_stats",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "isLocalLogsEnabled",
"columnName": "is_local_logs_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
}
],
"primaryKey": {
"autoGenerate": true,
"columnNames": [
"id"
]
}
},
{
"tableName": "dns_settings",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `dns_protocol` INTEGER NOT NULL DEFAULT 0, `dns_endpoint` TEXT, `global_tunnel_dns_enabled` INTEGER NOT NULL DEFAULT 0)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "dnsProtocol",
"columnName": "dns_protocol",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "dnsEndpoint",
"columnName": "dns_endpoint",
"affinity": "TEXT"
},
{
"fieldPath": "isGlobalTunnelDnsEnabled",
"columnName": "global_tunnel_dns_enabled",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
}
],
"primaryKey": {
"autoGenerate": true,
"columnNames": [
"id"
]
}
},
{
"tableName": "lockdown_settings",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `bypass_lan` INTEGER NOT NULL DEFAULT 0, `metered` INTEGER NOT NULL DEFAULT 0, `dual_stack` INTEGER NOT NULL DEFAULT 0)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "bypassLan",
"columnName": "bypass_lan",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "metered",
"columnName": "metered",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "dualStack",
"columnName": "dual_stack",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
}
],
"primaryKey": {
"autoGenerate": true,
"columnNames": [
"id"
]
}
}
],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '345471c118dee1b7688afa81d835e62c')"
]
}
}
+38 -5
View File
@@ -59,10 +59,7 @@
android:supportsRtl="true"
android:theme="@style/Theme.App.Start"
tools:targetApi="tiramisu">
<activity
android:name="com.journeyapps.barcodescanner.CaptureActivity"
android:screenOrientation="portrait"
tools:replace="screenOrientation" />
<activity
android:name=".MainActivity"
android:exported="true"
@@ -112,7 +109,40 @@
android:multiprocess="true"
tools:node="remove">
</provider>
<service
android:name=".core.service.tile.TunnelControlTile"
android:exported="true"
android:icon="@drawable/ic_notification"
android:label="@string/tunnel_control"
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
<meta-data
android:name="android.service.quicksettings.ACTIVE_TILE"
android:value="true" />
<meta-data
android:name="android.service.quicksettings.TOGGLEABLE_TILE"
android:value="true" />
<intent-filter>
<action android:name="android.service.quicksettings.action.QS_TILE" />
</intent-filter>
</service>
<service
android:name=".core.service.tile.AutoTunnelControlTile"
android:exported="true"
android:icon="@drawable/ic_notification"
android:label="@string/auto_tunnel"
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
<meta-data
android:name="android.service.quicksettings.ACTIVE_TILE"
android:value="true" />
<meta-data
android:name="android.service.quicksettings.TOGGLEABLE_TILE"
android:value="true" />
<intent-filter>
<action android:name="android.service.quicksettings.action.QS_TILE" />
</intent-filter>
</service>
<service
android:name=".core.service.tile.TunnelControlTile"
android:exported="true"
@@ -198,7 +228,10 @@
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<action android:name="com.htc.intent.action.QUICKBOOT_POWERON" />
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
</intent-filter>
</receiver>
<receiver
@@ -26,6 +26,7 @@ import androidx.compose.ui.text.LinkAnnotation
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.TextLinkStyles
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.intl.Locale
import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.text.withLink
import androidx.compose.ui.unit.dp
@@ -40,6 +41,7 @@ import androidx.navigation3.runtime.entryProvider
import androidx.navigation3.runtime.rememberNavBackStack
import androidx.navigation3.runtime.rememberSaveableStateHolderNavEntryDecorator
import androidx.navigation3.ui.NavDisplay
import com.zaneschepke.networkmonitor.NetworkMonitor
import com.zaneschepke.wireguardautotunnel.data.AppDatabase
import com.zaneschepke.wireguardautotunnel.data.DataStoreManager.Companion.shouldShowDonationSnackbar
import com.zaneschepke.wireguardautotunnel.data.model.AppMode
@@ -99,7 +101,6 @@ import com.zaneschepke.wireguardautotunnel.viewmodel.SplitTunnelViewModel
import com.zaneschepke.wireguardautotunnel.viewmodel.TunnelViewModel
import dagger.hilt.android.AndroidEntryPoint
import de.raphaelebner.roomdatabasebackup.core.RoomBackup
import java.util.*
import javax.inject.Inject
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
@@ -111,6 +112,7 @@ class MainActivity : AppCompatActivity() {
@Inject lateinit var appStateRepository: AppStateRepository
@Inject lateinit var tunnelRepository: TunnelRepository
@Inject lateinit var appDatabase: AppDatabase
@Inject lateinit var networkMonitor: NetworkMonitor
private lateinit var roomBackup: RoomBackup
@@ -277,7 +279,7 @@ class MainActivity : AppCompatActivity() {
append(context.getString(R.string.donation_prompt_suffix))
}
LaunchedEffect(uiState.shouldShowDonationSnackbar) {
LaunchedEffect(Unit) {
if (
uiState.shouldShowDonationSnackbar && !uiState.settings.alreadyDonated
) {
@@ -314,7 +316,7 @@ class MainActivity : AppCompatActivity() {
if (uiState.settings.appMode == AppMode.LOCK_DOWN) {
AppAlertBanner(
stringResource(R.string.locked_down)
.uppercase(Locale.getDefault()),
.uppercase(Locale.current.platformLocale),
OffWhite,
AlertRed,
modifier = Modifier.fillMaxWidth().zIndex(2f),
@@ -520,6 +522,7 @@ class MainActivity : AppCompatActivity() {
override fun onResume() {
super.onResume()
networkMonitor.checkPermissionsAndUpdateState()
WireGuardAutoTunnel.setUiActive(true)
}
@@ -18,6 +18,7 @@ import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.distinctUntilChangedBy
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import timber.log.Timber
@@ -59,8 +60,15 @@ class WireGuardAutoTunnel : Application(), Configuration.Provider {
applicationScope.launch(ioDispatcher) {
launch {
val monitoringSettings = monitoringRepository.getMonitoringSettings()
if (monitoringSettings.isLocalLogsEnabled) logReader.start()
monitoringRepository.flow
.distinctUntilChangedBy { it.isLocalLogsEnabled }
.collect { settings ->
if (settings.isLocalLogsEnabled) {
logReader.start()
} else {
logReader.stop()
}
}
}
launch { notificationMonitor.handleApplicationNotifications() }
}
@@ -34,6 +34,7 @@ class RestartReceiver : BroadcastReceiver() {
tunnelManager.handleReboot()
}
Intent.ACTION_MY_PACKAGE_REPLACED -> {
Timber.i("Restoring state on package upgrade")
tunnelManager.handleRestore()
logReader.deleteAndClearLogs()
appStateRepository.setShouldShowDonationSnackbar(true)
@@ -32,7 +32,7 @@ constructor(
description =
StringValue.StringResource(
R.string.tunnel_error_template,
error.toStringValue(),
error.stringRes,
),
groupKey = NotificationManager.VPN_GROUP_KEY,
)
@@ -1,5 +1,11 @@
package com.zaneschepke.wireguardautotunnel.core.service
import android.os.Binder
import java.lang.ref.WeakReference
class LocalBinder(val service: TunnelService) : Binder()
class LocalBinder(service: TunnelService) : Binder() {
private val serviceRef = WeakReference(service)
val service: TunnelService?
get() = serviceRef.get()
}
@@ -21,6 +21,7 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import kotlinx.coroutines.withContext
import kotlinx.coroutines.withTimeoutOrNull
import timber.log.Timber
class ServiceManager
@@ -137,17 +138,25 @@ constructor(
suspend fun startTunnelService(appMode: AppMode) =
tunnelMutex.withLock {
if (_tunnelService.value != null) return@withLock
val serviceClass =
when (appMode) {
AppMode.VPN,
AppMode.LOCK_DOWN -> VpnForegroundService::class.java
AppMode.KERNEL,
AppMode.PROXY -> TunnelForegroundService::class.java
}
val intent = Intent(context, serviceClass)
context.startForegroundService(intent)
context.bindService(intent, tunnelServiceConnection, Context.BIND_AUTO_CREATE)
if (_tunnelService.value != null) {
Timber.d("Service already exists, waiting for disconnect")
withTimeoutOrNull(2000L) { _tunnelService.first { it == null } }
?: Timber.w("Timeout waiting for existing service to disconnect")
}
if (_tunnelService.value == null) {
val serviceClass =
when (appMode) {
AppMode.VPN,
AppMode.LOCK_DOWN -> VpnForegroundService::class.java
AppMode.KERNEL,
AppMode.PROXY -> TunnelForegroundService::class.java
}
val intent = Intent(context, serviceClass)
context.startForegroundService(intent)
context.bindService(intent, tunnelServiceConnection, Context.BIND_AUTO_CREATE)
} else {
Timber.e("Service still not null after timeout")
}
}
suspend fun stopTunnelService() =
@@ -157,7 +166,7 @@ constructor(
try {
context.unbindService(tunnelServiceConnection)
} catch (e: Exception) {
Timber.e(e, "Failed to stop Tunnel Service")
Timber.e(e, "Failed to unbind Tunnel Service")
}
}
}
@@ -24,11 +24,12 @@ import com.zaneschepke.wireguardautotunnel.domain.repository.AutoTunnelSettingsR
import com.zaneschepke.wireguardautotunnel.domain.repository.GeneralSettingRepository
import com.zaneschepke.wireguardautotunnel.domain.repository.TunnelRepository
import com.zaneschepke.wireguardautotunnel.domain.state.AutoTunnelState
import com.zaneschepke.wireguardautotunnel.domain.state.NetworkState
import com.zaneschepke.wireguardautotunnel.domain.state.toDomain
import com.zaneschepke.wireguardautotunnel.util.Constants
import com.zaneschepke.wireguardautotunnel.util.extensions.to
import com.zaneschepke.wireguardautotunnel.util.extensions.toMillis
import dagger.hilt.android.AndroidEntryPoint
import java.lang.ref.WeakReference
import javax.inject.Inject
import javax.inject.Provider
import kotlinx.coroutines.*
@@ -60,7 +61,16 @@ class AutoTunnelService : LifecycleService() {
private val autoTunnelStateFlow = MutableStateFlow(defaultState)
class LocalBinder(val service: AutoTunnelService) : Binder()
private var autoTunnelJob: Job? = null
private var permissionsJob: Job? = null
private var autoTunnelFailoverJob: Job? = null
class LocalBinder(service: AutoTunnelService) : Binder() {
private val serviceRef = WeakReference(service)
val service: AutoTunnelService?
get() = serviceRef.get()
}
private val binder = LocalBinder(this)
@@ -83,8 +93,10 @@ class AutoTunnelService : LifecycleService() {
fun start() {
launchWatcherNotification()
startAutoTunnelStateJob()
startLocationPermissionsNotificationJob()
autoTunnelJob?.cancel()
autoTunnelJob = startAutoTunnelStateJob()
permissionsJob?.cancel()
permissionsJob = startLocationPermissionsNotificationJob()
}
fun stop() {
@@ -93,7 +105,6 @@ class AutoTunnelService : LifecycleService() {
override fun onDestroy() {
serviceManager.handleAutoTunnelServiceDestroy()
networkMonitor.destroy()
ServiceCompat.stopForeground(this, ServiceCompat.STOP_FOREGROUND_REMOVE)
super.onDestroy()
}
@@ -124,12 +135,12 @@ class AutoTunnelService : LifecycleService() {
)
}
private fun startAutoTunnelStateJob() =
private fun startAutoTunnelStateJob(): Job =
lifecycleScope.launch(ioDispatcher) {
val networkFlow =
debouncedConnectivityStateFlow
.flowOn(ioDispatcher)
.map(NetworkState::from)
.map { it.toDomain() }
.map(::NetworkChange)
.distinctUntilChanged()
@@ -202,6 +213,7 @@ class AutoTunnelService : LifecycleService() {
handleAutoTunnelEvent(autoTunnelStateFlow.value.determineAutoTunnelEvent(change))
// re-evaluate network state after a short duration to prevent missed state changes
reevaluationJob = launch {
val snapshotNetwork = autoTunnelStateFlow.value.networkState
delay(REEVALUATE_CHECK_DELAY)
@@ -224,7 +236,7 @@ class AutoTunnelService : LifecycleService() {
return combine(
settingsRepository.flow.map { it.appMode }.distinctUntilChanged(),
autoTunnelRepository.get().flow,
tunnelsRepository.flow.map { tunnels ->
tunnelsRepository.userTunnelsFlow.map { tunnels ->
// isActive is ignored for equality checks so user can manually toggle off
// tunnel with auto-tunnel
tunnels.map { it.copy(isActive = false) }
@@ -266,8 +278,8 @@ class AutoTunnelService : LifecycleService() {
.map {
NetworkPermissionState(
it.settings.wifiDetectionMethod.to(),
it.networkState.locationServicesEnabled == true,
it.networkState.locationPermissionGranted == true,
it.networkState.locationServicesEnabled,
it.networkState.locationPermissionGranted,
(it.tunnels.any { tunnel -> tunnel.tunnelNetworks.isNotEmpty() } ||
it.settings.trustedNetworkSSIDs.isNotEmpty()),
)
@@ -348,6 +360,7 @@ class AutoTunnelService : LifecycleService() {
}
}
// restart network flow on debounce changes
@OptIn(FlowPreview::class, ExperimentalCoroutinesApi::class)
private val debouncedConnectivityStateFlow: Flow<ConnectivityState> by lazy {
autoTunnelRepository
@@ -4,15 +4,13 @@ import android.content.Intent
import android.os.IBinder
import android.service.quicksettings.Tile
import android.service.quicksettings.TileService
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LifecycleRegistry
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.*
import com.zaneschepke.wireguardautotunnel.core.service.ServiceManager
import com.zaneschepke.wireguardautotunnel.domain.repository.AutoTunnelSettingsRepository
import com.zaneschepke.wireguardautotunnel.domain.repository.TunnelRepository
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
import kotlin.concurrent.atomics.AtomicBoolean
import kotlin.concurrent.atomics.ExperimentalAtomicApi
import kotlinx.coroutines.launch
import timber.log.Timber
@@ -20,10 +18,11 @@ import timber.log.Timber
class AutoTunnelControlTile : TileService(), LifecycleOwner {
@Inject lateinit var autoTunnelSettingsRepository: AutoTunnelSettingsRepository
@Inject lateinit var tunnelsRepository: TunnelRepository
@Inject lateinit var serviceManager: ServiceManager
@OptIn(ExperimentalAtomicApi::class) val isCollecting = AtomicBoolean(false)
private val lifecycleRegistry: LifecycleRegistry = LifecycleRegistry(this)
override fun onCreate() {
@@ -36,25 +35,37 @@ class AutoTunnelControlTile : TileService(), LifecycleOwner {
lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY)
}
override fun onStartListening() {
super.onStartListening()
override fun onTileAdded() {
super.onTileAdded()
initTileState()
}
override fun onStopListening() {
super.onStopListening()
lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_STOP)
}
@OptIn(ExperimentalAtomicApi::class)
private fun initTileState() {
lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_START)
Timber.d("Start listening called for auto tunnel tile")
lifecycleScope.launch {
serviceManager.autoTunnelService.collect {
if (it != null) return@collect setActive()
setInactive()
}
}
lifecycleScope.launch {
tunnelsRepository.flow.collect {
if (it.isEmpty()) {
setUnavailable()
if (isCollecting.compareAndSet(expectedValue = false, newValue = true)) {
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
serviceManager.autoTunnelService.collect {
if (it != null) return@collect setActive()
setInactive()
}
}
}
}
}
override fun onStartListening() {
super.onStartListening()
initTileState()
}
override fun onClick() {
super.onClick()
unlockAndRun {
@@ -71,23 +82,16 @@ class AutoTunnelControlTile : TileService(), LifecycleOwner {
}
private fun setActive() {
runCatching {
qsTile.state = Tile.STATE_ACTIVE
qsTile.updateTile()
qsTile?.let {
it.state = Tile.STATE_ACTIVE
it.updateTile()
}
}
private fun setInactive() {
runCatching {
qsTile.state = Tile.STATE_INACTIVE
qsTile.updateTile()
}
}
private fun setUnavailable() {
runCatching {
qsTile.state = Tile.STATE_UNAVAILABLE
qsTile.updateTile()
qsTile?.let {
it.state = Tile.STATE_INACTIVE
it.updateTile()
}
}
@@ -5,10 +5,7 @@ import android.os.Build
import android.os.IBinder
import android.service.quicksettings.Tile
import android.service.quicksettings.TileService
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LifecycleRegistry
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.*
import com.zaneschepke.wireguardautotunnel.R
import com.zaneschepke.wireguardautotunnel.WireGuardAutoTunnel
import com.zaneschepke.wireguardautotunnel.core.service.ServiceManager
@@ -16,7 +13,12 @@ import com.zaneschepke.wireguardautotunnel.core.tunnel.TunnelManager
import com.zaneschepke.wireguardautotunnel.domain.repository.TunnelRepository
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
import kotlin.concurrent.atomics.AtomicBoolean
import kotlin.concurrent.atomics.ExperimentalAtomicApi
import kotlinx.coroutines.flow.distinctUntilChangedBy
import kotlinx.coroutines.launch
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import timber.log.Timber
@AndroidEntryPoint
@@ -28,9 +30,11 @@ class TunnelControlTile : TileService(), LifecycleOwner {
@Inject lateinit var tunnelManager: TunnelManager
private val lifecycleRegistry: LifecycleRegistry = LifecycleRegistry(this)
@OptIn(ExperimentalAtomicApi::class) val isCollecting = AtomicBoolean(false)
private var isCollecting = false
private val startLock = Mutex()
private val lifecycleRegistry: LifecycleRegistry = LifecycleRegistry(this)
override fun onCreate() {
super.onCreate()
@@ -42,13 +46,34 @@ class TunnelControlTile : TileService(), LifecycleOwner {
lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY)
}
override fun onStartListening() {
super.onStartListening()
override fun onTileAdded() {
super.onTileAdded()
initTileState()
}
@OptIn(ExperimentalAtomicApi::class)
private fun initTileState() {
lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_START)
Timber.d("Start listening called for tunnel tile")
if (isCollecting) return
isCollecting = true
lifecycleScope.launch { tunnelManager.activeTunnels.collect { updateTileState() } }
if (isCollecting.compareAndSet(expectedValue = false, newValue = true)) {
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
tunnelManager.activeTunnels
.distinctUntilChangedBy { it.size }
.collect { updateTileState() }
}
}
}
}
override fun onStartListening() {
super.onStartListening()
initTileState()
}
override fun onStopListening() {
super.onStopListening()
lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_STOP)
}
private suspend fun updateTileState() {
@@ -76,6 +101,7 @@ class TunnelControlTile : TileService(), LifecycleOwner {
else -> updateTileForLastActiveTunnels()
}
} catch (e: Exception) {
Timber.e(e, "Failed to update tunnel state")
setUnavailable()
}
}
@@ -110,14 +136,16 @@ class TunnelControlTile : TileService(), LifecycleOwner {
super.onClick()
unlockAndRun {
lifecycleScope.launch {
if (tunnelManager.activeTunnels.value.isNotEmpty())
return@launch tunnelManager.stopActiveTunnels()
val lastActive = WireGuardAutoTunnel.getLastActiveTunnels()
if (lastActive.isEmpty()) {
tunnelsRepository.getStartTunnel()?.let { tunnelManager.startTunnel(it) }
} else {
lastActive.forEach { id ->
tunnelsRepository.getById(id)?.let { tunnelManager.startTunnel(it) }
startLock.withLock {
if (tunnelManager.activeTunnels.value.isNotEmpty())
return@launch tunnelManager.stopActiveTunnels()
val lastActive = WireGuardAutoTunnel.getLastActiveTunnels()
if (lastActive.isEmpty()) {
tunnelsRepository.getStartTunnel()?.let { tunnelManager.startTunnel(it) }
} else {
lastActive.forEach { id ->
tunnelsRepository.getById(id)?.let { tunnelManager.startTunnel(it) }
}
}
}
}
@@ -125,37 +153,36 @@ class TunnelControlTile : TileService(), LifecycleOwner {
}
private fun setActive() {
runCatching {
qsTile.state = Tile.STATE_ACTIVE
qsTile.updateTile()
qsTile?.let {
it.state = Tile.STATE_ACTIVE
it.updateTile()
}
}
private fun setInactive() {
runCatching {
qsTile.state = Tile.STATE_INACTIVE
qsTile.updateTile()
qsTile?.let {
it.state = Tile.STATE_INACTIVE
it.updateTile()
}
}
private fun setUnavailable() {
runCatching {
qsTile.state = Tile.STATE_UNAVAILABLE
qsTile?.let {
it.state = Tile.STATE_UNAVAILABLE
setTileDescription("")
qsTile.updateTile()
it.updateTile()
}
}
private fun setTileDescription(description: String) {
runCatching {
if (qsTile == null) return@runCatching
qsTile?.let {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
qsTile.subtitle = description
qsTile.stateDescription = description
it.subtitle = description
it.stateDescription = description
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
qsTile.subtitle = description
it.subtitle = description
}
qsTile.updateTile()
it.updateTile()
}
}
@@ -31,7 +31,7 @@ fun MutableStateFlow<Map<TunnelConfig, TunnelState>>.exists(id: Int): Boolean {
}
fun MutableStateFlow<Map<TunnelConfig, TunnelState>>.isUp(id: Int): Boolean {
return this.value.any { it.key.id == id && it.value.status == TunnelStatus.Up }
return this.value.any { it.key.id == id && it.value.status is TunnelStatus.Up }
}
fun MutableStateFlow<Map<TunnelConfig, TunnelState>>.isStarting(id: Int): Boolean {
@@ -3,6 +3,7 @@ package com.zaneschepke.wireguardautotunnel.core.tunnel
import com.wireguard.android.backend.Backend
import com.wireguard.android.backend.BackendException
import com.wireguard.android.backend.Tunnel as WgTunnel
import com.wireguard.android.backend.WgQuickBackend
import com.zaneschepke.wireguardautotunnel.R
import com.zaneschepke.wireguardautotunnel.di.ApplicationScope
import com.zaneschepke.wireguardautotunnel.di.IoDispatcher
@@ -12,6 +13,7 @@ import com.zaneschepke.wireguardautotunnel.domain.enums.TunnelStatus
import com.zaneschepke.wireguardautotunnel.domain.events.DnsFailure
import com.zaneschepke.wireguardautotunnel.domain.events.InvalidConfig
import com.zaneschepke.wireguardautotunnel.domain.events.KernelTunnelName
import com.zaneschepke.wireguardautotunnel.domain.events.KernelWireguardNotSupported
import com.zaneschepke.wireguardautotunnel.domain.events.UnknownError
import com.zaneschepke.wireguardautotunnel.domain.model.TunnelConfig
import com.zaneschepke.wireguardautotunnel.domain.state.TunnelStatistics
@@ -55,6 +57,7 @@ constructor(
}
override fun tunnelStateFlow(tunnelConfig: TunnelConfig): Flow<TunnelStatus> = callbackFlow {
if (!WgQuickBackend.hasKernelSupport()) close(KernelWireguardNotSupported())
validateWireGuardInterfaceName(tunnelConfig.name).onFailure { close(it) }
val stateChannel = Channel<WgTunnel.State>()
@@ -322,11 +322,11 @@ constructor(
withContext(ioDispatcher) {
val settings = settingsRepository.getGeneralSettings()
val autoTunnelSettings = autoTunnelSettingsRepository.getAutoTunnelSettings()
val tunnels = tunnelsRepository.getAll()
val tunnels = tunnelsRepository.userTunnelsFlow.firstOrNull()
if (autoTunnelSettings.isAutoTunnelEnabled)
return@withContext restoreAutoTunnel(autoTunnelSettings)
if (settings.appMode == AppMode.LOCK_DOWN) handleLockDownModeInit()
if (tunnels.any { it.isActive }) {
if (tunnels?.any { it.isActive } == true) {
if (settings.appMode == AppMode.VPN && !serviceManager.hasVpnPermission())
return@withContext localErrorEvents.emit(null to NotAuthorized())
when (settings.appMode) {
@@ -350,7 +350,7 @@ constructor(
withContext(ioDispatcher) {
val settings = settingsRepository.getGeneralSettings()
val autoTunnelSettings = autoTunnelSettingsRepository.getAutoTunnelSettings()
val defaultTunnel = tunnelsRepository.getStartTunnel()
val defaultTunnel = tunnelsRepository.getDefaultTunnel()
if (autoTunnelSettings.startOnBoot)
return@withContext restoreAutoTunnel(autoTunnelSettings)
if (settings.isRestoreOnBootEnabled) {
@@ -95,26 +95,7 @@ constructor(
val connectivityStateFlow = networkMonitor.connectivityStateFlow.stateIn(this)
val isNetworkConnected = connectivityStateFlow.map { it.hasConnectivity() }.stateIn(this)
data class NetworkChangeKey(
val ethernetConnected: Boolean,
val wifiConnected: Boolean,
val cellularConnected: Boolean,
val wifiSsid: String?,
)
connectivityStateFlow
.map {
NetworkChangeKey(
ethernetConnected = it.ethernetConnected,
wifiConnected = it.wifiState.connected,
cellularConnected = it.cellularConnected,
wifiSsid = if (it.wifiState.connected) it.wifiState.ssid else null,
)
}
.distinctUntilChanged()
.stateIn(this)
val isNetworkConnected = connectivityStateFlow.map { it.hasInternet() }.stateIn(this)
combine(
settingsRepository.flow.distinctUntilChangedBy { it.appMode },
@@ -266,7 +247,7 @@ constructor(
}
// Wait for the tunnel to be fully active
tunStateFlow.filter { state -> state?.status == TunnelStatus.Up }.first()
tunStateFlow.filter { state -> state?.status is TunnelStatus.Up }.first()
// small delay to make sure tunnel is fully up before we actively monitor
delay(3_000L)
@@ -90,7 +90,7 @@ constructor(
} catch (e: BackendException) {
throw e.toBackendCoreException()
// TODO this should be mapped to BackendException in the lib
} catch (e: IOException) {
} catch (_: IOException) {
throw VpnUnauthorized()
}
}
@@ -17,7 +17,7 @@ import com.zaneschepke.wireguardautotunnel.data.entity.*
DnsSettings::class,
LockdownSettings::class,
],
version = 28,
version = 29,
autoMigrations =
[
AutoMigration(from = 1, to = 2),
@@ -50,23 +50,27 @@ interface TunnelConfigDao {
@Query(
"""
SELECT * FROM tunnel_config
ORDER BY
CASE WHEN is_primary_tunnel = 1 THEN 0 ELSE 1 END,
position ASC
LIMIT 1"""
SELECT * FROM tunnel_config
WHERE name != '${TunnelConfig.GLOBAL_CONFIG_NAME}'
ORDER BY
CASE WHEN is_primary_tunnel = 1 THEN 0 ELSE 1 END,
position ASC
LIMIT 1
"""
)
suspend fun getDefaultTunnel(): TunnelConfig?
@Query(
"""
SELECT * FROM tunnel_config
ORDER BY
CASE WHEN is_Active = 1 THEN 0
WHEN is_primary_tunnel = 1 THEN 1
ELSE 2 END,
position ASC
LIMIT 1"""
SELECT * FROM tunnel_config
WHERE name != '${TunnelConfig.GLOBAL_CONFIG_NAME}'
ORDER BY
CASE WHEN is_Active = 1 THEN 0
WHEN is_primary_tunnel = 1 THEN 1
ELSE 2 END,
position ASC
LIMIT 1
"""
)
suspend fun getStartTunnel(): TunnelConfig?
@@ -28,7 +28,7 @@ data class TunnelConfig(
@ColumnInfo(name = "position", defaultValue = "0") val position: Int = 0,
@ColumnInfo(name = "auto_tunnel_apps", defaultValue = "[]")
val autoTunnelApps: Set<String> = emptySet(),
@ColumnInfo(name = "is_metered", defaultValue = "true") val isMetered: Boolean = true,
@ColumnInfo(name = "is_metered", defaultValue = "false") val isMetered: Boolean = false,
) {
companion object {
const val GLOBAL_CONFIG_NAME = "4675ab06-903a-438b-8485-6ea4187a9512"
@@ -411,3 +411,56 @@ val MIGRATION_25_26 =
db.execSQL("ALTER TABLE `general_settings_new` RENAME TO `general_settings`")
}
}
val MIGRATION_28_29 =
object : Migration(28, 29) {
override fun migrate(database: SupportSQLiteDatabase) {
// Migrate tunnel_config table
database.execSQL(
"""
CREATE TABLE IF NOT EXISTS `tunnel_config_new` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
`name` TEXT NOT NULL,
`wg_quick` TEXT NOT NULL,
`tunnel_networks` TEXT NOT NULL DEFAULT '',
`is_mobile_data_tunnel` INTEGER NOT NULL DEFAULT false,
`is_primary_tunnel` INTEGER NOT NULL DEFAULT false,
`am_quick` TEXT NOT NULL DEFAULT '',
`is_Active` INTEGER NOT NULL DEFAULT false,
`restart_on_ping_failure` INTEGER NOT NULL DEFAULT false,
`ping_target` TEXT DEFAULT null,
`is_ethernet_tunnel` INTEGER NOT NULL DEFAULT false,
`is_ipv4_preferred` INTEGER NOT NULL DEFAULT true,
`position` INTEGER NOT NULL DEFAULT 0,
`auto_tunnel_apps` TEXT NOT NULL DEFAULT '[]',
`is_metered` INTEGER NOT NULL DEFAULT false
)
"""
.trimIndent()
)
database.execSQL(
"""
INSERT INTO `tunnel_config_new` (
`id`, `name`, `wg_quick`, `tunnel_networks`, `is_mobile_data_tunnel`,
`is_primary_tunnel`, `am_quick`, `is_Active`, `restart_on_ping_failure`,
`ping_target`, `is_ethernet_tunnel`, `is_ipv4_preferred`, `position`,
`auto_tunnel_apps`, `is_metered`
)
SELECT
`id`, `name`, `wg_quick`, `tunnel_networks`, `is_mobile_data_tunnel`,
`is_primary_tunnel`, `am_quick`, `is_Active`, `restart_on_ping_failure`,
`ping_target`, `is_ethernet_tunnel`, `is_ipv4_preferred`, `position`,
`auto_tunnel_apps`, 0 AS `is_metered`
FROM `tunnel_config`
"""
.trimIndent()
)
database.execSQL("DROP TABLE `tunnel_config`")
database.execSQL("ALTER TABLE `tunnel_config_new` RENAME TO `tunnel_config`")
database.execSQL(
"CREATE UNIQUE INDEX IF NOT EXISTS `index_tunnel_config_name` ON `tunnel_config` (`name`)"
)
}
}
@@ -55,6 +55,8 @@ class DataStoreAppStateRepository(
pref[DataStoreManager.locationDisclosureShown] ?: false,
isBatteryOptimizationDisableShown =
pref[DataStoreManager.batteryDisableShown] ?: false,
shouldShowDonationSnackbar =
pref[DataStoreManager.shouldShowDonationSnackbar] ?: false,
)
} catch (e: IllegalArgumentException) {
Timber.e(e)
@@ -9,6 +9,7 @@ import com.zaneschepke.wireguardautotunnel.data.DatabaseCallback
import com.zaneschepke.wireguardautotunnel.data.dao.*
import com.zaneschepke.wireguardautotunnel.data.migrations.MIGRATION_23_24
import com.zaneschepke.wireguardautotunnel.data.migrations.MIGRATION_25_26
import com.zaneschepke.wireguardautotunnel.data.migrations.MIGRATION_28_29
import com.zaneschepke.wireguardautotunnel.data.network.GitHubApi
import com.zaneschepke.wireguardautotunnel.data.network.KtorClient
import com.zaneschepke.wireguardautotunnel.data.network.KtorGitHubApi
@@ -56,8 +57,11 @@ class RepositoryModule {
AppDatabase::class.java,
context.getString(R.string.db_name),
)
.addMigrations(MIGRATION_23_24(dataStoreManager.dataStore))
.addMigrations(MIGRATION_25_26)
.addMigrations(
MIGRATION_23_24(dataStoreManager.dataStore),
MIGRATION_25_26,
MIGRATION_28_29,
)
.fallbackToDestructiveMigration(true)
.addCallback(callback)
.build()
@@ -1,8 +0,0 @@
package com.zaneschepke.wireguardautotunnel.domain.enums
enum class NetworkType {
WIFI,
ETHERNET,
MOBILE_DATA,
NONE,
}
@@ -2,7 +2,7 @@ package com.zaneschepke.wireguardautotunnel.domain.enums
sealed class TunnelStatus {
data object Up : TunnelStatus()
data class Up(val startTime: Long) : TunnelStatus()
data object Down : TunnelStatus()
@@ -15,11 +15,11 @@ sealed class TunnelStatus {
}
fun isUp(): Boolean {
return this == Up
return this is Up
}
fun isUpOrStarting(): Boolean {
return this == Up || this == Starting
return this is Up || this == Starting
}
fun isDownOrStopping(): Boolean {
@@ -40,3 +40,7 @@ class UnknownError : BackendCoreException() {
class UapiUpdateFailed : BackendCoreException() {
override val stringRes = R.string.active_tunnel_update_failed
}
class KernelWireguardNotSupported : BackendCoreException() {
override val stringRes = R.string.kernel_wireguard_unsupported
}
@@ -27,7 +27,7 @@ data class TunnelConfig(
val isIpv4Preferred: Boolean = true,
val position: Int = 0,
val autoTunnelApps: Set<String> = setOf(),
val isMetered: Boolean = true,
val isMetered: Boolean = false,
) {
override fun equals(other: Any?): Boolean {
@@ -106,15 +106,17 @@ data class TunnelConfig(
existingConfig.`interface`.transportPacketMagicHeader.ifPresent {
setTransportPacketMagicHeader(it)
}
existingConfig.`interface`.i1.ifPresent { setI1(it) }
existingConfig.`interface`.i2.ifPresent { setI2(it) }
existingConfig.`interface`.i3.ifPresent { setI3(it) }
existingConfig.`interface`.i4.ifPresent { setI4(it) }
existingConfig.`interface`.i5.ifPresent { setI5(it) }
existingConfig.`interface`.j1.ifPresent { setJ1(it) }
existingConfig.`interface`.j2.ifPresent { setJ2(it) }
existingConfig.`interface`.j3.ifPresent { setJ3(it) }
existingConfig.`interface`.itime.ifPresent { setItime(it) }
existingConfig.`interface`.cookieReplyPacketJunkSize.ifPresent {
setCookieReplyPacketJunkSize(it)
}
existingConfig.`interface`.transportPacketJunkSize.ifPresent {
setTransportPacketJunkSize(it)
}
existingConfig.`interface`.specialJunkI1.ifPresent { setSpecialJunkI1(it) }
existingConfig.`interface`.specialJunkI2.ifPresent { setSpecialJunkI2(it) }
existingConfig.`interface`.specialJunkI3.ifPresent { setSpecialJunkI3(it) }
existingConfig.`interface`.specialJunkI4.ifPresent { setSpecialJunkI4(it) }
existingConfig.`interface`.specialJunkI5.ifPresent { setSpecialJunkI5(it) }
setPreUp(existingConfig.`interface`.preUp)
setPostUp(existingConfig.`interface`.postUp)
setPreDown(existingConfig.`interface`.preDown)
@@ -25,29 +25,27 @@ data class AutoTunnelState(
is NetworkChange,
is SettingsChange -> {
// Compute desired tunnel based on network conditions
var desiredTunnel: TunnelConfig? = null
if (networkState.isEthernetConnected && settings.isTunnelOnEthernetEnabled) {
desiredTunnel = preferredEthernetTunnel()
} else if (isMobileDataActive() && settings.isTunnelOnMobileDataEnabled) {
desiredTunnel = preferredMobileDataTunnel()
} else if (
isWifiActive() && settings.isTunnelOnWifiEnabled && !isCurrentSSIDTrusted()
) {
desiredTunnel = preferredWifiTunnel()
var preferredTunnel: TunnelConfig? = null
if (ethernetActive && settings.isTunnelOnEthernetEnabled) {
preferredTunnel = preferredEthernetTunnel()
} else if (mobileDataActive && settings.isTunnelOnMobileDataEnabled) {
preferredTunnel = preferredMobileDataTunnel()
} else if (wifiActive && settings.isTunnelOnWifiEnabled && !isWifiTrusted()) {
preferredTunnel = preferredWifiTunnel()
}
// Override for no connectivity if enabled
if (isNoConnectivity() && settings.isStopOnNoInternetEnabled) {
desiredTunnel = null
if (!networkState.hasInternet() && settings.isStopOnNoInternetEnabled) {
preferredTunnel = null
}
// Determine current active tunnel (assuming only one can be active)
val currentTunnel = activeTunnels.entries.firstOrNull()?.key
// Handle tunnel start/stop/change
if (desiredTunnel != null) {
if (currentTunnel != desiredTunnel.id) {
return Start(desiredTunnel)
if (preferredTunnel != null) {
if (currentTunnel != preferredTunnel.id) {
return Start(preferredTunnel)
}
} else {
if (currentTunnel != null) {
@@ -61,12 +59,9 @@ data class AutoTunnelState(
return DoNothing
}
// also need to check for Wi-Fi state as there is some overlap when they are both connected
private fun isMobileDataActive(): Boolean {
return !networkState.isEthernetConnected &&
!networkState.isWifiConnected &&
networkState.isMobileDataConnected
}
private val ethernetActive: Boolean = networkState.activeNetwork is ActiveNetwork.Ethernet
private val mobileDataActive: Boolean = networkState.activeNetwork is ActiveNetwork.Cellular
private val wifiActive: Boolean = networkState.activeNetwork is ActiveNetwork.Wifi
private fun preferredMobileDataTunnel(): TunnelConfig? {
return tunnels.firstOrNull { it.isMobileDataTunnel }
@@ -81,27 +76,21 @@ data class AutoTunnelState(
}
private fun preferredWifiTunnel(): TunnelConfig? {
return getTunnelWithMatchingTunnelNetwork()
return getTunnelWithMappedNetwork()
?: tunnels.firstOrNull { it.isPrimaryTunnel }
?: tunnels.firstOrNull()
}
// ignore cellular state as there is overlap where it may still be active, but not prioritized
private fun isWifiActive(): Boolean {
return !networkState.isEthernetConnected && networkState.isWifiConnected
private fun isWifiTrusted(): Boolean {
return with(networkState.activeNetwork) {
this is ActiveNetwork.Wifi && isTrustedNetwork(this.ssid)
}
}
private fun isNoConnectivity(): Boolean {
return !networkState.isEthernetConnected &&
!networkState.isWifiConnected &&
!networkState.isMobileDataConnected
}
private fun isTrustedNetwork(ssid: String): Boolean =
hasMatch(ssid, settings.trustedNetworkSSIDs)
private fun isCurrentSSIDTrusted(): Boolean {
return networkState.wifiName?.let { hasTrustedWifiName(it) } == true
}
private fun hasTrustedWifiName(
private fun hasMatch(
wifiName: String,
wifiNames: Set<String> = settings.trustedNetworkSSIDs,
): Boolean {
@@ -112,9 +101,10 @@ data class AutoTunnelState(
}
}
private fun getTunnelWithMatchingTunnelNetwork(): TunnelConfig? {
return networkState.wifiName?.let { wifiName ->
tunnels.firstOrNull { hasTrustedWifiName(wifiName, it.tunnelNetworks) }
private fun getTunnelWithMappedNetwork(): TunnelConfig? =
when (val network = networkState.activeNetwork) {
is ActiveNetwork.Wifi ->
tunnels.firstOrNull { hasMatch(network.ssid, it.tunnelNetworks) }
else -> null
}
}
}
@@ -1,9 +0,0 @@
package com.zaneschepke.wireguardautotunnel.domain.state
data class ConnectivityState(
val wifiAvailable: Boolean,
val ethernetAvailable: Boolean,
val cellularAvailable: Boolean,
) {
val allOffline = !wifiAvailable && !ethernetAvailable && !cellularAvailable
}
@@ -1,38 +1,48 @@
package com.zaneschepke.wireguardautotunnel.domain.state
import com.zaneschepke.networkmonitor.ActiveNetwork as MonitorActiveNetwork
import com.zaneschepke.networkmonitor.ConnectivityState
import com.zaneschepke.networkmonitor.util.WifiSecurityType
data class NetworkState(
val isWifiConnected: Boolean = false,
val isMobileDataConnected: Boolean = false,
val isEthernetConnected: Boolean = false,
val wifiName: String? = null,
val isWifiSecure: Boolean? = null,
val locationServicesEnabled: Boolean? = null,
val locationPermissionGranted: Boolean? = null,
) {
fun hasNoCapabilities(): Boolean {
return !isWifiConnected && !isMobileDataConnected && !isEthernetConnected
}
sealed class ActiveNetwork {
data object Disconnected : ActiveNetwork()
companion object {
fun from(connectivityState: ConnectivityState): NetworkState {
return NetworkState(
isWifiSecure =
when (connectivityState.wifiState.securityType) {
data object Ethernet : ActiveNetwork()
data object Cellular : ActiveNetwork()
data class Wifi(val ssid: String, val isSecure: Boolean?) : ActiveNetwork()
}
data class NetworkState(
val activeNetwork: ActiveNetwork = ActiveNetwork.Disconnected,
val locationServicesEnabled: Boolean = false,
val locationPermissionGranted: Boolean = false,
) {
fun hasInternet(): Boolean = activeNetwork !is ActiveNetwork.Disconnected
}
fun ConnectivityState.toDomain(): NetworkState {
val domainNetwork: ActiveNetwork =
when (val network = this.activeNetwork) {
is MonitorActiveNetwork.Wifi -> {
val isSecure =
when (network.securityType) {
WifiSecurityType.OPEN,
WifiSecurityType.UNKNOWN -> false
null -> null
else -> true
},
isWifiConnected = connectivityState.wifiState.connected,
isMobileDataConnected = connectivityState.cellularConnected,
isEthernetConnected = connectivityState.ethernetConnected,
wifiName = connectivityState.wifiState.ssid,
locationPermissionGranted = connectivityState.wifiState.locationPermissionsGranted,
locationServicesEnabled = connectivityState.wifiState.locationServicesEnabled,
)
}
ActiveNetwork.Wifi(ssid = network.ssid, isSecure = isSecure)
}
is MonitorActiveNetwork.Cellular -> ActiveNetwork.Cellular
is MonitorActiveNetwork.Ethernet -> ActiveNetwork.Ethernet
is MonitorActiveNetwork.Disconnected -> ActiveNetwork.Disconnected
}
}
return NetworkState(
activeNetwork = domainNetwork,
locationPermissionGranted = this.locationPermissionsGranted,
locationServicesEnabled = this.locationServicesEnabled,
)
}
@@ -12,6 +12,8 @@ data class TunnelState(
) {
fun health(): Health {
if (status !is TunnelStatus.Up) return Health.UNKNOWN
val uptime = uptime()
val now = System.currentTimeMillis()
if (pingStates == null && logHealthState == null && statistics == null)
@@ -37,13 +39,21 @@ data class TunnelState(
// Stats health if no logs or pings
statistics?.let { stats ->
if (stats.isTunnelStale()) return Health.STALE
if (stats.rx() == 0L) return Health.UNKNOWN
val rx = stats.rx()
if (uptime >= STATS_HEALTH_SUCCESS_TIMEOUT_MS && rx == 0L) return Health.UNHEALTHY
if (rx == 0L) return Health.UNKNOWN
return Health.HEALTHY
}
return Health.UNKNOWN
}
fun uptime(): Long {
val up = status as? TunnelStatus.Up ?: return 0L
if (up.startTime == 0L) return 0L
return System.currentTimeMillis() - up.startTime
}
enum class Health {
UNKNOWN,
UNHEALTHY,
@@ -53,5 +63,6 @@ data class TunnelState(
companion object {
const val LOG_HEALTH_SUCCESS_TIMEOUT_MS = 2 * 60 * 1000L // 2 minutes
const val STATS_HEALTH_SUCCESS_TIMEOUT_MS = 15 * 1000L // 15 sec
}
}
@@ -1,11 +1,10 @@
package com.zaneschepke.wireguardautotunnel.ui.common.label
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import java.util.*
import androidx.compose.ui.text.intl.Locale
@Composable
fun lowercaseLabel(text: String): String {
val locale = remember { Locale.getDefault() }
val locale = Locale.current.platformLocale
return text.lowercase(locale)
}
@@ -1,8 +1,6 @@
package com.zaneschepke.wireguardautotunnel.ui.common.snackbar
import android.R.attr.padding
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Favorite
@@ -12,6 +12,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardCapitalization
import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
@Composable
@@ -50,6 +51,8 @@ fun ConfigurationTextBox(
label,
color = MaterialTheme.colorScheme.onSurface,
style = MaterialTheme.typography.labelMedium,
overflow = TextOverflow.Ellipsis,
maxLines = 1,
)
},
containerColor = MaterialTheme.colorScheme.surface,
@@ -58,6 +61,8 @@ fun ConfigurationTextBox(
hint,
style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.outline,
overflow = TextOverflow.Ellipsis,
maxLines = 1,
)
},
keyboardOptions = keyboardOptions,
@@ -22,24 +22,14 @@ class NavController(
return false
}
fun popUpTo(route: NavKey, inclusive: Boolean = false) {
fun popUpTo(route: NavKey) {
onChange(currentRoute)
val targetRoute =
if (route is Route.AutoTunnel && !isDisclosureShown) Route.LocationDisclosure else route
val index = backStack.indexOfLast { it == targetRoute }
if (index != -1) {
val popUpToIndex = if (inclusive) index else index + 1
while (backStack.size > popUpToIndex) {
backStack.removeLastOrNull()
}
} else {
// Only add if it's not already the top
if (backStack.lastOrNull() != targetRoute) {
backStack.add(targetRoute)
}
}
backStack.clear()
if (route is Route.Tunnels) backStack.add(targetRoute)
else backStack.addAll(setOf(Route.Tunnels, targetRoute))
}
val currentRoute: NavKey?
@@ -5,6 +5,7 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.rounded.ArrowBack
import androidx.compose.material.icons.automirrored.rounded.Sort
import androidx.compose.material.icons.outlined.ContentPasteGo
import androidx.compose.material.icons.outlined.CopyAll
import androidx.compose.material.icons.rounded.*
import androidx.compose.material3.Icon
@@ -279,12 +280,26 @@ fun currentRouteAsNavbarState(
},
topTitle = tunnelName ?: "",
topTrailing = {
IconButton(
onClick = {
sharedViewModel.postSideEffect(LocalSideEffect.SaveChanges)
Row {
IconButton(
onClick = {
sharedViewModel.postSideEffect(
LocalSideEffect.Modal.SelectTunnel
)
}
) {
Icon(
Icons.Outlined.ContentPasteGo,
stringResource(R.string.copy_from),
)
}
IconButton(
onClick = {
sharedViewModel.postSideEffect(LocalSideEffect.SaveChanges)
}
) {
Icon(Icons.Rounded.Save, stringResource(R.string.save))
}
) {
Icon(Icons.Rounded.Save, stringResource(R.string.save))
}
},
showBottomItems = true,
@@ -36,8 +36,8 @@ import androidx.core.net.toUri
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import com.zaneschepke.networkmonitor.ActiveNetwork
import com.zaneschepke.wireguardautotunnel.R
import com.zaneschepke.wireguardautotunnel.domain.enums.NetworkType
import com.zaneschepke.wireguardautotunnel.ui.LocalNavController
import com.zaneschepke.wireguardautotunnel.ui.LocalSharedVm
import com.zaneschepke.wireguardautotunnel.ui.common.button.SurfaceRow
@@ -59,9 +59,9 @@ fun AutoTunnelScreen(viewModel: AutoTunnelViewModel = hiltViewModel()) {
val clipboard = rememberClipboardHelper()
val sharedUiState by shareViewModel.container.stateFlow.collectAsStateWithLifecycle()
val autoTunnelState by viewModel.container.stateFlow.collectAsStateWithLifecycle()
val uiState by viewModel.container.stateFlow.collectAsStateWithLifecycle()
if (autoTunnelState.isLoading) return
if (uiState.isLoading) return
val batteryActivity =
rememberLauncherForActivityResult(ActivityResultContracts.StartActivityForResult()) {
@@ -79,11 +79,11 @@ fun AutoTunnelScreen(viewModel: AutoTunnelViewModel = hiltViewModel()) {
}
val (ethernetTunnel, mobileDataTunnel, mappedTunnels) =
remember(autoTunnelState.tunnels) {
remember(uiState.tunnels) {
Triple(
autoTunnelState.tunnels.firstOrNull { it.isEthernetTunnel },
autoTunnelState.tunnels.firstOrNull { it.isMobileDataTunnel },
autoTunnelState.tunnels.any { it.tunnelNetworks.isNotEmpty() },
uiState.tunnels.firstOrNull { it.isEthernetTunnel },
uiState.tunnels.firstOrNull { it.isMobileDataTunnel },
uiState.tunnels.any { it.tunnelNetworks.isNotEmpty() },
)
}
@@ -94,8 +94,8 @@ fun AutoTunnelScreen(viewModel: AutoTunnelViewModel = hiltViewModel()) {
) {
Column {
val (title, buttonText, icon) =
remember(autoTunnelState.autoTunnelActive) {
when (autoTunnelState.autoTunnelActive) {
remember(uiState.autoTunnelActive) {
when (uiState.autoTunnelActive) {
true ->
Triple(
context.getString(R.string.auto_tunnel_running),
@@ -140,35 +140,20 @@ fun AutoTunnelScreen(viewModel: AutoTunnelViewModel = hiltViewModel()) {
stringResource(R.string.networks),
modifier = Modifier.padding(horizontal = 16.dp),
)
val activeNetworkType by
remember(autoTunnelState.connectivityState) {
val localizedNetworkType by
remember(uiState.connectivityState) {
derivedStateOf {
val connectivity = autoTunnelState.connectivityState
when {
connectivity?.ethernetConnected == true -> NetworkType.ETHERNET
connectivity?.wifiState?.connected == true -> NetworkType.WIFI
connectivity?.cellularConnected == true -> NetworkType.MOBILE_DATA
else -> NetworkType.NONE
when (uiState.connectivityState?.activeNetwork) {
is ActiveNetwork.Wifi -> context.getString(R.string.wifi)
is ActiveNetwork.Ethernet -> context.getString(R.string.ethernet)
is ActiveNetwork.Cellular -> context.getString(R.string.mobile_data)
is ActiveNetwork.Disconnected -> context.getString(R.string.no_network)
null -> context.getString(R.string.no_network)
}
}
}
val localizedNetworkType =
when (activeNetworkType) {
NetworkType.WIFI -> stringResource(R.string.wifi)
NetworkType.ETHERNET -> stringResource(R.string.ethernet)
NetworkType.MOBILE_DATA -> stringResource(R.string.mobile_data)
NetworkType.NONE -> stringResource(R.string.no_network)
}
val ssid by
remember(autoTunnelState.connectivityState) {
derivedStateOf {
autoTunnelState.connectivityState?.wifiState?.ssid
?: context.getString(R.string.unknown)
}
}
SurfaceRow(
leading = {
Icon(ImageVector.vectorResource(R.drawable.globe), contentDescription = null)
@@ -181,7 +166,7 @@ fun AutoTunnelScreen(viewModel: AutoTunnelViewModel = hiltViewModel()) {
}
},
description =
if (activeNetworkType == NetworkType.WIFI) {
(uiState.connectivityState?.activeNetwork as? ActiveNetwork.Wifi)?.let {
{
Column {
DescriptionText(
@@ -189,10 +174,8 @@ fun AutoTunnelScreen(viewModel: AutoTunnelViewModel = hiltViewModel()) {
append(stringResource(R.string.security_type))
withStyle(style = SpanStyle(fontWeight = FontWeight.Bold)) {
append(
autoTunnelState.connectivityState
?.wifiState
?.securityType
?.name ?: stringResource(R.string.unknown)
it.securityType?.name
?: stringResource(R.string.unknown)
)
}
}
@@ -201,21 +184,24 @@ fun AutoTunnelScreen(viewModel: AutoTunnelViewModel = hiltViewModel()) {
buildAnnotatedString {
append(stringResource(R.string.network_name))
withStyle(style = SpanStyle(fontWeight = FontWeight.Bold)) {
append(ssid)
append(it.ssid)
}
}
)
}
}
} else null,
},
trailing =
if (activeNetworkType == NetworkType.WIFI) {
if (uiState.connectivityState?.activeNetwork is ActiveNetwork.Wifi) {
{ Icon(Icons.Outlined.ContentCopy, contentDescription = null) }
} else null,
onClick =
if (activeNetworkType == NetworkType.WIFI) {
{ clipboard.copy(ssid, context.getString(R.string.wifi)) }
} else null,
onClick = {
when (val network = uiState.connectivityState?.activeNetwork) {
is ActiveNetwork.Wifi ->
clipboard.copy(network.ssid, context.getString(R.string.wifi))
else -> Unit
}
},
)
SurfaceRow(
@@ -223,7 +209,7 @@ fun AutoTunnelScreen(viewModel: AutoTunnelViewModel = hiltViewModel()) {
title = stringResource(R.string.tunnel_on_wifi),
trailing = { modifier ->
SwitchWithDivider(
checked = autoTunnelState.autoTunnelSettings.isTunnelOnWifiEnabled,
checked = uiState.autoTunnelSettings.isTunnelOnWifiEnabled,
onClick = { viewModel.setAutoTunnelOnWifiEnabled(it) },
modifier = modifier,
)
@@ -248,7 +234,7 @@ fun AutoTunnelScreen(viewModel: AutoTunnelViewModel = hiltViewModel()) {
title = stringResource(R.string.tunnel_mobile_data),
trailing = { modifier ->
SwitchWithDivider(
checked = autoTunnelState.autoTunnelSettings.isTunnelOnMobileDataEnabled,
checked = uiState.autoTunnelSettings.isTunnelOnMobileDataEnabled,
onClick = { viewModel.setTunnelOnCellular(it) },
modifier = modifier,
)
@@ -271,7 +257,7 @@ fun AutoTunnelScreen(viewModel: AutoTunnelViewModel = hiltViewModel()) {
title = stringResource(R.string.tunnel_on_ethernet),
trailing = { modifier ->
SwitchWithDivider(
checked = autoTunnelState.autoTunnelSettings.isTunnelOnEthernetEnabled,
checked = uiState.autoTunnelSettings.isTunnelOnEthernetEnabled,
onClick = { viewModel.setTunnelOnEthernet(it) },
modifier = modifier,
)
@@ -295,13 +281,13 @@ fun AutoTunnelScreen(viewModel: AutoTunnelViewModel = hiltViewModel()) {
description = { DescriptionText(stringResource(R.string.stop_on_internet_loss)) },
trailing = {
ThemedSwitch(
checked = autoTunnelState.autoTunnelSettings.isStopOnNoInternetEnabled,
checked = uiState.autoTunnelSettings.isStopOnNoInternetEnabled,
onClick = { viewModel.setStopOnNoInternetEnabled(it) },
)
},
onClick = {
viewModel.setStopOnNoInternetEnabled(
!autoTunnelState.autoTunnelSettings.isStopOnNoInternetEnabled
!uiState.autoTunnelSettings.isStopOnNoInternetEnabled
)
},
)
@@ -316,13 +302,11 @@ fun AutoTunnelScreen(viewModel: AutoTunnelViewModel = hiltViewModel()) {
title = stringResource(R.string.restart_at_boot),
trailing = {
ThemedSwitch(
checked = autoTunnelState.autoTunnelSettings.startOnBoot,
checked = uiState.autoTunnelSettings.startOnBoot,
onClick = { viewModel.setStartAtBoot(it) },
)
},
onClick = {
viewModel.setStartAtBoot(!autoTunnelState.autoTunnelSettings.startOnBoot)
},
onClick = { viewModel.setStartAtBoot(!uiState.autoTunnelSettings.startOnBoot) },
)
SurfaceRow(
leading = { Icon(Icons.Outlined.Settings, contentDescription = null) },
@@ -47,35 +47,37 @@ fun WifiSettingsScreen(viewModel: AutoTunnelViewModel = hiltViewModel()) {
val context = LocalContext.current
val navController = LocalNavController.current
val autoTunnelState by viewModel.container.stateFlow.collectAsStateWithLifecycle()
val uiState by viewModel.container.stateFlow.collectAsStateWithLifecycle()
if (autoTunnelState.isLoading) return
if (uiState.isLoading) return
var showLocationDialog by remember { mutableStateOf(false) }
var currentText by rememberSaveable { mutableStateOf("") }
LaunchedEffect(autoTunnelState.autoTunnelSettings.trustedNetworkSSIDs) { currentText = "" }
LaunchedEffect(uiState.autoTunnelSettings.trustedNetworkSSIDs) { currentText = "" }
val warnings by
remember(
autoTunnelState.connectivityState?.wifiState,
autoTunnelState.autoTunnelSettings.trustedNetworkSSIDs,
autoTunnelState.autoTunnelSettings.wifiDetectionMethod,
autoTunnelState.tunnels,
uiState.connectivityState,
uiState.autoTunnelSettings.trustedNetworkSSIDs,
uiState.autoTunnelSettings.wifiDetectionMethod,
uiState.tunnels,
) {
derivedStateOf {
val wifiState = autoTunnelState.connectivityState?.wifiState
val needsLocation =
autoTunnelState.autoTunnelSettings.wifiDetectionMethod
.needsLocationPermissions()
uiState.autoTunnelSettings.wifiDetectionMethod.needsLocationPermissions()
val hasConfigs =
autoTunnelState.autoTunnelSettings.trustedNetworkSSIDs.isNotEmpty() ||
autoTunnelState.tunnels.any { it.tunnelNetworks.isNotEmpty() }
uiState.autoTunnelSettings.trustedNetworkSSIDs.isNotEmpty() ||
uiState.tunnels.any { it.tunnelNetworks.isNotEmpty() }
val showServicesWarning =
(wifiState?.locationServicesEnabled == false) && needsLocation && hasConfigs
(uiState.connectivityState?.locationServicesEnabled == false) &&
needsLocation &&
hasConfigs
val showPermissionsWarning =
(wifiState?.locationPermissionsGranted == false) && needsLocation && hasConfigs
(uiState.connectivityState?.locationPermissionsGranted == false) &&
needsLocation &&
hasConfigs
showServicesWarning to showPermissionsWarning
}
@@ -138,9 +140,7 @@ fun WifiSettingsScreen(viewModel: AutoTunnelViewModel = hiltViewModel()) {
DescriptionText(
stringResource(
R.string.current_template,
autoTunnelState.autoTunnelSettings.wifiDetectionMethod.asTitleString(
context
),
uiState.autoTunnelSettings.wifiDetectionMethod.asTitleString(context),
)
)
},
@@ -157,14 +157,12 @@ fun WifiSettingsScreen(viewModel: AutoTunnelViewModel = hiltViewModel()) {
},
trailing = {
ThemedSwitch(
checked = autoTunnelState.autoTunnelSettings.isWildcardsEnabled,
checked = uiState.autoTunnelSettings.isWildcardsEnabled,
onClick = { viewModel.setWildcardsEnabled(it) },
)
},
onClick = {
viewModel.setWildcardsEnabled(
!autoTunnelState.autoTunnelSettings.isWildcardsEnabled
)
viewModel.setWildcardsEnabled(!uiState.autoTunnelSettings.isWildcardsEnabled)
},
)
}
@@ -174,14 +172,13 @@ fun WifiSettingsScreen(viewModel: AutoTunnelViewModel = hiltViewModel()) {
title = stringResource(R.string.trusted_wifi_names),
expandedContent = {
TrustedNetworkTextBox(
autoTunnelState.autoTunnelSettings.trustedNetworkSSIDs,
uiState.autoTunnelSettings.trustedNetworkSSIDs,
onDelete = { viewModel.removeTrustedNetworkName(it) },
currentText = currentText,
onSave = { ssid -> viewModel.saveTrustedNetworkName(ssid) },
onValueChange = { currentText = it },
supporting = {
if (autoTunnelState.autoTunnelSettings.isWildcardsEnabled)
WildcardsLabel()
if (uiState.autoTunnelSettings.isWildcardsEnabled) WildcardsLabel()
},
modifier = Modifier.padding(top = 4.dp),
)
@@ -21,6 +21,7 @@ import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.text.intl.Locale
import androidx.compose.ui.unit.dp
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -45,7 +46,6 @@ import com.zaneschepke.wireguardautotunnel.util.extensions.asTitleString
import com.zaneschepke.wireguardautotunnel.util.extensions.capitalize
import com.zaneschepke.wireguardautotunnel.util.extensions.showToast
import com.zaneschepke.wireguardautotunnel.viewmodel.SettingsViewModel
import java.util.*
@Composable
fun SettingsScreen(viewModel: SettingsViewModel = hiltViewModel()) {
@@ -53,7 +53,7 @@ fun SettingsScreen(viewModel: SettingsViewModel = hiltViewModel()) {
val navController = LocalNavController.current
val sharedViewModel = LocalSharedVm.current
val locale = remember { Locale.getDefault() }
val locale = Locale.current.platformLocale
val sharedUiState by sharedViewModel.container.stateFlow.collectAsStateWithLifecycle()
val uiState by viewModel.container.stateFlow.collectAsStateWithLifecycle()
@@ -14,13 +14,13 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.intl.Locale
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.zaneschepke.wireguardautotunnel.R
import com.zaneschepke.wireguardautotunnel.ui.LocalSharedVm
import com.zaneschepke.wireguardautotunnel.ui.common.button.SurfaceRow
import com.zaneschepke.wireguardautotunnel.util.LocaleUtil
import java.text.Collator
import java.util.*
@Composable
fun LanguageScreen() {
@@ -28,11 +28,11 @@ fun LanguageScreen() {
val sharedViewModel = LocalSharedVm.current
val appState by sharedViewModel.container.stateFlow.collectAsStateWithLifecycle()
val collator = Collator.getInstance(Locale.getDefault())
val collator = Collator.getInstance(Locale.current.platformLocale)
val locales =
LocaleUtil.supportedLocales.map {
val tag = it.replace("_", "-")
Locale.forLanguageTag(tag)
java.util.Locale.forLanguageTag(tag)
}
val sortedLocales =
@@ -46,7 +46,7 @@ fun LanguageScreen() {
remember(appState.locale, sortedLocales) {
if (appState.locale == LocaleUtil.OPTION_PHONE_LANGUAGE) 0
else {
val selectedLocale = Locale.forLanguageTag(appState.locale)
val selectedLocale = java.util.Locale.forLanguageTag(appState.locale)
sortedLocales.indexOfFirst {
it.toLanguageTag() == selectedLocale.toLanguageTag()
} + 1
@@ -13,13 +13,13 @@ import androidx.compose.material.icons.outlined.Dns
import androidx.compose.material3.Icon
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.text.intl.Locale
import androidx.compose.ui.unit.dp
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -34,7 +34,6 @@ import com.zaneschepke.wireguardautotunnel.ui.common.label.GroupLabel
import com.zaneschepke.wireguardautotunnel.ui.navigation.Route
import com.zaneschepke.wireguardautotunnel.util.extensions.capitalize
import com.zaneschepke.wireguardautotunnel.viewmodel.DnsViewModel
import java.util.*
@Composable
fun DnsSettingsScreen(viewModel: DnsViewModel = hiltViewModel()) {
@@ -43,7 +42,7 @@ fun DnsSettingsScreen(viewModel: DnsViewModel = hiltViewModel()) {
val dnsUiState by viewModel.container.stateFlow.collectAsStateWithLifecycle()
if (dnsUiState.isLoading) return
val locale = remember { Locale.getDefault() }
val locale = Locale.current.platformLocale
Column(
horizontalAlignment = Alignment.Start,
@@ -1,5 +1,6 @@
package com.zaneschepke.wireguardautotunnel.ui.screens.settings.lockdown
import android.os.Build
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
@@ -103,12 +104,14 @@ fun LockdownSettingsScreen(viewModel: LockdownViewModel = hiltViewModel()) {
trailing = { ThemedSwitch(checked = bypassLan, onClick = { bypassLan = it }) },
onClick = { bypassLan = !bypassLan },
)
SurfaceRow(
leading = { Icon(Icons.Outlined.DataUsage, contentDescription = null) },
title = stringResource(R.string.metered_tunnel),
trailing = { ThemedSwitch(checked = metered, onClick = { metered = it }) },
onClick = { metered = !metered },
)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
SurfaceRow(
leading = { Icon(Icons.Outlined.DataUsage, contentDescription = null) },
title = stringResource(R.string.metered_tunnel),
trailing = { ThemedSwitch(checked = metered, onClick = { metered = it }) },
onClick = { metered = !metered },
)
}
SurfaceRow(
leading = {
Icon(ImageVector.vectorResource(R.drawable.host), contentDescription = null)
@@ -19,6 +19,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.text.intl.Locale
import androidx.compose.ui.unit.dp
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -33,7 +34,6 @@ import com.zaneschepke.wireguardautotunnel.ui.common.security.SecureScreenFromRe
import com.zaneschepke.wireguardautotunnel.ui.common.textbox.ConfigurationTextBox
import com.zaneschepke.wireguardautotunnel.ui.sideeffect.LocalSideEffect
import com.zaneschepke.wireguardautotunnel.viewmodel.ProxySettingsViewModel
import java.util.Locale
import org.orbitmvi.orbit.compose.collectSideEffect
@Composable
@@ -44,7 +44,7 @@ fun ProxySettingsScreen(viewModel: ProxySettingsViewModel = hiltViewModel()) {
if (uiState.isLoading) return
val locale = remember { Locale.getDefault() }
val locale = Locale.current.platformLocale
val proxySettings by remember(uiState) { mutableStateOf(uiState.proxySettings) }
@@ -12,9 +12,6 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.viewmodel.compose.viewModel
import com.journeyapps.barcodescanner.ScanContract
import com.journeyapps.barcodescanner.ScanOptions
import com.zaneschepke.wireguardautotunnel.R
import com.zaneschepke.wireguardautotunnel.ui.LocalNavController
import com.zaneschepke.wireguardautotunnel.ui.LocalSharedVm
@@ -29,7 +26,10 @@ import com.zaneschepke.wireguardautotunnel.ui.screens.tunnels.components.UrlImpo
import com.zaneschepke.wireguardautotunnel.ui.sideeffect.LocalSideEffect
import com.zaneschepke.wireguardautotunnel.util.FileUtils
import com.zaneschepke.wireguardautotunnel.util.StringValue
import io.github.g00fy2.quickie.QRResult
import io.github.g00fy2.quickie.ScanQRCode
import org.orbitmvi.orbit.compose.collectSideEffect
import timber.log.Timber
@Composable
fun TunnelsScreen() {
@@ -65,14 +65,26 @@ fun TunnelsScreen() {
onData = { data -> viewModel.importFromUri(data) },
)
val scanLauncher =
rememberLauncherForActivityResult(
contract = ScanContract(),
onResult = { result ->
if (result != null && result.contents.isNotEmpty())
viewModel.importFromQr(result.contents)
},
)
val scanQrCodeLauncher =
rememberLauncherForActivityResult(ScanQRCode()) { result ->
when (result) {
is QRResult.QRError -> {
Timber.e(result.exception, "QR Code")
}
QRResult.QRMissingPermission -> {
viewModel.showSnackMessage(
StringValue.StringResource(R.string.camera_permission_required)
)
}
is QRResult.QRSuccess -> {
result.content.rawValue?.let { viewModel.importFromQr(it) }
?: viewModel.showSnackMessage(
StringValue.StringResource(R.string.config_error)
)
}
QRResult.QRUserCanceled -> Unit
}
}
val requestPermissionLauncher =
rememberLauncherForActivityResult(ActivityResultContracts.RequestPermission()) { isGranted
@@ -83,9 +95,7 @@ fun TunnelsScreen() {
)
return@rememberLauncherForActivityResult
}
scanLauncher.launch(
ScanOptions().setDesiredBarcodeFormats(ScanOptions.QR_CODE).setBeepEnabled(false)
)
scanQrCodeLauncher.launch(null)
}
if (showDeleteModal) {
@@ -17,11 +17,11 @@ import androidx.compose.ui.unit.dp
import com.zaneschepke.wireguardautotunnel.R
@Composable
fun GettingStartedLabel(onClick: (url: String) -> Unit) {
fun GettingStartedLabel(onClick: (url: String) -> Unit, modifier: Modifier = Modifier) {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
modifier = Modifier.padding(top = 100.dp).fillMaxSize(),
modifier = modifier.padding(top = 100.dp).fillMaxSize(),
) {
val url = stringResource(id = R.string.docs_url)
val gettingStarted = buildAnnotatedString {
@@ -59,7 +59,12 @@ fun TunnelList(
flingBehavior = ScrollableDefaults.flingBehavior(),
) {
if (sharedState.tunnels.isEmpty()) {
item { GettingStartedLabel(onClick = { context.openWebUrl(it) }) }
item {
GettingStartedLabel(
onClick = { context.openWebUrl(it) },
modifier = Modifier.animateItem(),
)
}
}
items(sharedState.tunnels, key = { it.id }) { tunnel ->
val tunnelState =
@@ -81,6 +86,7 @@ fun TunnelList(
}
SurfaceRow(
modifier = Modifier.animateItem(),
leading = {
Icon(
Icons.Rounded.Circle,
@@ -14,13 +14,15 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.intl.Locale
import androidx.compose.ui.unit.dp
import com.zaneschepke.wireguardautotunnel.R
import com.zaneschepke.wireguardautotunnel.domain.model.TunnelConfig
import com.zaneschepke.wireguardautotunnel.domain.state.TunnelState
import com.zaneschepke.wireguardautotunnel.ui.common.label.lowercaseLabel
import com.zaneschepke.wireguardautotunnel.util.NumberUtils
import com.zaneschepke.wireguardautotunnel.util.extensions.abbreviateKey
import com.zaneschepke.wireguardautotunnel.util.extensions.localizedDuration
import com.zaneschepke.wireguardautotunnel.util.extensions.millisAgo
import kotlinx.coroutines.delay
@Composable
@@ -33,6 +35,7 @@ fun TunnelStatisticsRow(
val context = LocalContext.current
val textStyle = MaterialTheme.typography.bodySmall
val textColor = MaterialTheme.colorScheme.outline
val locale = Locale.current.platformLocale
// needs to be set as peer stats for duplicates return as a single set of stats
val peers by
@@ -65,6 +68,19 @@ fun TunnelStatisticsRow(
verticalArrangement = Arrangement.spacedBy(10.dp),
horizontalAlignment = Alignment.Start,
) {
Column(verticalArrangement = Arrangement.spacedBy(4.dp)) {
Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(16.dp),
) {
Text(
"uptime: ${tunnelState.uptime().localizedDuration(locale)}",
style = textStyle,
color = textColor,
)
}
}
peers.forEach { peerBase64 ->
key(peerBase64) {
val peerStats = remember(stats, peerBase64) { stats.peerStats(peerBase64) }
@@ -88,11 +104,7 @@ fun TunnelStatisticsRow(
derivedStateOf {
stats.latestHandshakeEpochMillis.let { lastHandshake ->
if (lastHandshake == 0L) null
else
NumberUtils.getSecondsBetween(
lastHandshake,
currentTimeMillis,
)
else lastHandshake.millisAgo().localizedDuration(locale)
}
}
}
@@ -105,9 +117,10 @@ fun TunnelStatisticsRow(
val lastPingedSeconds by
remember(pingState, currentTimeMillis) {
derivedStateOf {
pingState?.lastSuccessfulPingMillis?.let { lastPing ->
NumberUtils.getSecondsBetween(lastPing, currentTimeMillis)
}
pingState
?.lastSuccessfulPingMillis
?.millisAgo()
?.localizedDuration(locale)
}
}
@@ -156,7 +169,7 @@ fun TunnelStatisticsRow(
horizontalArrangement = Arrangement.spacedBy(16.dp),
) {
Text(
"$handshakeText: ${handshake?.let { lowercaseLabel(stringResource(R.string.sec_ago_template, it.toString())) } ?: neverText}",
"$handshakeText: ${handshake?.let { lowercaseLabel(it) } ?: neverText}",
style = textStyle,
color = textColor,
)
@@ -219,12 +232,7 @@ fun TunnelStatisticsRow(
stringResource(
R.string.ping_success_template,
lastPingedSeconds?.let { sec ->
lowercaseLabel(
stringResource(
R.string.sec_ago_template,
sec.toString(),
)
)
lowercaseLabel(sec)
} ?: neverText,
)
)
@@ -1,42 +1,47 @@
package com.zaneschepke.wireguardautotunnel.ui.screens.tunnels.components
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.zaneschepke.wireguardautotunnel.R
import com.zaneschepke.wireguardautotunnel.ui.common.dialog.InfoDialog
import com.zaneschepke.wireguardautotunnel.ui.common.textbox.ConfigurationTextBox
@Composable
fun UrlImportDialog(onDismiss: () -> Unit, onConfirm: (String) -> Unit) {
var url by remember { mutableStateOf("") }
var isError by remember { mutableStateOf(false) }
AlertDialog(
onDismissRequest = onDismiss,
title = { Text(stringResource(R.string.add_from_url)) },
text = {
Column(modifier = Modifier.fillMaxWidth().padding(vertical = 8.dp)) {
OutlinedTextField(
LaunchedEffect(url) { isError = false }
InfoDialog(
onDismiss = onDismiss,
title = stringResource(R.string.add_from_url),
body = {
Column(verticalArrangement = Arrangement.spacedBy(24.dp)) {
Text(
stringResource(R.string.import_url_description),
style = MaterialTheme.typography.bodyMedium,
color = MaterialTheme.colorScheme.onSurface,
)
ConfigurationTextBox(
value = url,
label = stringResource(R.string.enter_config_url),
hint = stringResource(R.string.example_import_url),
onValueChange = { url = it },
label = { Text(stringResource(R.string.enter_config_url)) },
modifier = Modifier.fillMaxWidth(),
isError = isError,
)
}
},
confirmButton = {
TextButton(onClick = { onConfirm(url) }, enabled = url.isNotBlank()) {
Text(stringResource(R.string.okay))
}
},
dismissButton = {
TextButton(onClick = onDismiss) { Text(stringResource(R.string.cancel)) }
confirmText = stringResource(R.string.okay),
onAttest = {
if (url.isNotBlank() && url.startsWith("https://")) {
onConfirm(url)
} else isError = true
},
)
}
@@ -11,6 +11,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.intl.Locale
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.zaneschepke.wireguardautotunnel.R
@@ -25,7 +26,6 @@ import com.zaneschepke.wireguardautotunnel.ui.sideeffect.LocalSideEffect
import com.zaneschepke.wireguardautotunnel.ui.state.ConfigProxy
import com.zaneschepke.wireguardautotunnel.ui.state.PeerProxy
import com.zaneschepke.wireguardautotunnel.viewmodel.ConfigViewModel
import java.util.Locale
import org.orbitmvi.orbit.compose.collectSideEffect
@Composable
@@ -36,7 +36,7 @@ fun ConfigScreen(viewModel: ConfigViewModel) {
if (uiState.isLoading) return
val locale = remember { Locale.getDefault() }
val locale = Locale.current.platformLocale
var configProxy by remember {
mutableStateOf(uiState.tunnel?.let { ConfigProxy.from(it.toAmConfig()) } ?: ConfigProxy())
@@ -17,6 +17,7 @@ import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.text.intl.Locale
import androidx.compose.ui.unit.dp
import com.wireguard.crypto.KeyPair
import com.zaneschepke.wireguardautotunnel.R
@@ -24,7 +25,6 @@ import com.zaneschepke.wireguardautotunnel.ui.LocalIsAndroidTV
import com.zaneschepke.wireguardautotunnel.ui.common.functions.rememberClipboardHelper
import com.zaneschepke.wireguardautotunnel.ui.common.textbox.ConfigurationTextBox
import com.zaneschepke.wireguardautotunnel.ui.state.InterfaceProxy
import java.util.*
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@@ -36,12 +36,12 @@ fun InterfaceFields(
onInterfaceChange: (InterfaceProxy) -> Unit,
showKey: Boolean,
) {
val locale = Locale.current.platformLocale
val keyboardController = LocalSoftwareKeyboardController.current
val isTv = LocalIsAndroidTV.current
val clipboardManager = rememberClipboardHelper()
val keyboardActions = KeyboardActions(onDone = { keyboardController?.hide() })
val keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done)
val locale = Locale.getDefault()
var showPrivateKey by rememberSaveable { mutableStateOf(false) }
LaunchedEffect(showKey) { showPrivateKey = showKey }
@@ -52,7 +52,7 @@ fun InterfaceFields(
value = interfaceState.privateKey,
hint =
stringResource(R.string.hint_template, stringResource(R.string.base64_key))
.lowercase(Locale.getDefault()),
.lowercase(locale),
onValueChange = { onInterfaceChange(interfaceState.copy(privateKey = it)) },
label = stringResource(R.string.private_key),
modifier = Modifier.fillMaxWidth(),
@@ -107,7 +107,7 @@ fun InterfaceFields(
value = interfaceState.publicKey,
hint =
stringResource(R.string.hint_template, stringResource(R.string.base64_key))
.lowercase(Locale.getDefault()),
.lowercase(locale),
onValueChange = { onInterfaceChange(interfaceState.copy(publicKey = it)) },
label = stringResource(R.string.public_key),
enabled = false,
@@ -115,7 +115,7 @@ fun InterfaceFields(
singleLine = true,
trailing =
if (!isTv) {
{ modifier ->
{ _ ->
IconButton(
onClick = { clipboardManager.copy(interfaceState.publicKey) }
) {
@@ -138,9 +138,9 @@ fun InterfaceFields(
hint =
stringResource(
R.string.hint_template,
stringResource(R.string.comma_separated).lowercase(locale),
stringResource(R.string.comma_separated).lowercase(),
)
.lowercase(Locale.getDefault()),
.lowercase(locale),
modifier = Modifier.fillMaxWidth(),
)
if (!isGlobalConfig)
@@ -225,7 +225,13 @@ fun InterfaceFields(
ConfigurationTextBox(
value = interfaceState.junkPacketCount,
onValueChange = { onInterfaceChange(interfaceState.copy(junkPacketCount = it)) },
label = stringResource(R.string.junk_packet_count),
label =
stringResource(R.string.jc) +
" " +
stringResource(
R.string.hint_template,
stringResource(R.string.junk_packet_count).lowercase(locale),
),
hint = stringResource(R.string.range_hint, 1, 128),
modifier = Modifier.fillMaxWidth(),
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
@@ -233,7 +239,13 @@ fun InterfaceFields(
ConfigurationTextBox(
value = interfaceState.junkPacketMinSize,
onValueChange = { onInterfaceChange(interfaceState.copy(junkPacketMinSize = it)) },
label = stringResource(R.string.junk_packet_minimum_size),
label =
stringResource(R.string.jmin) +
" " +
stringResource(
R.string.hint_template,
stringResource(R.string.junk_packet_minimum_size).lowercase(locale),
),
hint = stringResource(R.string.range_hint, 1, 1279),
modifier = Modifier.fillMaxWidth(),
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
@@ -241,7 +253,13 @@ fun InterfaceFields(
ConfigurationTextBox(
value = interfaceState.junkPacketMaxSize,
onValueChange = { onInterfaceChange(interfaceState.copy(junkPacketMaxSize = it)) },
label = stringResource(R.string.junk_packet_maximum_size),
label =
stringResource(R.string.jmax) +
" " +
stringResource(
R.string.hint_template,
stringResource(R.string.junk_packet_maximum_size).lowercase(locale),
),
hint = stringResource(R.string.range_hint, 2, 1280),
modifier = Modifier.fillMaxWidth(),
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
@@ -249,7 +267,13 @@ fun InterfaceFields(
ConfigurationTextBox(
value = interfaceState.initPacketJunkSize,
onValueChange = { onInterfaceChange(interfaceState.copy(initPacketJunkSize = it)) },
label = stringResource(R.string.init_packet_junk_size),
label =
stringResource(R.string.s1) +
" " +
stringResource(
R.string.hint_template,
stringResource(R.string.init_packet_junk_size).lowercase(locale),
),
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
hint = stringResource(R.string.range_hint, 0, 64),
modifier = Modifier.fillMaxWidth(),
@@ -259,17 +283,61 @@ fun InterfaceFields(
onValueChange = {
onInterfaceChange(interfaceState.copy(responsePacketJunkSize = it))
},
label = stringResource(R.string.response_packet_junk_size),
label =
stringResource(R.string.s2) +
" " +
stringResource(
R.string.hint_template,
stringResource(R.string.response_packet_junk_size).lowercase(locale),
),
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
hint = stringResource(R.string.range_hint, 0, 64),
modifier = Modifier.fillMaxWidth(),
)
ConfigurationTextBox(
value = interfaceState.cookiePacketJunkSize,
onValueChange = {
onInterfaceChange(interfaceState.copy(cookiePacketJunkSize = it))
},
label =
stringResource(R.string.s3) +
" " +
stringResource(
R.string.hint_template,
stringResource(R.string.cookie_packet_junk_size).lowercase(locale),
),
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
hint = stringResource(R.string.range_hint, 0, 928),
modifier = Modifier.fillMaxWidth(),
)
ConfigurationTextBox(
value = interfaceState.transportPacketJunkSize,
onValueChange = {
onInterfaceChange(interfaceState.copy(transportPacketJunkSize = it))
},
label =
stringResource(R.string.s4) +
" " +
stringResource(
R.string.hint_template,
stringResource(R.string.transport_packet_junk_size).lowercase(locale),
),
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
hint = stringResource(R.string.range_hint, 0, 928),
modifier = Modifier.fillMaxWidth(),
)
ConfigurationTextBox(
value = interfaceState.initPacketMagicHeader,
onValueChange = {
onInterfaceChange(interfaceState.copy(initPacketMagicHeader = it))
},
label = stringResource(R.string.init_packet_magic_header),
label =
stringResource(R.string.h1) +
" " +
stringResource(
R.string.hint_template,
stringResource(R.string.init_packet_magic_header).lowercase(locale),
),
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
hint = stringResource(R.string.range_hint, 1, 4),
modifier = Modifier.fillMaxWidth(),
@@ -279,7 +347,13 @@ fun InterfaceFields(
onValueChange = {
onInterfaceChange(interfaceState.copy(responsePacketMagicHeader = it))
},
label = stringResource(R.string.response_packet_magic_header),
label =
stringResource(R.string.h2) +
" " +
stringResource(
R.string.hint_template,
stringResource(R.string.response_packet_magic_header).lowercase(locale),
),
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
hint = stringResource(R.string.range_hint, 1, 4),
modifier = Modifier.fillMaxWidth(),
@@ -289,7 +363,13 @@ fun InterfaceFields(
onValueChange = {
onInterfaceChange(interfaceState.copy(underloadPacketMagicHeader = it))
},
label = stringResource(R.string.underload_packet_magic_header),
label =
stringResource(R.string.h3) +
" " +
stringResource(
R.string.hint_template,
stringResource(R.string.underload_packet_magic_header).lowercase(locale),
),
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
hint = stringResource(R.string.range_hint, 1, 4),
modifier = Modifier.fillMaxWidth(),
@@ -299,7 +379,13 @@ fun InterfaceFields(
onValueChange = {
onInterfaceChange(interfaceState.copy(transportPacketMagicHeader = it))
},
label = stringResource(R.string.transport_packet_magic_header),
label =
stringResource(R.string.h4) +
" " +
stringResource(
R.string.hint_template,
stringResource(R.string.transport_packet_magic_header).lowercase(locale),
),
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
hint = stringResource(R.string.range_hint, 1, 4),
modifier = Modifier.fillMaxWidth(),
@@ -307,71 +393,68 @@ fun InterfaceFields(
ConfigurationTextBox(
value = interfaceState.i1,
onValueChange = { onInterfaceChange(interfaceState.copy(i1 = it)) },
label = "I1",
label =
stringResource(R.string.i1) +
" " +
stringResource(
R.string.hint_template,
stringResource(R.string.special_junk_packet).lowercase(locale),
),
hint = stringResource(R.string.hint_template, "<b 0x1A2B3C>"),
modifier = Modifier.fillMaxWidth(),
)
ConfigurationTextBox(
value = interfaceState.i2,
onValueChange = { onInterfaceChange(interfaceState.copy(i2 = it)) },
label = "I2",
label =
stringResource(R.string.i2) +
" " +
stringResource(
R.string.hint_template,
stringResource(R.string.special_junk_packet).lowercase(locale),
),
hint = stringResource(R.string.hint_template, "<b 0x1A2B3C>"),
modifier = Modifier.fillMaxWidth(),
)
ConfigurationTextBox(
value = interfaceState.i3,
onValueChange = { onInterfaceChange(interfaceState.copy(i3 = it)) },
label = "I3",
label =
stringResource(R.string.i3) +
" " +
stringResource(
R.string.hint_template,
stringResource(R.string.special_junk_packet).lowercase(locale),
),
hint = stringResource(R.string.hint_template, "<b 0x1A2B3C>"),
modifier = Modifier.fillMaxWidth(),
)
ConfigurationTextBox(
value = interfaceState.i4,
onValueChange = { onInterfaceChange(interfaceState.copy(i4 = it)) },
label = "I4",
label =
stringResource(R.string.i4) +
" " +
stringResource(
R.string.hint_template,
stringResource(R.string.special_junk_packet).lowercase(locale),
),
hint = stringResource(R.string.hint_template, "<b 0x1A2B3C>"),
modifier = Modifier.fillMaxWidth(),
)
ConfigurationTextBox(
value = interfaceState.i5,
onValueChange = { onInterfaceChange(interfaceState.copy(i5 = it)) },
label = "I5",
label =
stringResource(R.string.i5) +
" " +
stringResource(
R.string.hint_template,
stringResource(R.string.special_junk_packet).lowercase(locale),
),
hint = stringResource(R.string.hint_template, "<b 0x1A2B3C>"),
modifier = Modifier.fillMaxWidth(),
)
ConfigurationTextBox(
value = interfaceState.j1,
onValueChange = { onInterfaceChange(interfaceState.copy(j1 = it)) },
label = "J1",
hint = stringResource(R.string.hint_template, "<b 0x1A2B3C>"),
modifier = Modifier.fillMaxWidth(),
)
ConfigurationTextBox(
value = interfaceState.j2,
onValueChange = { onInterfaceChange(interfaceState.copy(j2 = it)) },
label = "J2",
hint = stringResource(R.string.hint_template, "<b 0x1A2B3C>"),
modifier = Modifier.fillMaxWidth(),
)
ConfigurationTextBox(
value = interfaceState.j3,
onValueChange = { onInterfaceChange(interfaceState.copy(j3 = it)) },
label = "J3",
hint = stringResource(R.string.hint_template, "<b 0x1A2B3C>"),
modifier = Modifier.fillMaxWidth(),
)
ConfigurationTextBox(
value = interfaceState.itime,
onValueChange = { onInterfaceChange(interfaceState.copy(itime = it)) },
label = "ITime",
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
hint =
stringResource(
R.string.hint_template,
stringResource(R.string.seconds).lowercase(locale),
),
modifier = Modifier.fillMaxWidth(),
)
}
}
}
@@ -13,6 +13,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.intl.Locale
import androidx.compose.ui.unit.dp
import com.wireguard.crypto.KeyPair
import com.zaneschepke.wireguardautotunnel.R
@@ -22,7 +23,6 @@ import com.zaneschepke.wireguardautotunnel.ui.common.text.DescriptionText
import com.zaneschepke.wireguardautotunnel.ui.common.textbox.ConfigurationTextBox
import com.zaneschepke.wireguardautotunnel.ui.state.ConfigProxy
import com.zaneschepke.wireguardautotunnel.ui.state.InterfaceProxy
import java.util.*
@Composable
fun InterfaceSection(
@@ -147,7 +147,7 @@ fun InterfaceSection(
R.string.hint_template,
stringResource(R.string.tunnel_name),
)
.lowercase(Locale.getDefault()),
.lowercase(locale = Locale.current.platformLocale),
modifier = Modifier.fillMaxWidth(),
)
InterfaceFields(
@@ -20,16 +20,17 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.text.input.VisualTransformation
import androidx.compose.ui.text.intl.Locale
import androidx.compose.ui.unit.dp
import com.zaneschepke.wireguardautotunnel.R
import com.zaneschepke.wireguardautotunnel.ui.LocalIsAndroidTV
import com.zaneschepke.wireguardautotunnel.ui.common.textbox.ConfigurationTextBox
import com.zaneschepke.wireguardautotunnel.ui.state.PeerProxy
import java.util.*
@Composable
fun PeerFields(peer: PeerProxy, onPeerChange: (PeerProxy) -> Unit, showKey: Boolean) {
val isTv = LocalIsAndroidTV.current
val locale = Locale.current.platformLocale
val keyboardController = LocalSoftwareKeyboardController.current
val keyboardActions = KeyboardActions(onDone = { keyboardController?.hide() })
val keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done)
@@ -47,7 +48,7 @@ fun PeerFields(peer: PeerProxy, onPeerChange: (PeerProxy) -> Unit, showKey: Bool
label = stringResource(R.string.public_key),
hint =
stringResource(R.string.hint_template, stringResource(R.string.base64_key))
.lowercase(Locale.getDefault()),
.lowercase(locale),
modifier = Modifier.fillMaxWidth(),
)
ConfigurationTextBox(
@@ -81,7 +82,7 @@ fun PeerFields(peer: PeerProxy, onPeerChange: (PeerProxy) -> Unit, showKey: Bool
hint = stringResource(R.string.optional),
trailing = {
Text(
stringResource(R.string.seconds).lowercase(Locale.getDefault()),
stringResource(R.string.seconds).lowercase(locale),
style = MaterialTheme.typography.bodyMedium,
modifier = Modifier.padding(end = 10.dp),
)
@@ -96,7 +97,7 @@ fun PeerFields(peer: PeerProxy, onPeerChange: (PeerProxy) -> Unit, showKey: Bool
label = stringResource(R.string.endpoint),
hint =
stringResource(R.string.hint_template, stringResource(R.string.server_port))
.lowercase(Locale.getDefault()),
.lowercase(locale),
modifier = Modifier.fillMaxWidth(),
)
ConfigurationTextBox(
@@ -105,7 +106,7 @@ fun PeerFields(peer: PeerProxy, onPeerChange: (PeerProxy) -> Unit, showKey: Bool
label = stringResource(R.string.allowed_ips),
hint =
stringResource(R.string.hint_template, stringResource(R.string.comma_separated))
.lowercase(Locale.getDefault()),
.lowercase(locale),
modifier = Modifier.fillMaxWidth(),
keyboardOptions = keyboardOptions,
keyboardActions = keyboardActions,
@@ -1,5 +1,6 @@
package com.zaneschepke.wireguardautotunnel.ui.screens.tunnels.settings
import android.os.Build
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
@@ -148,36 +149,38 @@ fun TunnelSettingsScreen(viewModel: TunnelViewModel) {
},
onClick = { viewModel.setIpv4Preferred(!tunnel.isIpv4Preferred) },
)
SurfaceRow(
leading = {
Icon(
Icons.Outlined.DataUsage,
contentDescription = null,
tint =
if (sharedUiState.proxyEnabled) Disabled
else MaterialTheme.colorScheme.onSurface,
)
},
title = stringResource(R.string.metered_tunnel),
enabled = !sharedUiState.proxyEnabled,
description =
if (sharedUiState.proxyEnabled) {
{
DescriptionText(
stringResource(R.string.unavailable_in_mode),
disabled = true,
)
}
} else null,
trailing = {
ThemedSwitch(
checked = tunnel.isMetered,
onClick = { viewModel.setMetered(it) },
enabled = !sharedUiState.proxyEnabled,
)
},
onClick = { viewModel.setMetered(!tunnel.isMetered) },
)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
SurfaceRow(
leading = {
Icon(
Icons.Outlined.DataUsage,
contentDescription = null,
tint =
if (sharedUiState.proxyEnabled) Disabled
else MaterialTheme.colorScheme.onSurface,
)
},
title = stringResource(R.string.metered_tunnel),
enabled = !sharedUiState.proxyEnabled,
description =
if (sharedUiState.proxyEnabled) {
{
DescriptionText(
stringResource(R.string.unavailable_in_mode),
disabled = true,
)
}
} else null,
trailing = {
ThemedSwitch(
checked = tunnel.isMetered,
onClick = { viewModel.setMetered(it) },
enabled = !sharedUiState.proxyEnabled,
)
},
onClick = { viewModel.setMetered(!tunnel.isMetered) },
)
}
}
}
}
@@ -11,6 +11,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.zaneschepke.wireguardautotunnel.ui.LocalSharedVm
import com.zaneschepke.wireguardautotunnel.ui.screens.tunnels.splittunnel.components.SelectTunnelModal
import com.zaneschepke.wireguardautotunnel.ui.screens.tunnels.splittunnel.components.SplitTunnelContent
import com.zaneschepke.wireguardautotunnel.ui.screens.tunnels.splittunnel.state.SplitOption
import com.zaneschepke.wireguardautotunnel.ui.sideeffect.LocalSideEffect
@@ -21,38 +22,57 @@ import org.orbitmvi.orbit.compose.collectSideEffect
@Composable
fun SplitTunnelScreen(viewModel: SplitTunnelViewModel) {
val sharedViewModel = LocalSharedVm.current
val splitTunnelState by viewModel.container.stateFlow.collectAsStateWithLifecycle()
if (splitTunnelState.isLoading) {
val sharedUiState by sharedViewModel.container.stateFlow.collectAsStateWithLifecycle()
val uiState by viewModel.container.stateFlow.collectAsStateWithLifecycle()
var showDialog by remember { mutableStateOf(false) }
if (uiState.isLoading) {
Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
CircularWavyProgressIndicator(waveSpeed = 60.dp, modifier = Modifier.size(48.dp))
}
return
}
val tunnel = splitTunnelState.tunnel ?: return
val tunnel = uiState.tunnel ?: return
val conf by remember { derivedStateOf { tunnel.toAmConfig() } }
var effectiveTunnel by remember { mutableStateOf(tunnel) }
var splitConfig by remember {
mutableStateOf(
when {
conf.`interface`.excludedApplications.isNotEmpty() ->
Pair(SplitOption.EXCLUDE, conf.`interface`.excludedApplications.toSet())
conf.`interface`.includedApplications.isNotEmpty() ->
Pair(SplitOption.INCLUDE, conf.`interface`.includedApplications.toSet())
else -> Pair(SplitOption.ALL, emptySet<String>())
}
)
}
val conf by remember(effectiveTunnel) { derivedStateOf { effectiveTunnel.toAmConfig() } }
var splitConfig by
remember(conf) {
mutableStateOf(
when {
conf.`interface`.excludedApplications.isNotEmpty() ->
Pair(SplitOption.EXCLUDE, conf.`interface`.excludedApplications.toSet())
conf.`interface`.includedApplications.isNotEmpty() ->
Pair(SplitOption.INCLUDE, conf.`interface`.includedApplications.toSet())
else -> Pair(SplitOption.ALL, emptySet<String>())
}
)
}
sharedViewModel.collectSideEffect { sideEffect ->
if (sideEffect is LocalSideEffect.SaveChanges)
viewModel.saveSplitTunnelSelection(splitConfig)
if (sideEffect is LocalSideEffect.Modal.SelectTunnel) showDialog = true
}
SelectTunnelModal(
showDialog,
sharedUiState.tunnels,
onAttest = { conf ->
if (conf == null) return@SelectTunnelModal
effectiveTunnel = conf
showDialog = false
},
onDismiss = { showDialog = false },
)
SplitTunnelContent(
splitConfig = splitConfig,
installedPackages = splitTunnelState.installedPackages,
installedPackages = uiState.installedPackages,
onSplitOptionChange = { splitConfig = Pair(it, splitConfig.second) },
onAppSelectionToggle = { appPackage, enabled ->
val updated =
@@ -16,12 +16,12 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardCapitalization
import androidx.compose.ui.text.intl.Locale
import androidx.compose.ui.unit.dp
import com.zaneschepke.wireguardautotunnel.R
import com.zaneschepke.wireguardautotunnel.domain.model.InstalledPackage
import com.zaneschepke.wireguardautotunnel.ui.common.textbox.CustomTextField
import com.zaneschepke.wireguardautotunnel.ui.screens.tunnels.splittunnel.state.SplitOption
import java.util.*
@Composable
fun AppListSection(
@@ -31,7 +31,7 @@ fun AppListSection(
) {
var query by remember { mutableStateOf("") }
val locale = remember { Locale.getDefault() }
val locale = Locale.current.platformLocale
val filteredAndSortedPackages by remember {
derivedStateOf {
@@ -0,0 +1,70 @@
package com.zaneschepke.wireguardautotunnel.ui.screens.tunnels.splittunnel.components
import androidx.compose.foundation.gestures.ScrollableDefaults
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.overscroll
import androidx.compose.foundation.rememberOverscrollEffect
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Check
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.res.stringResource
import com.zaneschepke.wireguardautotunnel.R
import com.zaneschepke.wireguardautotunnel.domain.model.TunnelConfig
import com.zaneschepke.wireguardautotunnel.ui.common.button.SurfaceRow
import com.zaneschepke.wireguardautotunnel.ui.common.dialog.InfoDialog
@Composable
fun SelectTunnelModal(
show: Boolean,
tunnels: List<TunnelConfig>,
onAttest: (tunnelConf: TunnelConfig?) -> Unit,
onDismiss: () -> Unit,
) {
var selectedTunnel by remember { mutableStateOf<TunnelConfig?>(null) }
if (show) {
InfoDialog(
title = stringResource(R.string.copy_from),
body = {
LazyColumn(
horizontalAlignment = Alignment.Start,
verticalArrangement = Arrangement.Top,
modifier =
Modifier.pointerInput(Unit) { if (tunnels.isEmpty()) return@pointerInput }
.overscroll(rememberOverscrollEffect()),
state = rememberLazyListState(),
userScrollEnabled = true,
reverseLayout = false,
flingBehavior = ScrollableDefaults.flingBehavior(),
) {
items(tunnels, key = { it.id }) { tunnel ->
SurfaceRow(
title = tunnel.name,
trailing =
if (selectedTunnel?.id == tunnel.id) {
{
Icon(
Icons.Outlined.Check,
stringResource(id = R.string.selected),
tint = MaterialTheme.colorScheme.primary,
)
}
} else null,
onClick = { selectedTunnel = tunnel },
)
}
}
},
onAttest = { onAttest(selectedTunnel) },
onDismiss = { onDismiss() },
confirmText = stringResource(R.string.copy),
)
}
}
@@ -13,14 +13,15 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.intl.Locale
import androidx.compose.ui.unit.dp
import com.zaneschepke.wireguardautotunnel.R
import com.zaneschepke.wireguardautotunnel.ui.screens.tunnels.splittunnel.state.SplitOption
import java.util.*
@Composable
fun SplitOptionSelector(selectedOption: SplitOption, onOptionChange: (SplitOption) -> Unit) {
val context = LocalContext.current
val locale = Locale.current.platformLocale
val inputHeight = 45.dp
MultiChoiceSegmentedButtonRow(
@@ -69,7 +70,7 @@ fun SplitOptionSelector(selectedOption: SplitOption, onOptionChange: (SplitOptio
) {
Text(
entry.text().asString(context).replaceFirstChar {
if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString()
if (it.isLowerCase()) it.titlecase(locale) else it.toString()
},
color = MaterialTheme.colorScheme.onBackground,
style = MaterialTheme.typography.labelMedium,
@@ -3,11 +3,15 @@ package com.zaneschepke.wireguardautotunnel.ui.screens.tunnels.splittunnel.compo
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.zaneschepke.wireguardautotunnel.R
import com.zaneschepke.wireguardautotunnel.domain.model.InstalledPackage
import com.zaneschepke.wireguardautotunnel.ui.common.label.GroupLabel
import com.zaneschepke.wireguardautotunnel.ui.screens.tunnels.splittunnel.state.SplitOption
@Composable
@@ -22,16 +26,28 @@ fun SplitTunnelContent(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.fillMaxSize(),
) {
SplitOptionSelector(
selectedOption = splitConfig.first,
onOptionChange = onSplitOptionChange,
)
if (splitConfig.first != SplitOption.ALL) {
AppListSection(
installedPackages = installedPackages,
onAppSelectionToggle = onAppSelectionToggle,
splitConfig = splitConfig,
Column {
GroupLabel(
stringResource(R.string.mode),
modifier = Modifier.padding(horizontal = 16.dp).padding(bottom = 8.dp),
)
SplitOptionSelector(
selectedOption = splitConfig.first,
onOptionChange = onSplitOptionChange,
)
}
if (splitConfig.first != SplitOption.ALL) {
Column {
GroupLabel(
stringResource(R.string.app_selection),
modifier = Modifier.padding(16.dp).padding(bottom = 8.dp),
)
AppListSection(
installedPackages = installedPackages,
onAppSelectionToggle = onAppSelectionToggle,
splitConfig = splitConfig,
)
}
}
}
}
@@ -19,7 +19,7 @@ sealed class LocalSideEffect {
data object DeleteTunnels : Modal()
data object AddCustomApp : Modal()
data object SelectTunnel : Modal()
}
sealed class SelectedTunnels : LocalSideEffect() {
@@ -5,6 +5,7 @@ import com.zaneschepke.wireguardautotunnel.util.extensions.ifNotBlank
import com.zaneschepke.wireguardautotunnel.util.extensions.joinAndTrim
import com.zaneschepke.wireguardautotunnel.util.extensions.toTrimmedList
import java.util.*
import kotlin.jvm.optionals.getOrElse
data class InterfaceProxy(
val privateKey: String = "",
@@ -18,6 +19,8 @@ data class InterfaceProxy(
val junkPacketCount: String = "",
val junkPacketMinSize: String = "",
val junkPacketMaxSize: String = "",
val cookiePacketJunkSize: String = "",
val transportPacketJunkSize: String = "",
val initPacketJunkSize: String = "",
val responsePacketJunkSize: String = "",
val initPacketMagicHeader: String = "",
@@ -29,10 +32,6 @@ data class InterfaceProxy(
val i3: String = "",
val i4: String = "",
val i5: String = "",
val j1: String = "",
val j2: String = "",
val j3: String = "",
val itime: String = "",
val preUp: String = "",
val postUp: String = "",
val preDown: String = "",
@@ -63,6 +62,8 @@ data class InterfaceProxy(
junkPacketMinSize,
junkPacketMaxSize,
initPacketJunkSize,
transportPacketJunkSize,
cookiePacketJunkSize,
responsePacketJunkSize,
initPacketMagicHeader,
responsePacketMagicHeader,
@@ -73,10 +74,6 @@ data class InterfaceProxy(
i3,
i4,
i5,
j1,
j2,
j3,
itime,
)
.any { it.isNotBlank() }
}
@@ -88,6 +85,8 @@ data class InterfaceProxy(
junkPacketMaxSize = "70",
initPacketJunkSize = "0",
responsePacketJunkSize = "0",
transportPacketJunkSize = "0",
cookiePacketJunkSize = "0",
initPacketMagicHeader = "1",
responsePacketMagicHeader = "2",
underloadPacketMagicHeader = "3",
@@ -97,10 +96,6 @@ data class InterfaceProxy(
i3 = "",
i4 = "",
i5 = "",
j1 = "",
j2 = "",
j3 = "",
itime = "",
)
}
@@ -111,6 +106,8 @@ data class InterfaceProxy(
junkPacketMaxSize = "",
initPacketJunkSize = "",
responsePacketJunkSize = "",
transportPacketJunkSize = "",
cookiePacketJunkSize = "",
initPacketMagicHeader = "",
responsePacketMagicHeader = "",
underloadPacketMagicHeader = "",
@@ -120,10 +117,6 @@ data class InterfaceProxy(
i3 = "",
i4 = "",
i5 = "",
j1 = "",
j2 = "",
j3 = "",
itime = "",
)
}
@@ -158,21 +151,19 @@ data class InterfaceProxy(
junkPacketCount.ifNotBlank { parseJunkPacketCount(it) }
junkPacketMinSize.ifNotBlank { parseJunkPacketMinSize(it) }
junkPacketMaxSize.ifNotBlank { parseJunkPacketMaxSize(it) }
transportPacketJunkSize.ifNotBlank { parseTransportPacketJunkSize(it) }
cookiePacketJunkSize.ifNotBlank { parseCookieReplyPacketJunkSize(it) }
initPacketJunkSize.ifNotBlank { parseInitPacketJunkSize(it) }
responsePacketJunkSize.ifNotBlank { parseResponsePacketJunkSize(it) }
initPacketMagicHeader.ifNotBlank { parseInitPacketMagicHeader(it) }
responsePacketMagicHeader.ifNotBlank { parseResponsePacketMagicHeader(it) }
underloadPacketMagicHeader.ifNotBlank { parseUnderloadPacketMagicHeader(it) }
transportPacketMagicHeader.ifNotBlank { parseTransportPacketMagicHeader(it) }
i1.ifNotBlank { parseI1(it) }
i2.ifNotBlank { parseI2(it) }
i3.ifNotBlank { parseI3(it) }
i4.ifNotBlank { parseI4(it) }
i5.ifNotBlank { parseI5(it) }
j1.ifNotBlank { parseJ1(it) }
j2.ifNotBlank { parseJ2(it) }
j3.ifNotBlank { parseJ3(it) }
itime.ifNotBlank { parseItime(it) }
i1.ifNotBlank { parseSpecialJunkI1(it) }
i2.ifNotBlank { parseSpecialJunkI2(it) }
i3.ifNotBlank { parseSpecialJunkI3(it) }
i4.ifNotBlank { parseSpecialJunkI4(it) }
i5.ifNotBlank { parseSpecialJunkI5(it) }
}
.build()
}
@@ -269,15 +260,6 @@ data class InterfaceProxy(
validateHexBlob(i3, "i3")
validateHexBlob(i4, "i4")
validateHexBlob(i5, "i5")
validateHexBlob(j1, "j1")
validateHexBlob(j2, "j2")
validateHexBlob(j3, "j3")
itime.ifNotBlank {
val time = it.toIntOrNull()
if (time == null) errors.add("itime must be an integer")
else if (time < 0) errors.add("itime must be non-negative")
}
return errors
}
@@ -291,8 +273,6 @@ data class InterfaceProxy(
i1 =
"<b 0xc1ff000012508394c8f03e51570800449f0dbc195a0000f3a694c75775b4e546172ce9e047cd0b5bee5181648c727adc87f7eae54473ec6cba6bdad4f59823174b769f12358abd292d4f3286934484fb8b239c38732e1f3bbbc6a003056487eb8b5c88b9fd9279ffff3b0f4ecf95c4624db6d65d4113329ee9b0bf8cdd7c8a8d72806d55df25ecb66488bc119d7c9a29abaf99bb33c56b08ad8c26995f838bb3b7a3d5c1858b8ec06b839db2dcf918d5ea9317f1acd6b663cc8925868e2f6a1bda546695f3c3f33175944db4a11a346afb07e78489e509b02add51b7b203eda5c330b03641179a31fbba9b56ce00f3d5b5e3d7d9c5429aebb9576f2f7eacbe27bc1b8082aaf68fb69c921aa5d33ec0c8510410865a178d86d7e54122d55ef2c2bbc040be46d7fece73fe8a1b24495ec160df2da9b20a7ba2f26dfa2a44366dbc63de5cd7d7c94c57172fe6d79c901f025c0010b02c89b395402c009f62dc053b8067a1e0ed0a1e0cf5087d7f78cbd94afe0c3dd55d2d4b1a5cfe2b68b86264e351d1dcd858783a240f893f008ceed743d969b8f735a1677ead960b1fb1ecc5ac83c273b49288d02d7286207e663c45e1a7baf50640c91e762941cf380ce8d79f3e86767fbbcd25b42ef70ec334835a3a6d792e170a432ce0cb7bde9aaa1e75637c1c34ae5fef4338f53db8b13a4d2df594efbfa08784543815c9c0d487bddfa1539bc252cf43ec3686e9802d651cfd2a829a06a9f332a733a4a8aed80efe3478093fbc69c8608146b3f16f1a5c4eac9320da49f1afa5f538ddecbbe7888f435512d0dd74fd9b8c99e3145ba84410d8ca9a36dd884109e76e5fb8222a52e1473da168519ce7a8a3c32e9149671b16724c6c5c51bb5cd64fb591e567fb78b10f9f6fee62c276f282a7df6bcf7c17747bc9a81e6c9c3b032fdd0e1c3ac9eaa5077de3ded18b2ed4faf328f49875af2e36ad5ce5f6cc99ef4b60e57b3b5b9c9fcbcd4cfb3975e70ce4c2506bcd71fef0e53592461504e3d42c885caab21b782e26294c6a9d61118cc40a26f378441ceb48f31a362bf8502a723a36c63502229a462cc2a3796279a5e3a7f81a68c7f81312c381cc16a4ab03513a51ad5b54306ec1d78a5e47e2b15e5b7a1438e5b8b2882dbdad13d6a4a8c3558cae043501b68eb3b040067152>",
i2 = "<b 0x0000000000010000000000000000000000000000000000000000000000000000>",
j1 = "<b 0x1234567890abcdef>",
itime = "120",
)
}
@@ -304,8 +284,6 @@ data class InterfaceProxy(
return copy(
i1 = "<b 0x123401000001000000000000076578616d706c6503636f6d0000010001>",
i2 = "",
j1 = "",
itime = "120",
)
}
@@ -319,8 +297,6 @@ data class InterfaceProxy(
"<b 0x494e56495445207369703a626f624062696c6f78692e636f6d205349502f322e300d0a5669613a205349502f322e302f55445020706333332e61746c616e74612e636f6d3b6272616e63683d7a39684734624b3737366173646864730d0a4d61782d466f7277617264733a2037300d0a546f3a20426f62203c7369703a626f624062696c6f78692e636f6d3e0d0a46726f6d3a20416c696365203c7369703a616c6963654061746c616e74612e636f6d3e3b7461673d313932383330313737340d0a43616c6c2d49443a20613834623463373665363637313040706333332e61746c616e74612e636f6d0d0a435365713a2033313431353920494e564954450d0a436f6e746163743a203c7369703a616c69636540706333332e61746c616e74612e636f6d3e0d0a436f6e74656e742d547970653a206170706c69636174696f6e2f7364700d0a436f6e74656e742d4c656e6774683a20300d0a0d0a>",
i2 =
"<b 0x5349502f322e302031303020547279696e670d0a5669613a205349502f322e302f55445020706333332e61746c616e74612e636f6d3b6272616e63683d7a39684734624b3737366173646864730d0a546f3a20426f62203c7369703a626f624062696c6f78692e636f6d3e0d0a46726f6d3a20416c696365203c7369703a616c6963654061746c616e74612e636f6d3e3b7461673d313932383330313737340d0a43616c6c2d49443a20613834623463373665363637313040706333332e61746c616e74612e636f6d0d0a435365713a2033313431353920494e564954450d0a436f6e74656e742d4c656e6774683a20300d0a0d0a>",
j1 = "<b 0xabcdef1234567890>",
itime = "120",
)
}
@@ -381,43 +357,22 @@ data class InterfaceProxy(
postUp = i.postUp.joinAndTrim(),
preDown = i.preDown.joinAndTrim(),
postDown = i.postDown.joinAndTrim(),
junkPacketCount =
if (i.junkPacketCount.isPresent) i.junkPacketCount.get().toString() else "",
junkPacketMinSize =
if (i.junkPacketMinSize.isPresent) i.junkPacketMinSize.get().toString() else "",
junkPacketMaxSize =
if (i.junkPacketMaxSize.isPresent) i.junkPacketMaxSize.get().toString() else "",
initPacketJunkSize =
if (i.initPacketJunkSize.isPresent) i.initPacketJunkSize.get().toString()
else "",
responsePacketJunkSize =
if (i.responsePacketJunkSize.isPresent)
i.responsePacketJunkSize.get().toString()
else "",
initPacketMagicHeader =
if (i.initPacketMagicHeader.isPresent) i.initPacketMagicHeader.get().toString()
else "",
responsePacketMagicHeader =
if (i.responsePacketMagicHeader.isPresent)
i.responsePacketMagicHeader.get().toString()
else "",
underloadPacketMagicHeader =
if (i.underloadPacketMagicHeader.isPresent)
i.underloadPacketMagicHeader.get().toString()
else "",
transportPacketMagicHeader =
if (i.transportPacketMagicHeader.isPresent)
i.transportPacketMagicHeader.get().toString()
else "",
i1 = if (i.i1.isPresent) i.i1.get() else "",
i2 = if (i.i2.isPresent) i.i2.get() else "",
i3 = if (i.i3.isPresent) i.i3.get() else "",
i4 = if (i.i4.isPresent) i.i4.get() else "",
i5 = if (i.i5.isPresent) i.i5.get() else "",
j1 = if (i.j1.isPresent) i.j1.get() else "",
j2 = if (i.j2.isPresent) i.j2.get() else "",
j3 = if (i.j3.isPresent) i.j3.get() else "",
itime = if (i.itime.isPresent) i.itime.get().toString() else "",
junkPacketCount = i.junkPacketCount.getOrElse { "" }.toString(),
junkPacketMinSize = i.junkPacketMinSize.getOrElse { "" }.toString(),
junkPacketMaxSize = i.junkPacketMaxSize.getOrElse { "" }.toString(),
initPacketJunkSize = i.initPacketJunkSize.getOrElse { "" }.toString(),
transportPacketJunkSize = i.transportPacketJunkSize.getOrElse { "" }.toString(),
cookiePacketJunkSize = i.cookieReplyPacketJunkSize.getOrElse { "" }.toString(),
responsePacketJunkSize = i.responsePacketJunkSize.getOrElse { "" }.toString(),
initPacketMagicHeader = i.initPacketMagicHeader.getOrElse { "" },
responsePacketMagicHeader = i.responsePacketMagicHeader.getOrElse { "" },
underloadPacketMagicHeader = i.underloadPacketMagicHeader.getOrElse { "" },
transportPacketMagicHeader = i.transportPacketMagicHeader.getOrElse { "" },
i1 = i.specialJunkI1.getOrElse { "" },
i2 = i.specialJunkI2.getOrElse { "" },
i3 = i.specialJunkI3.getOrElse { "" },
i4 = i.specialJunkI4.getOrElse { "" },
i5 = i.specialJunkI5.getOrElse { "" },
)
}
}
@@ -2,8 +2,6 @@ package com.zaneschepke.wireguardautotunnel.util
import com.vdurmont.semver4j.Semver
import java.math.BigDecimal
import java.time.Duration
import java.time.Instant
import kotlin.math.pow
import timber.log.Timber
@@ -28,16 +26,6 @@ object NumberUtils {
return (Math.random() * 100000).toInt()
}
fun getSecondsBetween(start: Long, end: Long): Long? {
return if (start != 0L && end != 0L) {
val startInstant = Instant.ofEpochMilli(start)
val endInstant = Instant.ofEpochMilli(end)
return Duration.between(startInstant, endInstant).seconds
} else {
null
}
}
fun compareVersions(newVersion: String, currentVersion: String): Int {
try {
val newSemver = Semver(newVersion, Semver.SemverType.LOOSE)
@@ -186,13 +186,23 @@ fun Context.launchAppSettings() {
}
}
fun Context.requestTunnelTileServiceStateUpdate() {
TileService.requestListeningState(this, ComponentName(this, TunnelControlTile::class.java))
}
fun Context.requestTunnelTileServiceStateUpdate() =
runCatching {
TileService.requestListeningState(
this,
ComponentName(this, TunnelControlTile::class.java),
)
}
.onFailure { Timber.w(it) }
fun Context.requestAutoTunnelTileServiceUpdate() {
TileService.requestListeningState(this, ComponentName(this, AutoTunnelControlTile::class.java))
}
fun Context.requestAutoTunnelTileServiceUpdate() =
runCatching {
TileService.requestListeningState(
this,
ComponentName(this, AutoTunnelControlTile::class.java),
)
}
.onFailure { Timber.w(it) }
fun Context.getAllInternetCapablePackages(): List<PackageInfo> {
val permissions = arrayOf(Manifest.permission.INTERNET)
@@ -299,7 +309,7 @@ fun PackageManager.getFriendlyAppName(packageName: String, appInfo: ApplicationI
val label =
try {
getApplicationLabel(appInfo).toString()
} catch (e: PackageManager.NameNotFoundException) {
} catch (_: PackageManager.NameNotFoundException) {
packageName
}
@@ -77,7 +77,7 @@ fun BackendMode.asAmBackendMode(): Backend.BackendMode {
fun Tunnel.State.asTunnelState(): TunnelStatus {
return when (this) {
Tunnel.State.DOWN -> TunnelStatus.Down
Tunnel.State.UP -> TunnelStatus.Up
Tunnel.State.UP -> TunnelStatus.Up(System.currentTimeMillis())
}
}
@@ -114,6 +114,6 @@ fun org.amnezia.awg.backend.BackendException.toBackendCoreException(): BackendCo
fun com.wireguard.android.backend.Tunnel.State.asTunnelState(): TunnelStatus {
return when (this) {
com.wireguard.android.backend.Tunnel.State.DOWN -> TunnelStatus.Down
com.wireguard.android.backend.Tunnel.State.UP -> TunnelStatus.Up
com.wireguard.android.backend.Tunnel.State.UP -> TunnelStatus.Up(System.currentTimeMillis())
}
}
@@ -1,6 +1,9 @@
package com.zaneschepke.wireguardautotunnel.util.extensions
import android.content.Context
import android.icu.text.MeasureFormat
import android.icu.util.Measure
import android.icu.util.MeasureUnit
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Lock
import androidx.compose.material.icons.outlined.Terminal
@@ -18,6 +21,8 @@ import com.zaneschepke.wireguardautotunnel.ui.theme.AlertRed
import com.zaneschepke.wireguardautotunnel.ui.theme.CoolGray
import com.zaneschepke.wireguardautotunnel.ui.theme.SilverTree
import com.zaneschepke.wireguardautotunnel.ui.theme.Straw
import java.util.Locale
import kotlin.time.Duration.Companion.milliseconds
fun WifiDetectionMethod.asTitleString(context: Context): String {
return when (this) {
@@ -82,3 +87,35 @@ fun TunnelState.Health.asColor(): Color {
TunnelState.Health.STALE -> Straw
}
}
fun Long.localizedDuration(locale: Locale = Locale.getDefault()): String {
require(this >= 0L) { "Duration cannot be negative" }
val duration = this.milliseconds
if (duration < 1000.milliseconds) {
return MeasureFormat.getInstance(locale, MeasureFormat.FormatWidth.SHORT)
.format(Measure(0, MeasureUnit.SECOND))
}
val totalSeconds = duration.inWholeSeconds
val days = totalSeconds / 86_400
val hours = (totalSeconds % 86_400) / 3_600
val minutes = (totalSeconds % 3_600) / 60
val seconds = totalSeconds % 60
val measures = buildList {
if (days > 0) add(Measure(days, MeasureUnit.DAY))
if (hours > 0) add(Measure(hours, MeasureUnit.HOUR))
if (minutes > 0) add(Measure(minutes, MeasureUnit.MINUTE))
if (seconds > 0) add(Measure(seconds, MeasureUnit.SECOND))
}
return MeasureFormat.getInstance(locale, MeasureFormat.FormatWidth.SHORT)
.formatMeasures(*measures.toTypedArray())
}
fun Long.millisAgo(): Long {
return System.currentTimeMillis() - this
}
@@ -6,7 +6,6 @@ import com.zaneschepke.logcatter.LogReader
import com.zaneschepke.wireguardautotunnel.BuildConfig
import com.zaneschepke.wireguardautotunnel.R
import com.zaneschepke.wireguardautotunnel.domain.repository.GlobalEffectRepository
import com.zaneschepke.wireguardautotunnel.domain.repository.MonitoringSettingsRepository
import com.zaneschepke.wireguardautotunnel.domain.sideeffect.GlobalSideEffect
import com.zaneschepke.wireguardautotunnel.ui.state.LoggerUiState
import com.zaneschepke.wireguardautotunnel.util.Constants
@@ -15,8 +14,6 @@ import com.zaneschepke.wireguardautotunnel.util.StringValue
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.*
import org.orbitmvi.orbit.ContainerHost
import org.orbitmvi.orbit.viewmodel.container
import timber.log.Timber
@@ -26,7 +23,6 @@ class LoggerViewModel
@Inject
constructor(
private val logReader: LogReader,
private val monitoringRepository: MonitoringSettingsRepository,
private val fileUtils: FileUtils,
private val globalEffectRepository: GlobalEffectRepository,
) : ContainerHost<LoggerUiState, Nothing>, ViewModel() {
@@ -38,33 +34,17 @@ constructor(
buildSettings = { repeatOnSubscribedStopTimeout = 5000L },
) {
intent {
monitoringRepository.flow
.onEach { reduce { state.copy(monitoringSettings = it) } }
.distinctUntilChangedBy { it.isLocalLogsEnabled }
.onEach { settings ->
if (settings.isLocalLogsEnabled) {
logReader.start()
} else {
logReader.stop()
logReader.deleteAndClearLogs()
reduce { state.copy(messages = emptyList()) }
}
}
.flatMapLatest { settings ->
if (settings.isLocalLogsEnabled) logReader.bufferedLogs else emptyFlow()
}
.catch { e -> Timber.e(e) }
.collect { logMessage ->
reduce {
state.copy(
messages =
state.messages.toMutableList().apply {
if (size >= MAX_LOG_SIZE) removeAt(0)
add(logMessage)
}
)
}
logReader.bufferedLogs.collect { logMessage ->
reduce {
state.copy(
messages =
state.messages.toMutableList().apply {
if (size >= MAX_LOG_SIZE) removeAt(0)
add(logMessage)
}
)
}
}
}
}
@@ -91,17 +71,24 @@ constructor(
}
Unit
}
result.onSuccess { file ->
logReader.zipLogFiles(file.absolutePath)
fileUtils.exportFile(file, uri, FileUtils.ZIP_FILE_MIME_TYPE).onFailure(onFailure)
}
result.onFailure(onFailure)
result.fold(
onSuccess = { file ->
try {
logReader.zipLogFiles(file.absolutePath)
fileUtils
.exportFile(file, uri, FileUtils.ZIP_FILE_MIME_TYPE)
.onFailure(onFailure)
} finally {
if (file.exists()) file.delete()
}
},
onFailure = onFailure,
)
}
fun deleteLogs() = intent {
monitoringRepository.upsert(state.monitoringSettings.copy(isLocalLogsEnabled = false))
delay(1_000L)
monitoringRepository.upsert(state.monitoringSettings.copy(isLocalLogsEnabled = true))
reduce { state.copy(messages = emptyList()) }
logReader.deleteAndClearLogs()
}
companion object {
@@ -1,8 +1,8 @@
package com.zaneschepke.wireguardautotunnel.viewmodel
import android.net.Uri
import androidx.core.net.toUri
import androidx.lifecycle.ViewModel
import com.wireguard.android.backend.WgQuickBackend
import com.zaneschepke.wireguardautotunnel.R
import com.zaneschepke.wireguardautotunnel.core.service.ServiceManager
import com.zaneschepke.wireguardautotunnel.core.tunnel.TunnelManager
@@ -23,9 +23,11 @@ import com.zaneschepke.wireguardautotunnel.util.extensions.TunnelName
import com.zaneschepke.wireguardautotunnel.util.extensions.asStringValue
import com.zaneschepke.wireguardautotunnel.util.extensions.saveTunnelsUniquely
import dagger.hilt.android.lifecycle.HiltViewModel
import io.ktor.client.HttpClient
import io.ktor.client.request.prepareGet
import io.ktor.client.statement.bodyAsText
import java.io.File
import java.io.IOException
import java.net.URL
import java.time.Instant
import javax.inject.Inject
import kotlinx.coroutines.flow.combine
@@ -34,6 +36,7 @@ import kotlinx.coroutines.flow.map
import org.amnezia.awg.config.BadConfigException
import org.orbitmvi.orbit.ContainerHost
import org.orbitmvi.orbit.viewmodel.container
import timber.log.Timber
import xyz.teamgravity.pin_lock_compose.PinManager
@HiltViewModel
@@ -48,6 +51,7 @@ constructor(
private val settingsRepository: GeneralSettingRepository,
private val monitoringSettingsRepository: MonitoringSettingsRepository,
private val rootShellUtils: RootShellUtils,
private val httpClient: HttpClient,
private val fileUtils: FileUtils,
) : ContainerHost<SharedAppUiState, LocalSideEffect>, ViewModel() {
@@ -164,6 +168,21 @@ constructor(
else StringValue.StringResource(R.string.root_accepted)
postSideEffect(GlobalSideEffect.Snackbar(message))
if (!accepted) return@intent
if (WgQuickBackend.hasKernelSupport())
Timber.i(
"Device supports kernel backend. WireGuard module is built in, switching to kernel backend."
)
else {
Timber.e("Device does not support kernel backend!")
intent {
postSideEffect(
GlobalSideEffect.Snackbar(
StringValue.StringResource(R.string.kernel_wireguard_unsupported)
)
)
}
return@intent
}
}
}
settingsRepository.upsert(state.settings.copy(appMode = appMode))
@@ -222,18 +241,23 @@ constructor(
fun importFromQr(conf: String) = intent { importFromClipboard(conf) }
fun importFromUrl(url: String) = intent {
runCatching {
val url = URL(url)
val uri = url.toURI().toString().toUri()
importFromUri(uri)
}
.onFailure {
postSideEffect(
GlobalSideEffect.Toast(
StringValue.StringResource(R.string.error_download_failed)
try {
httpClient.prepareGet(url).execute { response ->
if (response.status.value in 200..299) {
val body = response.bodyAsText()
importFromClipboard(body)
} else {
throw IOException(
"Failed to download file with error status: ${response.status.value}"
)
)
}
}
} catch (e: Exception) {
Timber.e(e)
postSideEffect(
GlobalSideEffect.Toast(StringValue.StringResource(R.string.error_download_failed))
)
}
}
fun importFromUri(uri: Uri) = intent {
@@ -320,8 +344,12 @@ constructor(
fileUtils
.createNewShareFile(shareFileName)
.onSuccess {
fileUtils.zipAll(it, files).onFailure(onFailure)
fileUtils.exportFile(it, uri, FileUtils.ZIP_FILE_MIME_TYPE).onFailure(onFailure)
try {
fileUtils.zipAll(it, files).onFailure(onFailure)
fileUtils.exportFile(it, uri, FileUtils.ZIP_FILE_MIME_TYPE).onFailure(onFailure)
} finally {
if (it.exists()) it.delete()
}
postSideEffect(
GlobalSideEffect.Snackbar(StringValue.StringResource(R.string.export_success))
)
+428 -1
View File
@@ -1,2 +1,429 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="enter_config_url">Enter config URL</string>
<string name="use_android_recommended">Use Android\'s recommended method for getting Wi-Fi information, based on Android version</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="hide_amnezia_properties">Hide Amnezia properties</string>
<string name="advanced_settings">Advanced settings</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="auto_tunnel_channel_name">Auto-tunnel Notification Channel</string>
<string name="always_on_message">VPN connection permission has been denied. Please check the</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="tunnel_on_ethernet">Tunnel on ethernet</string>
<string name="current_template">Current: %1$s</string>
<string name="email_chooser">Send an email…</string>
<string name="root_accepted">Root shell accepted</string>
<string name="save_changes">Save changes</string>
<string name="save">Save</string>
<string name="delete_tunnel">Delete tunnel</string>
<string name="tunnel_mobile_data">Tunnel on mobile data</string>
<string name="logs">Logs</string>
<string name="enable_app_lock">Enable app lock</string>
<string name="ethernet_tunnel">Ethernet tunnel</string>
<string name="config_changes_saved">Configuration changes saved.</string>
<string name="join_telegram">Join Telegram community</string>
<string name="pin_created">Pin successfully created</string>
<string name="post_up">Post up</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="warning">Warning</string>
<string name="password">Password</string>
<string name="error_download_failed">Failed to download config</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="use_shell_via_shizuku">Use shell via Shizuku to get Wi-Fi information, preventing the need for location permission on non-rooted devices</string>
<string name="stop_on_internet_loss">Stop tunnel on internet loss</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="allow_lan_traffic">Allow LAN traffic</string>
<string name="quick_actions">Quick actions</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="response_packet_magic_header">Response packet magic header</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="primary_tunnel">Default tunnel</string>
<string name="create_pin">Create PIN</string>
<string name="licenses">Licenses</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="vpn_channel_description">A channel for VPN state notifications</string>
<string name="amnezia">Amnezia</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="check_for_update">Check for update</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you can, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="edit_tunnel">Edit tunnel</string>
<string name="kernel">Kernel</string>
<string name="peer">Peer</string>
<string name="auto_tunneling">Auto-tunneling</string>
<string name="init_packet_magic_header">Init packet magic header</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="tunnel_control">Tunnel control</string>
<string name="website">App website</string>
<string name="mobile_tunnel">Mobile data tunnel</string>
<string name="error_no_file_explorer">No file explorer installed</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="auto_tunnel_channel_description">A channel for auto-tunnel state notifications</string>
<string name="show_qr">Show QR</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="tunnel_on_wifi">Tunnel on Wi-Fi</string>
<string name="add_peer">Add peer</string>
<string name="tunnel_starting">Tunnel starting</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="inactive">Inactive</string>
<string name="invalid_value">Invalid value</string>
<string name="persistent_keepalive">Persistent keepalive</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="exclude">Exclude</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="junk_packet_minimum_size">Junk packet minimum size</string>
<string name="location_services_not_detected">Location services not detected</string>
<string name="all">All</string>
<string name="location_permissions">Location Permissions</string>
<string name="unknown">Unknown</string>
<string name="tunnel_error_template">Tunnel failed with: %1$s</string>
<string name="restart_at_boot">Start on boot</string>
<string name="syntax_error">Syntax error</string>
<string name="learn_more">Learn more</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="email_subject">WG Tunnel Support</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="interface_">Interface</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="prominent_background_location_message">This feature requires background location permission to enable Wi-Fi SSID monitoring even while the application is closed. For more details, please see the Privacy Policy linked on the Support screen.</string>
<string name="delete_logs">Delete and clear logs</string>
<string name="launch_app_settings">Launch app settings</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="copy">Copy</string>
<string name="show_amnezia_properties">Show Amnezia properties</string>
<string name="legacy">Legacy</string>
<string name="preshared_key">Pre-shared key</string>
<string name="include">Include</string>
<string name="no_network">No network connected</string>
<string name="checking_for_update">Checking for updates</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="no_browser_detected">No browser detected</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="no_email_detected">No email app detected</string>
<string name="update_check_failed">Update check failed.</string>
<string name="dns_resolve_error">DNS resolution failed</string>
<string name="ping_target">Ping target</string>
<string name="update_available">Update Available!</string>
<string name="vpn_on">VPN on</string>
<string name="appearance">Appearance</string>
<string name="vpn_channel_name">VPN Notification Channel</string>
<string name="name">Name</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="yes">Yes</string>
<string name="seconds">Seconds</string>
<string name="vpn_denied_dialog_title">Permission Denied</string>
<string name="handshake">Handshake</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="export_logs">Export stored logs</string>
<string name="username">Username</string>
<string name="light">Light</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="darker">Darker</string>
<string name="dynamic">Dynamic</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="stop_on_no_internet">Stop on no internet</string>
<string name="permission_required">Permission Required</string>
<string name="shizuku_not_detected">Shizuku not detected</string>
<string name="tunnels">Tunnels</string>
<string name="automatic">Automatic</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="local_logging">Local logs monitor</string>
<string name="flavor_template">Flavor: %1$s</string>
<string name="delete">Delete</string>
<string name="donate_title">Donate</string>
<string name="endpoint">Endpoint</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="response_packet_junk_size">Response packet junk size</string>
<string name="start">Start</string>
<string name="enable_amnezia_compatibility">Enable Amnezia compatibility</string>
<string name="nothing_here_yet">Nothing here yet!</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="dns_servers">DNS servers</string>
<string name="support">Support</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="native_kill_switch">Native kill switch</string>
<string name="include_lan">Include LAN</string>
<string name="docs_description">Read the docs</string>
<string name="stop">Stop</string>
<string name="add_tunnels_text">Add from file or zip</string>
<string name="add_from_qr">Add from QR code</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="service_running_error">Service not running</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="copy_public_key">Copy public key</string>
<string name="always_on_message2">to make sure Always-on VPN is turned off for all other apps and try again</string>
<string name="open_settings">Open Settings</string>
<string name="kill_switch">kill switch</string>
<string name="mtu">MTU</string>
<string name="configuration">Configuration</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="unsure_how">if you are unsure how to proceed</string>
<string name="display_theme">Display theme</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="notifications">Notifications</string>
<string name="getting_started_guide">getting started guide</string>
<string name="join_matrix">Join Matrix community</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="email_description">Send me an email</string>
<string name="proxy_settings">Proxy settings</string>
<string name="select_all">Select all</string>
<string name="skip">Skip</string>
<string name="post_down">Post down</string>
<string name="restore_application">Restore from backup</string>
<string name="junk_packet_count">Junk packet count</string>
<string name="base64_key">Base64 key</string>
<string name="download">Download</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="transport_packet_magic_header">Transport packet magic header</string>
<string name="unknown_error">Unknown error occurred</string>
<string name="download_and_install">Download and Install</string>
<string name="vpn_settings">VPN system settings</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="debounce_delay">Debounce delay</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="bypass_lan_for_kill_switch">Bypass LAN for kill switch</string>
<string name="use_wildcards">Use name wildcards</string>
<string name="export_tunnels_wireguard">Export tunnels as WireGuard</string>
<string name="wifi_detection_method">Wi-Fi detection method</string>
<string name="tunnel">tunnel</string>
<string name="legacy_api_description">Use an Android 12 deprecated method for getting Wi-Fi information that limits location queries, but may not work reliably on newer devices</string>
<string name="active">Active</string>
<string name="security_type">Security:</string>
<string name="export_tunnels_amnezia">Export tunnels as Amnezia</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="addresses">Addresses</string>
<string name="privacy_policy">Privacy policy</string>
<string name="auto_tunnel">Auto-tunnel</string>
<string name="trusted_wifi_names">Trusted Wi-Fi names</string>
<string name="add_tunnel">Add tunnel</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="select">Select</string>
<string name="translation">Translation</string>
<string name="root">Root</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="location_justification">In order to read Wi-Fi names in the background with your current detection method, Android requires apps to be given \'Allow all the time\' and \'Precise\' (Background Location on older devices) permission. Please enable these permissions in your Android app settings.</string>
<string name="public_key">Public key</string>
<string name="show_scripts">Show scripts</string>
<string name="allowed_ips">Allowed IPs</string>
<string name="reliability">Reliability</string>
<string name="no_tunnels">No tunnels added yet!</string>
<string name="monitoring">Monitoring</string>
<string name="app_permission_title">WG Tunnel Control Bridge</string>
<string name="wireguard">WireGuard</string>
<string name="rotate_keys">Rotate keys</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="move_up">Move Up</string>
<string name="release_notes">Release notes</string>
<string name="dark">Dark</string>
<string name="monitoring_state_changes">Monitoring state changes</string>
<string name="dropdown">Dropdown</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="version_template">Version: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="cancel">Cancel</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="auto_tunnel_title">Auto-tunnel service</string>
<string name="prominent_background_location_title">Background Location Disclosure</string>
<string name="move_down">Move Down</string>
<string name="remove_amnezia_compatibility">Remove Amnezia compatibility</string>
<string name="open_issue">Open an issue</string>
<string name="random">(random)</string>
<string name="backup_application">Backup application data</string>
<string name="remote_key_template">Key: %1$s</string>
<string name="comma_separated">Comma separated</string>
<string name="amoled">AMOLED</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="app_permission_description">Control tunnels and auto-tunnel features.</string>
<string name="install_updated_permission">This app needs permission to install updates.</string>
<string name="use_root_shell_for_wifi">Use a root shell to get Wi-Fi information, preventing the need for location permissions</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="language">Language</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="error_ssid_exists">SSID already exists</string>
<string name="splt_tunneling">Split tunneling</string>
<string name="okay">Okay</string>
<string name="search">Search</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="error_file_extension">File is not a .conf or .zip</string>
<string name="see_the">See the</string>
<string name="listen_port">Listen port</string>
<string name="auth_error">Unauthorized</string>
<string name="auto">(Auto)</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="add_from_clipboard">Add from clipboard</string>
<string name="kernel_name_error">Kernel module name error</string>
<string name="sort">Sort</string>
<string name="_continue">Continue</string>
<string name="create_import">Create from scratch</string>
<string name="_false">False</string>
<string name="config_error">Invalid config</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="update_check_unsupported">Update check is not supported for this build type.</string>
<string name="optional">(optional)</string>
<string name="trusted_ssid_value_description">Submit SSID</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="donate">Donate to project</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="camera_permission_required">Camera permission required</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="enabled_app_shortcuts">Enable app shortcuts</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="allow">Allow</string>
<string name="underload_packet_magic_header">Underload packet magic header</string>
<string name="vpn_off">VPN off</string>
<string name="latest_installed">You are already running the latest version.</string>
<string name="add_wifi_name">Add Wi-Fi name</string>
<string name="never">Never</string>
<string name="delete_tunnel_message">Are you sure you would like to delete the selected tunnels?</string>
<string name="private_key">Private key</string>
<string name="fix">Fix</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="settings">Settings</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="incorrect_pin">Pin is incorrect</string>
<string name="tunnel_running">Tunnel running</string>
<string name="export_failed">Export failed</string>
<string name="enable_remote_app_control">Enable remote app control</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="update_download_failed">Update download failed.</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="pre_up">Pre up</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="always_on_vpn_support">Allow Always-On VPN</string>
<string name="junk_packet_maximum_size">Junk packet maximum size</string>
<string name="_default">Default</string>
<string name="exclude_lan">Exclude LAN</string>
<string name="ping_monitor">Ping monitor</string>
<string name="app_name">WG Tunnel</string>
<string name="error_root_denied">Root shell denied</string>
<string name="read_failed">Failed to read data.</string>
<string name="start_auto">Start auto-tunnel</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="hide_scripts">Hide scripts</string>
<string name="system">System</string>
<string name="tunnel_name">Tunnel Name</string>
<string name="error_tunnel_name">Tunnel name must be 15 characters or fewer in kernel mode</string>
<string name="wildcards_active">Wildcards active</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="add_from_url">Add from URL</string>
<string name="init_packet_junk_size">Init packet junk size</string>
<string name="location_permissions_missing">Location permissions missing</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="stop_auto">Stop auto-tunnel</string>
<string name="multiple">Multiple</string>
<string name="shizuku">Shizuku</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="enter_pin">Enter PIN</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_not_running">Auto-tunnel is not running</string>
<string name="set_primary_tunnel">Tunnel used when no preferred tunnel is configured</string>
<string name="pre_down">Pre down</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="export_success">Export success</string>
<string name="proxy">Proxy</string>
<string name="auto_tunnel_running">Auto-tunnel is running</string>
<string name="done">Done</string>
<string name="thank_you">Thank you for using WG Tunnel!</string>
<string name="invalid_key">Invalid key</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+130 -15
View File
@@ -2,7 +2,7 @@
<resources>
<string name="no_tunnels">Žádné tunely ještě nebyly přidány!</string>
<string name="tunnel_mobile_data">Tunelovat na mobilních datech</string>
<string name="privacy_policy">Otevřít zásady soukromí</string>
<string name="privacy_policy">Zásady soukromí</string>
<string name="okay">OK</string>
<string name="thank_you">Děkujeme za používání WG Tunnel!</string>
<string name="add_tunnels_text">Přidat ze souboru nebo zipu</string>
@@ -20,11 +20,11 @@
<string name="random">(náhodné)</string>
<string name="optional">(volitelné)</string>
<string name="preshared_key">Předsdílený klíč</string>
<string name="seconds">Vteřin(y)</string>
<string name="seconds">s</string>
<string name="cancel">Zrušit</string>
<string name="enabled_app_shortcuts">Zapnout zkratky</string>
<string name="enabled_app_shortcuts">Zapnout zkratky aplikací</string>
<string name="unknown_error">Došlo k neznámé chybě</string>
<string name="tunnel_on_wifi">Tunelovat na nedůvěryhodné Wi-Fi</string>
<string name="tunnel_on_wifi">Tunelovat na Wi-Fi</string>
<string name="email_subject">WG Tunnel podpora</string>
<string name="email_chooser">Poslat email…</string>
<string name="error_ssid_exists">SSID již existuje</string>
@@ -34,7 +34,7 @@
<string name="open_issue">Otevřít případ</string>
<string name="incorrect_pin">PIN je nesprávný</string>
<string name="create_pin">Vytvořte PIN</string>
<string name="set_primary_tunnel">Nastavit jako hlavní tunel</string>
<string name="set_primary_tunnel">Tunel použitý, když není nakonfigurován žádný preferovaný tunel</string>
<string name="edit_tunnel">Upravit tunel</string>
<string name="junk_packet_count">Junk packet počet</string>
<string name="junk_packet_minimum_size">Junk packet minimální velikost</string>
@@ -79,7 +79,7 @@
<string name="auto">(Automaticky)</string>
<string name="kernel">Kernel</string>
<string name="persistent_keepalive">Udržování spojení</string>
<string name="restart_at_boot">Restartovat při spuštění</string>
<string name="restart_at_boot">Spustit při startu systému</string>
<string name="show_amnezia_properties">Zobrazit Amnezia možnosti</string>
<string name="language">Jazyk</string>
<string name="light">Světlé</string>
@@ -93,7 +93,7 @@
<string name="allow_lan_traffic">Povolit LAN provoz</string>
<string name="logs">Logy</string>
<string name="automatic">Automaticky</string>
<string name="primary_tunnel">Hlavní tunel</string>
<string name="primary_tunnel">Výchozí tunel</string>
<string name="mobile_tunnel">Tunel pro mobilní data</string>
<string name="skip">Přeskočit</string>
<string name="donate">Přispět na projekt</string>
@@ -130,7 +130,7 @@
<string name="handshake">Handshake</string>
<string name="start_auto">Spustit auto-tunel</string>
<string name="stop_auto">Zastavit auto-tunel</string>
<string name="local_logging">Místní protokolování</string>
<string name="local_logging">Monitoro lokálních protokolů</string>
<string name="learn_more">Zjistit více</string>
<string name="stop">Stop</string>
<string name="always_on_message2">ujistěte se, že je pro všechny ostatní aplikace vypnutá funkce trvalé připojení VPN, a zkuste to znovu</string>
@@ -151,11 +151,11 @@
<string name="dropdown">Rozbalovací nabídka</string>
<string name="select_all">Vybrat vše</string>
<string name="trusted_ssid_value_description">Odeslat SSID</string>
<string name="debounce_delay">Debounce zpoždění</string>
<string name="debounce_delay">Zpoždění odezvy</string>
<string name="always_on_message">Autorizace připojení VPN byla zamítnuta. Zkontrolujte prosím</string>
<string name="config_error">Neplatná konfigurace</string>
<string name="prominent_background_location_title">Zpřístupnění stávající polohy na pozadí</string>
<string name="vpn_denied_dialog_title">Povolení zamítnuto</string>
<string name="vpn_denied_dialog_title">Oprávnění zamítnuto</string>
<string name="app_permission_title">Řídicí most pro WG tunely</string>
<string name="app_permission_description">Ovládání funkcí tunelu a automatického tunelu.</string>
<string name="enable_remote_app_control">Povolit vzdálené ovládání aplikace</string>
@@ -218,7 +218,7 @@
<string name="move_down">Přesunout dolů</string>
<string name="use_android_recommended">Použije metodu doporučenou systémem Android pro získání informací o síti Wi-Fi v závislosti na verzi systému Android</string>
<string name="legacy_api_description">Použije zastarou metodu systému Android 12 pro získání informací o síti Wi-Fi, která omezuje dotazy na polohu, ale na novějších zařízeních nemusí spolehlivě fungovat</string>
<string name="use_shell_via_shizuku">Použít shell přes Shizuku k získání informací o Wi-Fi, čímž se zabrání potřebě povolení k poloze na zařízeních, která nejsou rootnutá</string>
<string name="use_shell_via_shizuku">Použít shell přes Shizuku k získání informací o Wi-Fi, čímž se zabrání potřebě oprávnění k poloze na zařízeních, která nejsou rootnutá</string>
<string name="drag_handle">Přetáhnout úchyt</string>
<string name="error_tunnel_name">Název tunelu musí v kernel režimu obsahovat 15 znaků nebo méně</string>
<string name="tunnel">tunel</string>
@@ -258,8 +258,8 @@
<string name="show_password">Zobrazit heslo</string>
<string name="defaults_to_template">(výchozí hodnota je %1$s)</string>
<string name="dns_settings">Nastavení DNS</string>
<string name="dns_provider">poskytovatel DNS</string>
<string name="dns_protocol">DNS protokol</string>
<string name="dns_provider">Poskytovatel DNS</string>
<string name="dns_protocol">Protokol DNS</string>
<string name="system">Systém</string>
<string name="doh">DNS přes HTTPS (DoH)</string>
<string name="comma_separated">Oddělené čárkami</string>
@@ -299,10 +299,9 @@
<string name="root_required_template">%1$s (vyžaduje root)</string>
<string name="recommended_template">%1$s (doporučeno)</string>
<string name="hint_template">(%1$s)</string>
<string name="set_custom_ping_target">Vlastní cíl pingu (volitelné)</string>
<string name="set_custom_ping_target">Vlastní cíl pingu</string>
<string name="tunnel_ping_interval">Interval pingování tunelu</string>
<string name="ping_timeout">Časový limit pingování tunelu</string>
<string name="sec_ago_template">Před %1$s s</string>
<string name="latency_template">Latence: %1$s</string>
<string name="ping_target_template">Cíl pingu: %1$s</string>
<string name="backup_success">Úspěšně zazálohováno. %1$s</string>
@@ -311,4 +310,120 @@
<string name="google_donation_message">Bohužel, kvůli pravidlům společnosti Google nejsou odkazy na darování povoleny ve verzi této aplikace z Obchodu Play. Projděte si prosím webové stránky projektu, abyste zjistili, kde můžete přispět.</string>
<string name="pinger_bounce_recovery">Restartování pingera se nezdařilo. Tunel byl obnoven se starými adresami.</string>
<string name="bounce_failed_template">Pinger nemohl obnovit tunel kvůli následující chybě: %1$s</string>
<string name="dual_stack">Dual-stack</string>
<string name="kernel_name_dots">Název tunelu nemůže být „.“ nebo „..“ v režimu kernel</string>
<string name="save_changes">Uložit změny</string>
<string name="dual_stack_description">Tunely musí podporovat IPv4 a IPv6</string>
<string name="remote_key">Dálkový klíč</string>
<string name="mobile_data">Mobilní data</string>
<string name="tunnel_boot_description">Spustit výchozí tunel při startu systému</string>
<string name="http_bind_address">HTTP bind adresa</string>
<string name="tunnel_mapping_description">Přiřazovat tunely jako preferované podle názvu Wi-Fi</string>
<string name="donation_prompt_prefix">Děkujeme, že používáte WG Tunnel! Pokud můžete, zvažte prosím</string>
<string name="socks_5_bind_address">SOCKS5 bind adresa</string>
<string name="website">Webová stránka aplikace</string>
<string name="wifi_settings">Nastavení Wi-Fi</string>
<string name="info">Informace</string>
<string name="unknown">Neznámé</string>
<string name="all_services_disabled">K provedení této akce je nutné deaktivovat automatické tunelování a tunely.</string>
<string name="no_network">Žádné připojení k síti</string>
<string name="restore_success">Úspěšně obnoveno. %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="ping_target">Cíl pingu</string>
<string name="locked_down">Locked down</string>
<string name="resources">Odkazy</string>
<string name="back">Zpět</string>
<string name="already_donated">Již darováno</string>
<string name="selected">Vybrané</string>
<string name="global_split_tunneling">Globální dělené tunelování</string>
<string name="active_network">Aktivní síť:</string>
<string name="delete_active_message">Aktivní tunel nelze odstranit.</string>
<string name="help_translate">Pomozte s překladem aplikace</string>
<string name="ethernet">Ethernet</string>
<string name="other">Ostatní</string>
<string name="kill_switch">kill switch</string>
<string name="configuration">Konfigurace</string>
<string name="global_dns_servers">Globální DNS servery</string>
<string name="contact">Kontakt</string>
<string name="backup_and_restore">Zálohování a obnovení</string>
<string name="ping">Ping</string>
<string name="about">O aplikaci</string>
<string name="donation_prompt_link">podporu projektu,</string>
<string name="donation_prompt_suffix">aby zůstal bezplatný a mohl se dále zlepšovat.</string>
<string name="text_too_large_for_qr">Text je příliš velký na zobrazení QR kódu.</string>
<string name="options">Možnosti</string>
<string name="security_type">Zabezpečení:</string>
<string name="ddns_success_message">Dynamický koncový bod DNS byl úspěšně aktualizován.</string>
<string name="translation">Překlad</string>
<string name="location_justification">Aby bylo možné číst názvy Wi-Fi sítí na pozadí pomocí vaší současné metody detekce, Android vyžaduje, aby aplikace měly oprávnění „Povolit vždy“ a „Přesné“ (na starších zařízeních „Poloha na pozadí“). Tyto oprávnění prosím povolte ve vaší aplikaci pro Android nastavení.</string>
<string name="reliability">Spolehlivost</string>
<string name="monitoring">Monitorování</string>
<string name="aovpn_description">Umožnit Android systému spouštět tunely</string>
<string name="set_ping_target">Nastavit cíl pingu</string>
<string name="reachable_template">Dosažitelné: %1$s</string>
<string name="general">Obecné</string>
<string name="review">Ohodnotit aplikaci</string>
<string name="backend_mode">Režim aplikace</string>
<string name="kernel_name_special_characters">Název tunelu v režimu jádra nesmí obsahovat mezery ani určité speciální znaky (povolené: alfanumerické znaky, _, =, +, ., -)</string>
<string name="_continue">Pokračovat</string>
<string name="_false">Nepravda</string>
<string name="unavailable_in_mode">V aktuálním režimu nedostupné</string>
<string name="debounce_description">Zpoždění mezi rychlými změnami sítě</string>
<string name="preferred_tunnel">Preferovaný tunel</string>
<string name="tunnel_running_name_message">Jméno nelze změnit, dokud je tunel aktivní.</string>
<string name="network_name">Síť:</string>
<string name="mapped">Přiřazeno</string>
<string name="tunnel_mapping">Přiřazování tunelů</string>
<string name="preferred_tunnel_label">Preferovaný tunel:</string>
<string name="ping_monitor">Monitor pingu</string>
<string name="restart_message_template">Uložení změn způsobí restart %1$s, chcete pokračovat?</string>
<string name="already_donated_description">Zakáže budoucí výzvy k darování</string>
<string name="metered_tunnel">Měřený tunel</string>
<string name="lockdown_settings">Lockdown nastavení</string>
<string name="networks">Sítě</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Výchozí nastavení je interní IP tunelu pro dělené konfigurace nebo Cloudflare pro konfigurace s plným tunelováním.</string>
<string name="lockdown">Lockdown</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+429
View File
@@ -0,0 +1,429 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">WG Tunnel</string>
<string name="app_permission_title">WG Tunnnel kontrolbro</string>
<string name="enter_config_url">Enter config URL</string>
<string name="use_android_recommended">Use Android\'s recommended method for getting Wi-Fi information, based on Android version</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="hide_amnezia_properties">Hide Amnezia properties</string>
<string name="advanced_settings">Advanced settings</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="auto_tunnel_channel_name">Auto-tunnel Notification Channel</string>
<string name="always_on_message">VPN connection permission has been denied. Please check the</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="tunnel_on_ethernet">Tunnel on ethernet</string>
<string name="current_template">Current: %1$s</string>
<string name="email_chooser">Send an email…</string>
<string name="root_accepted">Root shell accepted</string>
<string name="save_changes">Save changes</string>
<string name="save">Save</string>
<string name="delete_tunnel">Delete tunnel</string>
<string name="tunnel_mobile_data">Tunnel on mobile data</string>
<string name="logs">Logs</string>
<string name="enable_app_lock">Enable app lock</string>
<string name="ethernet_tunnel">Ethernet tunnel</string>
<string name="config_changes_saved">Configuration changes saved.</string>
<string name="join_telegram">Join Telegram community</string>
<string name="pin_created">Pin successfully created</string>
<string name="post_up">Post up</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="warning">Warning</string>
<string name="password">Password</string>
<string name="error_download_failed">Failed to download config</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="use_shell_via_shizuku">Use shell via Shizuku to get Wi-Fi information, preventing the need for location permission on non-rooted devices</string>
<string name="stop_on_internet_loss">Stop tunnel on internet loss</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="allow_lan_traffic">Allow LAN traffic</string>
<string name="quick_actions">Quick actions</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="response_packet_magic_header">Response packet magic header</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="primary_tunnel">Default tunnel</string>
<string name="create_pin">Create PIN</string>
<string name="licenses">Licenses</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="vpn_channel_description">A channel for VPN state notifications</string>
<string name="amnezia">Amnezia</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="check_for_update">Check for update</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you are able, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="edit_tunnel">Edit tunnel</string>
<string name="kernel">Kernel</string>
<string name="peer">Peer</string>
<string name="auto_tunneling">Auto-tunneling</string>
<string name="init_packet_magic_header">Init packet magic header</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="tunnel_control">Tunnel control</string>
<string name="website">App website</string>
<string name="mobile_tunnel">Mobile data tunnel</string>
<string name="error_no_file_explorer">No file explorer installed</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="auto_tunnel_channel_description">A channel for auto-tunnel state notifications</string>
<string name="show_qr">Show QR</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="tunnel_on_wifi">Tunnel on Wi-Fi</string>
<string name="add_peer">Add peer</string>
<string name="tunnel_starting">Tunnel starting</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="inactive">Inactive</string>
<string name="invalid_value">Invalid value</string>
<string name="persistent_keepalive">Persistent keepalive</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="exclude">Exclude</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="junk_packet_minimum_size">Junk packet minimum size</string>
<string name="location_services_not_detected">Location services not detected</string>
<string name="all">All</string>
<string name="location_permissions">Location Permissions</string>
<string name="unknown">Unknown</string>
<string name="tunnel_error_template">Tunnel failed with: %1$s</string>
<string name="restart_at_boot">Start on boot</string>
<string name="syntax_error">Syntax error</string>
<string name="learn_more">Learn more</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="email_subject">WG Tunnel Support</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="interface_">Interface</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="prominent_background_location_message">This feature requires background location permission to enable Wi-Fi SSID monitoring even while the application is closed. For more details, please see the Privacy Policy linked on the Support screen.</string>
<string name="delete_logs">Delete and clear logs</string>
<string name="launch_app_settings">Launch app settings</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="copy">Copy</string>
<string name="show_amnezia_properties">Show Amnezia properties</string>
<string name="legacy">Legacy</string>
<string name="preshared_key">Pre-shared key</string>
<string name="include">Include</string>
<string name="no_network">No network connected</string>
<string name="checking_for_update">Checking for updates</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="no_browser_detected">No browser detected</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="no_email_detected">No email app detected</string>
<string name="update_check_failed">Update check failed.</string>
<string name="dns_resolve_error">DNS resolution failed</string>
<string name="ping_target">Ping target</string>
<string name="update_available">Update Available!</string>
<string name="vpn_on">VPN on</string>
<string name="appearance">Appearance</string>
<string name="vpn_channel_name">VPN Notification Channel</string>
<string name="name">Name</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="yes">Yes</string>
<string name="seconds">Seconds</string>
<string name="vpn_denied_dialog_title">Permission Denied</string>
<string name="handshake">Last handshake</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="export_logs">Export stored logs</string>
<string name="username">Username</string>
<string name="light">Light</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="darker">Darker</string>
<string name="dynamic">Dynamic</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="stop_on_no_internet">Stop on no internet</string>
<string name="permission_required">Permission Required</string>
<string name="shizuku_not_detected">Shizuku not detected</string>
<string name="tunnels">Tunnels</string>
<string name="automatic">Automatic</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="local_logging">Local logs monitor</string>
<string name="flavor_template">Flavor: %1$s</string>
<string name="delete">Delete</string>
<string name="donate_title">Donate</string>
<string name="endpoint">Endpoint</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="response_packet_junk_size">Response packet junk size</string>
<string name="start">Start</string>
<string name="enable_amnezia_compatibility">Enable Amnezia compatibility</string>
<string name="nothing_here_yet">Nothing here yet!</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="dns_servers">DNS servers</string>
<string name="support">Support</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="native_kill_switch">Native kill switch</string>
<string name="include_lan">Include LAN</string>
<string name="docs_description">Read the docs</string>
<string name="stop">Stop</string>
<string name="add_tunnels_text">Add from file or zip</string>
<string name="add_from_qr">Add from QR code</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="service_running_error">Service not running</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="copy_public_key">Copy public key</string>
<string name="always_on_message2">to make sure Always-on VPN is turned off for all other apps and try again</string>
<string name="open_settings">Open Settings</string>
<string name="kill_switch">kill switch</string>
<string name="mtu">MTU</string>
<string name="configuration">Configuration</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="unsure_how">if you are unsure how to proceed</string>
<string name="display_theme">Display theme</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="notifications">Notifications</string>
<string name="getting_started_guide">getting started guide</string>
<string name="join_matrix">Join Matrix community</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="email_description">Send me an email</string>
<string name="proxy_settings">Proxy settings</string>
<string name="select_all">Select all</string>
<string name="skip">Skip</string>
<string name="post_down">Post down</string>
<string name="restore_application">Restore from backup</string>
<string name="junk_packet_count">Junk packet count</string>
<string name="base64_key">Base64 key</string>
<string name="download">Download</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="transport_packet_magic_header">Transport packet magic header</string>
<string name="unknown_error">Unknown error occurred</string>
<string name="download_and_install">Download and Install</string>
<string name="vpn_settings">VPN system settings</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="debounce_delay">Debounce delay</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="bypass_lan_for_kill_switch">Bypass LAN for kill switch</string>
<string name="use_wildcards">Use name wildcards</string>
<string name="export_tunnels_wireguard">Export tunnels as WireGuard</string>
<string name="wifi_detection_method">Wi-Fi detection method</string>
<string name="tunnel">tunnel</string>
<string name="legacy_api_description">Use an Android 12 deprecated method for getting Wi-Fi information that limits location queries, but may not work reliably on newer devices</string>
<string name="active">Active</string>
<string name="security_type">Security:</string>
<string name="export_tunnels_amnezia">Export tunnels as Amnezia</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="addresses">Addresses</string>
<string name="privacy_policy">Privacy policy</string>
<string name="auto_tunnel">Auto-tunnel</string>
<string name="trusted_wifi_names">Trusted Wi-Fi names</string>
<string name="add_tunnel">Add tunnel</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="select">Select</string>
<string name="translation">Translation</string>
<string name="root">Root</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="location_justification">In order to read Wi-Fi names in the background with your current detection method, Android requires apps to be given \'Allow all the time\' and \'Precise\' (Background Location on older devices) permission. Please enable these permissions in your Android app settings.</string>
<string name="public_key">Public key</string>
<string name="show_scripts">Show scripts</string>
<string name="allowed_ips">Allowed IPs</string>
<string name="reliability">Reliability</string>
<string name="no_tunnels">No tunnels added yet!</string>
<string name="monitoring">Monitoring</string>
<string name="wireguard">WireGuard</string>
<string name="rotate_keys">Rotate keys</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="move_up">Move Up</string>
<string name="release_notes">Release notes</string>
<string name="dark">Dark</string>
<string name="monitoring_state_changes">Monitoring state changes</string>
<string name="dropdown">Dropdown</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="version_template">Version: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="cancel">Cancel</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="auto_tunnel_title">Auto-tunnel service</string>
<string name="prominent_background_location_title">Background Location Disclosure</string>
<string name="move_down">Move Down</string>
<string name="remove_amnezia_compatibility">Remove Amnezia compatibility</string>
<string name="open_issue">Open an issue</string>
<string name="random">(random)</string>
<string name="backup_application">Backup application data</string>
<string name="remote_key_template">Key: %1$s</string>
<string name="comma_separated">Comma separated</string>
<string name="amoled">AMOLED</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="app_permission_description">Control tunnels and auto-tunnel features.</string>
<string name="install_updated_permission">This app needs permission to install updates.</string>
<string name="use_root_shell_for_wifi">Use a root shell to get Wi-Fi information, preventing the need for location permissions</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="language">Language</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="error_ssid_exists">SSID already exists</string>
<string name="splt_tunneling">Split tunneling</string>
<string name="okay">Okay</string>
<string name="search">Search</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="error_file_extension">File is not a .conf or .zip</string>
<string name="see_the">See the</string>
<string name="listen_port">Listen port</string>
<string name="auth_error">Unauthorized</string>
<string name="auto">(Auto)</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="add_from_clipboard">Add from clipboard</string>
<string name="kernel_name_error">Kernel module name error</string>
<string name="sort">Sort</string>
<string name="_continue">Continue</string>
<string name="create_import">Create from scratch</string>
<string name="_false">False</string>
<string name="config_error">Invalid config</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="update_check_unsupported">Update check is not supported for this build type.</string>
<string name="optional">(optional)</string>
<string name="trusted_ssid_value_description">Submit SSID</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="donate">Donate to project</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="camera_permission_required">Camera permission required</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="enabled_app_shortcuts">Enable app shortcuts</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="allow">Allow</string>
<string name="underload_packet_magic_header">Underload packet magic header</string>
<string name="vpn_off">VPN off</string>
<string name="latest_installed">You are already running the latest version.</string>
<string name="add_wifi_name">Add Wi-Fi name</string>
<string name="never">Never</string>
<string name="delete_tunnel_message">Are you sure you would like to delete the selected tunnels?</string>
<string name="private_key">Private key</string>
<string name="fix">Fix</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="settings">Settings</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="incorrect_pin">Pin is incorrect</string>
<string name="tunnel_running">Tunnel running</string>
<string name="export_failed">Export failed</string>
<string name="enable_remote_app_control">Enable remote app control</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="update_download_failed">Update download failed.</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="pre_up">Pre up</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="always_on_vpn_support">Allow Always-On VPN</string>
<string name="junk_packet_maximum_size">Junk packet maximum size</string>
<string name="_default">Default</string>
<string name="exclude_lan">Exclude LAN</string>
<string name="ping_monitor">Ping monitor</string>
<string name="error_root_denied">Root shell denied</string>
<string name="read_failed">Failed to read data.</string>
<string name="start_auto">Start auto-tunnel</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="hide_scripts">Hide scripts</string>
<string name="system">System</string>
<string name="tunnel_name">Tunnel Name</string>
<string name="error_tunnel_name">Tunnel name must be 15 characters or fewer in kernel mode</string>
<string name="wildcards_active">Wildcards active</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="add_from_url">Add from URL</string>
<string name="init_packet_junk_size">Init packet junk size</string>
<string name="location_permissions_missing">Location permissions missing</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="stop_auto">Stop auto-tunnel</string>
<string name="multiple">Multiple</string>
<string name="shizuku">Shizuku</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="enter_pin">Enter PIN</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_not_running">Auto-tunnel is not running</string>
<string name="set_primary_tunnel">Tunnel used when no preferred tunnel is configured</string>
<string name="pre_down">Pre down</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="export_success">Export success</string>
<string name="proxy">Proxy</string>
<string name="auto_tunnel_running">Auto-tunnel is running</string>
<string name="done">Done</string>
<string name="thank_you">Thank you for using WG Tunnel!</string>
<string name="invalid_key">Invalid key</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+114 -13
View File
@@ -5,12 +5,12 @@
<string name="no_tunnels">Noch keine Tunnel hinzugefügt!</string>
<string name="tunnels">Tunnel</string>
<string name="tunnel_mobile_data">Tunnel für mobile Daten</string>
<string name="privacy_policy">Datenschutzbestimmungen anzeigen</string>
<string name="privacy_policy">Datenschutzbestimmungen</string>
<string name="okay">Ok</string>
<string name="tunnel_on_ethernet">Tunnel für Ethernet</string>
<string name="auto_tunneling">Auto-Tunneln</string>
<string name="prominent_background_location_message">Diese Funktion erfordert die Erlaubnis zur Standortbestimmung im Hintergrund, um die Überwachung der WLAN SSID zu ermöglichen, auch wenn die Anwendung geschlossen ist. Weitere Einzelheiten in den Datenschutzbestimmungen, die auf dem Support-Bildschirm verlinkt sind.</string>
<string name="prominent_background_location_title">Vereinbarung der Standortberechtigung im Hintergrund</string>
<string name="prominent_background_location_title">Einstellung der Standortberechtigung im Hintergrund</string>
<string name="thank_you">Danke für die Nutzung von WG Tunnel!</string>
<string name="trusted_ssid_value_description">SSID übermitteln</string>
<string name="add_tunnels_text">Von Datei oder ZIP hinzufügen</string>
@@ -48,7 +48,7 @@
<string name="cancel">Abbrechen</string>
<string name="preshared_key">Geteilter Schlüssel</string>
<string name="enabled_app_shortcuts">App-Verknüpfungen aktivieren</string>
<string name="tunnel_on_wifi">Tunnel bei nicht vertrauenswürdigem WLAN</string>
<string name="tunnel_on_wifi">Tunnel bei WLAN</string>
<string name="email_subject">WG Tunnel Unterstützung</string>
<string name="docs_description">Dokumentation lesen</string>
<string name="email_description">Sende mir eine E-Mail</string>
@@ -71,7 +71,7 @@
<string name="no_email_detected">Keine E-Mail-App erkannt</string>
<string name="create_pin">PIN erstellen</string>
<string name="edit_tunnel">Tunnel bearbeiten</string>
<string name="set_primary_tunnel">Als Primären Tunnel setzen</string>
<string name="set_primary_tunnel">Tunnel, der verwendet wird, wenn kein bevorzugter Tunnel konfiguriert ist</string>
<string name="vpn_channel_name">VPN Benachrichtigungskanal</string>
<string name="kernel">Kernel</string>
<string name="error_ssid_exists">SSID existiert bereits</string>
@@ -94,7 +94,7 @@
<string name="root_accepted">Root-Shell akzeptiert</string>
<string name="show_amnezia_properties">Amnezia-Eigenschaften anzeigen</string>
<string name="never">nie</string>
<string name="handshake">Handshake</string>
<string name="handshake">Letzter Handshake</string>
<string name="vpn_denied_dialog_title">Genehmigung verweigert</string>
<string name="logs">Logeinträge</string>
<string name="trusted_wifi_names">Vertrauenswürdige WLAN Namen</string>
@@ -111,18 +111,18 @@
<string name="start_auto">Auto-Tunnel starten</string>
<string name="tunnel_running">Laufender Tunnel</string>
<string name="donate">Fürs Projekt spenden</string>
<string name="local_logging">Lokales Logging</string>
<string name="local_logging">Lokale Logs Überwachung</string>
<string name="add_from_clipboard">Aus Zwischenablage einfügen</string>
<string name="automatic">Automatisch</string>
<string name="language">Sprache</string>
<string name="display_theme">Anzeigetheme</string>
<string name="launch_app_settings">App Einstellungen aufrufen</string>
<string name="primary_tunnel">Primärer Tunnel</string>
<string name="primary_tunnel">Standard-Tunnel</string>
<string name="mobile_tunnel">Mobiler Daten-Tunnel</string>
<string name="use_wildcards">Wildcards für Namen verwenden</string>
<string name="stop_auto">Auto-Tunnel stoppen</string>
<string name="monitoring_state_changes">Überwache Statusänderungen</string>
<string name="stop_on_no_internet">Stoppen wenn keine Internetverbindung besteht</string>
<string name="stop_on_no_internet">Stopp ohne Internet</string>
<string name="ethernet_tunnel">Ethernet Tunnel</string>
<string name="native_kill_switch">Nativer Notschalter</string>
<string name="allow_lan_traffic">LAN Verkehr erlauben</string>
@@ -197,7 +197,7 @@
<string name="licenses">Lizenzen</string>
<string name="allow">Erlauben</string>
<string name="install_updated_permission">Diese App benötigt die Berechtigung, um Updates zu installieren.</string>
<string name="latest_installed">Du verwendesz bereits die neueste Version.</string>
<string name="latest_installed">Du verwendest bereits die neueste Version.</string>
<string name="amoled">AMOLED</string>
<string name="flavor_template">Variante: %1$s</string>
<string name="darker">Dunkler</string>
@@ -226,7 +226,7 @@
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="warning">Warnung</string>
<string name="location_permissions">Standortberechtigungen</string>
<string name="location_justification">Um Wi-Fi-Namen im Hintergrund mit deiner aktuellen Erkennungsmethode lesen zu können, benötigt Android, dass Apps die Berechtigung \'Allow all the time\' und \'Precise\' (Background Location auf älteren Geräten) erhalten. Bitte aktiviere diese Berechtigungen in deinen Android-App-Einstellungen.</string>
<string name="location_justification">Um Wi-Fi-Namen im Hintergrund mit deiner aktuellen Erkennungsmethode lesen zu können, benötigt Android, dass Apps die Berechtigung \'Immer zulassen\' und \'Genauen Standort verwenden\' (Background Location auf älteren Geräten) erhalten. Bitte aktiviere diese Berechtigungen in deinen Android-App-Einstellungen.</string>
<string name="open_settings">Einstellungen öffnen</string>
<string name="location_permissions_missing">Standortberechtigungen fehlen</string>
<string name="fix">Beheben</string>
@@ -237,9 +237,9 @@
<string name="pinger_bounce_recovery">Pinger-Neustart fehlgeschlagen. Tunnel mit alten Adressen wiederhergestellt.</string>
<string name="bounce_failed_template">Pinger konnte den Tunnel mit folgendem Fehler nicht wiederherstellen: %1$s</string>
<string name="tunnel_monitoring">Tunnelüberwachung</string>
<string name="set_custom_ping_target">Benutzerdefiniertes Ping-Ziel (optional)</string>
<string name="set_custom_ping_target">Benutzerdefinierte Ping-Ziele</string>
<string name="ip_or_hostname">IP oder Hostname</string>
<string name="ping_target_description">Wird verwendet, wenn keine interne IP verfügbar ist (z. B. in Full-Tunnel-Konfigurationen). Leer lassen verwendet standardmäßig Cloudflare.</string>
<string name="ping_target_description">Standardmäßig wird eine interne Tunnel-IP für Split-Konfigurationen oder Cloudflare für Volltunnelkonfigurationen verwendet.</string>
<string name="tunnel_ping_interval">Tunnel-Ping-Intervall</string>
<string name="attempts_per_interval">Ping-Versuche pro Intervall</string>
<string name="ping_timeout">Tunnel-Ping-Timeout</string>
@@ -247,7 +247,6 @@
<string name="display_detailed_ping_stats">Detaillierte Ping-Statistiken anzeigen</string>
<string name="reachable_template">Erreichbar: %1$s</string>
<string name="ping_success_template">Letzter erfolgreicher Ping: %1$s</string>
<string name="sec_ago_template">vor %1$s Sek</string>
<string name="latency_template">Latenz: %1$s</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="packets_sent_template">Versendete Pakete: %1$s</string>
@@ -325,4 +324,106 @@
<string name="donation_signoff">Dankbar,</string>
<string name="google_donation_message">Aufgrund der Richtlinien von Google sind Spendenlinks in der Play Store-Version dieser App leider nicht erlaubt. Bitte durchsuche die Webseiten des Projekts, um herauszufinden, wo du spenden kannst.</string>
<string name="delete_active_message">Aktiver Tunnel kann nicht gelöscht werden.</string>
<string name="dual_stack">Dual-stack</string>
<string name="kernel_name_dots">Der Name des Tunnels darf im Kernel-Modus nicht „.“ oder „..“ lauten</string>
<string name="save_changes">Änderungen speichern</string>
<string name="dual_stack_description">Tunnel müssen IPv4 und IPv6 unterstützen</string>
<string name="remote_key">Fernsteuerungsschlüssel</string>
<string name="mobile_data">Mobile Daten</string>
<string name="tunnel_boot_description">Standardtunnel beim Booten starten</string>
<string name="tunnel_mapping_description">Tunnel als bevorzugt je nach WLAN-Namen festlegen</string>
<string name="donation_prompt_prefix">Vielen Dank für die Nutzung von WG Tunnel! Wenn möglich, ziehe bitte</string>
<string name="website">App Webseite</string>
<string name="wifi_settings">WLAN Einstellungen</string>
<string name="info">Info</string>
<string name="unknown">Unbekannt</string>
<string name="all_services_disabled">Auto-Tunnel und Tunnel müssen deaktiviert sein, um diese Aktion ausführen zu können.</string>
<string name="no_network">Keine Netzwerkverbindung</string>
<string name="wifi">WLAN</string>
<string name="ping_target">Pingziel</string>
<string name="resources">Resourcen</string>
<string name="back">Zurück</string>
<string name="already_donated">Bereits gespendet</string>
<string name="global_split_tunneling">Globales Split-Tunneling</string>
<string name="active_network">Aktives Netzwerk:</string>
<string name="help_translate">Hilf mit, die App zu übersetzen</string>
<string name="ethernet">Ethernet</string>
<string name="other">Sonstiges</string>
<string name="kill_switch">Notschalter</string>
<string name="configuration">Konfiguration</string>
<string name="global_dns_servers">Globale DNS Server</string>
<string name="contact">Kontakt</string>
<string name="backup_and_restore">Sichern und Wiederherstellen</string>
<string name="ping">Ping</string>
<string name="about">Über</string>
<string name="donation_prompt_link">die Unterstützung des Projekts in Betracht,</string>
<string name="donation_prompt_suffix">damit es kostenlos bleibt und weiter verbessert wird.</string>
<string name="text_too_large_for_qr">Der Text ist zu groß, um den QR-Code anzuzeigen.</string>
<string name="options">Optionen</string>
<string name="security_type">Sicherheit:</string>
<string name="ddns_success_message">Dynamischer DNS-Endpunkt erfolgreich aktualisiert.</string>
<string name="translation">Übersetzung</string>
<string name="reliability">Zuverlässigkeit</string>
<string name="monitoring">Überwachung</string>
<string name="aovpn_description">Ermöglicht Android das Starten von Tunneln</string>
<string name="set_ping_target">Ping-Ziel festlegen</string>
<string name="general">Allgemein</string>
<string name="review">App bewerten</string>
<string name="kernel_name_special_characters">Der Name des Tunnels im Kernelmodus darf keine Leerzeichen oder bestimmte Sonderzeichen enthalten (zulässig: alphanumerische Zeichen, _, =, +, ., -)</string>
<string name="_continue">Fortfahren</string>
<string name="unavailable_in_mode">Im aktuellen Modus nicht verfügbar</string>
<string name="debounce_description">Verzögerung zwischen schnellen Netzwerkänderungen</string>
<string name="preferred_tunnel">Bevorzugter Tunnel</string>
<string name="tunnel_running_name_message">Der Name kann nicht geändert werden, solange der Tunnel aktiv ist.</string>
<string name="network_name">Netzwerk:</string>
<string name="mapped">Zugeordnet</string>
<string name="tunnel_mapping">Tunnelzuordnung</string>
<string name="preferred_tunnel_label">Bevorzugter Tunnel:</string>
<string name="ping_monitor">Ping-Überwachung</string>
<string name="restart_message_template">Durch das Speichern der Änderungen wird %1$s neu gestartet. Möchtest du fortfahren?</string>
<string name="already_donated_description">Deaktiviert zukünftige Spendenaufforderungen</string>
<string name="metered_tunnel">Getakteter Tunnel</string>
<string name="lockdown_settings">Sperreinstellungen</string>
<string name="networks">Netzwerke</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+117 -15
View File
@@ -6,7 +6,7 @@
<string name="add_peer">Añadir peer</string>
<string name="copy_public_key">Copiar clave pública</string>
<string name="base64_key">Clave Base64</string>
<string name="tunnel_on_wifi">Túnel en Wi-Fi no de confianza</string>
<string name="tunnel_on_wifi">Túnel en Wi-Fi</string>
<string name="all">todas</string>
<string name="support">Ayuda</string>
<string name="private_key">Clave privada</string>
@@ -25,7 +25,7 @@
<string name="no_tunnels">¡Ningún túnel añadido aún!</string>
<string name="tunnels">Túneles</string>
<string name="tunnel_mobile_data">Activar túnel en datos móviles</string>
<string name="privacy_policy">Ver política de privacidad</string>
<string name="privacy_policy">Política de privacidad</string>
<string name="okay">OK</string>
<string name="tunnel_on_ethernet">Túnel en ethernet</string>
<string name="prominent_background_location_title">Divulgación de la ubicación en segundo plano</string>
@@ -75,8 +75,8 @@
<string name="app_name">WG Tunnel</string>
<string name="vpn_channel_name">Canal de notificación VPN</string>
<string name="prominent_background_location_message">La monitorización SSID Wi-Fi necesita de permiso de ubicación en segundo plano incluso si la app está cerrada. Mira el enlace a la Política de Privacidad en la pantalla de ayuda para más detalles.</string>
<string name="junk_packet_count">Recuento de paquetes «basura»</string>
<string name="junk_packet_minimum_size">Tamaño mínimo de paquetes «basura»</string>
<string name="junk_packet_count">Recuento de paquetes «ruido»</string>
<string name="junk_packet_minimum_size">Tamaño mínimo de paquetes «ruido»</string>
<string name="add_from_clipboard">Agregar desde el portapapeles</string>
<string name="show_amnezia_properties">Mostrar propiedades de Amnezia</string>
<string name="never">Nunca</string>
@@ -85,28 +85,28 @@
<string name="always_on_message">Se ha denegado el permiso de conexión VPN. Por favor, compruebe el</string>
<string name="always_on_message2">para asegurarse de que la VPN siempre activa esté desactivada para todas las demás aplicaciones e inténtelo de nuevo</string>
<string name="response_packet_magic_header">Encabezado del paquete de respuesta</string>
<string name="junk_packet_maximum_size">Tamaño máximo de paquetes «basura»</string>
<string name="init_packet_junk_size">Tamaño de «datos basura» añadidos al paquete de inicialización</string>
<string name="junk_packet_maximum_size">Tamaño máximo de paquetes «ruido»</string>
<string name="init_packet_junk_size">Tamaño de «datos de ruido» añadidos al paquete de inicialización</string>
<string name="unsure_how">Si no estás seguro de cómo proceder</string>
<string name="see_the">Ver la</string>
<string name="vpn_denied_dialog_title">Permiso denegado</string>
<string name="vpn_settings">Configuraciones VPN del sistema</string>
<string name="response_packet_junk_size">Tamaño de «datos basura» del paquete de respuesta</string>
<string name="response_packet_junk_size">Tamaño de «datos ruido» del paquete de respuesta</string>
<string name="init_packet_magic_header">Encabezado del paquete de inicialización</string>
<string name="root_accepted">Shell root permitida</string>
<string name="restart_at_boot">Reiniciar al arrancar</string>
<string name="restart_at_boot">Iniciar al arrancar</string>
<string name="underload_packet_magic_header">Encabezado del paquete baja carga</string>
<string name="handshake">Handshake</string>
<string name="handshake">Último intercambio</string>
<string name="donate">Donar al proyecto</string>
<string name="appearance">Apariencia</string>
<string name="logs">Registros</string>
<string name="trusted_wifi_names">Nombres de redes Wi-Fi confiables</string>
<string name="use_wildcards">Usar comodines de nombre</string>
<string name="primary_tunnel">Túnel principal</string>
<string name="primary_tunnel">Túnel predeterminado</string>
<string name="add_wifi_name">Añadir nombre de Wi-Fi</string>
<string name="start_auto">Iniciar túnel automático</string>
<string name="stop_auto">Detener túnel automático</string>
<string name="local_logging">Registro local</string>
<string name="local_logging">Registro de monitoreo local</string>
<string name="exclude_lan">Excluir LAN</string>
<string name="enable_amnezia_compatibility">Activar compatibilidad con Amnezia</string>
<string name="include_lan">Incluir LAN</string>
@@ -187,7 +187,7 @@
<string name="version_template">Versión: %1$s</string>
<string name="check_for_update">Comprobar actualización</string>
<string name="update_check_failed">Fallo al comprobar la actualización.</string>
<string name="flavor_template">Sabor: %1$s</string>
<string name="flavor_template">Variante: %1$s</string>
<string name="tunnel_starting">Iniciando túnel</string>
<string name="enable_remote_app_control">Activar control remoto de la app</string>
<string name="export_success">Exportación completada</string>
@@ -237,9 +237,9 @@
<string name="pinger_bounce_recovery">No se pudo reiniciar el «pinger». El túnel se ha recuperado con las direcciones antiguas.</string>
<string name="bounce_failed_template">El «pinger» falló al recuperar el túnel con el error: %1$s</string>
<string name="tunnel_monitoring">Monitoreo del túnel</string>
<string name="set_custom_ping_target">Objetivo de ping personalizado (opcional)</string>
<string name="set_custom_ping_target">Objetivo de ping personalizado</string>
<string name="ip_or_hostname">IP o nombre de host</string>
<string name="ping_target_description">Se usa si no hay una IP Interna disponible (por ejemplo, en configuraciones de túnel completo). Dejarlo en blanco lo configura por defecto a Cloudflare.</string>
<string name="ping_target_description">Por defecto se usa una IP de túnel interna, o bien se puede usar Cloudflare para configuraciones de túnel completo.</string>
<string name="tunnel_ping_interval">Intervalo de ping del túnel</string>
<string name="attempts_per_interval">Intentos de ping por cada intervalo</string>
<string name="ping_timeout">Tiempo de espera máximo de ping para el túnel</string>
@@ -247,7 +247,6 @@
<string name="display_detailed_ping_stats">Mostrar estadísticas detalladas del ping</string>
<string name="reachable_template">Alcanzable: %1$s</string>
<string name="ping_success_template">Último ping recibido: %1$s</string>
<string name="sec_ago_template">hace %1$s segundos</string>
<string name="latency_template">Latencia: %1$s</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="packets_sent_template">Paquetes enviados: %1$s</string>
@@ -324,4 +323,107 @@
<string name="github_sponsors">GitHub Sponsors</string>
<string name="liberapay">Liberapay</string>
<string name="kofi">Ko-fi</string>
<string name="dual_stack">Dual-stack</string>
<string name="kernel_name_dots">El nombre del túnel no puede ser \'.\' o \'..\' en modo kernel</string>
<string name="save_changes">Guardar cambios</string>
<string name="dual_stack_description">Los túneles deben soportar IPv4 e IPv6</string>
<string name="remote_key">Clave remota</string>
<string name="mobile_data">Datos móviles</string>
<string name="tunnel_boot_description">Iniciar el túnel predeterminado al inicio</string>
<string name="tunnel_mapping_description">Mapear túneles según el nombre de la WiFi</string>
<string name="donation_prompt_prefix">¡Gracias por usar WG Tunnel! Si puedes, por favor considera</string>
<string name="website">Sitio web de la app</string>
<string name="wifi_settings">Ajustes de Wi-Fi</string>
<string name="info">Información</string>
<string name="unknown">Desconocido</string>
<string name="all_services_disabled">El túnel automático y el resto de túneles deben ser desactivados para realizar esta operación.</string>
<string name="no_network">No hay conexión de red</string>
<string name="wifi">Wi-Fi</string>
<string name="ping_target">Objetivo del ping</string>
<string name="resources">Recursos</string>
<string name="back">Atrás</string>
<string name="already_donated">Ya he donado</string>
<string name="global_split_tunneling">Túnel dividido global</string>
<string name="active_network">Red activa:</string>
<string name="help_translate">Ayuda a traducir la app</string>
<string name="ethernet">Ethernet</string>
<string name="other">Otros</string>
<string name="kill_switch">kill switch</string>
<string name="configuration">Configuración</string>
<string name="global_dns_servers">Servidores DNS globales</string>
<string name="contact">Contacto</string>
<string name="backup_and_restore">Copia de seguridad/Restaurar</string>
<string name="ping">Ping</string>
<string name="about">Acerca de</string>
<string name="donation_prompt_link">apoyar el proyecto</string>
<string name="donation_prompt_suffix">para que siga siendo libre y siga mejorando.</string>
<string name="text_too_large_for_qr">El texto es demasiado grande para mostrar el QR.</string>
<string name="options">Opciones</string>
<string name="security_type">Seguridad:</string>
<string name="ddns_success_message">Endpoint del DNS dinámico actualizado correctamente.</string>
<string name="translation">Traducción</string>
<string name="reliability">Fiabilidad</string>
<string name="monitoring">Monitoreo</string>
<string name="aovpn_description">Permite a Android iniciar túneles</string>
<string name="set_ping_target">Establecer el objetivo del ping</string>
<string name="general">General</string>
<string name="review">Valorar la app</string>
<string name="kernel_name_special_characters">El nombre del túnel en modo kernel no puede contener espacios o algunos caracteres especiales (permitidos: alfanuméricos, _, =, +, ., -)</string>
<string name="_continue">Continuar</string>
<string name="unavailable_in_mode">No disponible en el modo actual</string>
<string name="debounce_description">Retraso entre cambios rápidos de red</string>
<string name="preferred_tunnel">Túnel preferido</string>
<string name="tunnel_running_name_message">El nombre del túnel no se puede cambiar mientras está activo.</string>
<string name="network_name">Red:</string>
<string name="mapped">Mapeado</string>
<string name="tunnel_mapping">Mapeo de túneles</string>
<string name="preferred_tunnel_label">Túnel preferido:</string>
<string name="ping_monitor">Monitoreo de ping</string>
<string name="restart_message_template">Guardar los cambios hara que el %1$s se reinicie, desea continuar?</string>
<string name="already_donated_description">Desactiva recordatorios de donación</string>
<string name="metered_tunnel">Túnel de uso medido</string>
<string name="lockdown_settings">Configuración de aislamiento</string>
<string name="networks">Redes</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Tamaño de los datos «ruido» del paquete de transporte</string>
<string name="cookie_packet_junk_size">Tamaño de los datos «ruido» del paquete de cookies</string>
</resources>
+128 -26
View File
@@ -3,11 +3,11 @@
<string name="app_name">WG Tunnel</string>
<string name="error_file_extension">See pole .conf või .zip fail</string>
<string name="vpn_channel_name">VPN-i teavituskanal</string>
<string name="prominent_background_location_message">See funktsionaalsus eeldab, et rakendusel on õigus asukoha ja WiFi SSID tuvastamiseks taustal, seda ka siis, kui rakendus on suletud. Lisateavet leiad Privaatsusreeglite lehelt, mille leiad Kasutajatoe vaatest.</string>
<string name="prominent_background_location_message">See funktsionaalsus eeldab, et rakendusel on õigus asukoha ja WiFi SSID taustal tuvastamiseks, seda ka siis, kui rakendus on suletud. Lisateavet leiad Privaatsusreeglite lehelt, leitav Kasutajatoe vaatest.</string>
<string name="no_tunnels">Ühtegi tunnelit pole veel lisatud!</string>
<string name="tunnels">Tunnelid</string>
<string name="tunnel_mobile_data">Loo tunnel mobiilse andmesidega</string>
<string name="privacy_policy">Vaata privaatsusreegleid</string>
<string name="privacy_policy">Andmekaitsepõhimõtted</string>
<string name="okay">Sobib</string>
<string name="tunnel_on_ethernet">Loo tunnel kohtvõrgus</string>
<string name="add_tunnels_text">Lisa conf- või zip-failist</string>
@@ -21,16 +21,16 @@
<string name="dns_servers">Nimeserverid</string>
<string name="mtu">MTU</string>
<string name="app_permission_description">Halda tunneleid ja tunnelite automaatse käivitamise seadistusi.</string>
<string name="thank_you">Tänud, et kasutad rakendust WG Tunnel!</string>
<string name="thank_you">Aitäh, et kasutad WG Tunnel rakendust!</string>
<string name="allowed_ips">Lubatud IP-aadressid</string>
<string name="endpoint">Otspunkt</string>
<string name="name">Nimi</string>
<string name="always_on_vpn_support">Luba, et VPN on alati sisse lülitatud</string>
<string name="location_services_not_detected">Asukohateenused pole tuvastatavad</string>
<string name="always_on_vpn_support">Luba alaliselt sisse lülitatud VPN</string>
<string name="location_services_not_detected">Asukohateenuseid ei tuvastatud</string>
<string name="auto_tunneling">Automaatne tunneldus</string>
<string name="vpn_on">VPN on kasutusel</string>
<string name="vpn_off">VPN pole kasutusel</string>
<string name="create_import">Loo nullist</string>
<string name="create_import">Loo algusest</string>
<string name="licenses">Litsentsid</string>
<string name="update_check_unsupported">Selle rakenduse versiooni puhul pole uuenduste kontrollimine toetatud.</string>
<string name="darker">Tumedam kujundus</string>
@@ -80,10 +80,10 @@
<string name="hide_scripts">Peida skriptid</string>
<string name="enable_amnezia_compatibility">Lisa ühilduvus Amnezia teenustega</string>
<string name="remove_amnezia_compatibility">Eemalda ühilduvus Amnezia teenustega</string>
<string name="show_amnezia_properties">Näita Amnezia seadistusi</string>
<string name="show_amnezia_properties">Näita Amnezia omadusi</string>
<string name="hide_amnezia_properties">Peida Amnezia seadistused</string>
<string name="donate">Toeta projekti rahaliselt</string>
<string name="local_logging">Kohalik logimine</string>
<string name="local_logging">Kohalike logide jälgija</string>
<string name="add_from_clipboard">Lisa lõikelaualt</string>
<string name="appearance">Välimus</string>
<string name="notifications">Teavitused</string>
@@ -102,7 +102,7 @@
<string name="optional">(valikuline)</string>
<string name="preshared_key">Eeljagatud võti</string>
<string name="seconds">Sekundit</string>
<string name="persistent_keepalive">Pidev elumärksõnum</string>
<string name="persistent_keepalive">Pidevad elumärgisignaalid</string>
<string name="cancel">Katkesta</string>
<string name="exclude_lan">Välista kohtvõrgud</string>
<string name="include_lan">Kaasa kohtvõrgud</string>
@@ -111,12 +111,12 @@
<string name="add_peer">Lisa partner</string>
<string name="rotate_keys">Vaheta võtmeid</string>
<string name="delete_tunnel">Kustuta tunnel</string>
<string name="delete_tunnel_message">Kas sa oled kindel, et soovid valitud tunnelid kustutada?</string>
<string name="delete_tunnel_message">Kindel, et valitud tunnelid kustutada?</string>
<string name="yes">Jah</string>
<string name="all">Kõik</string>
<string name="no_email_detected">E-posti rakendust ei õnnestu tuvastada</string>
<string name="no_browser_detected">Veebibrauserit ei õnnestu tuvastada</string>
<string name="open_issue">Alusta veateate koostamist</string>
<string name="open_issue">Alusta vearaporti koostamist</string>
<string name="auto">(automaatne)</string>
<string name="incorrect_pin">PIN-kood pole õige</string>
<string name="pin_created">PIN-koodi loomine õnnestus</string>
@@ -126,7 +126,7 @@
<string name="settings">Seadistused</string>
<string name="support">Kasutajatugi</string>
<string name="unknown_error">Tekkis tundmatu viga</string>
<string name="tunnel_on_wifi">Loo tunnel ebausaldusväärses WiFi võrgus</string>
<string name="tunnel_on_wifi">Loo tunnel WiFi võrgus</string>
<string name="email_subject">WG Tunneli kasutajatugi</string>
<string name="email_chooser">Saada e-kiri…</string>
<string name="docs_description">Loe dokumentatsiooni</string>
@@ -134,7 +134,7 @@
<string name="error_ssid_exists">SSID on juba olemas</string>
<string name="error_root_denied">Juurkasutaja õigustes kest on keelatud</string>
<string name="error_no_file_explorer">Failihaldurit pole paigaldatud</string>
<string name="set_primary_tunnel">Määra põhiliseks tunneliks</string>
<string name="set_primary_tunnel">Tunnel, mida kasutatakse siis, kui ühtegi eelistatud tunnelit pole seadistatud</string>
<string name="skip">Jäta vahele</string>
<string name="export_failed">Eksportimine ei õnnestunud</string>
<string name="tunnel_error_template">Viga tunneli töös: %1$s</string>
@@ -145,17 +145,17 @@
<string name="kernel_name_error">Viga kerneli mooduli nimes</string>
<string name="auth_error">Pole lubatud</string>
<string name="service_running_error">Teenus ei tööta</string>
<string name="unsure_how">kui sa ei tea, mida järgmiseks teha</string>
<string name="unsure_how">kui ei oska otsustada, mida järgmiseks teha</string>
<string name="see_the">Vaata</string>
<string name="getting_started_guide">esimeste toimingute juhendit</string>
<string name="restart_at_boot">Käivita alglaadimisel uuesti</string>
<string name="vpn_denied_dialog_title">Õigused on puudu</string>
<string name="getting_started_guide">esmaste toimingute juhendit</string>
<string name="restart_at_boot">Käivita alglaadimisel</string>
<string name="vpn_denied_dialog_title">Õigusi napib</string>
<string name="never">Mitte kunagi</string>
<string name="handshake">Kätlus</string>
<string name="handshake">Viimane kätlus</string>
<string name="logs">Logid</string>
<string name="trusted_wifi_names">Usaldusväärsete WiFi-võrkude nimed</string>
<string name="add_wifi_name">Lisa WiFi võrgunimi</string>
<string name="primary_tunnel">Põhiline tunnel</string>
<string name="primary_tunnel">Vaikimisi tunnel</string>
<string name="root_accepted">Juurkasutaja kest on lubatud</string>
<string name="learn_more">Lisateave</string>
<string name="monitoring_state_changes">Jälgin oleku muudatusi</string>
@@ -172,7 +172,7 @@
<string name="stop">Peata</string>
<string name="stop_on_no_internet">Peata internetiühenduse puudumisel</string>
<string name="stop_on_internet_loss">Peata tunnel internetiühenduse kadumisel</string>
<string name="enable_app_lock">Kasuta rakenduse lukustust</string>
<string name="enable_app_lock">Luba rakenduse lukustamine</string>
<string name="kernel">Tuum/Kernel</string>
<string name="mobile_tunnel">Mobiilside andmetunnel</string>
<string name="launch_app_settings">Käivita rakenduse seadistused</string>
@@ -204,7 +204,7 @@
<string name="wifi_detection_method">WiFi tuvastamise meetod</string>
<string name="current_template">Praegune: %1$s</string>
<string name="multiple">Mitmikvalik</string>
<string name="enabled_app_shortcuts">Kasuta rakenduse otseteid</string>
<string name="enabled_app_shortcuts">Luba rakenduse otseteed</string>
<string name="auto_tunnel_title">Tunneli automaatne loomine</string>
<string name="auto_tunnel_not_running">Tunneli automaatne käivitamine pole kasutusel</string>
<string name="auto_tunnel_running">Tunneli automaatne käivitamine on kasutusel</string>
@@ -263,7 +263,6 @@
<string name="pinger_bounce_successful">Tunneli taaskäivitamine pingija poolt õnnestus.</string>
<string name="reachable_template">Leitav: %1$s</string>
<string name="ping_success_template">Viimane õnnestunud ping: %1$s</string>
<string name="sec_ago_template">%1$s sekundi eest</string>
<string name="dns_provider">Nimelahenduse pakkuja</string>
<string name="dns_protocol">Nimelahenduse protokoll</string>
<string name="system">Süsteemne</string>
@@ -296,8 +295,8 @@
<string name="kofi">Ko-fi</string>
<string name="donation_thanks_intro">Täname ette, kui plaanid meie projekti toetada!</string>
<string name="donate_title">Toeta rahaliselt</string>
<string name="always_on_message">Puudub luba VPN-ühenduse kasutamiseks. Palun vaata siia</string>
<string name="always_on_message2">ja kontrolli, et alati sisselülitatud VPN poleks ühegi muu rakenduse jaoks kasutusel ja proovi siis uuesti</string>
<string name="always_on_message">Puudub õigus VPN-ühenduse aktiveerimiseks. Palun vaata siia</string>
<string name="always_on_message2">ja kontrolli, et alati sisselülitatud VPN poleks ühegi muu rakenduse jaoks kasutusel ning proovi siis uuesti</string>
<string name="prominent_background_location_title">Teave taustal asukoha tuvastamise kohta</string>
<string name="use_root_shell_for_wifi">WiFi teabe tuvastamiseks võid kasutada ka juurkasutaja õigustes kesta - siis puudub vajadus asukoha tuvastamise õiguse kasutamiseks</string>
<string name="auto_tunnel_channel_name">Automaatse tunnelduse teavituskanal</string>
@@ -309,8 +308,8 @@
<string name="ethernet_tunnel">Etherneti tunnel</string>
<string name="pinger_bounce_recovery">Pingija uuesti käivitamine ei õnnestunud. Tunnel on taastatud vanade aadressidega.</string>
<string name="bounce_failed_template">Pingija ei suutnud tunnelit taastada järgneva vea tõttu: %1$s</string>
<string name="set_custom_ping_target">Eraldi valitud host pingimiseks (valikuline)</string>
<string name="ping_target_description">Kasuta siis, kui sisemine IP-aadress pole saadaval (nt. täistunneli seadistustes). Kui jätad tühjaks, siis on kasutusel mõni Cloudfare\'i aadressidiest.</string>
<string name="set_custom_ping_target">Eraldi valitud hostid pingimiseks</string>
<string name="ping_target_description">Jagatud seadistustes on vaikimisi kasutusel sisemise tunneli IP-aadress või täistunneli seadistuses mõni Cloudfare\'i aadressidiest.</string>
<string name="server_port">Server:Port</string>
<string name="prefer_ipv6_resolution">Eelista otspunkti tuvastusel IPv6-protokolli</string>
<string name="disabled">Pole kasutusel</string>
@@ -324,4 +323,107 @@
<string name="lockdown">Lukusta rakendus</string>
<string name="debounce_delay">Rahunemisviivitus (debounce delay)</string>
<string name="app_permission_title">WG tunneli juhtsild</string>
<string name="dual_stack">Kahepinuline</string>
<string name="kernel_name_dots">Kernelirežiimis ei tohi tunneli nimi olla „.“ või „..“</string>
<string name="save_changes">Salvesta muudatused</string>
<string name="dual_stack_description">Tunnelid peavad toetama IPv4 ja IPv6 protokolle</string>
<string name="remote_key">Kaugseadme võti</string>
<string name="mobile_data">Mobiilne andmeside</string>
<string name="tunnel_boot_description">Seadme käivitamisel käivita ka vaikimisi tunnel</string>
<string name="tunnel_mapping_description">Vastenda tunneleid eelistatuks WiFi nime alusel</string>
<string name="donation_prompt_prefix">Suur tänu, et toetad rakendust WG Tunnel! Kui sul on võimalik, siis</string>
<string name="website">Rakenduse veebisait</string>
<string name="wifi_settings">WiFi seadistused</string>
<string name="info">Teave</string>
<string name="unknown">Pole teada</string>
<string name="all_services_disabled">Selle tegevuse jaoks peab automaatne tunneldus ja tunnelid olema lülitatud välja.</string>
<string name="no_network">Võrguühendus puudub</string>
<string name="wifi">WiFi</string>
<string name="ping_target">Pingitav host</string>
<string name="resources">Ressursid</string>
<string name="back">Tagasi</string>
<string name="already_donated">Juba annetasin</string>
<string name="global_split_tunneling">Üldine jagatud tunneldus</string>
<string name="active_network">Aktiivne võrk:</string>
<string name="help_translate">Aita seda rakendust tõlkida</string>
<string name="ethernet">Ethernet</string>
<string name="other">Muu</string>
<string name="kill_switch">kiirpeatamine</string>
<string name="configuration">Seadistused</string>
<string name="global_dns_servers">Üldised nimeserverid</string>
<string name="contact">Kontakt</string>
<string name="backup_and_restore">Varundus ja taastamine</string>
<string name="ping">Ping</string>
<string name="about">Rakenduse teave</string>
<string name="donation_prompt_link">palun toeta projekti</string>
<string name="donation_prompt_suffix">ja nii tagad, et ta jääb vabaks ning pidevalt areneb.</string>
<string name="text_too_large_for_qr">Tekst on liiga mahukas QR-koodi kuvamiseks.</string>
<string name="options">Valikud</string>
<string name="security_type">Turvalisus:</string>
<string name="ddns_success_message">Dünaamilise nimelahenduse otspunkti uuendamine õnnestus.</string>
<string name="translation">Tõlked</string>
<string name="reliability">Töökindlus</string>
<string name="monitoring">Monitooring</string>
<string name="aovpn_description">Luba Androidil käivitada tunneleid</string>
<string name="set_ping_target">Lisa pingitav host</string>
<string name="general">Üldist</string>
<string name="review">Hinda rakendust</string>
<string name="kernel_name_special_characters">Kernelirežiimis ei tohi tunneli nimes olla tühikuid ja erimärke (lubatud on tähe, numbrid, _, =, +, ., -)</string>
<string name="_continue">Jätka</string>
<string name="unavailable_in_mode">Pole saadaval praeguses režiimis</string>
<string name="debounce_description">Viivitus kiirete võrguvahetuste puhul</string>
<string name="preferred_tunnel">Eelistatud tunnel</string>
<string name="tunnel_running_name_message">Kui tunnel on aktiivne, siis nime ei saa muuta.</string>
<string name="network_name">Võrk:</string>
<string name="mapped">Vastendatud</string>
<string name="tunnel_mapping">Tunnelite vastendus</string>
<string name="preferred_tunnel_label">Eelistatud tunnel:</string>
<string name="ping_monitor">Pingimisega monitooring</string>
<string name="restart_message_template">Muudatuste salvestamine käivitab „%1$s“ tunneli uuesti. Kas sa soovid jätkata?</string>
<string name="already_donated_description">Lülitab tulevased annetuspalved välja</string>
<string name="metered_tunnel">Mahupõhise ühenduse tunnel</string>
<string name="lockdown_settings">Rakenduse lukustuse seadistused</string>
<string name="networks">Võrguühendused</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transpordipaketi rämpsuosa suurus</string>
<string name="cookie_packet_junk_size">Küpsisepaketi rämpsuosa suurus</string>
</resources>
+410
View File
@@ -16,4 +16,414 @@
<string name="tunnel_on_ethernet">تونل روی اترنت</string>
<string name="prominent_background_location_message">این ویژگی برای فعال کردن نظارت بر SSID وای‌فای، حتی در زمان بسته بودن برنامه، به مجوز موقعیت مکانی در پس‌زمینه نیاز دارد. برای جزئیات بیشتر، لطفاً به سیاست حفظ حریم خصوصی که در صفحه پشتیبانی لینک شده است، مراجعه کنید.</string>
<string name="app_name">WG Tunnel</string>
<string name="enter_config_url">Enter config URL</string>
<string name="use_android_recommended">Use Android\'s recommended method for getting Wi-Fi information, based on Android version</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="hide_amnezia_properties">Hide Amnezia properties</string>
<string name="advanced_settings">Advanced settings</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="auto_tunnel_channel_name">Auto-tunnel Notification Channel</string>
<string name="always_on_message">VPN connection permission has been denied. Please check the</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="current_template">Current: %1$s</string>
<string name="email_chooser">Send an email…</string>
<string name="root_accepted">Root shell accepted</string>
<string name="save_changes">Save changes</string>
<string name="save">Save</string>
<string name="delete_tunnel">Delete tunnel</string>
<string name="logs">Logs</string>
<string name="enable_app_lock">Enable app lock</string>
<string name="ethernet_tunnel">Ethernet tunnel</string>
<string name="config_changes_saved">Configuration changes saved.</string>
<string name="join_telegram">Join Telegram community</string>
<string name="pin_created">Pin successfully created</string>
<string name="post_up">Post up</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="warning">Warning</string>
<string name="password">Password</string>
<string name="error_download_failed">Failed to download config</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="use_shell_via_shizuku">Use shell via Shizuku to get Wi-Fi information, preventing the need for location permission on non-rooted devices</string>
<string name="stop_on_internet_loss">Stop tunnel on internet loss</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="allow_lan_traffic">Allow LAN traffic</string>
<string name="quick_actions">Quick actions</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="response_packet_magic_header">Response packet magic header</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="primary_tunnel">Default tunnel</string>
<string name="create_pin">Create PIN</string>
<string name="licenses">Licenses</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="vpn_channel_description">A channel for VPN state notifications</string>
<string name="amnezia">Amnezia</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="check_for_update">Check for update</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you can, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="edit_tunnel">Edit tunnel</string>
<string name="kernel">Kernel</string>
<string name="peer">Peer</string>
<string name="auto_tunneling">Auto-tunneling</string>
<string name="init_packet_magic_header">Init packet magic header</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="tunnel_control">Tunnel control</string>
<string name="website">App website</string>
<string name="mobile_tunnel">Mobile data tunnel</string>
<string name="error_no_file_explorer">No file explorer installed</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="auto_tunnel_channel_description">A channel for auto-tunnel state notifications</string>
<string name="show_qr">Show QR</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="tunnel_on_wifi">Tunnel on Wi-Fi</string>
<string name="add_peer">Add peer</string>
<string name="tunnel_starting">Tunnel starting</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="inactive">Inactive</string>
<string name="invalid_value">Invalid value</string>
<string name="persistent_keepalive">Persistent keepalive</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="exclude">Exclude</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="junk_packet_minimum_size">Junk packet minimum size</string>
<string name="location_services_not_detected">Location services not detected</string>
<string name="all">All</string>
<string name="location_permissions">Location Permissions</string>
<string name="unknown">Unknown</string>
<string name="tunnel_error_template">Tunnel failed with: %1$s</string>
<string name="restart_at_boot">Start on boot</string>
<string name="syntax_error">Syntax error</string>
<string name="learn_more">Learn more</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="email_subject">WG Tunnel Support</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="interface_">Interface</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="delete_logs">Delete and clear logs</string>
<string name="launch_app_settings">Launch app settings</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="copy">Copy</string>
<string name="show_amnezia_properties">Show Amnezia properties</string>
<string name="legacy">Legacy</string>
<string name="preshared_key">Pre-shared key</string>
<string name="include">Include</string>
<string name="no_network">No network connected</string>
<string name="checking_for_update">Checking for updates</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="no_browser_detected">No browser detected</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="no_email_detected">No email app detected</string>
<string name="update_check_failed">Update check failed.</string>
<string name="dns_resolve_error">DNS resolution failed</string>
<string name="ping_target">Ping target</string>
<string name="update_available">Update Available!</string>
<string name="vpn_on">VPN on</string>
<string name="appearance">Appearance</string>
<string name="name">Name</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="yes">Yes</string>
<string name="seconds">Seconds</string>
<string name="vpn_denied_dialog_title">Permission Denied</string>
<string name="handshake">Handshake</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="export_logs">Export stored logs</string>
<string name="username">Username</string>
<string name="light">Light</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="darker">Darker</string>
<string name="dynamic">Dynamic</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="stop_on_no_internet">Stop on no internet</string>
<string name="permission_required">Permission Required</string>
<string name="shizuku_not_detected">Shizuku not detected</string>
<string name="automatic">Automatic</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="local_logging">Local logs monitor</string>
<string name="flavor_template">Flavor: %1$s</string>
<string name="delete">Delete</string>
<string name="donate_title">Donate</string>
<string name="endpoint">Endpoint</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="response_packet_junk_size">Response packet junk size</string>
<string name="start">Start</string>
<string name="enable_amnezia_compatibility">Enable Amnezia compatibility</string>
<string name="nothing_here_yet">Nothing here yet!</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="dns_servers">DNS servers</string>
<string name="support">Support</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="native_kill_switch">Native kill switch</string>
<string name="include_lan">Include LAN</string>
<string name="docs_description">Read the docs</string>
<string name="stop">Stop</string>
<string name="add_from_qr">Add from QR code</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="service_running_error">Service not running</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="copy_public_key">Copy public key</string>
<string name="always_on_message2">to make sure Always-on VPN is turned off for all other apps and try again</string>
<string name="open_settings">Open Settings</string>
<string name="kill_switch">kill switch</string>
<string name="mtu">MTU</string>
<string name="configuration">Configuration</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="unsure_how">if you are unsure how to proceed</string>
<string name="display_theme">Display theme</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="notifications">Notifications</string>
<string name="getting_started_guide">getting started guide</string>
<string name="join_matrix">Join Matrix community</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="email_description">Send me an email</string>
<string name="proxy_settings">Proxy settings</string>
<string name="select_all">Select all</string>
<string name="skip">Skip</string>
<string name="post_down">Post down</string>
<string name="restore_application">Restore from backup</string>
<string name="junk_packet_count">Junk packet count</string>
<string name="base64_key">Base64 key</string>
<string name="download">Download</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="transport_packet_magic_header">Transport packet magic header</string>
<string name="unknown_error">Unknown error occurred</string>
<string name="download_and_install">Download and Install</string>
<string name="vpn_settings">VPN system settings</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="debounce_delay">Debounce delay</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="bypass_lan_for_kill_switch">Bypass LAN for kill switch</string>
<string name="use_wildcards">Use name wildcards</string>
<string name="export_tunnels_wireguard">Export tunnels as WireGuard</string>
<string name="wifi_detection_method">Wi-Fi detection method</string>
<string name="tunnel">tunnel</string>
<string name="legacy_api_description">Use an Android 12 deprecated method for getting Wi-Fi information that limits location queries, but may not work reliably on newer devices</string>
<string name="active">Active</string>
<string name="security_type">Security:</string>
<string name="export_tunnels_amnezia">Export tunnels as Amnezia</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="addresses">Addresses</string>
<string name="auto_tunnel">Auto-tunnel</string>
<string name="trusted_wifi_names">Trusted Wi-Fi names</string>
<string name="add_tunnel">Add tunnel</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="select">Select</string>
<string name="translation">Translation</string>
<string name="root">Root</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="location_justification">In order to read Wi-Fi names in the background with your current detection method, Android requires apps to be given \'Allow all the time\' and \'Precise\' (Background Location on older devices) permission. Please enable these permissions in your Android app settings.</string>
<string name="public_key">Public key</string>
<string name="show_scripts">Show scripts</string>
<string name="allowed_ips">Allowed IPs</string>
<string name="reliability">Reliability</string>
<string name="monitoring">Monitoring</string>
<string name="wireguard">WireGuard</string>
<string name="rotate_keys">Rotate keys</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="move_up">Move Up</string>
<string name="release_notes">Release notes</string>
<string name="dark">Dark</string>
<string name="monitoring_state_changes">Monitoring state changes</string>
<string name="dropdown">Dropdown</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="version_template">Version: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="cancel">Cancel</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="auto_tunnel_title">Auto-tunnel service</string>
<string name="move_down">Move Down</string>
<string name="remove_amnezia_compatibility">Remove Amnezia compatibility</string>
<string name="open_issue">Open an issue</string>
<string name="random">(random)</string>
<string name="backup_application">Backup application data</string>
<string name="remote_key_template">Key: %1$s</string>
<string name="comma_separated">Comma separated</string>
<string name="amoled">AMOLED</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="install_updated_permission">This app needs permission to install updates.</string>
<string name="use_root_shell_for_wifi">Use a root shell to get Wi-Fi information, preventing the need for location permissions</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="language">Language</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="error_ssid_exists">SSID already exists</string>
<string name="splt_tunneling">Split tunneling</string>
<string name="search">Search</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="see_the">See the</string>
<string name="listen_port">Listen port</string>
<string name="auth_error">Unauthorized</string>
<string name="auto">(Auto)</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="add_from_clipboard">Add from clipboard</string>
<string name="kernel_name_error">Kernel module name error</string>
<string name="sort">Sort</string>
<string name="_continue">Continue</string>
<string name="create_import">Create from scratch</string>
<string name="_false">False</string>
<string name="config_error">Invalid config</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="update_check_unsupported">Update check is not supported for this build type.</string>
<string name="optional">(optional)</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="donate">Donate to project</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="camera_permission_required">Camera permission required</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="enabled_app_shortcuts">Enable app shortcuts</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="allow">Allow</string>
<string name="underload_packet_magic_header">Underload packet magic header</string>
<string name="vpn_off">VPN off</string>
<string name="latest_installed">You are already running the latest version.</string>
<string name="add_wifi_name">Add Wi-Fi name</string>
<string name="never">Never</string>
<string name="delete_tunnel_message">Are you sure you would like to delete the selected tunnels?</string>
<string name="private_key">Private key</string>
<string name="fix">Fix</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="settings">Settings</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="incorrect_pin">Pin is incorrect</string>
<string name="tunnel_running">Tunnel running</string>
<string name="export_failed">Export failed</string>
<string name="enable_remote_app_control">Enable remote app control</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="update_download_failed">Update download failed.</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="pre_up">Pre up</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="always_on_vpn_support">Allow Always-On VPN</string>
<string name="junk_packet_maximum_size">Junk packet maximum size</string>
<string name="_default">Default</string>
<string name="exclude_lan">Exclude LAN</string>
<string name="ping_monitor">Ping monitor</string>
<string name="error_root_denied">Root shell denied</string>
<string name="read_failed">Failed to read data.</string>
<string name="start_auto">Start auto-tunnel</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="hide_scripts">Hide scripts</string>
<string name="system">System</string>
<string name="tunnel_name">Tunnel Name</string>
<string name="error_tunnel_name">Tunnel name must be 15 characters or fewer in kernel mode</string>
<string name="wildcards_active">Wildcards active</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="add_from_url">Add from URL</string>
<string name="init_packet_junk_size">Init packet junk size</string>
<string name="location_permissions_missing">Location permissions missing</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="stop_auto">Stop auto-tunnel</string>
<string name="multiple">Multiple</string>
<string name="shizuku">Shizuku</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="enter_pin">Enter PIN</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_not_running">Auto-tunnel is not running</string>
<string name="set_primary_tunnel">Tunnel used when no preferred tunnel is configured</string>
<string name="pre_down">Pre down</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="export_success">Export success</string>
<string name="proxy">Proxy</string>
<string name="auto_tunnel_running">Auto-tunnel is running</string>
<string name="done">Done</string>
<string name="invalid_key">Invalid key</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+318
View File
@@ -108,4 +108,322 @@
<string name="use_wildcards">Käytä jokerimerkkiä nimissä</string>
<string name="wildcards_active">Jokerimerkit aktivoitu</string>
<string name="tunnel_running">Tunneli käytössä</string>
<string name="enter_config_url">Enter config URL</string>
<string name="use_android_recommended">Use Android\'s recommended method for getting Wi-Fi information, based on Android version</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="hide_amnezia_properties">Hide Amnezia properties</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="auto_tunnel_channel_name">Auto-tunnel Notification Channel</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="current_template">Current: %1$s</string>
<string name="save_changes">Save changes</string>
<string name="save">Save</string>
<string name="join_telegram">Join Telegram community</string>
<string name="post_up">Post up</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="warning">Warning</string>
<string name="password">Password</string>
<string name="error_download_failed">Failed to download config</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="use_shell_via_shizuku">Use shell via Shizuku to get Wi-Fi information, preventing the need for location permission on non-rooted devices</string>
<string name="stop_on_internet_loss">Stop tunnel on internet loss</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="response_packet_magic_header">Response packet magic header</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="licenses">Licenses</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="amnezia">Amnezia</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="check_for_update">Check for update</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you can, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="kernel">Kernel</string>
<string name="peer">Peer</string>
<string name="init_packet_magic_header">Init packet magic header</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="tunnel_control">Tunnel control</string>
<string name="website">App website</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="auto_tunnel_channel_description">A channel for auto-tunnel state notifications</string>
<string name="show_qr">Show QR</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="add_peer">Add peer</string>
<string name="tunnel_starting">Tunnel starting</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="inactive">Inactive</string>
<string name="invalid_value">Invalid value</string>
<string name="persistent_keepalive">Persistent keepalive</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="junk_packet_minimum_size">Junk packet minimum size</string>
<string name="location_permissions">Location Permissions</string>
<string name="unknown">Unknown</string>
<string name="tunnel_error_template">Tunnel failed with: %1$s</string>
<string name="syntax_error">Syntax error</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="interface_">Interface</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="delete_logs">Delete and clear logs</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="copy">Copy</string>
<string name="legacy">Legacy</string>
<string name="no_network">No network connected</string>
<string name="checking_for_update">Checking for updates</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="update_check_failed">Update check failed.</string>
<string name="dns_resolve_error">DNS resolution failed</string>
<string name="ping_target">Ping target</string>
<string name="update_available">Update Available!</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="export_logs">Export stored logs</string>
<string name="username">Username</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="darker">Darker</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="stop_on_no_internet">Stop on no internet</string>
<string name="permission_required">Permission Required</string>
<string name="shizuku_not_detected">Shizuku not detected</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="local_logging">Local logs monitor</string>
<string name="flavor_template">Flavor: %1$s</string>
<string name="delete">Delete</string>
<string name="donate_title">Donate</string>
<string name="endpoint">Endpoint</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="response_packet_junk_size">Response packet junk size</string>
<string name="start">Start</string>
<string name="enable_amnezia_compatibility">Enable Amnezia compatibility</string>
<string name="nothing_here_yet">Nothing here yet!</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="native_kill_switch">Native kill switch</string>
<string name="include_lan">Include LAN</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="service_running_error">Service not running</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="open_settings">Open Settings</string>
<string name="kill_switch">kill switch</string>
<string name="configuration">Configuration</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="join_matrix">Join Matrix community</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="proxy_settings">Proxy settings</string>
<string name="select_all">Select all</string>
<string name="post_down">Post down</string>
<string name="restore_application">Restore from backup</string>
<string name="junk_packet_count">Junk packet count</string>
<string name="download">Download</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="transport_packet_magic_header">Transport packet magic header</string>
<string name="download_and_install">Download and Install</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="debounce_delay">Debounce delay</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="bypass_lan_for_kill_switch">Bypass LAN for kill switch</string>
<string name="export_tunnels_wireguard">Export tunnels as WireGuard</string>
<string name="wifi_detection_method">Wi-Fi detection method</string>
<string name="tunnel">tunnel</string>
<string name="legacy_api_description">Use an Android 12 deprecated method for getting Wi-Fi information that limits location queries, but may not work reliably on newer devices</string>
<string name="active">Active</string>
<string name="security_type">Security:</string>
<string name="export_tunnels_amnezia">Export tunnels as Amnezia</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="auto_tunnel">Auto-tunnel</string>
<string name="add_tunnel">Add tunnel</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="select">Select</string>
<string name="translation">Translation</string>
<string name="root">Root</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="location_justification">In order to read Wi-Fi names in the background with your current detection method, Android requires apps to be given \'Allow all the time\' and \'Precise\' (Background Location on older devices) permission. Please enable these permissions in your Android app settings.</string>
<string name="reliability">Reliability</string>
<string name="monitoring">Monitoring</string>
<string name="app_permission_title">WG Tunnel Control Bridge</string>
<string name="wireguard">WireGuard</string>
<string name="rotate_keys">Rotate keys</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="move_up">Move Up</string>
<string name="release_notes">Release notes</string>
<string name="monitoring_state_changes">Monitoring state changes</string>
<string name="dropdown">Dropdown</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="version_template">Version: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="prominent_background_location_title">Background Location Disclosure</string>
<string name="move_down">Move Down</string>
<string name="remove_amnezia_compatibility">Remove Amnezia compatibility</string>
<string name="backup_application">Backup application data</string>
<string name="remote_key_template">Key: %1$s</string>
<string name="comma_separated">Comma separated</string>
<string name="amoled">AMOLED</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="app_permission_description">Control tunnels and auto-tunnel features.</string>
<string name="install_updated_permission">This app needs permission to install updates.</string>
<string name="use_root_shell_for_wifi">Use a root shell to get Wi-Fi information, preventing the need for location permissions</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="splt_tunneling">Split tunneling</string>
<string name="search">Search</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="listen_port">Listen port</string>
<string name="auth_error">Unauthorized</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="kernel_name_error">Kernel module name error</string>
<string name="sort">Sort</string>
<string name="_continue">Continue</string>
<string name="_false">False</string>
<string name="config_error">Invalid config</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="update_check_unsupported">Update check is not supported for this build type.</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="camera_permission_required">Camera permission required</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="allow">Allow</string>
<string name="underload_packet_magic_header">Underload packet magic header</string>
<string name="latest_installed">You are already running the latest version.</string>
<string name="fix">Fix</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="export_failed">Export failed</string>
<string name="enable_remote_app_control">Enable remote app control</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="update_download_failed">Update download failed.</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="pre_up">Pre up</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="junk_packet_maximum_size">Junk packet maximum size</string>
<string name="_default">Default</string>
<string name="exclude_lan">Exclude LAN</string>
<string name="ping_monitor">Ping monitor</string>
<string name="error_root_denied">Root shell denied</string>
<string name="read_failed">Failed to read data.</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="system">System</string>
<string name="error_tunnel_name">Tunnel name must be 15 characters or fewer in kernel mode</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="add_from_url">Add from URL</string>
<string name="init_packet_junk_size">Init packet junk size</string>
<string name="location_permissions_missing">Location permissions missing</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="multiple">Multiple</string>
<string name="shizuku">Shizuku</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_not_running">Auto-tunnel is not running</string>
<string name="pre_down">Pre down</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="export_success">Export success</string>
<string name="proxy">Proxy</string>
<string name="auto_tunnel_running">Auto-tunnel is running</string>
<string name="done">Done</string>
<string name="invalid_key">Invalid key</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+270
View File
@@ -156,4 +156,274 @@
<string name="allow">Autoriser</string>
<string name="app_permission_title">Pont de contrôle du tunnel WG</string>
<string name="app_permission_description">Contrôler les tunnels et les fonctions automatiques des tunnels.</string>
<string name="use_android_recommended">Use Android\'s recommended method for getting Wi-Fi information, based on Android version</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="auto_tunnel_channel_name">Auto-tunnel Notification Channel</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="current_template">Current: %1$s</string>
<string name="save_changes">Save changes</string>
<string name="post_up">Post up</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="warning">Warning</string>
<string name="password">Password</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="use_shell_via_shizuku">Use shell via Shizuku to get Wi-Fi information, preventing the need for location permission on non-rooted devices</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="licenses">Licenses</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="vpn_channel_description">A channel for VPN state notifications</string>
<string name="amnezia">Amnezia</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="check_for_update">Check for update</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you can, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="website">App website</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="show_qr">Show QR</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="tunnel_starting">Tunnel starting</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="inactive">Inactive</string>
<string name="invalid_value">Invalid value</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="location_permissions">Location Permissions</string>
<string name="unknown">Unknown</string>
<string name="tunnel_error_template">Tunnel failed with: %1$s</string>
<string name="syntax_error">Syntax error</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="delete_logs">Delete and clear logs</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="legacy">Legacy</string>
<string name="no_network">No network connected</string>
<string name="checking_for_update">Checking for updates</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="update_check_failed">Update check failed.</string>
<string name="dns_resolve_error">DNS resolution failed</string>
<string name="ping_target">Ping target</string>
<string name="update_available">Update Available!</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="export_logs">Export stored logs</string>
<string name="username">Username</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="darker">Darker</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="permission_required">Permission Required</string>
<string name="shizuku_not_detected">Shizuku not detected</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="flavor_template">Flavor: %1$s</string>
<string name="delete">Delete</string>
<string name="donate_title">Donate</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="start">Start</string>
<string name="nothing_here_yet">Nothing here yet!</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="service_running_error">Service not running</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="open_settings">Open Settings</string>
<string name="kill_switch">kill switch</string>
<string name="configuration">Configuration</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="proxy_settings">Proxy settings</string>
<string name="select_all">Select all</string>
<string name="post_down">Post down</string>
<string name="restore_application">Restore from backup</string>
<string name="download">Download</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="download_and_install">Download and Install</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="debounce_delay">Debounce delay</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="export_tunnels_wireguard">Export tunnels as WireGuard</string>
<string name="wifi_detection_method">Wi-Fi detection method</string>
<string name="tunnel">tunnel</string>
<string name="legacy_api_description">Use an Android 12 deprecated method for getting Wi-Fi information that limits location queries, but may not work reliably on newer devices</string>
<string name="active">Active</string>
<string name="security_type">Security:</string>
<string name="export_tunnels_amnezia">Export tunnels as Amnezia</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="translation">Translation</string>
<string name="root">Root</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="location_justification">In order to read Wi-Fi names in the background with your current detection method, Android requires apps to be given \'Allow all the time\' and \'Precise\' (Background Location on older devices) permission. Please enable these permissions in your Android app settings.</string>
<string name="reliability">Reliability</string>
<string name="monitoring">Monitoring</string>
<string name="wireguard">WireGuard</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="move_up">Move Up</string>
<string name="release_notes">Release notes</string>
<string name="dropdown">Dropdown</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="version_template">Version: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="move_down">Move Down</string>
<string name="backup_application">Backup application data</string>
<string name="remote_key_template">Key: %1$s</string>
<string name="comma_separated">Comma separated</string>
<string name="amoled">AMOLED</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="install_updated_permission">This app needs permission to install updates.</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="auth_error">Unauthorized</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="kernel_name_error">Kernel module name error</string>
<string name="sort">Sort</string>
<string name="_continue">Continue</string>
<string name="_false">False</string>
<string name="config_error">Invalid config</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="update_check_unsupported">Update check is not supported for this build type.</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="camera_permission_required">Camera permission required</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="latest_installed">You are already running the latest version.</string>
<string name="fix">Fix</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="export_failed">Export failed</string>
<string name="enable_remote_app_control">Enable remote app control</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="update_download_failed">Update download failed.</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="pre_up">Pre up</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="_default">Default</string>
<string name="ping_monitor">Ping monitor</string>
<string name="read_failed">Failed to read data.</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="system">System</string>
<string name="error_tunnel_name">Tunnel name must be 15 characters or fewer in kernel mode</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="location_permissions_missing">Location permissions missing</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="shizuku">Shizuku</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_not_running">Auto-tunnel is not running</string>
<string name="pre_down">Pre down</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="export_success">Export success</string>
<string name="proxy">Proxy</string>
<string name="auto_tunnel_running">Auto-tunnel is running</string>
<string name="done">Done</string>
<string name="invalid_key">Invalid key</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+424
View File
@@ -2,4 +2,428 @@
<resources>
<string name="app_name">WG Tunnel</string>
<string name="app_permission_description">Alagutak és automatikus alagút funkciók vezérlése.</string>
<string name="enter_config_url">Enter config URL</string>
<string name="use_android_recommended">Use Android\'s recommended method for getting Wi-Fi information, based on Android version</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="hide_amnezia_properties">Hide Amnezia properties</string>
<string name="advanced_settings">Advanced settings</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="auto_tunnel_channel_name">Auto-tunnel Notification Channel</string>
<string name="always_on_message">VPN connection permission has been denied. Please check the</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="tunnel_on_ethernet">Tunnel on ethernet</string>
<string name="current_template">Current: %1$s</string>
<string name="email_chooser">Send an email…</string>
<string name="root_accepted">Root shell accepted</string>
<string name="save_changes">Save changes</string>
<string name="save">Save</string>
<string name="delete_tunnel">Delete tunnel</string>
<string name="tunnel_mobile_data">Tunnel on mobile data</string>
<string name="logs">Logs</string>
<string name="enable_app_lock">Enable app lock</string>
<string name="ethernet_tunnel">Ethernet tunnel</string>
<string name="config_changes_saved">Configuration changes saved.</string>
<string name="join_telegram">Join Telegram community</string>
<string name="pin_created">Pin successfully created</string>
<string name="post_up">Post up</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="warning">Warning</string>
<string name="password">Password</string>
<string name="error_download_failed">Failed to download config</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="use_shell_via_shizuku">Use shell via Shizuku to get Wi-Fi information, preventing the need for location permission on non-rooted devices</string>
<string name="stop_on_internet_loss">Stop tunnel on internet loss</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="allow_lan_traffic">Allow LAN traffic</string>
<string name="quick_actions">Quick actions</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="response_packet_magic_header">Response packet magic header</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="primary_tunnel">Default tunnel</string>
<string name="create_pin">Create PIN</string>
<string name="licenses">Licenses</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="vpn_channel_description">A channel for VPN state notifications</string>
<string name="amnezia">Amnezia</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="check_for_update">Check for update</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you can, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="edit_tunnel">Edit tunnel</string>
<string name="kernel">Kernel</string>
<string name="peer">Peer</string>
<string name="auto_tunneling">Auto-tunneling</string>
<string name="init_packet_magic_header">Init packet magic header</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="tunnel_control">Tunnel control</string>
<string name="website">App website</string>
<string name="mobile_tunnel">Mobile data tunnel</string>
<string name="error_no_file_explorer">No file explorer installed</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="auto_tunnel_channel_description">A channel for auto-tunnel state notifications</string>
<string name="show_qr">Show QR</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="tunnel_on_wifi">Tunnel on Wi-Fi</string>
<string name="add_peer">Add peer</string>
<string name="tunnel_starting">Tunnel starting</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="inactive">Inactive</string>
<string name="invalid_value">Invalid value</string>
<string name="persistent_keepalive">Persistent keepalive</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="exclude">Exclude</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="junk_packet_minimum_size">Junk packet minimum size</string>
<string name="location_services_not_detected">Location services not detected</string>
<string name="all">All</string>
<string name="location_permissions">Location Permissions</string>
<string name="unknown">Unknown</string>
<string name="tunnel_error_template">Tunnel failed with: %1$s</string>
<string name="restart_at_boot">Start on boot</string>
<string name="syntax_error">Syntax error</string>
<string name="learn_more">Learn more</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="email_subject">WG Tunnel Support</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="interface_">Interface</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="prominent_background_location_message">This feature requires background location permission to enable Wi-Fi SSID monitoring even while the application is closed. For more details, please see the Privacy Policy linked on the Support screen.</string>
<string name="delete_logs">Delete and clear logs</string>
<string name="launch_app_settings">Launch app settings</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="copy">Copy</string>
<string name="show_amnezia_properties">Show Amnezia properties</string>
<string name="legacy">Legacy</string>
<string name="preshared_key">Pre-shared key</string>
<string name="include">Include</string>
<string name="no_network">No network connected</string>
<string name="checking_for_update">Checking for updates</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="no_browser_detected">No browser detected</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="no_email_detected">No email app detected</string>
<string name="update_check_failed">Update check failed.</string>
<string name="dns_resolve_error">DNS resolution failed</string>
<string name="ping_target">Ping target</string>
<string name="update_available">Update Available!</string>
<string name="vpn_on">VPN on</string>
<string name="appearance">Appearance</string>
<string name="vpn_channel_name">VPN Notification Channel</string>
<string name="name">Name</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="yes">Yes</string>
<string name="seconds">Seconds</string>
<string name="vpn_denied_dialog_title">Permission Denied</string>
<string name="handshake">Handshake</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="export_logs">Export stored logs</string>
<string name="username">Username</string>
<string name="light">Light</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="darker">Darker</string>
<string name="dynamic">Dynamic</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="stop_on_no_internet">Stop on no internet</string>
<string name="permission_required">Permission Required</string>
<string name="shizuku_not_detected">Shizuku not detected</string>
<string name="tunnels">Tunnels</string>
<string name="automatic">Automatic</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="local_logging">Local logs monitor</string>
<string name="flavor_template">Flavor: %1$s</string>
<string name="delete">Delete</string>
<string name="donate_title">Donate</string>
<string name="endpoint">Endpoint</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="response_packet_junk_size">Response packet junk size</string>
<string name="start">Start</string>
<string name="enable_amnezia_compatibility">Enable Amnezia compatibility</string>
<string name="nothing_here_yet">Nothing here yet!</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="dns_servers">DNS servers</string>
<string name="support">Support</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="native_kill_switch">Native kill switch</string>
<string name="include_lan">Include LAN</string>
<string name="docs_description">Read the docs</string>
<string name="stop">Stop</string>
<string name="add_tunnels_text">Add from file or zip</string>
<string name="add_from_qr">Add from QR code</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="service_running_error">Service not running</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="copy_public_key">Copy public key</string>
<string name="always_on_message2">to make sure Always-on VPN is turned off for all other apps and try again</string>
<string name="open_settings">Open Settings</string>
<string name="kill_switch">kill switch</string>
<string name="mtu">MTU</string>
<string name="configuration">Configuration</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="unsure_how">if you are unsure how to proceed</string>
<string name="display_theme">Display theme</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="notifications">Notifications</string>
<string name="getting_started_guide">getting started guide</string>
<string name="join_matrix">Join Matrix community</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="email_description">Send me an email</string>
<string name="proxy_settings">Proxy settings</string>
<string name="select_all">Select all</string>
<string name="skip">Skip</string>
<string name="post_down">Post down</string>
<string name="restore_application">Restore from backup</string>
<string name="junk_packet_count">Junk packet count</string>
<string name="base64_key">Base64 key</string>
<string name="download">Download</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="transport_packet_magic_header">Transport packet magic header</string>
<string name="unknown_error">Unknown error occurred</string>
<string name="download_and_install">Download and Install</string>
<string name="vpn_settings">VPN system settings</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="debounce_delay">Debounce delay</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="bypass_lan_for_kill_switch">Bypass LAN for kill switch</string>
<string name="use_wildcards">Use name wildcards</string>
<string name="export_tunnels_wireguard">Export tunnels as WireGuard</string>
<string name="wifi_detection_method">Wi-Fi detection method</string>
<string name="tunnel">tunnel</string>
<string name="legacy_api_description">Use an Android 12 deprecated method for getting Wi-Fi information that limits location queries, but may not work reliably on newer devices</string>
<string name="active">Active</string>
<string name="security_type">Security:</string>
<string name="export_tunnels_amnezia">Export tunnels as Amnezia</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="addresses">Addresses</string>
<string name="privacy_policy">Privacy policy</string>
<string name="auto_tunnel">Auto-tunnel</string>
<string name="trusted_wifi_names">Trusted Wi-Fi names</string>
<string name="add_tunnel">Add tunnel</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="select">Select</string>
<string name="translation">Translation</string>
<string name="root">Root</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="location_justification">In order to read Wi-Fi names in the background with your current detection method, Android requires apps to be given \'Allow all the time\' and \'Precise\' (Background Location on older devices) permission. Please enable these permissions in your Android app settings.</string>
<string name="public_key">Public key</string>
<string name="show_scripts">Show scripts</string>
<string name="allowed_ips">Allowed IPs</string>
<string name="reliability">Reliability</string>
<string name="no_tunnels">No tunnels added yet!</string>
<string name="monitoring">Monitoring</string>
<string name="app_permission_title">WG Tunnel Control Bridge</string>
<string name="wireguard">WireGuard</string>
<string name="rotate_keys">Rotate keys</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="move_up">Move Up</string>
<string name="release_notes">Release notes</string>
<string name="dark">Dark</string>
<string name="monitoring_state_changes">Monitoring state changes</string>
<string name="dropdown">Dropdown</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="version_template">Version: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="cancel">Cancel</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="auto_tunnel_title">Auto-tunnel service</string>
<string name="prominent_background_location_title">Background Location Disclosure</string>
<string name="move_down">Move Down</string>
<string name="remove_amnezia_compatibility">Remove Amnezia compatibility</string>
<string name="open_issue">Open an issue</string>
<string name="random">(random)</string>
<string name="backup_application">Backup application data</string>
<string name="remote_key_template">Key: %1$s</string>
<string name="comma_separated">Comma separated</string>
<string name="amoled">AMOLED</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="install_updated_permission">This app needs permission to install updates.</string>
<string name="use_root_shell_for_wifi">Use a root shell to get Wi-Fi information, preventing the need for location permissions</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="language">Language</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="error_ssid_exists">SSID already exists</string>
<string name="splt_tunneling">Split tunneling</string>
<string name="okay">Okay</string>
<string name="search">Search</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="error_file_extension">File is not a .conf or .zip</string>
<string name="see_the">See the</string>
<string name="listen_port">Listen port</string>
<string name="auth_error">Unauthorized</string>
<string name="auto">(Auto)</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="add_from_clipboard">Add from clipboard</string>
<string name="kernel_name_error">Kernel module name error</string>
<string name="sort">Sort</string>
<string name="_continue">Continue</string>
<string name="create_import">Create from scratch</string>
<string name="_false">False</string>
<string name="config_error">Invalid config</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="update_check_unsupported">Update check is not supported for this build type.</string>
<string name="optional">(optional)</string>
<string name="trusted_ssid_value_description">Submit SSID</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="donate">Donate to project</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="camera_permission_required">Camera permission required</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="enabled_app_shortcuts">Enable app shortcuts</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="allow">Allow</string>
<string name="underload_packet_magic_header">Underload packet magic header</string>
<string name="vpn_off">VPN off</string>
<string name="latest_installed">You are already running the latest version.</string>
<string name="add_wifi_name">Add Wi-Fi name</string>
<string name="never">Never</string>
<string name="delete_tunnel_message">Are you sure you would like to delete the selected tunnels?</string>
<string name="private_key">Private key</string>
<string name="fix">Fix</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="settings">Settings</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="incorrect_pin">Pin is incorrect</string>
<string name="tunnel_running">Tunnel running</string>
<string name="export_failed">Export failed</string>
<string name="enable_remote_app_control">Enable remote app control</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="update_download_failed">Update download failed.</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="pre_up">Pre up</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="always_on_vpn_support">Allow Always-On VPN</string>
<string name="junk_packet_maximum_size">Junk packet maximum size</string>
<string name="_default">Default</string>
<string name="exclude_lan">Exclude LAN</string>
<string name="ping_monitor">Ping monitor</string>
<string name="error_root_denied">Root shell denied</string>
<string name="read_failed">Failed to read data.</string>
<string name="start_auto">Start auto-tunnel</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="hide_scripts">Hide scripts</string>
<string name="system">System</string>
<string name="tunnel_name">Tunnel Name</string>
<string name="error_tunnel_name">Tunnel name must be 15 characters or fewer in kernel mode</string>
<string name="wildcards_active">Wildcards active</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="add_from_url">Add from URL</string>
<string name="init_packet_junk_size">Init packet junk size</string>
<string name="location_permissions_missing">Location permissions missing</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="stop_auto">Stop auto-tunnel</string>
<string name="multiple">Multiple</string>
<string name="shizuku">Shizuku</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="enter_pin">Enter PIN</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_not_running">Auto-tunnel is not running</string>
<string name="set_primary_tunnel">Tunnel used when no preferred tunnel is configured</string>
<string name="pre_down">Pre down</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="export_success">Export success</string>
<string name="proxy">Proxy</string>
<string name="auto_tunnel_running">Auto-tunnel is running</string>
<string name="done">Done</string>
<string name="thank_you">Thank you for using WG Tunnel!</string>
<string name="invalid_key">Invalid key</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+344
View File
@@ -82,4 +82,348 @@
<string name="auto">(auto)</string>
<string name="create_pin">Buat pin</string>
<string name="set_primary_tunnel">Ditetapkan sebagai tunnel utama</string>
<string name="enter_config_url">Enter config URL</string>
<string name="use_android_recommended">Use Android\'s recommended method for getting Wi-Fi information, based on Android version</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="hide_amnezia_properties">Hide Amnezia properties</string>
<string name="advanced_settings">Advanced settings</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="auto_tunnel_channel_name">Auto-tunnel Notification Channel</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="current_template">Current: %1$s</string>
<string name="save_changes">Save changes</string>
<string name="save">Save</string>
<string name="logs">Logs</string>
<string name="ethernet_tunnel">Ethernet tunnel</string>
<string name="config_changes_saved">Configuration changes saved.</string>
<string name="join_telegram">Join Telegram community</string>
<string name="post_up">Post up</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="warning">Warning</string>
<string name="password">Password</string>
<string name="error_download_failed">Failed to download config</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="use_shell_via_shizuku">Use shell via Shizuku to get Wi-Fi information, preventing the need for location permission on non-rooted devices</string>
<string name="stop_on_internet_loss">Stop tunnel on internet loss</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="allow_lan_traffic">Allow LAN traffic</string>
<string name="quick_actions">Quick actions</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="primary_tunnel">Default tunnel</string>
<string name="licenses">Licenses</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="vpn_channel_description">A channel for VPN state notifications</string>
<string name="amnezia">Amnezia</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="check_for_update">Check for update</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you can, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="peer">Peer</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="tunnel_control">Tunnel control</string>
<string name="website">App website</string>
<string name="mobile_tunnel">Mobile data tunnel</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="auto_tunnel_channel_description">A channel for auto-tunnel state notifications</string>
<string name="show_qr">Show QR</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="tunnel_starting">Tunnel starting</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="inactive">Inactive</string>
<string name="invalid_value">Invalid value</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="exclude">Exclude</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="location_services_not_detected">Location services not detected</string>
<string name="location_permissions">Location Permissions</string>
<string name="unknown">Unknown</string>
<string name="tunnel_error_template">Tunnel failed with: %1$s</string>
<string name="syntax_error">Syntax error</string>
<string name="learn_more">Learn more</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="delete_logs">Delete and clear logs</string>
<string name="launch_app_settings">Launch app settings</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="copy">Copy</string>
<string name="legacy">Legacy</string>
<string name="include">Include</string>
<string name="no_network">No network connected</string>
<string name="checking_for_update">Checking for updates</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="update_check_failed">Update check failed.</string>
<string name="dns_resolve_error">DNS resolution failed</string>
<string name="ping_target">Ping target</string>
<string name="update_available">Update Available!</string>
<string name="appearance">Appearance</string>
<string name="name">Name</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="export_logs">Export stored logs</string>
<string name="username">Username</string>
<string name="light">Light</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="darker">Darker</string>
<string name="dynamic">Dynamic</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="stop_on_no_internet">Stop on no internet</string>
<string name="permission_required">Permission Required</string>
<string name="shizuku_not_detected">Shizuku not detected</string>
<string name="automatic">Automatic</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="local_logging">Local logs monitor</string>
<string name="flavor_template">Flavor: %1$s</string>
<string name="delete">Delete</string>
<string name="donate_title">Donate</string>
<string name="endpoint">Endpoint</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="start">Start</string>
<string name="enable_amnezia_compatibility">Enable Amnezia compatibility</string>
<string name="nothing_here_yet">Nothing here yet!</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="dns_servers">DNS servers</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="native_kill_switch">Native kill switch</string>
<string name="include_lan">Include LAN</string>
<string name="stop">Stop</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="service_running_error">Service not running</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="open_settings">Open Settings</string>
<string name="kill_switch">kill switch</string>
<string name="mtu">MTU</string>
<string name="configuration">Configuration</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="display_theme">Display theme</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="notifications">Notifications</string>
<string name="join_matrix">Join Matrix community</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="proxy_settings">Proxy settings</string>
<string name="select_all">Select all</string>
<string name="skip">Skip</string>
<string name="post_down">Post down</string>
<string name="restore_application">Restore from backup</string>
<string name="download">Download</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="download_and_install">Download and Install</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="debounce_delay">Debounce delay</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="bypass_lan_for_kill_switch">Bypass LAN for kill switch</string>
<string name="use_wildcards">Use name wildcards</string>
<string name="export_tunnels_wireguard">Export tunnels as WireGuard</string>
<string name="wifi_detection_method">Wi-Fi detection method</string>
<string name="tunnel">tunnel</string>
<string name="legacy_api_description">Use an Android 12 deprecated method for getting Wi-Fi information that limits location queries, but may not work reliably on newer devices</string>
<string name="active">Active</string>
<string name="security_type">Security:</string>
<string name="export_tunnels_amnezia">Export tunnels as Amnezia</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="addresses">Addresses</string>
<string name="auto_tunnel">Auto-tunnel</string>
<string name="trusted_wifi_names">Trusted Wi-Fi names</string>
<string name="add_tunnel">Add tunnel</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="select">Select</string>
<string name="translation">Translation</string>
<string name="root">Root</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="location_justification">In order to read Wi-Fi names in the background with your current detection method, Android requires apps to be given \'Allow all the time\' and \'Precise\' (Background Location on older devices) permission. Please enable these permissions in your Android app settings.</string>
<string name="public_key">Public key</string>
<string name="show_scripts">Show scripts</string>
<string name="allowed_ips">Allowed IPs</string>
<string name="reliability">Reliability</string>
<string name="monitoring">Monitoring</string>
<string name="app_permission_title">WG Tunnel Control Bridge</string>
<string name="wireguard">WireGuard</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="move_up">Move Up</string>
<string name="release_notes">Release notes</string>
<string name="dark">Dark</string>
<string name="monitoring_state_changes">Monitoring state changes</string>
<string name="dropdown">Dropdown</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="version_template">Version: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="move_down">Move Down</string>
<string name="remove_amnezia_compatibility">Remove Amnezia compatibility</string>
<string name="backup_application">Backup application data</string>
<string name="remote_key_template">Key: %1$s</string>
<string name="comma_separated">Comma separated</string>
<string name="amoled">AMOLED</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="app_permission_description">Control tunnels and auto-tunnel features.</string>
<string name="install_updated_permission">This app needs permission to install updates.</string>
<string name="use_root_shell_for_wifi">Use a root shell to get Wi-Fi information, preventing the need for location permissions</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="language">Language</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="splt_tunneling">Split tunneling</string>
<string name="search">Search</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="auth_error">Unauthorized</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="add_from_clipboard">Add from clipboard</string>
<string name="kernel_name_error">Kernel module name error</string>
<string name="sort">Sort</string>
<string name="_continue">Continue</string>
<string name="_false">False</string>
<string name="config_error">Invalid config</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="update_check_unsupported">Update check is not supported for this build type.</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="donate">Donate to project</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="camera_permission_required">Camera permission required</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="allow">Allow</string>
<string name="latest_installed">You are already running the latest version.</string>
<string name="add_wifi_name">Add Wi-Fi name</string>
<string name="fix">Fix</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="tunnel_running">Tunnel running</string>
<string name="export_failed">Export failed</string>
<string name="enable_remote_app_control">Enable remote app control</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="update_download_failed">Update download failed.</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="pre_up">Pre up</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="always_on_vpn_support">Allow Always-On VPN</string>
<string name="_default">Default</string>
<string name="exclude_lan">Exclude LAN</string>
<string name="ping_monitor">Ping monitor</string>
<string name="read_failed">Failed to read data.</string>
<string name="start_auto">Start auto-tunnel</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="hide_scripts">Hide scripts</string>
<string name="system">System</string>
<string name="tunnel_name">Tunnel Name</string>
<string name="error_tunnel_name">Tunnel name must be 15 characters or fewer in kernel mode</string>
<string name="wildcards_active">Wildcards active</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="add_from_url">Add from URL</string>
<string name="location_permissions_missing">Location permissions missing</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="stop_auto">Stop auto-tunnel</string>
<string name="multiple">Multiple</string>
<string name="shizuku">Shizuku</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_not_running">Auto-tunnel is not running</string>
<string name="pre_down">Pre down</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="export_success">Export success</string>
<string name="proxy">Proxy</string>
<string name="auto_tunnel_running">Auto-tunnel is running</string>
<string name="done">Done</string>
<string name="invalid_key">Invalid key</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+137 -13
View File
@@ -27,7 +27,7 @@
<string name="preshared_key">Chiave pre-condivisa</string>
<string name="tunnels">Tunnel</string>
<string name="tunnel_mobile_data">Tunnel su dati mobili</string>
<string name="privacy_policy">Leggi l\'informativa sulla privacy</string>
<string name="privacy_policy">Informativa sulla privacy</string>
<string name="okay">Okay</string>
<string name="tunnel_on_ethernet">Tunnel su ethernet</string>
<string name="name">Nome</string>
@@ -43,7 +43,7 @@
<string name="persistent_keepalive">Keepalive persistente</string>
<string name="cancel">Annulla</string>
<string name="unknown_error">Errore sconosciuto</string>
<string name="tunnel_on_wifi">Tunnel su reti WiFi non affidabili</string>
<string name="tunnel_on_wifi">Tunnel su reti WiFi</string>
<string name="error_ssid_exists">L\'SSID esiste già</string>
<string name="error_root_denied">Shell di root negata</string>
<string name="prominent_background_location_title">Permesso localizzazione in background</string>
@@ -69,7 +69,7 @@
<string name="incorrect_pin">Il PIN non è corretto</string>
<string name="pin_created">PIN correttamente creato</string>
<string name="enable_app_lock">Abilita blocco app</string>
<string name="set_primary_tunnel">Imposta come tunnel principale</string>
<string name="set_primary_tunnel">Tunnel utilizzato quando non è configurato alcun tunnel preferito</string>
<string name="edit_tunnel">Modifica tunnel</string>
<string name="settings">Impostazioni</string>
<string name="support">Supporto</string>
@@ -81,7 +81,7 @@
<string name="response_packet_magic_header">Magic header pacchetto risposta</string>
<string name="getting_started_guide">guida di avvio rapido</string>
<string name="see_the">Vedi la</string>
<string name="restart_at_boot">Riattiva all\'avvio del sistema</string>
<string name="restart_at_boot">Avvia all\'avvio</string>
<string name="vpn_denied_dialog_title">Permesso Negato</string>
<string name="root_accepted">Accesso alla shell root accettata</string>
<string name="show_amnezia_properties">Mostra proprietà Amnezia</string>
@@ -123,9 +123,9 @@
<string name="never">Mai</string>
<string name="use_wildcards">Abilita caratteri jolly</string>
<string name="add_from_clipboard">Importa dagli appunti</string>
<string name="trusted_wifi_names">Elenco SSID reti affidabili</string>
<string name="trusted_wifi_names">Elenco reti Wi-Fi affidabili</string>
<string name="add_wifi_name">Aggiungi il nome di una rete WiFi</string>
<string name="primary_tunnel">Tunnel primario</string>
<string name="primary_tunnel">Tunnel predefinito</string>
<string name="post_down">Dopo essersi arrestato</string>
<string name="pre_down">Prima di arrestarsi</string>
<string name="light">Chiaro</string>
@@ -137,8 +137,8 @@
<string name="save">Salva</string>
<string name="active">Attivo</string>
<string name="dropdown">A discesa</string>
<string name="local_logging">Logging locale</string>
<string name="handshake">Handshake</string>
<string name="local_logging">Monitor di log locali</string>
<string name="handshake">Ultimo handshake</string>
<string name="logs">Logs</string>
<string name="notifications">Notifiche</string>
<string name="automatic">Automatico</string>
@@ -159,7 +159,7 @@
<string name="add_from_url">Importa da URL</string>
<string name="join_telegram">Unisciti alla comunità Telegram</string>
<string name="join_matrix">Unisciti alla comunità Matrix</string>
<string name="app_permission_title">WG Tunnel Control Bridge</string>
<string name="app_permission_title">Ponte di controllo WG Tunnel</string>
<string name="select">Seleziona</string>
<string name="hide_scripts">Nascondi gli script</string>
<string name="auto_tunnel">Tunnel automatico</string>
@@ -252,7 +252,6 @@
<string name="packets_sent_template">Pacchetti inviati: %1$s</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="latency_template">Latenza: %1$s</string>
<string name="sec_ago_template">%1$s sec fa</string>
<string name="ping_success_template">Ultimo ping riuscito: %1$s</string>
<string name="reachable_template">Raggiungibile: %1$s</string>
<string name="current_template">Corrente: %1$s</string>
@@ -292,14 +291,139 @@
<string name="mode_disabled_template">Opzione non disponibile nella modalità %1$s.</string>
<string name="donate_title">Donazioni</string>
<string name="tunnel_monitoring">Monitoraggio tunnel</string>
<string name="tunnel_ping_interval">Ripeti ping test ogni</string>
<string name="tunnel_ping_interval">Esegui ping test ogni (secondi)</string>
<string name="attempts_per_interval">Richieste ping inviate per singolo test</string>
<string name="ping_timeout">Ping test timeout</string>
<string name="timeout_all_attempts">Durata massima per singolo test (comprensiva di tutte le richieste ping inviate)</string>
<string name="display_detailed_ping_stats">Mostra statistiche dettagliate di ping</string>
<string name="error_tunnel_name">Il nome del tunnel non deve superare i 15 caratteri in modalità kernel</string>
<string name="location_justification">Per poter rilevare i nomi delle reti Wi-Fi in background nella modalità corrente, Android richiede che le app dispongano dell\'autorizzazione di accesso alla posizione con le opzioni \"Consenti sempre\" e \"Usa posizione esatta\" (accesso alla posizione in background nei dispositivi meno recenti). Concedi le autorizzazioni richieste all\'interno delle impostazioni dell\'app.</string>
<string name="ping_target_description">Utilizzato qualora nessun indirizzo IP di rete locale risulti disponibile (ad esempio in configurazioni full-tunnel). Se non indicato, viene utilizzato Cloudflare di default.</string>
<string name="ping_target_description">Impostazione predefinita su un tunnel IP interno per configurazioni split o Cloudflare per configurazioni tunnel complete.</string>
<string name="ip_or_hostname">Indirizzo IP o nome host</string>
<string name="set_custom_ping_target">Bersaglio ping test (facoltativo)</string>
<string name="set_custom_ping_target">Destinazioni ping personalizzate</string>
<string name="use_android_recommended">Utilizza il metodo consigliato da Android per ottenere le informazioni Wi-Fi, in base alla versione di Android.</string>
<string name="dual_stack">Dual-stack</string>
<string name="kernel_name_dots">Il nome del tunnel non può essere \'.\' o \'.\' in modalità kernel</string>
<string name="github_sponsors">Sponsor GitHub</string>
<string name="save_changes">Salva modifiche</string>
<string name="dual_stack_description">I tunnel devono supportare IPv4 e IPv6</string>
<string name="remote_key">Chiave remota</string>
<string name="mobile_data">Dati mobili</string>
<string name="use_shell_via_shizuku">Utilizza la shell tramite Shizuku per recuperare le informazioni sulle reti Wi-Fi, evitando la necessità dei permessi di accesso alla posizione sui dispositivi privi dei permessi di root</string>
<string name="tunnel_boot_description">Avvia il tunnel predefinito all\'avvio</string>
<string name="prefer_ipv6_resolution">Preferisci la risoluzione peer IPv6</string>
<string name="google_donation_message">Purtroppo, a causa delle politiche di Google, i link per le donazioni non sono consentiti nella versione Play Store di questa app. Si prega di consultare le pagine web del progetto per trovare dove effettuare le donazioni.</string>
<string name="tunnel_mapping_description">Associa i tunnel preferiti in base al nome Wi-Fi</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="donation_prompt_prefix">Grazie per aver usato WG Tunnel! Se siete in grado, si prega di considerare</string>
<string name="website">Sito web dell\'app</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="wifi_settings">Impostazioni Wi-Fi</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Il tunnel è stato riavviato con successo dal pinger.</string>
<string name="unknown">Sconosciuto</string>
<string name="all_services_disabled">Per eseguire questa operazione è necessario disattivare Auto-tunnel e tunnel.</string>
<string name="pinger_bounce_recovery">Riavvio di Pinger non riuscito. Tunnel ripristinato con indirizzi precedenti.</string>
<string name="ddns_auto_update_description">Aggiornamenti automatici dell\'IP in caso di modifiche DDNS</string>
<string name="no_network">Nessuna rete collegata</string>
<string name="wifi">Wi-Fi</string>
<string name="ping_target">Ping target</string>
<string name="locked_down">Bloccato</string>
<string name="resources">Risorse</string>
<string name="back">Indietro</string>
<string name="active_tunnel_update_failed">Aggiornamento tunnel attivo non riuscito</string>
<string name="already_donated">Già donato</string>
<string name="global_split_tunneling">Tunneling diviso globale</string>
<string name="active_network">Rete attiva:</string>
<string name="help_translate">Aiuta a tradurre l\'app</string>
<string name="ethernet">Ethernet</string>
<string name="other">Altro</string>
<string name="kill_switch">kill switch</string>
<string name="configuration">Configurazione</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Server DNS globali</string>
<string name="contact">Contatti</string>
<string name="backup_and_restore">Backup e ripristino</string>
<string name="ping">Ping</string>
<string name="about">Informazioni</string>
<string name="donation_prompt_link">sostenere il progetto</string>
<string name="donation_prompt_suffix">per mantenerlo gratuito e migliorarlo.</string>
<string name="text_too_large_for_qr">Il testo è troppo grande per visualizzare il QR.</string>
<string name="options">Opzioni</string>
<string name="legacy_api_description">Utilizza un metodo deprecato di Android 12 per ottenere informazioni sul Wi-Fi che limita le richieste di localizzazione, ma potrebbe non funzionare in modo affidabile sui dispositivi più recenti.</string>
<string name="security_type">Sicurezza:</string>
<string name="bounce_failed_template">Pinger non è riuscito a ripristinare il tunnel con errore: %1$s</string>
<string name="ddns_success_message">Endpoint DNS dinamico aggiornato con successo.</string>
<string name="translation">Traduzione</string>
<string name="reliability">Affidabilità</string>
<string name="monitoring">Monitoraggio</string>
<string name="aovpn_description">Consente ad Android di avviare tunnel</string>
<string name="set_ping_target">Imposta destinazione ping</string>
<string name="general">Generale</string>
<string name="review">Valuta l\'app</string>
<string name="disabled">Disabilitato</string>
<string name="ddns_auto_update">Aggiornamento automatico DNS dinamico</string>
<string name="kernel_name_special_characters">Il nome del tunnel in modalità kernel non può avere spazi o determinati caratteri speciali (permesso: alfanumerico, _, =, +, ., -)</string>
<string name="_continue">Continua</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="unavailable_in_mode">Non disponibile nella modalità corrente</string>
<string name="debounce_description">Ritardo tra rapidi cambiamenti di rete</string>
<string name="preferred_tunnel">Tunnel preferito</string>
<string name="tunnel_running_name_message">Il nome non può essere modificato mentre il tunnel è attivo.</string>
<string name="network_name">Rete:</string>
<string name="mapped">Mappato</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="preferred_tunnel_label">Tunnel preferito:</string>
<string name="ping_monitor">Monitoraggio ping</string>
<string name="crypto">Indirizzi di criptovaluta</string>
<string name="restart_message_template">Salvare le modifiche causerà il riavvio di %1$s. Desideri continuare?</string>
<string name="already_donated_description">Disattiva le richieste di donazioni future</string>
<string name="metered_tunnel">Tunnel a consumo</string>
<string name="lockdown_settings">Impostazioni di blocco</string>
<string name="networks">Reti</string>
<string name="auto_tunnel_not_running">Auto-tunnel non è in esecuzione</string>
<string name="lockdown">Lockdown</string>
<string name="auto_tunnel_running">Auto-tunnel attivo</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+357
View File
@@ -69,4 +69,361 @@
<string name="add_wifi_name">Wifi名の追加</string>
<string name="language">設定言語</string>
<string name="trusted_wifi_names">信頼されたWifi名</string>
<string name="enter_config_url">Enter config URL</string>
<string name="use_android_recommended">Use Android\'s recommended method for getting Wi-Fi information, based on Android version</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="hide_amnezia_properties">Hide Amnezia properties</string>
<string name="advanced_settings">Advanced settings</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="auto_tunnel_channel_name">Auto-tunnel Notification Channel</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="current_template">Current: %1$s</string>
<string name="root_accepted">Root shell accepted</string>
<string name="save_changes">Save changes</string>
<string name="save">Save</string>
<string name="ethernet_tunnel">Ethernet tunnel</string>
<string name="join_telegram">Join Telegram community</string>
<string name="post_up">Post up</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="warning">Warning</string>
<string name="password">Password</string>
<string name="error_download_failed">Failed to download config</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="use_shell_via_shizuku">Use shell via Shizuku to get Wi-Fi information, preventing the need for location permission on non-rooted devices</string>
<string name="stop_on_internet_loss">Stop tunnel on internet loss</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="allow_lan_traffic">Allow LAN traffic</string>
<string name="quick_actions">Quick actions</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="response_packet_magic_header">Response packet magic header</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="primary_tunnel">Default tunnel</string>
<string name="licenses">Licenses</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="vpn_channel_description">A channel for VPN state notifications</string>
<string name="amnezia">Amnezia</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="check_for_update">Check for update</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you can, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="kernel">Kernel</string>
<string name="auto_tunneling">Auto-tunneling</string>
<string name="init_packet_magic_header">Init packet magic header</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="tunnel_control">Tunnel control</string>
<string name="website">App website</string>
<string name="mobile_tunnel">Mobile data tunnel</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="auto_tunnel_channel_description">A channel for auto-tunnel state notifications</string>
<string name="show_qr">Show QR</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="tunnel_starting">Tunnel starting</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="inactive">Inactive</string>
<string name="invalid_value">Invalid value</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="junk_packet_minimum_size">Junk packet minimum size</string>
<string name="all">All</string>
<string name="location_permissions">Location Permissions</string>
<string name="unknown">Unknown</string>
<string name="tunnel_error_template">Tunnel failed with: %1$s</string>
<string name="restart_at_boot">Start on boot</string>
<string name="syntax_error">Syntax error</string>
<string name="learn_more">Learn more</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="email_subject">WG Tunnel Support</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="delete_logs">Delete and clear logs</string>
<string name="launch_app_settings">Launch app settings</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="copy">Copy</string>
<string name="show_amnezia_properties">Show Amnezia properties</string>
<string name="legacy">Legacy</string>
<string name="no_network">No network connected</string>
<string name="checking_for_update">Checking for updates</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="update_check_failed">Update check failed.</string>
<string name="dns_resolve_error">DNS resolution failed</string>
<string name="ping_target">Ping target</string>
<string name="update_available">Update Available!</string>
<string name="appearance">Appearance</string>
<string name="name">Name</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="vpn_denied_dialog_title">Permission Denied</string>
<string name="handshake">Handshake</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="export_logs">Export stored logs</string>
<string name="username">Username</string>
<string name="light">Light</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="darker">Darker</string>
<string name="dynamic">Dynamic</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="stop_on_no_internet">Stop on no internet</string>
<string name="permission_required">Permission Required</string>
<string name="shizuku_not_detected">Shizuku not detected</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="local_logging">Local logs monitor</string>
<string name="flavor_template">Flavor: %1$s</string>
<string name="delete">Delete</string>
<string name="donate_title">Donate</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="response_packet_junk_size">Response packet junk size</string>
<string name="start">Start</string>
<string name="enable_amnezia_compatibility">Enable Amnezia compatibility</string>
<string name="nothing_here_yet">Nothing here yet!</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="support">Support</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="native_kill_switch">Native kill switch</string>
<string name="include_lan">Include LAN</string>
<string name="stop">Stop</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="service_running_error">Service not running</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="open_settings">Open Settings</string>
<string name="kill_switch">kill switch</string>
<string name="configuration">Configuration</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="display_theme">Display theme</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="join_matrix">Join Matrix community</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="proxy_settings">Proxy settings</string>
<string name="select_all">Select all</string>
<string name="skip">Skip</string>
<string name="post_down">Post down</string>
<string name="restore_application">Restore from backup</string>
<string name="junk_packet_count">Junk packet count</string>
<string name="base64_key">Base64 key</string>
<string name="download">Download</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="transport_packet_magic_header">Transport packet magic header</string>
<string name="download_and_install">Download and Install</string>
<string name="vpn_settings">VPN system settings</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="debounce_delay">Debounce delay</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="bypass_lan_for_kill_switch">Bypass LAN for kill switch</string>
<string name="use_wildcards">Use name wildcards</string>
<string name="export_tunnels_wireguard">Export tunnels as WireGuard</string>
<string name="wifi_detection_method">Wi-Fi detection method</string>
<string name="tunnel">tunnel</string>
<string name="legacy_api_description">Use an Android 12 deprecated method for getting Wi-Fi information that limits location queries, but may not work reliably on newer devices</string>
<string name="active">Active</string>
<string name="security_type">Security:</string>
<string name="export_tunnels_amnezia">Export tunnels as Amnezia</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="addresses">Addresses</string>
<string name="auto_tunnel">Auto-tunnel</string>
<string name="add_tunnel">Add tunnel</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="select">Select</string>
<string name="translation">Translation</string>
<string name="root">Root</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="location_justification">In order to read Wi-Fi names in the background with your current detection method, Android requires apps to be given \'Allow all the time\' and \'Precise\' (Background Location on older devices) permission. Please enable these permissions in your Android app settings.</string>
<string name="show_scripts">Show scripts</string>
<string name="reliability">Reliability</string>
<string name="monitoring">Monitoring</string>
<string name="app_permission_title">WG Tunnel Control Bridge</string>
<string name="wireguard">WireGuard</string>
<string name="rotate_keys">Rotate keys</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="move_up">Move Up</string>
<string name="release_notes">Release notes</string>
<string name="dark">Dark</string>
<string name="monitoring_state_changes">Monitoring state changes</string>
<string name="dropdown">Dropdown</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="version_template">Version: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="prominent_background_location_title">Background Location Disclosure</string>
<string name="move_down">Move Down</string>
<string name="remove_amnezia_compatibility">Remove Amnezia compatibility</string>
<string name="random">(random)</string>
<string name="backup_application">Backup application data</string>
<string name="remote_key_template">Key: %1$s</string>
<string name="comma_separated">Comma separated</string>
<string name="amoled">AMOLED</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="app_permission_description">Control tunnels and auto-tunnel features.</string>
<string name="install_updated_permission">This app needs permission to install updates.</string>
<string name="use_root_shell_for_wifi">Use a root shell to get Wi-Fi information, preventing the need for location permissions</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="splt_tunneling">Split tunneling</string>
<string name="okay">Okay</string>
<string name="search">Search</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="see_the">See the</string>
<string name="listen_port">Listen port</string>
<string name="auth_error">Unauthorized</string>
<string name="auto">(Auto)</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="kernel_name_error">Kernel module name error</string>
<string name="sort">Sort</string>
<string name="_continue">Continue</string>
<string name="_false">False</string>
<string name="config_error">Invalid config</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="update_check_unsupported">Update check is not supported for this build type.</string>
<string name="trusted_ssid_value_description">Submit SSID</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="donate">Donate to project</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="camera_permission_required">Camera permission required</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="allow">Allow</string>
<string name="underload_packet_magic_header">Underload packet magic header</string>
<string name="latest_installed">You are already running the latest version.</string>
<string name="never">Never</string>
<string name="fix">Fix</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="tunnel_running">Tunnel running</string>
<string name="export_failed">Export failed</string>
<string name="enable_remote_app_control">Enable remote app control</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="update_download_failed">Update download failed.</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="pre_up">Pre up</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="junk_packet_maximum_size">Junk packet maximum size</string>
<string name="_default">Default</string>
<string name="exclude_lan">Exclude LAN</string>
<string name="ping_monitor">Ping monitor</string>
<string name="error_root_denied">Root shell denied</string>
<string name="read_failed">Failed to read data.</string>
<string name="start_auto">Start auto-tunnel</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="hide_scripts">Hide scripts</string>
<string name="system">System</string>
<string name="error_tunnel_name">Tunnel name must be 15 characters or fewer in kernel mode</string>
<string name="wildcards_active">Wildcards active</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="add_from_url">Add from URL</string>
<string name="init_packet_junk_size">Init packet junk size</string>
<string name="location_permissions_missing">Location permissions missing</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="stop_auto">Stop auto-tunnel</string>
<string name="multiple">Multiple</string>
<string name="shizuku">Shizuku</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_not_running">Auto-tunnel is not running</string>
<string name="set_primary_tunnel">Tunnel used when no preferred tunnel is configured</string>
<string name="pre_down">Pre down</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="export_success">Export success</string>
<string name="proxy">Proxy</string>
<string name="auto_tunnel_running">Auto-tunnel is running</string>
<string name="done">Done</string>
<string name="invalid_key">Invalid key</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+429
View File
@@ -0,0 +1,429 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">ვგ ტუნელი</string>
<string name="app_permission_title">ვგ ტუნელის კონტროლის ხიდი</string>
<string name="app_permission_description">მართე ტუნელის და ავტო-ტუნელის ფუნქციები.</string>
<string name="vpn_channel_name">VPN შეტყობინების არხი</string>
<string name="error_file_extension">ფაილი არ წარმოადგენს .conf ან .zip ფორმატს</string>
<string name="no_tunnels">ტუნელები ჯერ არ არის დამატებული!</string>
<string name="tunnels">ტუნელები</string>
<string name="tunnel_mobile_data">ტუნელი მობილური ინტერნეტით</string>
<string name="privacy_policy">კონფიდენციალურობის პოლიტიკა</string>
<string name="okay">კარგი</string>
<string name="tunnel_on_ethernet">ტუნელი ეზერნეტისას</string>
<string name="prominent_background_location_message">ამ ფუნქციას Wi-Fi SSID მონიტორინგის ჩასართავად ფონური მდებარეობის ნებართვა სჭირდება, მაშინაც კი, როცა აპლიკაცია დახურულია. დამატებითი ინფორმაციისთვის იხილეთ კონფიდენციალურობის პოლიტიკა, რომელიც ბმულზეა მითითებული მხარდაჭერის ეკრანზე.</string>
<string name="thank_you">მადლობა რომ იყენებთ ვგ ტუნელს!</string>
<string name="trusted_ssid_value_description">შეიყვანეთ SSID</string>
<string name="add_tunnels_text">დაამატეთ ფაილი ან zip არქივი</string>
<string name="add_from_qr">დაამატე QR კოდის დახმარებით</string>
<string name="tunnel_name">ტუნელის სახელი</string>
<string name="exclude">გამორიცხვა</string>
<string name="include">მოიცავს</string>
<string name="config_changes_saved">კონფიგურაციის ცვლილებები შენახულია.</string>
<string name="public_key">საჯარო გასაღები</string>
<string name="addresses">მისამართები</string>
<string name="dns_servers">DNS სერვერები</string>
<string name="mtu">MTU</string>
<string name="peer">მოზიარე</string>
<string name="allowed_ips">ნებადართული IP მისამართები</string>
<string name="endpoint">საბოლოო წერტილი/მისამართი</string>
<string name="name">სახელი</string>
<string name="always_on_vpn_support">ყოველთვის ჩართული VPN</string>
<string name="location_services_not_detected">ადგილმდებარეობის სერვისები ვერ აღმოვაჩინეთ</string>
<string name="auto_tunneling">ავტო-ტუნელი</string>
<string name="vpn_on">VPN ჩართვა</string>
<string name="vpn_off">VPN გამორთვა</string>
<string name="create_import">ნოლიდან შექმნა</string>
<string name="add_peer">მოზიარეს დამატება</string>
<string name="interface_">ინტერფეისი</string>
<string name="rotate_keys">გასაღებების დატრიალება</string>
<string name="private_key">კერძო გასაღები</string>
<string name="copy_public_key">დააკოპირე საჯარო გასაღები</string>
<string name="base64_key">Base64 გასაღები</string>
<string name="listen_port">მოსმენის პორტი</string>
<string name="random">(შემთხვევითი)</string>
<string name="optional">(ნებაყოფლობითი)</string>
<string name="preshared_key">წინასწარ გაცვლილი გასაღები</string>
<string name="seconds">წამები</string>
<string name="persistent_keepalive">მუდმივი keepalive</string>
<string name="cancel">უარყოფა</string>
<string name="enabled_app_shortcuts">გააქტიურე აპლიკაციის მალსახმობები</string>
<string name="unknown_error">დაფიქსირდა უცნობი შეცდომა</string>
<string name="tunnel_on_wifi">ტუნელის გამოტენება Wi-Fi-ს მეშვეობით</string>
<string name="email_subject">ვგ ტუნელის დახმარება</string>
<string name="email_chooser">გაგზავნე მეილი…</string>
<string name="docs_description">წაიკითხეთ დოკუმენტაცია</string>
<string name="email_description">მომწერეთ მეილი</string>
<string name="error_ssid_exists">SSID უკვე დამატებულია</string>
<string name="error_root_denied">ვერ მოვიპოვე Root გარემოცვა</string>
<string name="yes">დიახ</string>
<string name="all">ყველა</string>
<string name="open_issue">დააფიქსირე ხარვეზი</string>
<string name="auto">(ავტოამტური)</string>
<string name="incorrect_pin">პინი არის არასწორი</string>
<string name="pin_created">პინი წარმატებით შეიქმნა</string>
<string name="enter_pin">შეიყვანეთ პინი</string>
<string name="create_pin">შექმენით პინი</string>
<string name="enable_app_lock">გააქტიურე აპლიკაციის დაბლოკვა</string>
<string name="see_the">ნახეთ</string>
<string name="getting_started_guide">საწყისი ინსტრუქცია</string>
<string name="restart_at_boot">ჩართვისას დაწყება</string>
<string name="vpn_denied_dialog_title">უფლება უარყოფილია</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="vpn_settings">VPN სისტემის კონფიგურაცია</string>
<string name="never">არასდროს</string>
<string name="handshake">ხელის ჩამორთმევა</string>
<string name="logs">ლოგები</string>
<string name="appearance">გარეგნობა</string>
<string name="notifications">შეტყობინებები</string>
<string name="automatic">ავტომატური</string>
<string name="light">ნათელი</string>
<string name="dark">მუქი</string>
<string name="dynamic">დინამიური</string>
<string name="language">ენა</string>
<string name="trusted_wifi_names">სანდო Wi-Fi სახელები</string>
<string name="add_wifi_name">დაამატე Wi-Fi სახელი</string>
<string name="primary_tunnel">ნაგულისხმევი ტუნელი</string>
<string name="mobile_tunnel">მობილური ინტერნეტით ტუნელი</string>
<string name="skip">გამოტოვება</string>
<string name="launch_app_settings">გახსენი აპლიკაციის სეთინგები</string>
<string name="learn_more">წაიკითხე მეტი</string>
<string name="start_auto">ჩართე ავტო-ტუნელი</string>
<string name="enter_config_url">Enter config URL</string>
<string name="use_android_recommended">Use Android\'s recommended method for getting Wi-Fi information, based on Android version</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="hide_amnezia_properties">Hide Amnezia properties</string>
<string name="advanced_settings">Advanced settings</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="auto_tunnel_channel_name">Auto-tunnel Notification Channel</string>
<string name="always_on_message">VPN connection permission has been denied. Please check the</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="current_template">Current: %1$s</string>
<string name="root_accepted">Root shell accepted</string>
<string name="save_changes">Save changes</string>
<string name="save">Save</string>
<string name="delete_tunnel">Delete tunnel</string>
<string name="ethernet_tunnel">Ethernet tunnel</string>
<string name="join_telegram">Join Telegram community</string>
<string name="post_up">Post up</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="warning">Warning</string>
<string name="password">Password</string>
<string name="error_download_failed">Failed to download config</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="use_shell_via_shizuku">Use shell via Shizuku to get Wi-Fi information, preventing the need for location permission on non-rooted devices</string>
<string name="stop_on_internet_loss">Stop tunnel on internet loss</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="allow_lan_traffic">Allow LAN traffic</string>
<string name="quick_actions">Quick actions</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="response_packet_magic_header">Response packet magic header</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="licenses">Licenses</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="vpn_channel_description">A channel for VPN state notifications</string>
<string name="amnezia">Amnezia</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="check_for_update">Check for update</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you are able, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="edit_tunnel">Edit tunnel</string>
<string name="kernel">Kernel</string>
<string name="init_packet_magic_header">Init packet magic header</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="tunnel_control">Tunnel control</string>
<string name="website">App website</string>
<string name="error_no_file_explorer">No file explorer installed</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="auto_tunnel_channel_description">A channel for auto-tunnel state notifications</string>
<string name="show_qr">Show QR</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="tunnel_starting">Tunnel starting</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="inactive">Inactive</string>
<string name="invalid_value">Invalid value</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="junk_packet_minimum_size">Junk packet minimum size</string>
<string name="location_permissions">Location Permissions</string>
<string name="unknown">Unknown</string>
<string name="tunnel_error_template">Tunnel failed with: %1$s</string>
<string name="syntax_error">Syntax error</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="delete_logs">Delete and clear logs</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="copy">Copy</string>
<string name="show_amnezia_properties">Show Amnezia properties</string>
<string name="legacy">Legacy</string>
<string name="no_network">No network connected</string>
<string name="checking_for_update">Checking for updates</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="no_browser_detected">No browser detected</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="no_email_detected">No email app detected</string>
<string name="update_check_failed">Update check failed.</string>
<string name="dns_resolve_error">DNS resolution failed</string>
<string name="ping_target">Ping target</string>
<string name="update_available">Update Available!</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="export_logs">Export stored logs</string>
<string name="username">Username</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="darker">Darker</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="stop_on_no_internet">Stop on no internet</string>
<string name="permission_required">Permission Required</string>
<string name="shizuku_not_detected">Shizuku not detected</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="local_logging">Local logs monitor</string>
<string name="flavor_template">Flavor: %1$s</string>
<string name="delete">Delete</string>
<string name="donate_title">Donate</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="response_packet_junk_size">Response packet junk size</string>
<string name="start">Start</string>
<string name="enable_amnezia_compatibility">Enable Amnezia compatibility</string>
<string name="nothing_here_yet">Nothing here yet!</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="support">Support</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="native_kill_switch">Native kill switch</string>
<string name="include_lan">Include LAN</string>
<string name="stop">Stop</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="service_running_error">Service not running</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="always_on_message2">to make sure Always-on VPN is turned off for all other apps and try again</string>
<string name="open_settings">Open Settings</string>
<string name="kill_switch">kill switch</string>
<string name="configuration">Configuration</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="unsure_how">if you are unsure how to proceed</string>
<string name="display_theme">Display theme</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="join_matrix">Join Matrix community</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="proxy_settings">Proxy settings</string>
<string name="select_all">Select all</string>
<string name="post_down">Post down</string>
<string name="restore_application">Restore from backup</string>
<string name="junk_packet_count">Junk packet count</string>
<string name="download">Download</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="transport_packet_magic_header">Transport packet magic header</string>
<string name="download_and_install">Download and Install</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="debounce_delay">Debounce delay</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="bypass_lan_for_kill_switch">Bypass LAN for kill switch</string>
<string name="use_wildcards">Use name wildcards</string>
<string name="export_tunnels_wireguard">Export tunnels as WireGuard</string>
<string name="wifi_detection_method">Wi-Fi detection method</string>
<string name="tunnel">tunnel</string>
<string name="legacy_api_description">Use an Android 12 deprecated method for getting Wi-Fi information that limits location queries, but may not work reliably on newer devices</string>
<string name="active">Active</string>
<string name="security_type">Security:</string>
<string name="export_tunnels_amnezia">Export tunnels as Amnezia</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="auto_tunnel">Auto-tunnel</string>
<string name="add_tunnel">Add tunnel</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="select">Select</string>
<string name="translation">Translation</string>
<string name="root">Root</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="location_justification">In order to read Wi-Fi names in the background with your current detection method, Android requires apps to be given \'Allow all the time\' and \'Precise\' (Background Location on older devices) permission. Please enable these permissions in your Android app settings.</string>
<string name="show_scripts">Show scripts</string>
<string name="reliability">Reliability</string>
<string name="monitoring">Monitoring</string>
<string name="wireguard">WireGuard</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="move_up">Move Up</string>
<string name="release_notes">Release notes</string>
<string name="monitoring_state_changes">Monitoring state changes</string>
<string name="dropdown">Dropdown</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="version_template">Version: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="auto_tunnel_title">Auto-tunnel service</string>
<string name="prominent_background_location_title">Background Location Disclosure</string>
<string name="move_down">Move Down</string>
<string name="remove_amnezia_compatibility">Remove Amnezia compatibility</string>
<string name="backup_application">Backup application data</string>
<string name="remote_key_template">Key: %1$s</string>
<string name="comma_separated">Comma separated</string>
<string name="amoled">AMOLED</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="install_updated_permission">This app needs permission to install updates.</string>
<string name="use_root_shell_for_wifi">Use a root shell to get Wi-Fi information, preventing the need for location permissions</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="splt_tunneling">Split tunneling</string>
<string name="search">Search</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="auth_error">Unauthorized</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="add_from_clipboard">Add from clipboard</string>
<string name="kernel_name_error">Kernel module name error</string>
<string name="sort">Sort</string>
<string name="_continue">Continue</string>
<string name="_false">False</string>
<string name="config_error">Invalid config</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="update_check_unsupported">Update check is not supported for this build type.</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="donate">Donate to project</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="camera_permission_required">Camera permission required</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="allow">Allow</string>
<string name="underload_packet_magic_header">Underload packet magic header</string>
<string name="latest_installed">You are already running the latest version.</string>
<string name="delete_tunnel_message">Are you sure you would like to delete the selected tunnels?</string>
<string name="fix">Fix</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="settings">Settings</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="tunnel_running">Tunnel running</string>
<string name="export_failed">Export failed</string>
<string name="enable_remote_app_control">Enable remote app control</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="update_download_failed">Update download failed.</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="pre_up">Pre up</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="junk_packet_maximum_size">Junk packet maximum size</string>
<string name="_default">Default</string>
<string name="exclude_lan">Exclude LAN</string>
<string name="ping_monitor">Ping monitor</string>
<string name="read_failed">Failed to read data.</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="hide_scripts">Hide scripts</string>
<string name="system">System</string>
<string name="error_tunnel_name">Tunnel name must be 15 characters or fewer in kernel mode</string>
<string name="wildcards_active">Wildcards active</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="add_from_url">Add from URL</string>
<string name="init_packet_junk_size">Init packet junk size</string>
<string name="location_permissions_missing">Location permissions missing</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="stop_auto">Stop auto-tunnel</string>
<string name="multiple">Multiple</string>
<string name="shizuku">Shizuku</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_not_running">Auto-tunnel is not running</string>
<string name="set_primary_tunnel">Tunnel used when no preferred tunnel is configured</string>
<string name="pre_down">Pre down</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="export_success">Export success</string>
<string name="proxy">Proxy</string>
<string name="auto_tunnel_running">Auto-tunnel is running</string>
<string name="done">Done</string>
<string name="invalid_key">Invalid key</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+423
View File
@@ -3,4 +3,427 @@
<string name="app_name">WG Tunnel</string>
<string name="app_permission_description">Kontroller tunneler og auto-tunnel egenskaper.</string>
<string name="vpn_channel_name">VPN varslingskanal</string>
<string name="enter_config_url">Enter config URL</string>
<string name="use_android_recommended">Use Android\'s recommended method for getting Wi-Fi information, based on Android version</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="hide_amnezia_properties">Hide Amnezia properties</string>
<string name="advanced_settings">Advanced settings</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="auto_tunnel_channel_name">Auto-tunnel Notification Channel</string>
<string name="always_on_message">VPN connection permission has been denied. Please check the</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="tunnel_on_ethernet">Tunnel on ethernet</string>
<string name="current_template">Current: %1$s</string>
<string name="email_chooser">Send an email…</string>
<string name="root_accepted">Root shell accepted</string>
<string name="save_changes">Save changes</string>
<string name="save">Save</string>
<string name="delete_tunnel">Delete tunnel</string>
<string name="tunnel_mobile_data">Tunnel on mobile data</string>
<string name="logs">Logs</string>
<string name="enable_app_lock">Enable app lock</string>
<string name="ethernet_tunnel">Ethernet tunnel</string>
<string name="config_changes_saved">Configuration changes saved.</string>
<string name="join_telegram">Join Telegram community</string>
<string name="pin_created">Pin successfully created</string>
<string name="post_up">Post up</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="warning">Warning</string>
<string name="password">Password</string>
<string name="error_download_failed">Failed to download config</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="use_shell_via_shizuku">Use shell via Shizuku to get Wi-Fi information, preventing the need for location permission on non-rooted devices</string>
<string name="stop_on_internet_loss">Stop tunnel on internet loss</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="allow_lan_traffic">Allow LAN traffic</string>
<string name="quick_actions">Quick actions</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="response_packet_magic_header">Response packet magic header</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="primary_tunnel">Default tunnel</string>
<string name="create_pin">Create PIN</string>
<string name="licenses">Licenses</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="vpn_channel_description">A channel for VPN state notifications</string>
<string name="amnezia">Amnezia</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="check_for_update">Check for update</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you can, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="edit_tunnel">Edit tunnel</string>
<string name="kernel">Kernel</string>
<string name="peer">Peer</string>
<string name="auto_tunneling">Auto-tunneling</string>
<string name="init_packet_magic_header">Init packet magic header</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="tunnel_control">Tunnel control</string>
<string name="website">App website</string>
<string name="mobile_tunnel">Mobile data tunnel</string>
<string name="error_no_file_explorer">No file explorer installed</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="auto_tunnel_channel_description">A channel for auto-tunnel state notifications</string>
<string name="show_qr">Show QR</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="tunnel_on_wifi">Tunnel on Wi-Fi</string>
<string name="add_peer">Add peer</string>
<string name="tunnel_starting">Tunnel starting</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="inactive">Inactive</string>
<string name="invalid_value">Invalid value</string>
<string name="persistent_keepalive">Persistent keepalive</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="exclude">Exclude</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="junk_packet_minimum_size">Junk packet minimum size</string>
<string name="location_services_not_detected">Location services not detected</string>
<string name="all">All</string>
<string name="location_permissions">Location Permissions</string>
<string name="unknown">Unknown</string>
<string name="tunnel_error_template">Tunnel failed with: %1$s</string>
<string name="restart_at_boot">Start on boot</string>
<string name="syntax_error">Syntax error</string>
<string name="learn_more">Learn more</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="email_subject">WG Tunnel Support</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="interface_">Interface</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="prominent_background_location_message">This feature requires background location permission to enable Wi-Fi SSID monitoring even while the application is closed. For more details, please see the Privacy Policy linked on the Support screen.</string>
<string name="delete_logs">Delete and clear logs</string>
<string name="launch_app_settings">Launch app settings</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="copy">Copy</string>
<string name="show_amnezia_properties">Show Amnezia properties</string>
<string name="legacy">Legacy</string>
<string name="preshared_key">Pre-shared key</string>
<string name="include">Include</string>
<string name="no_network">No network connected</string>
<string name="checking_for_update">Checking for updates</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="no_browser_detected">No browser detected</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="no_email_detected">No email app detected</string>
<string name="update_check_failed">Update check failed.</string>
<string name="dns_resolve_error">DNS resolution failed</string>
<string name="ping_target">Ping target</string>
<string name="update_available">Update Available!</string>
<string name="vpn_on">VPN on</string>
<string name="appearance">Appearance</string>
<string name="name">Name</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="yes">Yes</string>
<string name="seconds">Seconds</string>
<string name="vpn_denied_dialog_title">Permission Denied</string>
<string name="handshake">Handshake</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="export_logs">Export stored logs</string>
<string name="username">Username</string>
<string name="light">Light</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="darker">Darker</string>
<string name="dynamic">Dynamic</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="stop_on_no_internet">Stop on no internet</string>
<string name="permission_required">Permission Required</string>
<string name="shizuku_not_detected">Shizuku not detected</string>
<string name="tunnels">Tunnels</string>
<string name="automatic">Automatic</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="local_logging">Local logs monitor</string>
<string name="flavor_template">Flavor: %1$s</string>
<string name="delete">Delete</string>
<string name="donate_title">Donate</string>
<string name="endpoint">Endpoint</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="response_packet_junk_size">Response packet junk size</string>
<string name="start">Start</string>
<string name="enable_amnezia_compatibility">Enable Amnezia compatibility</string>
<string name="nothing_here_yet">Nothing here yet!</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="dns_servers">DNS servers</string>
<string name="support">Support</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="native_kill_switch">Native kill switch</string>
<string name="include_lan">Include LAN</string>
<string name="docs_description">Read the docs</string>
<string name="stop">Stop</string>
<string name="add_tunnels_text">Add from file or zip</string>
<string name="add_from_qr">Add from QR code</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="service_running_error">Service not running</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="copy_public_key">Copy public key</string>
<string name="always_on_message2">to make sure Always-on VPN is turned off for all other apps and try again</string>
<string name="open_settings">Open Settings</string>
<string name="kill_switch">kill switch</string>
<string name="mtu">MTU</string>
<string name="configuration">Configuration</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="unsure_how">if you are unsure how to proceed</string>
<string name="display_theme">Display theme</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="notifications">Notifications</string>
<string name="getting_started_guide">getting started guide</string>
<string name="join_matrix">Join Matrix community</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="email_description">Send me an email</string>
<string name="proxy_settings">Proxy settings</string>
<string name="select_all">Select all</string>
<string name="skip">Skip</string>
<string name="post_down">Post down</string>
<string name="restore_application">Restore from backup</string>
<string name="junk_packet_count">Junk packet count</string>
<string name="base64_key">Base64 key</string>
<string name="download">Download</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="transport_packet_magic_header">Transport packet magic header</string>
<string name="unknown_error">Unknown error occurred</string>
<string name="download_and_install">Download and Install</string>
<string name="vpn_settings">VPN system settings</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="debounce_delay">Debounce delay</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="bypass_lan_for_kill_switch">Bypass LAN for kill switch</string>
<string name="use_wildcards">Use name wildcards</string>
<string name="export_tunnels_wireguard">Export tunnels as WireGuard</string>
<string name="wifi_detection_method">Wi-Fi detection method</string>
<string name="tunnel">tunnel</string>
<string name="legacy_api_description">Use an Android 12 deprecated method for getting Wi-Fi information that limits location queries, but may not work reliably on newer devices</string>
<string name="active">Active</string>
<string name="security_type">Security:</string>
<string name="export_tunnels_amnezia">Export tunnels as Amnezia</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="addresses">Addresses</string>
<string name="privacy_policy">Privacy policy</string>
<string name="auto_tunnel">Auto-tunnel</string>
<string name="trusted_wifi_names">Trusted Wi-Fi names</string>
<string name="add_tunnel">Add tunnel</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="select">Select</string>
<string name="translation">Translation</string>
<string name="root">Root</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="location_justification">In order to read Wi-Fi names in the background with your current detection method, Android requires apps to be given \'Allow all the time\' and \'Precise\' (Background Location on older devices) permission. Please enable these permissions in your Android app settings.</string>
<string name="public_key">Public key</string>
<string name="show_scripts">Show scripts</string>
<string name="allowed_ips">Allowed IPs</string>
<string name="reliability">Reliability</string>
<string name="no_tunnels">No tunnels added yet!</string>
<string name="monitoring">Monitoring</string>
<string name="app_permission_title">WG Tunnel Control Bridge</string>
<string name="wireguard">WireGuard</string>
<string name="rotate_keys">Rotate keys</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="move_up">Move Up</string>
<string name="release_notes">Release notes</string>
<string name="dark">Dark</string>
<string name="monitoring_state_changes">Monitoring state changes</string>
<string name="dropdown">Dropdown</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="version_template">Version: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="cancel">Cancel</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="auto_tunnel_title">Auto-tunnel service</string>
<string name="prominent_background_location_title">Background Location Disclosure</string>
<string name="move_down">Move Down</string>
<string name="remove_amnezia_compatibility">Remove Amnezia compatibility</string>
<string name="open_issue">Open an issue</string>
<string name="random">(random)</string>
<string name="backup_application">Backup application data</string>
<string name="remote_key_template">Key: %1$s</string>
<string name="comma_separated">Comma separated</string>
<string name="amoled">AMOLED</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="install_updated_permission">This app needs permission to install updates.</string>
<string name="use_root_shell_for_wifi">Use a root shell to get Wi-Fi information, preventing the need for location permissions</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="language">Language</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="error_ssid_exists">SSID already exists</string>
<string name="splt_tunneling">Split tunneling</string>
<string name="okay">Okay</string>
<string name="search">Search</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="error_file_extension">File is not a .conf or .zip</string>
<string name="see_the">See the</string>
<string name="listen_port">Listen port</string>
<string name="auth_error">Unauthorized</string>
<string name="auto">(Auto)</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="add_from_clipboard">Add from clipboard</string>
<string name="kernel_name_error">Kernel module name error</string>
<string name="sort">Sort</string>
<string name="_continue">Continue</string>
<string name="create_import">Create from scratch</string>
<string name="_false">False</string>
<string name="config_error">Invalid config</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="update_check_unsupported">Update check is not supported for this build type.</string>
<string name="optional">(optional)</string>
<string name="trusted_ssid_value_description">Submit SSID</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="donate">Donate to project</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="camera_permission_required">Camera permission required</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="enabled_app_shortcuts">Enable app shortcuts</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="allow">Allow</string>
<string name="underload_packet_magic_header">Underload packet magic header</string>
<string name="vpn_off">VPN off</string>
<string name="latest_installed">You are already running the latest version.</string>
<string name="add_wifi_name">Add Wi-Fi name</string>
<string name="never">Never</string>
<string name="delete_tunnel_message">Are you sure you would like to delete the selected tunnels?</string>
<string name="private_key">Private key</string>
<string name="fix">Fix</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="settings">Settings</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="incorrect_pin">Pin is incorrect</string>
<string name="tunnel_running">Tunnel running</string>
<string name="export_failed">Export failed</string>
<string name="enable_remote_app_control">Enable remote app control</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="update_download_failed">Update download failed.</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="pre_up">Pre up</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="always_on_vpn_support">Allow Always-On VPN</string>
<string name="junk_packet_maximum_size">Junk packet maximum size</string>
<string name="_default">Default</string>
<string name="exclude_lan">Exclude LAN</string>
<string name="ping_monitor">Ping monitor</string>
<string name="error_root_denied">Root shell denied</string>
<string name="read_failed">Failed to read data.</string>
<string name="start_auto">Start auto-tunnel</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="hide_scripts">Hide scripts</string>
<string name="system">System</string>
<string name="tunnel_name">Tunnel Name</string>
<string name="error_tunnel_name">Tunnel name must be 15 characters or fewer in kernel mode</string>
<string name="wildcards_active">Wildcards active</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="add_from_url">Add from URL</string>
<string name="init_packet_junk_size">Init packet junk size</string>
<string name="location_permissions_missing">Location permissions missing</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="stop_auto">Stop auto-tunnel</string>
<string name="multiple">Multiple</string>
<string name="shizuku">Shizuku</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="enter_pin">Enter PIN</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_not_running">Auto-tunnel is not running</string>
<string name="set_primary_tunnel">Tunnel used when no preferred tunnel is configured</string>
<string name="pre_down">Pre down</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="export_success">Export success</string>
<string name="proxy">Proxy</string>
<string name="auto_tunnel_running">Auto-tunnel is running</string>
<string name="done">Done</string>
<string name="thank_you">Thank you for using WG Tunnel!</string>
<string name="invalid_key">Invalid key</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+194
View File
@@ -232,4 +232,198 @@
<string name="drag_handle">Sleep Handle</string>
<string name="tunnel_item_description">1$s, %2$s, %3$s</string>
<string name="bypass_lan_for_kill_switch">Gebruik LAN niet voor stop knop</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="save_changes">Save changes</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="password">Password</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you can, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="website">App website</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="invalid_value">Invalid value</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="unknown">Unknown</string>
<string name="syntax_error">Syntax error</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="no_network">No network connected</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="ping_target">Ping target</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="username">Username</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="donate_title">Donate</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="kill_switch">kill switch</string>
<string name="configuration">Configuration</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="proxy_settings">Proxy settings</string>
<string name="restore_application">Restore from backup</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="security_type">Security:</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="translation">Translation</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="reliability">Reliability</string>
<string name="monitoring">Monitoring</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="backup_application">Backup application data</string>
<string name="comma_separated">Comma separated</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="_continue">Continue</string>
<string name="_false">False</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="ping_monitor">Ping monitor</string>
<string name="read_failed">Failed to read data.</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="system">System</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="proxy">Proxy</string>
<string name="invalid_key">Invalid key</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+115 -14
View File
@@ -15,7 +15,7 @@
<string name="vpn_off">Wyłącz VPN</string>
<string name="interface_">Interfejs</string>
<string name="enabled_app_shortcuts">Włącz skróty aplikacji</string>
<string name="privacy_policy">Wyświetl politykę prywatności</string>
<string name="privacy_policy">Polityka prywatności</string>
<string name="tunnel_mobile_data">Tunel przez mobilną transmisję danych</string>
<string name="random">(losowy)</string>
<string name="pin_created">Kod PIN został pomyślnie utworzony</string>
@@ -26,9 +26,9 @@
<string name="transport_packet_magic_header">Nagłówek magicznego pakietu transportowego</string>
<string name="underload_packet_magic_header">Nagłówek magicznego pakietu niedociążenia</string>
<string name="see_the">Zobacz</string>
<string name="restart_at_boot">Uruchom ponownie przy rozruchu</string>
<string name="restart_at_boot">Uruchom przy rozruchu</string>
<string name="never">Nigdy</string>
<string name="handshake">Uzgadnianie</string>
<string name="handshake">Ostatnie uzgadnianie</string>
<string name="show_amnezia_properties">Pokaż właściwości protokołu Amnezia</string>
<string name="seconds">sek.</string>
<string name="prominent_background_location_message">Ta funkcja wymaga pozwolenia na dostęp do lokalizacji w tle, aby włączyć monitorowanie SSID sieci Wi-Fi nawet wtedy, gdy aplikacja jest zamknięta. Więcej szczegółów znajdziesz w polityce prywatności znajdującej się na ekranie Obsługa.</string>
@@ -50,7 +50,7 @@
<string name="auto">(Automatycznie)</string>
<string name="add_from_clipboard">Dodaj ze schowka</string>
<string name="delete_tunnel_message">Czy na pewno chcesz usunąć wybrane tunele?</string>
<string name="tunnel_on_wifi">Tunel przez niezaufaną sieć Wi-Fi</string>
<string name="tunnel_on_wifi">Tunel w sieci Wi-Fi</string>
<string name="dns_servers">Serwery DNS</string>
<string name="error_file_extension">Plik nie jest w formacie .conf lub .zip</string>
<string name="copy_public_key">Skopiuj klucz publiczny</string>
@@ -64,7 +64,7 @@
<string name="wildcards_active">Symbole wieloznaczne aktywne</string>
<string name="create_pin">Utwórz kod PIN</string>
<string name="junk_packet_maximum_size">Maksymalny rozmiar pakietu śmieciowego</string>
<string name="local_logging">Lokalne rejestrowanie</string>
<string name="local_logging">Monitor lokalnych dzienników</string>
<string name="monitoring_state_changes">Monitorowanie zmian stanu</string>
<string name="add_tunnels_text">Dodaj z pliku lub archiwum ZIP</string>
<string name="unknown_error">Wystąpił nieznany błąd</string>
@@ -105,9 +105,9 @@
<string name="dynamic">Dynamiczny</string>
<string name="language">Język</string>
<string name="display_theme">Motyw wyświetlania</string>
<string name="trusted_wifi_names">Nazwy zaufanych sieci Wi-Fi</string>
<string name="trusted_wifi_names">Zaufane nazwy sieci Wi-Fi</string>
<string name="add_wifi_name">Dodaj nazwę sieci Wi-Fi</string>
<string name="primary_tunnel">Tunel podstawowy</string>
<string name="primary_tunnel">Tunel domyślny</string>
<string name="mobile_tunnel">Tunel mobilnej transmisji danych</string>
<string name="skip">Pomiń</string>
<string name="launch_app_settings">Uruchom ustawienia aplikacji</string>
@@ -121,8 +121,8 @@
<string name="exclude">Wyklucz</string>
<string name="docs_description">Przeczytaj dokumentację</string>
<string name="email_description">Wyślij mi wiadomość e-mail</string>
<string name="set_primary_tunnel">Ustaw jako tunel podstawowy</string>
<string name="vpn_channel_id">Kanał VPN</string>
<string name="set_primary_tunnel">Tunel używany, gdy nie skonfigurowano preferowanego tunelu</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="stop_on_no_internet">Zatrzymaj, gdy nie ma Internetu</string>
<string name="stop_on_internet_loss">Zatrzymaj tunel przy utracie Internetu</string>
<string name="ethernet_tunnel">Tunel ethernetowy</string>
@@ -132,7 +132,7 @@
<string name="auto_tunnel_channel_name">Kanał powiadomień autotunelu</string>
<string name="auto_tunnel_channel_description">Kanał powiadomień o stanie autotunelowania</string>
<string name="stop">Zatrzymaj</string>
<string name="splt_tunneling">Tunelowanie rozdzielone</string>
<string name="splt_tunneling">Tunelowanie dzielone</string>
<string name="pre_up">Przed aktywacją</string>
<string name="post_up">Po aktywacji</string>
<string name="pre_down">Przed dezaktywacją</string>
@@ -209,7 +209,7 @@
<string name="done">Gotowe</string>
<string name="current_template">Bieżące: %1$s</string>
<string name="wifi_detection_method">Metoda wykrywania Wi-Fi</string>
<string name="_default">Domyślna</string>
<string name="_default">Domyślnie</string>
<string name="legacy">Przestarzała</string>
<string name="root">Root</string>
<string name="shizuku">Shizuku</string>
@@ -238,9 +238,9 @@
<string name="pinger_bounce_recovery">Nie udało się ponownie uruchomić pingera. Tunel odzyskany ze starymi adresami.</string>
<string name="bounce_failed_template">Pinger nie mógł odzyskać tunelu z powodu błędu: %1$s</string>
<string name="tunnel_monitoring">Monitorowanie tunelu</string>
<string name="set_custom_ping_target">Niestandardowy cel pingowania (opcjonalnie)</string>
<string name="set_custom_ping_target">Niestandardowy cel pingowania</string>
<string name="ip_or_hostname">Adres IP lub nazwa hosta</string>
<string name="ping_target_description">Używane, jeśli wewnętrzny adres IP nie jest dostępny (np. w konfiguracjach pełnego tunelu). Pozostawienie pustego pola domyślnie powoduje korzystanie z Cloudflare.</string>
<string name="ping_target_description">Domyślnie jest to wewnętrzny adres IP tunelu w przypadku konfiguracji dzielonych lub Cloudflare w przypadku konfiguracji pełnego tunelu.</string>
<string name="tunnel_ping_interval">Interwał pingowania tunelu</string>
<string name="attempts_per_interval">Próby pingowania na interwał</string>
<string name="ping_timeout">Limit czasu pingowania tunelu</string>
@@ -248,7 +248,6 @@
<string name="display_detailed_ping_stats">Wyświetl szczegółowe statystyki pingowania</string>
<string name="reachable_template">Osiągalny: %1$s</string>
<string name="ping_success_template">Ostatni udany ping: %1$s</string>
<string name="sec_ago_template">%1$s sek. temu</string>
<string name="latency_template">Opóźnienie: %1$s</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="packets_sent_template">Pakiety wysłane: %1$s</string>
@@ -325,5 +324,107 @@
<string name="donation_closing">Moim marzeniem jest praca nad tym projektem na pełen etat.</string>
<string name="donation_signoff">Z wdzięcznością,</string>
<string name="google_donation_message">Niestety, ze względu na politykę Google, linki do darowizn nie są dozwolone w wersji tej aplikacji dostępnej w Google Play. Aby dowiedzieć się, gdzie można przekazać darowiznę, odwiedź strony projektu.</string>
<string name="kernel_wireguard_unsupported">Kernel nie zawiera wsparcia dla WireGuard (brak modułu albo nie wbudowany w kernel)!</string>
<string name="delete_active_message">Nie można usunąć aktywnego tunelu.</string>
<string name="back">Wstecz</string>
<string name="configuration">Konfiguracja</string>
<string name="about">O aplikacji</string>
<string name="resources">Zasoby</string>
<string name="website">Witryna internetowa aplikacji</string>
<string name="contact">Kontakt</string>
<string name="review">Oceń aplikację</string>
<string name="other">Inne</string>
<string name="options">Opcje</string>
<string name="general">Ogólne</string>
<string name="networks">Sieci</string>
<string name="preferred_tunnel_label">Preferowany tunel:</string>
<string name="preferred_tunnel">Preferowany tunel</string>
<string name="mapped">Zmapowano</string>
<string name="tunnel_mapping">Mapowanie tuneli</string>
<string name="wifi_settings">Ustawienia Wi-Fi</string>
<string name="ping">Pingowanie</string>
<string name="ping_monitor">Monitor pingowania</string>
<string name="backup_and_restore">Kopia zapasowa i przywracanie</string>
<string name="ping_target">Cel pingowania</string>
<string name="set_ping_target">Ustaw cel pingowania</string>
<string name="mobile_data">Dane mobilne</string>
<string name="ethernet">Ethernet</string>
<string name="unknown">Nieznane</string>
<string name="no_network">Brak połączenia z siecią</string>
<string name="active_network">Aktywna sieć:</string>
<string name="security_type">Zabezpieczenia:</string>
<string name="network_name">Sieć:</string>
<string name="wifi">Wi-Fi</string>
<string name="text_too_large_for_qr">Tekst jest za duży, aby wyświetlić kod QR.</string>
<string name="all_services_disabled">Należy wyłączyć autotunelowanie i tunele, aby wykonać tę czynność.</string>
<string name="ddns_success_message">Pomyślnie zaktualizowano punkt końcowy dynamicznego DNS.</string>
<string name="reliability">Niezawodność</string>
<string name="debounce_description">Opóźnienie między szybkimi zmianami sieci</string>
<string name="aovpn_description">Umożliwia systemowi Android uruchamianie tuneli</string>
<string name="tunnel_boot_description">Uruchom domyślny tunel przy rozruchu</string>
<string name="remote_key">Klucz zdalny</string>
<string name="tunnel_mapping_description">Mapuj tunele zgodnie preferencjami wg nazwy sieci Wi-Fi</string>
<string name="monitoring">Monitorowanie</string>
<string name="kernel_name_dots">Nazwa tunelu nie może być „.” ani „..” w trybie jądra</string>
<string name="kernel_name_special_characters">Nazwa tunelu w trybie jądra nie może zawierać spacji ani niektórych znaków specjalnych (dozwolone: znaki alfanumeryczne, _, =, +, ., -)</string>
<string name="tunnel_running_name_message">Nazwy nie można zmienić, gdy tunel jest aktywny.</string>
<string name="metered_tunnel">Tunel taryfowy</string>
<string name="lockdown_settings">Ustawienia blokady</string>
<string name="unavailable_in_mode">Niedostępne w obecnym trybie</string>
<string name="global_split_tunneling">Globalne tunelowanie dzielone</string>
<string name="global_dns_servers">Globalne serwery DNS</string>
<string name="dual_stack">Sieć dual-stack</string>
<string name="dual_stack_description">Tunele muszą obsługiwać protokoły IPv4 i IPv6</string>
<string name="save_changes">Zapisz zmiany</string>
<string name="restart_message_template">Zapisanie zmian spowoduje ponowne uruchomienie %1$s. Czy chcesz kontynuować?</string>
<string name="_continue">Kontynuuj</string>
<string name="kill_switch">wyłącznik awaryjny</string>
<string name="translation">Tłumaczenie</string>
<string name="help_translate">Pomóż przetłumaczyć aplikację</string>
<string name="info">Informacje</string>
<string name="already_donated">Już przekazano darowiznę</string>
<string name="already_donated_description">Wyłącza przyszłe monity o darowizny</string>
<string name="donation_prompt_prefix">Dziękujemy za korzystanie z WG Tunnel! Jeśli możesz, rozważ</string>
<string name="donation_prompt_link">wspieranie projektu,</string>
<string name="donation_prompt_suffix">aby utrzymać ją wolną i stale udoskonalaną.</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Rozmiar śmieciowego pakietu transportu</string>
<string name="cookie_packet_junk_size">Rozmiar śmieciowego pakietu ciasteczka</string>
</resources>
+295
View File
@@ -131,4 +131,299 @@
<string name="quick_actions">Ações rápidas</string>
<string name="advanced_settings">Configurações avançadas</string>
<string name="enable_amnezia_compatibility">Ativar compatibilidade Amnezia</string>
<string name="enter_config_url">Enter config URL</string>
<string name="use_android_recommended">Use Android\'s recommended method for getting Wi-Fi information, based on Android version</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="auto_tunnel_channel_name">Auto-tunnel Notification Channel</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="current_template">Current: %1$s</string>
<string name="save_changes">Save changes</string>
<string name="save">Save</string>
<string name="logs">Logs</string>
<string name="join_telegram">Join Telegram community</string>
<string name="post_up">Post up</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="warning">Warning</string>
<string name="password">Password</string>
<string name="error_download_failed">Failed to download config</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="use_shell_via_shizuku">Use shell via Shizuku to get Wi-Fi information, preventing the need for location permission on non-rooted devices</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="response_packet_magic_header">Response packet magic header</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="primary_tunnel">Default tunnel</string>
<string name="licenses">Licenses</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="vpn_channel_description">A channel for VPN state notifications</string>
<string name="amnezia">Amnezia</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="check_for_update">Check for update</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you can, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="init_packet_magic_header">Init packet magic header</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="tunnel_control">Tunnel control</string>
<string name="website">App website</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="auto_tunnel_channel_description">A channel for auto-tunnel state notifications</string>
<string name="show_qr">Show QR</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="tunnel_starting">Tunnel starting</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="inactive">Inactive</string>
<string name="invalid_value">Invalid value</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="location_permissions">Location Permissions</string>
<string name="unknown">Unknown</string>
<string name="tunnel_error_template">Tunnel failed with: %1$s</string>
<string name="syntax_error">Syntax error</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="delete_logs">Delete and clear logs</string>
<string name="launch_app_settings">Launch app settings</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="copy">Copy</string>
<string name="legacy">Legacy</string>
<string name="no_network">No network connected</string>
<string name="checking_for_update">Checking for updates</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="update_check_failed">Update check failed.</string>
<string name="dns_resolve_error">DNS resolution failed</string>
<string name="ping_target">Ping target</string>
<string name="update_available">Update Available!</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="export_logs">Export stored logs</string>
<string name="username">Username</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="darker">Darker</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="permission_required">Permission Required</string>
<string name="shizuku_not_detected">Shizuku not detected</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="flavor_template">Flavor: %1$s</string>
<string name="delete">Delete</string>
<string name="donate_title">Donate</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="start">Start</string>
<string name="nothing_here_yet">Nothing here yet!</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="service_running_error">Service not running</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="always_on_message2">to make sure Always-on VPN is turned off for all other apps and try again</string>
<string name="open_settings">Open Settings</string>
<string name="kill_switch">kill switch</string>
<string name="configuration">Configuration</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="join_matrix">Join Matrix community</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="proxy_settings">Proxy settings</string>
<string name="select_all">Select all</string>
<string name="post_down">Post down</string>
<string name="restore_application">Restore from backup</string>
<string name="download">Download</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="transport_packet_magic_header">Transport packet magic header</string>
<string name="download_and_install">Download and Install</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="debounce_delay">Debounce delay</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="export_tunnels_wireguard">Export tunnels as WireGuard</string>
<string name="wifi_detection_method">Wi-Fi detection method</string>
<string name="tunnel">tunnel</string>
<string name="legacy_api_description">Use an Android 12 deprecated method for getting Wi-Fi information that limits location queries, but may not work reliably on newer devices</string>
<string name="active">Active</string>
<string name="security_type">Security:</string>
<string name="export_tunnels_amnezia">Export tunnels as Amnezia</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="auto_tunnel">Auto-tunnel</string>
<string name="add_tunnel">Add tunnel</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="select">Select</string>
<string name="translation">Translation</string>
<string name="root">Root</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="location_justification">In order to read Wi-Fi names in the background with your current detection method, Android requires apps to be given \'Allow all the time\' and \'Precise\' (Background Location on older devices) permission. Please enable these permissions in your Android app settings.</string>
<string name="reliability">Reliability</string>
<string name="monitoring">Monitoring</string>
<string name="app_permission_title">WG Tunnel Control Bridge</string>
<string name="wireguard">WireGuard</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="move_up">Move Up</string>
<string name="release_notes">Release notes</string>
<string name="dropdown">Dropdown</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="version_template">Version: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="move_down">Move Down</string>
<string name="backup_application">Backup application data</string>
<string name="remote_key_template">Key: %1$s</string>
<string name="comma_separated">Comma separated</string>
<string name="amoled">AMOLED</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="app_permission_description">Control tunnels and auto-tunnel features.</string>
<string name="install_updated_permission">This app needs permission to install updates.</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="search">Search</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="auth_error">Unauthorized</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="kernel_name_error">Kernel module name error</string>
<string name="sort">Sort</string>
<string name="_continue">Continue</string>
<string name="_false">False</string>
<string name="config_error">Invalid config</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="update_check_unsupported">Update check is not supported for this build type.</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="camera_permission_required">Camera permission required</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="allow">Allow</string>
<string name="underload_packet_magic_header">Underload packet magic header</string>
<string name="latest_installed">You are already running the latest version.</string>
<string name="fix">Fix</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="export_failed">Export failed</string>
<string name="enable_remote_app_control">Enable remote app control</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="update_download_failed">Update download failed.</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="pre_up">Pre up</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="_default">Default</string>
<string name="ping_monitor">Ping monitor</string>
<string name="read_failed">Failed to read data.</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="system">System</string>
<string name="error_tunnel_name">Tunnel name must be 15 characters or fewer in kernel mode</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="add_from_url">Add from URL</string>
<string name="location_permissions_missing">Location permissions missing</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="multiple">Multiple</string>
<string name="shizuku">Shizuku</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_not_running">Auto-tunnel is not running</string>
<string name="pre_down">Pre down</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="export_success">Export success</string>
<string name="proxy">Proxy</string>
<string name="auto_tunnel_running">Auto-tunnel is running</string>
<string name="done">Done</string>
<string name="invalid_key">Invalid key</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+294
View File
@@ -132,4 +132,298 @@
<string name="enable_amnezia_compatibility">Ativar compatibilidade Amnezia</string>
<string name="remove_amnezia_compatibility">Remover compatibilidade Amnezia</string>
<string name="include_lan">Incluir LAN</string>
<string name="enter_config_url">Enter config URL</string>
<string name="use_android_recommended">Use Android\'s recommended method for getting Wi-Fi information, based on Android version</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="auto_tunnel_channel_name">Auto-tunnel Notification Channel</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="current_template">Current: %1$s</string>
<string name="save_changes">Save changes</string>
<string name="save">Save</string>
<string name="logs">Logs</string>
<string name="join_telegram">Join Telegram community</string>
<string name="post_up">Post up</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="warning">Warning</string>
<string name="password">Password</string>
<string name="error_download_failed">Failed to download config</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="use_shell_via_shizuku">Use shell via Shizuku to get Wi-Fi information, preventing the need for location permission on non-rooted devices</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="response_packet_magic_header">Response packet magic header</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="primary_tunnel">Default tunnel</string>
<string name="licenses">Licenses</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="vpn_channel_description">A channel for VPN state notifications</string>
<string name="amnezia">Amnezia</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="check_for_update">Check for update</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you can, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="init_packet_magic_header">Init packet magic header</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="tunnel_control">Tunnel control</string>
<string name="website">App website</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="auto_tunnel_channel_description">A channel for auto-tunnel state notifications</string>
<string name="show_qr">Show QR</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="tunnel_starting">Tunnel starting</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="inactive">Inactive</string>
<string name="invalid_value">Invalid value</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="location_permissions">Location Permissions</string>
<string name="unknown">Unknown</string>
<string name="tunnel_error_template">Tunnel failed with: %1$s</string>
<string name="syntax_error">Syntax error</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="delete_logs">Delete and clear logs</string>
<string name="launch_app_settings">Launch app settings</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="copy">Copy</string>
<string name="legacy">Legacy</string>
<string name="no_network">No network connected</string>
<string name="checking_for_update">Checking for updates</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="update_check_failed">Update check failed.</string>
<string name="dns_resolve_error">DNS resolution failed</string>
<string name="ping_target">Ping target</string>
<string name="update_available">Update Available!</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="export_logs">Export stored logs</string>
<string name="username">Username</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="darker">Darker</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="permission_required">Permission Required</string>
<string name="shizuku_not_detected">Shizuku not detected</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="flavor_template">Flavor: %1$s</string>
<string name="delete">Delete</string>
<string name="donate_title">Donate</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="start">Start</string>
<string name="nothing_here_yet">Nothing here yet!</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="service_running_error">Service not running</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="open_settings">Open Settings</string>
<string name="kill_switch">kill switch</string>
<string name="configuration">Configuration</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="join_matrix">Join Matrix community</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="proxy_settings">Proxy settings</string>
<string name="select_all">Select all</string>
<string name="post_down">Post down</string>
<string name="restore_application">Restore from backup</string>
<string name="download">Download</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="transport_packet_magic_header">Transport packet magic header</string>
<string name="download_and_install">Download and Install</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="debounce_delay">Debounce delay</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="export_tunnels_wireguard">Export tunnels as WireGuard</string>
<string name="wifi_detection_method">Wi-Fi detection method</string>
<string name="tunnel">tunnel</string>
<string name="legacy_api_description">Use an Android 12 deprecated method for getting Wi-Fi information that limits location queries, but may not work reliably on newer devices</string>
<string name="active">Active</string>
<string name="security_type">Security:</string>
<string name="export_tunnels_amnezia">Export tunnels as Amnezia</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="auto_tunnel">Auto-tunnel</string>
<string name="add_tunnel">Add tunnel</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="select">Select</string>
<string name="translation">Translation</string>
<string name="root">Root</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="location_justification">In order to read Wi-Fi names in the background with your current detection method, Android requires apps to be given \'Allow all the time\' and \'Precise\' (Background Location on older devices) permission. Please enable these permissions in your Android app settings.</string>
<string name="reliability">Reliability</string>
<string name="monitoring">Monitoring</string>
<string name="app_permission_title">WG Tunnel Control Bridge</string>
<string name="wireguard">WireGuard</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="move_up">Move Up</string>
<string name="release_notes">Release notes</string>
<string name="dropdown">Dropdown</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="version_template">Version: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="move_down">Move Down</string>
<string name="backup_application">Backup application data</string>
<string name="remote_key_template">Key: %1$s</string>
<string name="comma_separated">Comma separated</string>
<string name="amoled">AMOLED</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="app_permission_description">Control tunnels and auto-tunnel features.</string>
<string name="install_updated_permission">This app needs permission to install updates.</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="search">Search</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="auth_error">Unauthorized</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="kernel_name_error">Kernel module name error</string>
<string name="sort">Sort</string>
<string name="_continue">Continue</string>
<string name="_false">False</string>
<string name="config_error">Invalid config</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="update_check_unsupported">Update check is not supported for this build type.</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="camera_permission_required">Camera permission required</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="allow">Allow</string>
<string name="underload_packet_magic_header">Underload packet magic header</string>
<string name="latest_installed">You are already running the latest version.</string>
<string name="fix">Fix</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="export_failed">Export failed</string>
<string name="enable_remote_app_control">Enable remote app control</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="update_download_failed">Update download failed.</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="pre_up">Pre up</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="_default">Default</string>
<string name="ping_monitor">Ping monitor</string>
<string name="read_failed">Failed to read data.</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="system">System</string>
<string name="error_tunnel_name">Tunnel name must be 15 characters or fewer in kernel mode</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="add_from_url">Add from URL</string>
<string name="location_permissions_missing">Location permissions missing</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="multiple">Multiple</string>
<string name="shizuku">Shizuku</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_not_running">Auto-tunnel is not running</string>
<string name="pre_down">Pre down</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="export_success">Export success</string>
<string name="proxy">Proxy</string>
<string name="auto_tunnel_running">Auto-tunnel is running</string>
<string name="done">Done</string>
<string name="invalid_key">Invalid key</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+123 -22
View File
@@ -31,7 +31,7 @@
<string name="response_packet_junk_size">S2</string>
<string name="init_packet_magic_header">H1</string>
<string name="see_the">Смотрите</string>
<string name="tunnel_mobile_data">Туннелировать через мобильный интернет</string>
<string name="tunnel_mobile_data">Туннелировать через сотовую сеть</string>
<string name="tunnel_on_ethernet">Туннелировать через Ethernet</string>
<string name="cancel">Отмена</string>
<string name="docs_description">Документация</string>
@@ -43,7 +43,7 @@
<string name="error_no_file_explorer">Не найден файловый менеджер</string>
<string name="delete_tunnel_message">Удалить выбранные туннели?</string>
<string name="unknown_error">Неизвестная ошибка</string>
<string name="tunnel_on_wifi">Туннель в недоверенных сетях Wi-Fi</string>
<string name="tunnel_on_wifi">Туннелировать через Wi-Fi</string>
<string name="error_file_extension">Файл не имеет расширение .conf или .zip</string>
<string name="random">(случайно)</string>
<string name="app_name">WG Tunnel</string>
@@ -79,7 +79,7 @@
<string name="email_description">Отправить письмо автору</string>
<string name="no_browser_detected">Браузер не найден</string>
<string name="auto">(авто)</string>
<string name="set_primary_tunnel">Назначить как главный туннель</string>
<string name="set_primary_tunnel">Туннель, используемый, если не указан предпочтительный</string>
<string name="kernel">Модуль ядра</string>
<string name="junk_packet_minimum_size">Jmin</string>
<string name="response_packet_magic_header">H2</string>
@@ -89,13 +89,13 @@
<string name="underload_packet_magic_header">H3</string>
<string name="root_accepted">Root-доступ разрешён</string>
<string name="always_on_message">Разрешение на VPN-соединение было отклонено, проверьте</string>
<string name="restart_at_boot">Перезапуск при загрузке</string>
<string name="restart_at_boot">Запуск при загрузке</string>
<string name="always_on_message2">, чтобы убедиться, что функция «Постоянный VPN» отключена для всех других приложений, и повторите попытку</string>
<string name="vpn_settings">Системные настройки VPN</string>
<string name="vpn_denied_dialog_title">Отказано в доступе</string>
<string name="show_amnezia_properties">Показать настройки Amnezia</string>
<string name="never">никогда</string>
<string name="handshake">Соединение</string>
<string name="handshake">Последнее подключение</string>
<string name="logs">Журналы</string>
<string name="light">Светлая</string>
<string name="automatic">Автовыбор</string>
@@ -103,11 +103,11 @@
<string name="language">Язык</string>
<string name="trusted_wifi_names">Доверенные сети Wi-Fi</string>
<string name="primary_tunnel">Основной туннель</string>
<string name="mobile_tunnel">Туннель для мобильных данных</string>
<string name="mobile_tunnel">Туннель для сотовой сети</string>
<string name="learn_more">Узнать больше</string>
<string name="stop_auto">Остановить автотуннель</string>
<string name="donate">Пожертвовать на проект</string>
<string name="local_logging">Локальное ведение журнала</string>
<string name="local_logging">Отслеживание журналов</string>
<string name="wildcards_active">Подстановочные знаки используются</string>
<string name="skip">Пропустить</string>
<string name="use_wildcards">Использовать подстановочные знаки в имени</string>
@@ -157,14 +157,14 @@
<string name="app_permission_title">Центр управления WG Tunnel</string>
<string name="search">Поиск</string>
<string name="add_from_url">Добавить из URL</string>
<string name="join_matrix">Присоединиться к сообществу в Matrix</string>
<string name="join_matrix">Сообщество в Matrix</string>
<string name="dns_resolve_error">Ошибка получения DNS</string>
<string name="kernel_name_error">Ошибка имени модуля ядра</string>
<string name="enter_config_url">Введите URL конфигурации</string>
<string name="tunnel_error_template">Ошибка туннеля: %1$s</string>
<string name="service_running_error">Не запущен сервис</string>
<string name="app_permission_description">Управление туннелями и функцией автоматического туннелирования.</string>
<string name="join_telegram">Присоединиться к сообществу в Telegram</string>
<string name="join_telegram">Сообщество в Telegram</string>
<string name="matrix_url">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="camera_permission_required">Требуется доступ к камере</string>
<string name="select">Выбор</string>
@@ -230,7 +230,7 @@
<string name="open_settings">Открыть настройки</string>
<string name="location_permissions_missing">Отсутствуют разрешения на доступ к местоположению</string>
<string name="fix">Исправить</string>
<string name="start">Старт</string>
<string name="start">Пуск</string>
<string name="auto_tunnel_running">Автотуннелирование запущено</string>
<string name="auto_tunnel_not_running">Автотуннелирование не запущено</string>
<string name="ip_or_hostname">IP или имя узла</string>
@@ -240,25 +240,24 @@
<string name="backup_application">Резервирование данных</string>
<string name="restore_application">Восстановление данных</string>
<string name="tunnel_monitoring">Отслеживание туннеля</string>
<string name="sec_ago_template">%1$s сек.</string>
<string name="latency_template">Задержка: %1$s</string>
<string name="packets_sent_template">Отправлено пакетов: %1$s</string>
<string name="packet_loss_template">Потеряно пакетов: %.2f%%</string>
<string name="backup_success">Резервное копирование выполнено. %1$s</string>
<string name="restore_success">Восстановление выполнено. %1$s</string>
<string name="pinger_bounce_successful">Туннель перезапущен после проверки пинга.</string>
<string name="pinger_bounce_recovery">Невозможно перезапустить туннель после проверки пинга. Туннель восстановлен со старыми адресами.</string>
<string name="set_custom_ping_target">Цель пинга (необязательно)</string>
<string name="ping_target_description">Используется, если внутренний IP-адрес недоступен (например, в конфигурациях с полным туннелем). Если оставить поле пустым, по умолчанию используется Cloudflare.</string>
<string name="tunnel_ping_interval">Интервал пинга туннеля</string>
<string name="attempts_per_interval">Попытки пинга за интервал</string>
<string name="ping_timeout">Время ожидания пинга туннеля</string>
<string name="pinger_bounce_successful">Туннель перезапущен после опроса.</string>
<string name="pinger_bounce_recovery">Невозможно перезапустить туннель после опроса. Туннель восстановлен со старыми адресами.</string>
<string name="set_custom_ping_target">Свои цели опроса</string>
<string name="ping_target_description">По умолчанию используется внутренний IP туннеля при раздельном туннелировании и Cloudflare для конфигураций с полным туннелем.</string>
<string name="tunnel_ping_interval">Интервал опроса туннеля</string>
<string name="attempts_per_interval">Попытки опроса за интервал</string>
<string name="ping_timeout">Ожидание опроса туннеля</string>
<string name="timeout_all_attempts">Общее время ожидания всех попыток</string>
<string name="display_detailed_ping_stats">Подробная статистика пингования</string>
<string name="display_detailed_ping_stats">Подробная статистика</string>
<string name="reachable_template">Доступно: %1$s</string>
<string name="ping_success_template">Последний успешный пинг: %1$s</string>
<string name="ping_target_template">Цель пинга: %1$s</string>
<string name="bounce_failed_template">Невозможно восстановить туннель после проверки пинга из-за ошибки: %1$s</string>
<string name="ping_success_template">Последний успешный опрос: %1$s</string>
<string name="ping_target_template">Цель опроса: %1$s</string>
<string name="bounce_failed_template">Невозможно восстановить туннель после опроса из-за ошибки: %1$s</string>
<string name="jitter_template">Джиттер: %1$s</string>
<string name="_true">Верно</string>
<string name="_false">Неверно</string>
@@ -325,4 +324,106 @@
<string name="liberapay">Liberapay</string>
<string name="donation_dev_message">Будучи единственным разработчиком, я неустанно работаю, чтобы сделать WG Tunnel лучшим бесплатным и открытым клиентом WireGuard для Android, но это возможно только с вашей поддержкой.</string>
<string name="delete_active_message">Невозможно удалить активный туннель.</string>
<string name="dual_stack">Двухуровневое</string>
<string name="kernel_name_dots">Имя туннеля не может быть «.» или «..» в режиме ядра</string>
<string name="save_changes">Сохранить изменения</string>
<string name="dual_stack_description">Туннели должны поддерживать IPv4 и IPv6</string>
<string name="remote_key">Ключ удалённого доступа</string>
<string name="mobile_data">Сотовая сеть</string>
<string name="tunnel_boot_description">Запускать основной при загрузке</string>
<string name="tunnel_mapping_description">Сопоставлять туннели по имени сети Wi-Fi</string>
<string name="donation_prompt_prefix">Благодарим вас за использование WG Tunnel! Если у вас есть возможность, пожалуйста, подумайте о</string>
<string name="website">Сайт приложения</string>
<string name="wifi_settings">Настройки Wi-Fi</string>
<string name="info">Информация</string>
<string name="unknown">Неизвестно</string>
<string name="all_services_disabled">Для выполнения этого действия необходимо отключить автотуннелирование и туннели.</string>
<string name="no_network">Нет подключения к сети</string>
<string name="wifi">Wi-Fi</string>
<string name="ping_target">Цель опроса</string>
<string name="resources">Ресурсы</string>
<string name="back">Назад</string>
<string name="already_donated">Пожертвование уже сделано</string>
<string name="global_split_tunneling">Общее раздельное туннелирование</string>
<string name="active_network">Активная сеть:</string>
<string name="help_translate">Помочь перевести приложение</string>
<string name="ethernet">Ethernet</string>
<string name="other">Другое</string>
<string name="kill_switch">экстренное отключение</string>
<string name="configuration">Конфигурация</string>
<string name="global_dns_servers">Общие серверы DNS</string>
<string name="contact">Контакты</string>
<string name="backup_and_restore">Резервное копирование</string>
<string name="ping">Опрос</string>
<string name="about">О приложении</string>
<string name="donation_prompt_link">поддержке проекта</string>
<string name="donation_prompt_suffix">, чтобы сохранить его бесплатным и развивающимся.</string>
<string name="text_too_large_for_qr">Текст слишком большой для отображения QR-кода.</string>
<string name="options">Параметры</string>
<string name="security_type">Безопасность:</string>
<string name="ddns_success_message">Конечная точка динамического DNS успешно обновлена.</string>
<string name="translation">Перевод</string>
<string name="reliability">Надёжность</string>
<string name="monitoring">Отслеживание</string>
<string name="aovpn_description">Разрешить Android запускать туннели</string>
<string name="set_ping_target">Укажите цель опроса</string>
<string name="general">Общие</string>
<string name="review">Оценить приложение</string>
<string name="kernel_name_special_characters">Имя туннеля в режиме ядра не может содержать пробелы и некоторые специальные символы (разрешены: буквенно-цифровые, _, =, +, ., -)</string>
<string name="_continue">Продолжить</string>
<string name="unavailable_in_mode">Недоступно в текущем режиме</string>
<string name="debounce_description">Задержка между быстрыми изменениями сети</string>
<string name="preferred_tunnel">Предпочтительный туннель</string>
<string name="tunnel_running_name_message">Невозможно изменить имя, пока туннель активен.</string>
<string name="network_name">Сеть:</string>
<string name="mapped">Сопоставлен</string>
<string name="tunnel_mapping">Сопоставление туннелей</string>
<string name="preferred_tunnel_label">Предпочтительный туннель:</string>
<string name="ping_monitor">Отслеживание опросов</string>
<string name="restart_message_template">Сохранение изменений вызовет перезапуск %1$s, продолжить?</string>
<string name="already_donated_description">Отключить запросы пожертвований</string>
<string name="metered_tunnel">Тарифицируемый туннель</string>
<string name="lockdown_settings">Настройки блокировки</string>
<string name="networks">Сети</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">S4</string>
<string name="cookie_packet_junk_size">S3</string>
</resources>
+365
View File
@@ -61,4 +61,369 @@
<string name="all">Všetko</string>
<string name="no_email_detected">Nebola zistená žiadna e-mailová aplikácia</string>
<string name="no_browser_detected">Nebol zistený žiadny prehliadač</string>
<string name="enter_config_url">Enter config URL</string>
<string name="use_android_recommended">Use Android\'s recommended method for getting Wi-Fi information, based on Android version</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="hide_amnezia_properties">Hide Amnezia properties</string>
<string name="advanced_settings">Advanced settings</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="auto_tunnel_channel_name">Auto-tunnel Notification Channel</string>
<string name="always_on_message">VPN connection permission has been denied. Please check the</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="tunnel_on_ethernet">Tunnel on ethernet</string>
<string name="current_template">Current: %1$s</string>
<string name="root_accepted">Root shell accepted</string>
<string name="save_changes">Save changes</string>
<string name="save">Save</string>
<string name="tunnel_mobile_data">Tunnel on mobile data</string>
<string name="logs">Logs</string>
<string name="enable_app_lock">Enable app lock</string>
<string name="ethernet_tunnel">Ethernet tunnel</string>
<string name="join_telegram">Join Telegram community</string>
<string name="pin_created">Pin successfully created</string>
<string name="post_up">Post up</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="warning">Warning</string>
<string name="password">Password</string>
<string name="error_download_failed">Failed to download config</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="use_shell_via_shizuku">Use shell via Shizuku to get Wi-Fi information, preventing the need for location permission on non-rooted devices</string>
<string name="stop_on_internet_loss">Stop tunnel on internet loss</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="allow_lan_traffic">Allow LAN traffic</string>
<string name="quick_actions">Quick actions</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="response_packet_magic_header">Response packet magic header</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="primary_tunnel">Default tunnel</string>
<string name="create_pin">Create PIN</string>
<string name="licenses">Licenses</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="vpn_channel_description">A channel for VPN state notifications</string>
<string name="amnezia">Amnezia</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="check_for_update">Check for update</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you can, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="edit_tunnel">Edit tunnel</string>
<string name="kernel">Kernel</string>
<string name="init_packet_magic_header">Init packet magic header</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="tunnel_control">Tunnel control</string>
<string name="website">App website</string>
<string name="mobile_tunnel">Mobile data tunnel</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="auto_tunnel_channel_description">A channel for auto-tunnel state notifications</string>
<string name="show_qr">Show QR</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="tunnel_starting">Tunnel starting</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="inactive">Inactive</string>
<string name="invalid_value">Invalid value</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="junk_packet_minimum_size">Junk packet minimum size</string>
<string name="location_permissions">Location Permissions</string>
<string name="unknown">Unknown</string>
<string name="tunnel_error_template">Tunnel failed with: %1$s</string>
<string name="restart_at_boot">Start on boot</string>
<string name="syntax_error">Syntax error</string>
<string name="learn_more">Learn more</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="delete_logs">Delete and clear logs</string>
<string name="launch_app_settings">Launch app settings</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="copy">Copy</string>
<string name="show_amnezia_properties">Show Amnezia properties</string>
<string name="legacy">Legacy</string>
<string name="no_network">No network connected</string>
<string name="checking_for_update">Checking for updates</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="update_check_failed">Update check failed.</string>
<string name="dns_resolve_error">DNS resolution failed</string>
<string name="ping_target">Ping target</string>
<string name="update_available">Update Available!</string>
<string name="appearance">Appearance</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="vpn_denied_dialog_title">Permission Denied</string>
<string name="handshake">Handshake</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="export_logs">Export stored logs</string>
<string name="username">Username</string>
<string name="light">Light</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="darker">Darker</string>
<string name="dynamic">Dynamic</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="stop_on_no_internet">Stop on no internet</string>
<string name="permission_required">Permission Required</string>
<string name="shizuku_not_detected">Shizuku not detected</string>
<string name="automatic">Automatic</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="local_logging">Local logs monitor</string>
<string name="flavor_template">Flavor: %1$s</string>
<string name="delete">Delete</string>
<string name="donate_title">Donate</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="response_packet_junk_size">Response packet junk size</string>
<string name="start">Start</string>
<string name="enable_amnezia_compatibility">Enable Amnezia compatibility</string>
<string name="nothing_here_yet">Nothing here yet!</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="support">Support</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="native_kill_switch">Native kill switch</string>
<string name="include_lan">Include LAN</string>
<string name="stop">Stop</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="service_running_error">Service not running</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="always_on_message2">to make sure Always-on VPN is turned off for all other apps and try again</string>
<string name="open_settings">Open Settings</string>
<string name="kill_switch">kill switch</string>
<string name="configuration">Configuration</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="unsure_how">if you are unsure how to proceed</string>
<string name="display_theme">Display theme</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="notifications">Notifications</string>
<string name="getting_started_guide">getting started guide</string>
<string name="join_matrix">Join Matrix community</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="proxy_settings">Proxy settings</string>
<string name="select_all">Select all</string>
<string name="skip">Skip</string>
<string name="post_down">Post down</string>
<string name="restore_application">Restore from backup</string>
<string name="junk_packet_count">Junk packet count</string>
<string name="download">Download</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="transport_packet_magic_header">Transport packet magic header</string>
<string name="download_and_install">Download and Install</string>
<string name="vpn_settings">VPN system settings</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="debounce_delay">Debounce delay</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="bypass_lan_for_kill_switch">Bypass LAN for kill switch</string>
<string name="use_wildcards">Use name wildcards</string>
<string name="export_tunnels_wireguard">Export tunnels as WireGuard</string>
<string name="wifi_detection_method">Wi-Fi detection method</string>
<string name="tunnel">tunnel</string>
<string name="legacy_api_description">Use an Android 12 deprecated method for getting Wi-Fi information that limits location queries, but may not work reliably on newer devices</string>
<string name="active">Active</string>
<string name="security_type">Security:</string>
<string name="export_tunnels_amnezia">Export tunnels as Amnezia</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="auto_tunnel">Auto-tunnel</string>
<string name="trusted_wifi_names">Trusted Wi-Fi names</string>
<string name="add_tunnel">Add tunnel</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="select">Select</string>
<string name="translation">Translation</string>
<string name="root">Root</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="location_justification">In order to read Wi-Fi names in the background with your current detection method, Android requires apps to be given \'Allow all the time\' and \'Precise\' (Background Location on older devices) permission. Please enable these permissions in your Android app settings.</string>
<string name="show_scripts">Show scripts</string>
<string name="reliability">Reliability</string>
<string name="monitoring">Monitoring</string>
<string name="app_permission_title">WG Tunnel Control Bridge</string>
<string name="wireguard">WireGuard</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="move_up">Move Up</string>
<string name="release_notes">Release notes</string>
<string name="dark">Dark</string>
<string name="monitoring_state_changes">Monitoring state changes</string>
<string name="dropdown">Dropdown</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="version_template">Version: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="move_down">Move Down</string>
<string name="remove_amnezia_compatibility">Remove Amnezia compatibility</string>
<string name="open_issue">Open an issue</string>
<string name="backup_application">Backup application data</string>
<string name="remote_key_template">Key: %1$s</string>
<string name="comma_separated">Comma separated</string>
<string name="amoled">AMOLED</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="install_updated_permission">This app needs permission to install updates.</string>
<string name="use_root_shell_for_wifi">Use a root shell to get Wi-Fi information, preventing the need for location permissions</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="language">Language</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="splt_tunneling">Split tunneling</string>
<string name="search">Search</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="see_the">See the</string>
<string name="auth_error">Unauthorized</string>
<string name="auto">(Auto)</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="add_from_clipboard">Add from clipboard</string>
<string name="kernel_name_error">Kernel module name error</string>
<string name="sort">Sort</string>
<string name="_continue">Continue</string>
<string name="_false">False</string>
<string name="config_error">Invalid config</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="update_check_unsupported">Update check is not supported for this build type.</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="donate">Donate to project</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="camera_permission_required">Camera permission required</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="allow">Allow</string>
<string name="underload_packet_magic_header">Underload packet magic header</string>
<string name="latest_installed">You are already running the latest version.</string>
<string name="add_wifi_name">Add Wi-Fi name</string>
<string name="never">Never</string>
<string name="fix">Fix</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="settings">Settings</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="incorrect_pin">Pin is incorrect</string>
<string name="tunnel_running">Tunnel running</string>
<string name="export_failed">Export failed</string>
<string name="enable_remote_app_control">Enable remote app control</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="update_download_failed">Update download failed.</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="pre_up">Pre up</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="junk_packet_maximum_size">Junk packet maximum size</string>
<string name="_default">Default</string>
<string name="exclude_lan">Exclude LAN</string>
<string name="ping_monitor">Ping monitor</string>
<string name="error_root_denied">Root shell denied</string>
<string name="read_failed">Failed to read data.</string>
<string name="start_auto">Start auto-tunnel</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="hide_scripts">Hide scripts</string>
<string name="system">System</string>
<string name="error_tunnel_name">Tunnel name must be 15 characters or fewer in kernel mode</string>
<string name="wildcards_active">Wildcards active</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="add_from_url">Add from URL</string>
<string name="init_packet_junk_size">Init packet junk size</string>
<string name="location_permissions_missing">Location permissions missing</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="stop_auto">Stop auto-tunnel</string>
<string name="multiple">Multiple</string>
<string name="shizuku">Shizuku</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="enter_pin">Enter PIN</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_not_running">Auto-tunnel is not running</string>
<string name="set_primary_tunnel">Tunnel used when no preferred tunnel is configured</string>
<string name="pre_down">Pre down</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="export_success">Export success</string>
<string name="proxy">Proxy</string>
<string name="auto_tunnel_running">Auto-tunnel is running</string>
<string name="done">Done</string>
<string name="invalid_key">Invalid key</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+428 -1
View File
@@ -1,2 +1,429 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="enter_config_url">Enter config URL</string>
<string name="use_android_recommended">Use Android\'s recommended method for getting Wi-Fi information, based on Android version</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="hide_amnezia_properties">Hide Amnezia properties</string>
<string name="advanced_settings">Advanced settings</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="auto_tunnel_channel_name">Auto-tunnel Notification Channel</string>
<string name="always_on_message">VPN connection permission has been denied. Please check the</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="tunnel_on_ethernet">Tunnel on ethernet</string>
<string name="current_template">Current: %1$s</string>
<string name="email_chooser">Send an email…</string>
<string name="root_accepted">Root shell accepted</string>
<string name="save_changes">Save changes</string>
<string name="save">Save</string>
<string name="delete_tunnel">Delete tunnel</string>
<string name="tunnel_mobile_data">Tunnel on mobile data</string>
<string name="logs">Logs</string>
<string name="enable_app_lock">Enable app lock</string>
<string name="ethernet_tunnel">Ethernet tunnel</string>
<string name="config_changes_saved">Configuration changes saved.</string>
<string name="join_telegram">Join Telegram community</string>
<string name="pin_created">Pin successfully created</string>
<string name="post_up">Post up</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="warning">Warning</string>
<string name="password">Password</string>
<string name="error_download_failed">Failed to download config</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="use_shell_via_shizuku">Use shell via Shizuku to get Wi-Fi information, preventing the need for location permission on non-rooted devices</string>
<string name="stop_on_internet_loss">Stop tunnel on internet loss</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="allow_lan_traffic">Allow LAN traffic</string>
<string name="quick_actions">Quick actions</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="response_packet_magic_header">Response packet magic header</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="primary_tunnel">Default tunnel</string>
<string name="create_pin">Create PIN</string>
<string name="licenses">Licenses</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="vpn_channel_description">A channel for VPN state notifications</string>
<string name="amnezia">Amnezia</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="check_for_update">Check for update</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you can, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="edit_tunnel">Edit tunnel</string>
<string name="kernel">Kernel</string>
<string name="peer">Peer</string>
<string name="auto_tunneling">Auto-tunneling</string>
<string name="init_packet_magic_header">Init packet magic header</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="tunnel_control">Tunnel control</string>
<string name="website">App website</string>
<string name="mobile_tunnel">Mobile data tunnel</string>
<string name="error_no_file_explorer">No file explorer installed</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="auto_tunnel_channel_description">A channel for auto-tunnel state notifications</string>
<string name="show_qr">Show QR</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="tunnel_on_wifi">Tunnel on Wi-Fi</string>
<string name="add_peer">Add peer</string>
<string name="tunnel_starting">Tunnel starting</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="inactive">Inactive</string>
<string name="invalid_value">Invalid value</string>
<string name="persistent_keepalive">Persistent keepalive</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="exclude">Exclude</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="junk_packet_minimum_size">Junk packet minimum size</string>
<string name="location_services_not_detected">Location services not detected</string>
<string name="all">All</string>
<string name="location_permissions">Location Permissions</string>
<string name="unknown">Unknown</string>
<string name="tunnel_error_template">Tunnel failed with: %1$s</string>
<string name="restart_at_boot">Start on boot</string>
<string name="syntax_error">Syntax error</string>
<string name="learn_more">Learn more</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="email_subject">WG Tunnel Support</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="interface_">Interface</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="prominent_background_location_message">This feature requires background location permission to enable Wi-Fi SSID monitoring even while the application is closed. For more details, please see the Privacy Policy linked on the Support screen.</string>
<string name="delete_logs">Delete and clear logs</string>
<string name="launch_app_settings">Launch app settings</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="copy">Copy</string>
<string name="show_amnezia_properties">Show Amnezia properties</string>
<string name="legacy">Legacy</string>
<string name="preshared_key">Pre-shared key</string>
<string name="include">Include</string>
<string name="no_network">No network connected</string>
<string name="checking_for_update">Checking for updates</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="no_browser_detected">No browser detected</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="no_email_detected">No email app detected</string>
<string name="update_check_failed">Update check failed.</string>
<string name="dns_resolve_error">DNS resolution failed</string>
<string name="ping_target">Ping target</string>
<string name="update_available">Update Available!</string>
<string name="vpn_on">VPN on</string>
<string name="appearance">Appearance</string>
<string name="vpn_channel_name">VPN Notification Channel</string>
<string name="name">Name</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="yes">Yes</string>
<string name="seconds">Seconds</string>
<string name="vpn_denied_dialog_title">Permission Denied</string>
<string name="handshake">Handshake</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="export_logs">Export stored logs</string>
<string name="username">Username</string>
<string name="light">Light</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="darker">Darker</string>
<string name="dynamic">Dynamic</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="stop_on_no_internet">Stop on no internet</string>
<string name="permission_required">Permission Required</string>
<string name="shizuku_not_detected">Shizuku not detected</string>
<string name="tunnels">Tunnels</string>
<string name="automatic">Automatic</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="local_logging">Local logs monitor</string>
<string name="flavor_template">Flavor: %1$s</string>
<string name="delete">Delete</string>
<string name="donate_title">Donate</string>
<string name="endpoint">Endpoint</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="response_packet_junk_size">Response packet junk size</string>
<string name="start">Start</string>
<string name="enable_amnezia_compatibility">Enable Amnezia compatibility</string>
<string name="nothing_here_yet">Nothing here yet!</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="dns_servers">DNS servers</string>
<string name="support">Support</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="native_kill_switch">Native kill switch</string>
<string name="include_lan">Include LAN</string>
<string name="docs_description">Read the docs</string>
<string name="stop">Stop</string>
<string name="add_tunnels_text">Add from file or zip</string>
<string name="add_from_qr">Add from QR code</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="service_running_error">Service not running</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="copy_public_key">Copy public key</string>
<string name="always_on_message2">to make sure Always-on VPN is turned off for all other apps and try again</string>
<string name="open_settings">Open Settings</string>
<string name="kill_switch">kill switch</string>
<string name="mtu">MTU</string>
<string name="configuration">Configuration</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="unsure_how">if you are unsure how to proceed</string>
<string name="display_theme">Display theme</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="notifications">Notifications</string>
<string name="getting_started_guide">getting started guide</string>
<string name="join_matrix">Join Matrix community</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="email_description">Send me an email</string>
<string name="proxy_settings">Proxy settings</string>
<string name="select_all">Select all</string>
<string name="skip">Skip</string>
<string name="post_down">Post down</string>
<string name="restore_application">Restore from backup</string>
<string name="junk_packet_count">Junk packet count</string>
<string name="base64_key">Base64 key</string>
<string name="download">Download</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="transport_packet_magic_header">Transport packet magic header</string>
<string name="unknown_error">Unknown error occurred</string>
<string name="download_and_install">Download and Install</string>
<string name="vpn_settings">VPN system settings</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="debounce_delay">Debounce delay</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="bypass_lan_for_kill_switch">Bypass LAN for kill switch</string>
<string name="use_wildcards">Use name wildcards</string>
<string name="export_tunnels_wireguard">Export tunnels as WireGuard</string>
<string name="wifi_detection_method">Wi-Fi detection method</string>
<string name="tunnel">tunnel</string>
<string name="legacy_api_description">Use an Android 12 deprecated method for getting Wi-Fi information that limits location queries, but may not work reliably on newer devices</string>
<string name="active">Active</string>
<string name="security_type">Security:</string>
<string name="export_tunnels_amnezia">Export tunnels as Amnezia</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="addresses">Addresses</string>
<string name="privacy_policy">Privacy policy</string>
<string name="auto_tunnel">Auto-tunnel</string>
<string name="trusted_wifi_names">Trusted Wi-Fi names</string>
<string name="add_tunnel">Add tunnel</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="select">Select</string>
<string name="translation">Translation</string>
<string name="root">Root</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="location_justification">In order to read Wi-Fi names in the background with your current detection method, Android requires apps to be given \'Allow all the time\' and \'Precise\' (Background Location on older devices) permission. Please enable these permissions in your Android app settings.</string>
<string name="public_key">Public key</string>
<string name="show_scripts">Show scripts</string>
<string name="allowed_ips">Allowed IPs</string>
<string name="reliability">Reliability</string>
<string name="no_tunnels">No tunnels added yet!</string>
<string name="monitoring">Monitoring</string>
<string name="app_permission_title">WG Tunnel Control Bridge</string>
<string name="wireguard">WireGuard</string>
<string name="rotate_keys">Rotate keys</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="move_up">Move Up</string>
<string name="release_notes">Release notes</string>
<string name="dark">Dark</string>
<string name="monitoring_state_changes">Monitoring state changes</string>
<string name="dropdown">Dropdown</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="version_template">Version: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="cancel">Cancel</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="auto_tunnel_title">Auto-tunnel service</string>
<string name="prominent_background_location_title">Background Location Disclosure</string>
<string name="move_down">Move Down</string>
<string name="remove_amnezia_compatibility">Remove Amnezia compatibility</string>
<string name="open_issue">Open an issue</string>
<string name="random">(random)</string>
<string name="backup_application">Backup application data</string>
<string name="remote_key_template">Key: %1$s</string>
<string name="comma_separated">Comma separated</string>
<string name="amoled">AMOLED</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="app_permission_description">Control tunnels and auto-tunnel features.</string>
<string name="install_updated_permission">This app needs permission to install updates.</string>
<string name="use_root_shell_for_wifi">Use a root shell to get Wi-Fi information, preventing the need for location permissions</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="language">Language</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="error_ssid_exists">SSID already exists</string>
<string name="splt_tunneling">Split tunneling</string>
<string name="okay">Okay</string>
<string name="search">Search</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="error_file_extension">File is not a .conf or .zip</string>
<string name="see_the">See the</string>
<string name="listen_port">Listen port</string>
<string name="auth_error">Unauthorized</string>
<string name="auto">(Auto)</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="add_from_clipboard">Add from clipboard</string>
<string name="kernel_name_error">Kernel module name error</string>
<string name="sort">Sort</string>
<string name="_continue">Continue</string>
<string name="create_import">Create from scratch</string>
<string name="_false">False</string>
<string name="config_error">Invalid config</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="update_check_unsupported">Update check is not supported for this build type.</string>
<string name="optional">(optional)</string>
<string name="trusted_ssid_value_description">Submit SSID</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="donate">Donate to project</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="camera_permission_required">Camera permission required</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="enabled_app_shortcuts">Enable app shortcuts</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="allow">Allow</string>
<string name="underload_packet_magic_header">Underload packet magic header</string>
<string name="vpn_off">VPN off</string>
<string name="latest_installed">You are already running the latest version.</string>
<string name="add_wifi_name">Add Wi-Fi name</string>
<string name="never">Never</string>
<string name="delete_tunnel_message">Are you sure you would like to delete the selected tunnels?</string>
<string name="private_key">Private key</string>
<string name="fix">Fix</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="settings">Settings</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="incorrect_pin">Pin is incorrect</string>
<string name="tunnel_running">Tunnel running</string>
<string name="export_failed">Export failed</string>
<string name="enable_remote_app_control">Enable remote app control</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="update_download_failed">Update download failed.</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="pre_up">Pre up</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="always_on_vpn_support">Allow Always-On VPN</string>
<string name="junk_packet_maximum_size">Junk packet maximum size</string>
<string name="_default">Default</string>
<string name="exclude_lan">Exclude LAN</string>
<string name="ping_monitor">Ping monitor</string>
<string name="app_name">WG Tunnel</string>
<string name="error_root_denied">Root shell denied</string>
<string name="read_failed">Failed to read data.</string>
<string name="start_auto">Start auto-tunnel</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="hide_scripts">Hide scripts</string>
<string name="system">System</string>
<string name="tunnel_name">Tunnel Name</string>
<string name="error_tunnel_name">Tunnel name must be 15 characters or fewer in kernel mode</string>
<string name="wildcards_active">Wildcards active</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="add_from_url">Add from URL</string>
<string name="init_packet_junk_size">Init packet junk size</string>
<string name="location_permissions_missing">Location permissions missing</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="stop_auto">Stop auto-tunnel</string>
<string name="multiple">Multiple</string>
<string name="shizuku">Shizuku</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="enter_pin">Enter PIN</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_not_running">Auto-tunnel is not running</string>
<string name="set_primary_tunnel">Tunnel used when no preferred tunnel is configured</string>
<string name="pre_down">Pre down</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="export_success">Export success</string>
<string name="proxy">Proxy</string>
<string name="auto_tunnel_running">Auto-tunnel is running</string>
<string name="done">Done</string>
<string name="thank_you">Thank you for using WG Tunnel!</string>
<string name="invalid_key">Invalid key</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+227
View File
@@ -199,4 +199,231 @@
<string name="install_updated_permission">புதுப்பிப்புகளை நிறுவ இந்த பயன்பாட்டிற்கு இசைவு தேவை.</string>
<string name="licenses">உரிமங்கள்</string>
<string name="update_check_unsupported">புதுப்பிப்பு காசோலை இந்த உருவாக்க வகையை ஆதரிக்கவில்லை.</string>
<string name="use_android_recommended">Use Android\'s recommended method for getting Wi-Fi information, based on Android version</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="current_template">Current: %1$s</string>
<string name="save_changes">Save changes</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="warning">Warning</string>
<string name="password">Password</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="use_shell_via_shizuku">Use shell via Shizuku to get Wi-Fi information, preventing the need for location permission on non-rooted devices</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="amnezia">Amnezia</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you can, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="website">App website</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="show_qr">Show QR</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="invalid_value">Invalid value</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="location_permissions">Location Permissions</string>
<string name="unknown">Unknown</string>
<string name="syntax_error">Syntax error</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="legacy">Legacy</string>
<string name="no_network">No network connected</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="ping_target">Ping target</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="username">Username</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="darker">Darker</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="shizuku_not_detected">Shizuku not detected</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="donate_title">Donate</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="start">Start</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="open_settings">Open Settings</string>
<string name="kill_switch">kill switch</string>
<string name="configuration">Configuration</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="proxy_settings">Proxy settings</string>
<string name="restore_application">Restore from backup</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="wifi_detection_method">Wi-Fi detection method</string>
<string name="tunnel">tunnel</string>
<string name="legacy_api_description">Use an Android 12 deprecated method for getting Wi-Fi information that limits location queries, but may not work reliably on newer devices</string>
<string name="security_type">Security:</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="translation">Translation</string>
<string name="root">Root</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="location_justification">In order to read Wi-Fi names in the background with your current detection method, Android requires apps to be given \'Allow all the time\' and \'Precise\' (Background Location on older devices) permission. Please enable these permissions in your Android app settings.</string>
<string name="reliability">Reliability</string>
<string name="monitoring">Monitoring</string>
<string name="wireguard">WireGuard</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="move_up">Move Up</string>
<string name="release_notes">Release notes</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="move_down">Move Down</string>
<string name="backup_application">Backup application data</string>
<string name="comma_separated">Comma separated</string>
<string name="amoled">AMOLED</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="sort">Sort</string>
<string name="_continue">Continue</string>
<string name="_false">False</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="fix">Fix</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="_default">Default</string>
<string name="ping_monitor">Ping monitor</string>
<string name="read_failed">Failed to read data.</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="system">System</string>
<string name="error_tunnel_name">Tunnel name must be 15 characters or fewer in kernel mode</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="location_permissions_missing">Location permissions missing</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="shizuku">Shizuku</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_not_running">Auto-tunnel is not running</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="proxy">Proxy</string>
<string name="auto_tunnel_running">Auto-tunnel is running</string>
<string name="done">Done</string>
<string name="invalid_key">Invalid key</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+269 -4
View File
@@ -3,10 +3,10 @@
<string name="app_name">WG Tunnel</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="vpn_channel_name">VPN Bildirim Kanalı</string>
<string name="github_url" translatable="false">https://github.com/zaneschepke/wgtunnel/issues</string>
<string name="docs_url" translatable="false">https://zaneschepke.com/wgtunnel-docs/overview.html</string>
<string name="privacy_policy_url" translatable="false">https://zaneschepke.com/wgtunnel-docs/privacypolicy.html</string>
<string name="docs_wildcards" translatable="false">https://zaneschepke.com/wgtunnel-docs/features.html#wildcard-wi-fi-name-support</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="error_file_extension">Dosya .conf veya .zip değil</string>
<string name="no_tunnels">Henüz tünel eklenmedi!</string>
<string name="tunnels">Tüneller</string>
@@ -161,4 +161,269 @@
<string name="multiple">Çoklu</string>
<string name="app_permission_title">WG Tunnel Kontrol Köprüsü</string>
<string name="app_permission_description">Kontrol tünelleri ve oto-tünel özellikleri.</string>
<string name="enter_config_url">Enter config URL</string>
<string name="use_android_recommended">Use Android\'s recommended method for getting Wi-Fi information, based on Android version</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="current_template">Current: %1$s</string>
<string name="save_changes">Save changes</string>
<string name="save">Save</string>
<string name="join_telegram">Join Telegram community</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="warning">Warning</string>
<string name="password">Password</string>
<string name="error_download_failed">Failed to download config</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="use_shell_via_shizuku">Use shell via Shizuku to get Wi-Fi information, preventing the need for location permission on non-rooted devices</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="licenses">Licenses</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="amnezia">Amnezia</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="check_for_update">Check for update</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you can, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="website">App website</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="show_qr">Show QR</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="tunnel_starting">Tunnel starting</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="inactive">Inactive</string>
<string name="invalid_value">Invalid value</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="location_permissions">Location Permissions</string>
<string name="unknown">Unknown</string>
<string name="tunnel_error_template">Tunnel failed with: %1$s</string>
<string name="syntax_error">Syntax error</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="delete_logs">Delete and clear logs</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="copy">Copy</string>
<string name="legacy">Legacy</string>
<string name="no_network">No network connected</string>
<string name="checking_for_update">Checking for updates</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="update_check_failed">Update check failed.</string>
<string name="dns_resolve_error">DNS resolution failed</string>
<string name="ping_target">Ping target</string>
<string name="update_available">Update Available!</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="export_logs">Export stored logs</string>
<string name="username">Username</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="darker">Darker</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="permission_required">Permission Required</string>
<string name="shizuku_not_detected">Shizuku not detected</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="flavor_template">Flavor: %1$s</string>
<string name="delete">Delete</string>
<string name="donate_title">Donate</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="start">Start</string>
<string name="nothing_here_yet">Nothing here yet!</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="service_running_error">Service not running</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="open_settings">Open Settings</string>
<string name="kill_switch">kill switch</string>
<string name="configuration">Configuration</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="join_matrix">Join Matrix community</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="proxy_settings">Proxy settings</string>
<string name="select_all">Select all</string>
<string name="restore_application">Restore from backup</string>
<string name="download">Download</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="download_and_install">Download and Install</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="export_tunnels_wireguard">Export tunnels as WireGuard</string>
<string name="wifi_detection_method">Wi-Fi detection method</string>
<string name="tunnel">tunnel</string>
<string name="legacy_api_description">Use an Android 12 deprecated method for getting Wi-Fi information that limits location queries, but may not work reliably on newer devices</string>
<string name="active">Active</string>
<string name="security_type">Security:</string>
<string name="export_tunnels_amnezia">Export tunnels as Amnezia</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="add_tunnel">Add tunnel</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="select">Select</string>
<string name="translation">Translation</string>
<string name="root">Root</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="location_justification">In order to read Wi-Fi names in the background with your current detection method, Android requires apps to be given \'Allow all the time\' and \'Precise\' (Background Location on older devices) permission. Please enable these permissions in your Android app settings.</string>
<string name="reliability">Reliability</string>
<string name="monitoring">Monitoring</string>
<string name="wireguard">WireGuard</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="move_up">Move Up</string>
<string name="release_notes">Release notes</string>
<string name="dropdown">Dropdown</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="version_template">Version: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="move_down">Move Down</string>
<string name="backup_application">Backup application data</string>
<string name="remote_key_template">Key: %1$s</string>
<string name="comma_separated">Comma separated</string>
<string name="amoled">AMOLED</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="install_updated_permission">This app needs permission to install updates.</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="search">Search</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="auth_error">Unauthorized</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="kernel_name_error">Kernel module name error</string>
<string name="sort">Sort</string>
<string name="_continue">Continue</string>
<string name="_false">False</string>
<string name="config_error">Invalid config</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="update_check_unsupported">Update check is not supported for this build type.</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="camera_permission_required">Camera permission required</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="allow">Allow</string>
<string name="latest_installed">You are already running the latest version.</string>
<string name="fix">Fix</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="export_failed">Export failed</string>
<string name="enable_remote_app_control">Enable remote app control</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="update_download_failed">Update download failed.</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="_default">Default</string>
<string name="ping_monitor">Ping monitor</string>
<string name="read_failed">Failed to read data.</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="system">System</string>
<string name="error_tunnel_name">Tunnel name must be 15 characters or fewer in kernel mode</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="add_from_url">Add from URL</string>
<string name="location_permissions_missing">Location permissions missing</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="shizuku">Shizuku</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_not_running">Auto-tunnel is not running</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="export_success">Export success</string>
<string name="proxy">Proxy</string>
<string name="auto_tunnel_running">Auto-tunnel is running</string>
<string name="done">Done</string>
<string name="invalid_key">Invalid key</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+276
View File
@@ -150,4 +150,280 @@
<string name="vpn_channel_description">Канал сповіщень про стан VPN</string>
<string name="enable_amnezia_compatibility">Включити сумісність із Amnezia</string>
<string name="multiple">Декілька</string>
<string name="enter_config_url">Enter config URL</string>
<string name="use_android_recommended">Use Android\'s recommended method for getting Wi-Fi information, based on Android version</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="current_template">Current: %1$s</string>
<string name="save_changes">Save changes</string>
<string name="save">Save</string>
<string name="join_telegram">Join Telegram community</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="warning">Warning</string>
<string name="password">Password</string>
<string name="error_download_failed">Failed to download config</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="use_shell_via_shizuku">Use shell via Shizuku to get Wi-Fi information, preventing the need for location permission on non-rooted devices</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="licenses">Licenses</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="amnezia">Amnezia</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="check_for_update">Check for update</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you can, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="website">App website</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="show_qr">Show QR</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="tunnel_starting">Tunnel starting</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="inactive">Inactive</string>
<string name="invalid_value">Invalid value</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="location_permissions">Location Permissions</string>
<string name="unknown">Unknown</string>
<string name="tunnel_error_template">Tunnel failed with: %1$s</string>
<string name="syntax_error">Syntax error</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="delete_logs">Delete and clear logs</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="copy">Copy</string>
<string name="legacy">Legacy</string>
<string name="no_network">No network connected</string>
<string name="checking_for_update">Checking for updates</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="update_check_failed">Update check failed.</string>
<string name="dns_resolve_error">DNS resolution failed</string>
<string name="ping_target">Ping target</string>
<string name="update_available">Update Available!</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="export_logs">Export stored logs</string>
<string name="username">Username</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="darker">Darker</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="permission_required">Permission Required</string>
<string name="shizuku_not_detected">Shizuku not detected</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="flavor_template">Flavor: %1$s</string>
<string name="delete">Delete</string>
<string name="donate_title">Donate</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="start">Start</string>
<string name="nothing_here_yet">Nothing here yet!</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="service_running_error">Service not running</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="open_settings">Open Settings</string>
<string name="kill_switch">kill switch</string>
<string name="configuration">Configuration</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="join_matrix">Join Matrix community</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="proxy_settings">Proxy settings</string>
<string name="select_all">Select all</string>
<string name="restore_application">Restore from backup</string>
<string name="download">Download</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="download_and_install">Download and Install</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="export_tunnels_wireguard">Export tunnels as WireGuard</string>
<string name="wifi_detection_method">Wi-Fi detection method</string>
<string name="tunnel">tunnel</string>
<string name="legacy_api_description">Use an Android 12 deprecated method for getting Wi-Fi information that limits location queries, but may not work reliably on newer devices</string>
<string name="active">Active</string>
<string name="security_type">Security:</string>
<string name="export_tunnels_amnezia">Export tunnels as Amnezia</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="add_tunnel">Add tunnel</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="select">Select</string>
<string name="translation">Translation</string>
<string name="root">Root</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="location_justification">In order to read Wi-Fi names in the background with your current detection method, Android requires apps to be given \'Allow all the time\' and \'Precise\' (Background Location on older devices) permission. Please enable these permissions in your Android app settings.</string>
<string name="reliability">Reliability</string>
<string name="monitoring">Monitoring</string>
<string name="app_permission_title">WG Tunnel Control Bridge</string>
<string name="wireguard">WireGuard</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="move_up">Move Up</string>
<string name="release_notes">Release notes</string>
<string name="dropdown">Dropdown</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="version_template">Version: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="move_down">Move Down</string>
<string name="backup_application">Backup application data</string>
<string name="remote_key_template">Key: %1$s</string>
<string name="comma_separated">Comma separated</string>
<string name="amoled">AMOLED</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="app_permission_description">Control tunnels and auto-tunnel features.</string>
<string name="install_updated_permission">This app needs permission to install updates.</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="search">Search</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="auth_error">Unauthorized</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="kernel_name_error">Kernel module name error</string>
<string name="sort">Sort</string>
<string name="_continue">Continue</string>
<string name="_false">False</string>
<string name="config_error">Invalid config</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="update_check_unsupported">Update check is not supported for this build type.</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="camera_permission_required">Camera permission required</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="allow">Allow</string>
<string name="latest_installed">You are already running the latest version.</string>
<string name="fix">Fix</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="export_failed">Export failed</string>
<string name="enable_remote_app_control">Enable remote app control</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="update_download_failed">Update download failed.</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="_default">Default</string>
<string name="ping_monitor">Ping monitor</string>
<string name="read_failed">Failed to read data.</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="system">System</string>
<string name="error_tunnel_name">Tunnel name must be 15 characters or fewer in kernel mode</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="add_from_url">Add from URL</string>
<string name="location_permissions_missing">Location permissions missing</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="shizuku">Shizuku</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_not_running">Auto-tunnel is not running</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="export_success">Export success</string>
<string name="proxy">Proxy</string>
<string name="auto_tunnel_running">Auto-tunnel is running</string>
<string name="done">Done</string>
<string name="invalid_key">Invalid key</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+102 -1
View File
@@ -247,7 +247,6 @@
<string name="display_detailed_ping_stats">پِنگ کے تفصیلی اعدادوشمار دکھائیں</string>
<string name="reachable_template">قابل رسائی: %1$s</string>
<string name="ping_success_template">آخری کامیاب پِنگ: %1$s</string>
<string name="sec_ago_template">%1$s سیکنڈ پہلے</string>
<string name="latency_template">تاخیر: %1$s</string>
<string name="jitter_template">ہلچل: %1$s</string>
<string name="packets_sent_template">پیکٹ بھیجے گئے: %1$s</string>
@@ -325,4 +324,106 @@
<string name="donation_signoff">شکر گزار،</string>
<string name="google_donation_message">بدقسمتی سے، گوگل کی پالیسیوں کی وجہ سے، اس ایپ کے پلے اسٹور ورژن میں عطیہ کے لنکس کی اجازت نہیں ہے۔ عطیہ کہاں کرنا ہے تلاش کرنے کے لیے براہ کرم پروجیکٹ کے ویب پیجز کو براؤز کریں۔</string>
<string name="delete_active_message">فعال ٹنل کو حذف نہیں کیا جا سکتا۔</string>
<string name="dual_stack">Dual-stack</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="save_changes">Save changes</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you can, please consider</string>
<string name="website">App website</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="info">Info</string>
<string name="unknown">Unknown</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="no_network">No network connected</string>
<string name="wifi">Wi-Fi</string>
<string name="ping_target">Ping target</string>
<string name="resources">Resources</string>
<string name="back">Back</string>
<string name="already_donated">Already donated</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="other">Other</string>
<string name="kill_switch">kill switch</string>
<string name="configuration">Configuration</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="contact">Contact</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="security_type">Security:</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="translation">Translation</string>
<string name="reliability">Reliability</string>
<string name="monitoring">Monitoring</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="set_ping_target">Set ping target</string>
<string name="general">General</string>
<string name="review">Rate app</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="_continue">Continue</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="ping_monitor">Ping monitor</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+423
View File
@@ -3,4 +3,427 @@
<string name="no_tunnels">Chưa có đường nối nào!</string>
<string name="tunnels">Các đường nối</string>
<string name="error_file_extension">Tệp không phải .conf hay .zip</string>
<string name="enter_config_url">Enter config URL</string>
<string name="use_android_recommended">Use Android\'s recommended method for getting Wi-Fi information, based on Android version</string>
<string name="dual_stack">Dual-stack</string>
<string name="missing_attribute">Missing attribute</string>
<string name="hide_amnezia_properties">Hide Amnezia properties</string>
<string name="advanced_settings">Advanced settings</string>
<string name="kernel_name_dots">Tunnel name cannot be \'.\' or \'..\' in kernel mode</string>
<string name="auto_tunnel_channel_name">Auto-tunnel Notification Channel</string>
<string name="always_on_message">VPN connection permission has been denied. Please check the</string>
<string name="github_sponsors">GitHub Sponsors</string>
<string name="tunnel_on_ethernet">Tunnel on ethernet</string>
<string name="current_template">Current: %1$s</string>
<string name="email_chooser">Send an email…</string>
<string name="root_accepted">Root shell accepted</string>
<string name="save_changes">Save changes</string>
<string name="save">Save</string>
<string name="delete_tunnel">Delete tunnel</string>
<string name="tunnel_mobile_data">Tunnel on mobile data</string>
<string name="logs">Logs</string>
<string name="enable_app_lock">Enable app lock</string>
<string name="ethernet_tunnel">Ethernet tunnel</string>
<string name="config_changes_saved">Configuration changes saved.</string>
<string name="join_telegram">Join Telegram community</string>
<string name="pin_created">Pin successfully created</string>
<string name="post_up">Post up</string>
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
<string name="warning">Warning</string>
<string name="password">Password</string>
<string name="error_download_failed">Failed to download config</string>
<string name="remote_key">Remote key</string>
<string name="mobile_data">Mobile data</string>
<string name="use_shell_via_shizuku">Use shell via Shizuku to get Wi-Fi information, preventing the need for location permission on non-rooted devices</string>
<string name="stop_on_internet_loss">Stop tunnel on internet loss</string>
<string name="vpn">VPN</string>
<string name="tunnel_boot_description">Start the default tunnel on boot</string>
<string name="prefer_ipv6_resolution">Prefer IPv6 peer resolution</string>
<string name="allow_lan_traffic">Allow LAN traffic</string>
<string name="quick_actions">Quick actions</string>
<string name="google_donation_message">Unfortunately, due to Google\'s policies, donation links are not allowed in the Play Store version of this app. Please browse the project\'s webpages to find where to donate.</string>
<string name="response_packet_magic_header">Response packet magic header</string>
<string name="tunnel_monitoring">Tunnel monitoring</string>
<string name="primary_tunnel">Default tunnel</string>
<string name="create_pin">Create PIN</string>
<string name="licenses">Licenses</string>
<string name="http_bind_address">HTTP bind address</string>
<string name="vpn_channel_description">A channel for VPN state notifications</string>
<string name="amnezia">Amnezia</string>
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
<string name="tunnel_name_taken">Tunnel name is already used.</string>
<string name="check_for_update">Check for update</string>
<string name="mimic_dns">Mimic DNS</string>
<string name="unknown_attribute">Unknown attribute</string>
<string name="donation_prompt_prefix">Thanks for using WG Tunnel! If you can, please consider</string>
<string name="hint_template">(%1$s)</string>
<string name="edit_tunnel">Edit tunnel</string>
<string name="kernel">Kernel</string>
<string name="peer">Peer</string>
<string name="auto_tunneling">Auto-tunneling</string>
<string name="init_packet_magic_header">Init packet magic header</string>
<string name="socks_5_bind_address">SOCKS5 bind address</string>
<string name="root_required_template">%1$s (root required)</string>
<string name="tunnel_control">Tunnel control</string>
<string name="website">App website</string>
<string name="mobile_tunnel">Mobile data tunnel</string>
<string name="error_no_file_explorer">No file explorer installed</string>
<string name="mimic_quic">Mimic QUIC</string>
<string name="auto_tunnel_channel_description">A channel for auto-tunnel state notifications</string>
<string name="show_qr">Show QR</string>
<string name="wifi_settings">Wi-Fi settings</string>
<string name="tunnel_on_wifi">Tunnel on Wi-Fi</string>
<string name="add_peer">Add peer</string>
<string name="tunnel_starting">Tunnel starting</string>
<string name="backup_success">Backup success. %1$s</string>
<string name="inactive">Inactive</string>
<string name="invalid_value">Invalid value</string>
<string name="persistent_keepalive">Persistent keepalive</string>
<string name="info">Info</string>
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
<string name="exclude">Exclude</string>
<string name="backup_failed">Failed to create backup.</string>
<string name="unknown_section">Unknown section</string>
<string name="junk_packet_minimum_size">Junk packet minimum size</string>
<string name="location_services_not_detected">Location services not detected</string>
<string name="all">All</string>
<string name="location_permissions">Location Permissions</string>
<string name="unknown">Unknown</string>
<string name="tunnel_error_template">Tunnel failed with: %1$s</string>
<string name="restart_at_boot">Start on boot</string>
<string name="syntax_error">Syntax error</string>
<string name="learn_more">Learn more</string>
<string name="all_services_disabled">Auto-tunnel and tunnels must be disabled to perform this action.</string>
<string name="email_subject">WG Tunnel Support</string>
<string name="ping_timeout">Tunnel ping timeout</string>
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
<string name="interface_">Interface</string>
<string name="defaults_to_template">(defaults to %1$s)</string>
<string name="prominent_background_location_message">This feature requires background location permission to enable Wi-Fi SSID monitoring even while the application is closed. For more details, please see the Privacy Policy linked on the Support screen.</string>
<string name="delete_logs">Delete and clear logs</string>
<string name="launch_app_settings">Launch app settings</string>
<string name="ddns_auto_update_description">Auto-updates IP on DDNS changes</string>
<string name="copy">Copy</string>
<string name="show_amnezia_properties">Show Amnezia properties</string>
<string name="legacy">Legacy</string>
<string name="preshared_key">Pre-shared key</string>
<string name="include">Include</string>
<string name="no_network">No network connected</string>
<string name="checking_for_update">Checking for updates</string>
<string name="restore_success">Restore success. %1$s</string>
<string name="no_browser_detected">No browser detected</string>
<string name="latency_template">Latency: %1$s</string>
<string name="wifi">Wi-Fi</string>
<string name="packet_loss_template">Packet loss: %.2f%%</string>
<string name="no_email_detected">No email app detected</string>
<string name="update_check_failed">Update check failed.</string>
<string name="dns_resolve_error">DNS resolution failed</string>
<string name="ping_target">Ping target</string>
<string name="update_available">Update Available!</string>
<string name="vpn_on">VPN on</string>
<string name="appearance">Appearance</string>
<string name="vpn_channel_name">VPN Notification Channel</string>
<string name="name">Name</string>
<string name="dns_provider">DNS provider</string>
<string name="recommended_template">%1$s (recommended)</string>
<string name="missing_section">Missing section</string>
<string name="yes">Yes</string>
<string name="seconds">Seconds</string>
<string name="vpn_denied_dialog_title">Permission Denied</string>
<string name="handshake">Handshake</string>
<string name="config_error_template">Bad config. %1$s at location: %2$s.</string>
<string name="locked_down">Locked down</string>
<string name="export_logs">Export stored logs</string>
<string name="username">Username</string>
<string name="light">Light</string>
<string name="password_no_spaces">Password cannot have spaces.</string>
<string name="darker">Darker</string>
<string name="dynamic">Dynamic</string>
<string name="resources">Resources</string>
<string name="invalid_number">Invalid number</string>
<string name="stop_on_no_internet">Stop on no internet</string>
<string name="permission_required">Permission Required</string>
<string name="shizuku_not_detected">Shizuku not detected</string>
<string name="automatic">Automatic</string>
<string name="timeout_all_attempts">Total timeout for all attempts</string>
<string name="back">Back</string>
<string name="liberapay">Liberapay</string>
<string name="ip_or_hostname">IP or hostname</string>
<string name="local_logging">Local logs monitor</string>
<string name="flavor_template">Flavor: %1$s</string>
<string name="delete">Delete</string>
<string name="donate_title">Donate</string>
<string name="endpoint">Endpoint</string>
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
<string name="response_packet_junk_size">Response packet junk size</string>
<string name="start">Start</string>
<string name="enable_amnezia_compatibility">Enable Amnezia compatibility</string>
<string name="nothing_here_yet">Nothing here yet!</string>
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
<string name="dns_servers">DNS servers</string>
<string name="support">Support</string>
<string name="already_donated">Already donated</string>
<string name="kofi">Ko-fi</string>
<string name="donation_signoff">Gratefully,</string>
<string name="selected">Selected</string>
<string name="global_split_tunneling">Global split tunneling</string>
<string name="active_network">Active Network:</string>
<string name="range_hint">(%1$d%2$d)</string>
<string name="delete_active_message">Cannot delete active tunnel.</string>
<string name="native_kill_switch">Native kill switch</string>
<string name="include_lan">Include LAN</string>
<string name="docs_description">Read the docs</string>
<string name="stop">Stop</string>
<string name="add_tunnels_text">Add from file or zip</string>
<string name="add_from_qr">Add from QR code</string>
<string name="help_translate">Help translate the app</string>
<string name="ethernet">Ethernet</string>
<string name="socks_5_proxy">SOCKS5 proxy</string>
<string name="service_running_error">Service not running</string>
<string name="other">Other</string>
<string name="new_tunnel">New tunnel</string>
<string name="copy_public_key">Copy public key</string>
<string name="always_on_message2">to make sure Always-on VPN is turned off for all other apps and try again</string>
<string name="open_settings">Open Settings</string>
<string name="kill_switch">kill switch</string>
<string name="mtu">MTU</string>
<string name="configuration">Configuration</string>
<string name="drag_handle">Drag Handle</string>
<string name="global_dns_servers">Global DNS servers</string>
<string name="unsure_how">if you are unsure how to proceed</string>
<string name="display_theme">Display theme</string>
<string name="contact">Contact</string>
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
<string name="notifications">Notifications</string>
<string name="getting_started_guide">getting started guide</string>
<string name="join_matrix">Join Matrix community</string>
<string name="backup_and_restore">Backup and restore</string>
<string name="email_description">Send me an email</string>
<string name="proxy_settings">Proxy settings</string>
<string name="select_all">Select all</string>
<string name="skip">Skip</string>
<string name="post_down">Post down</string>
<string name="restore_application">Restore from backup</string>
<string name="junk_packet_count">Junk packet count</string>
<string name="base64_key">Base64 key</string>
<string name="download">Download</string>
<string name="show_password">Show password</string>
<string name="proxy_credentials">Proxy credentials</string>
<string name="transport_packet_magic_header">Transport packet magic header</string>
<string name="unknown_error">Unknown error occurred</string>
<string name="download_and_install">Download and Install</string>
<string name="vpn_settings">VPN system settings</string>
<string name="ping">Ping</string>
<string name="about">About</string>
<string name="debounce_delay">Debounce delay</string>
<string name="donation_prompt_link">supporting the project</string>
<string name="tunnel_ping_interval">Tunnel ping interval</string>
<string name="donation_prompt_suffix">to keep it free and improving.</string>
<string name="text_too_large_for_qr">Text is too large to display QR.</string>
<string name="options">Options</string>
<string name="bypass_lan_for_kill_switch">Bypass LAN for kill switch</string>
<string name="use_wildcards">Use name wildcards</string>
<string name="export_tunnels_wireguard">Export tunnels as WireGuard</string>
<string name="wifi_detection_method">Wi-Fi detection method</string>
<string name="tunnel">tunnel</string>
<string name="legacy_api_description">Use an Android 12 deprecated method for getting Wi-Fi information that limits location queries, but may not work reliably on newer devices</string>
<string name="active">Active</string>
<string name="security_type">Security:</string>
<string name="export_tunnels_amnezia">Export tunnels as Amnezia</string>
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
<string name="ddns_success_message">Dynamic DNS endpoint successfully updated.</string>
<string name="addresses">Addresses</string>
<string name="privacy_policy">Privacy policy</string>
<string name="auto_tunnel">Auto-tunnel</string>
<string name="trusted_wifi_names">Trusted Wi-Fi names</string>
<string name="add_tunnel">Add tunnel</string>
<string name="http_proxy">HTTP proxy</string>
<string name="restarting_app">Restarting app to apply changes…</string>
<string name="select">Select</string>
<string name="translation">Translation</string>
<string name="root">Root</string>
<string name="doh">DNS over HTTPS (DoH)</string>
<string name="location_justification">In order to read Wi-Fi names in the background with your current detection method, Android requires apps to be given \'Allow all the time\' and \'Precise\' (Background Location on older devices) permission. Please enable these permissions in your Android app settings.</string>
<string name="public_key">Public key</string>
<string name="show_scripts">Show scripts</string>
<string name="allowed_ips">Allowed IPs</string>
<string name="reliability">Reliability</string>
<string name="monitoring">Monitoring</string>
<string name="app_permission_title">WG Tunnel Control Bridge</string>
<string name="wireguard">WireGuard</string>
<string name="rotate_keys">Rotate keys</string>
<string name="aovpn_description">Allows Android to start tunnels</string>
<string name="move_up">Move Up</string>
<string name="release_notes">Release notes</string>
<string name="dark">Dark</string>
<string name="monitoring_state_changes">Monitoring state changes</string>
<string name="dropdown">Dropdown</string>
<string name="set_ping_target">Set ping target</string>
<string name="ping_target_template">Ping target: %1$s</string>
<string name="version_template">Version: %1$s</string>
<string name="donation_thanks_intro">Thank you for considering donating to this project!</string>
<string name="cancel">Cancel</string>
<string name="reachable_template">Reachable: %1$s</string>
<string name="restore_failed">Failed to restore from backup.</string>
<string name="auto_tunnel_title">Auto-tunnel service</string>
<string name="prominent_background_location_title">Background Location Disclosure</string>
<string name="move_down">Move Down</string>
<string name="remove_amnezia_compatibility">Remove Amnezia compatibility</string>
<string name="open_issue">Open an issue</string>
<string name="random">(random)</string>
<string name="backup_application">Backup application data</string>
<string name="remote_key_template">Key: %1$s</string>
<string name="comma_separated">Comma separated</string>
<string name="amoled">AMOLED</string>
<string name="general">General</string>
<string name="donation_dev_message">As the sole developer, I work tirelessly to make WG Tunnel the best free and open-source WireGuard client for Android, but this is only possible with your support.</string>
<string name="review">Rate app</string>
<string name="app_permission_description">Control tunnels and auto-tunnel features.</string>
<string name="install_updated_permission">This app needs permission to install updates.</string>
<string name="use_root_shell_for_wifi">Use a root shell to get Wi-Fi information, preventing the need for location permissions</string>
<string name="disabled">Disabled</string>
<string name="ddns_auto_update">Dynamic DNS auto-update</string>
<string name="backend_mode">App mode</string>
<string name="language">Language</string>
<string name="attempts_per_interval">Ping attempts per interval</string>
<string name="error_ssid_exists">SSID already exists</string>
<string name="splt_tunneling">Split tunneling</string>
<string name="okay">Okay</string>
<string name="search">Search</string>
<string name="packets_sent_template">Packets sent: %1$s</string>
<string name="see_the">See the</string>
<string name="listen_port">Listen port</string>
<string name="auth_error">Unauthorized</string>
<string name="auto">(Auto)</string>
<string name="kernel_name_special_characters">Tunnel name in kernel mode cannot have spaces or certain special characters (allowed: alphanumeric, _, =, +, ., -)</string>
<string name="add_from_clipboard">Add from clipboard</string>
<string name="kernel_name_error">Kernel module name error</string>
<string name="sort">Sort</string>
<string name="_continue">Continue</string>
<string name="create_import">Create from scratch</string>
<string name="_false">False</string>
<string name="config_error">Invalid config</string>
<string name="mimic_sip">Mimic SIP</string>
<string name="update_check_unsupported">Update check is not supported for this build type.</string>
<string name="optional">(optional)</string>
<string name="trusted_ssid_value_description">Submit SSID</string>
<string name="expiremental_template">%1$s (experimental)</string>
<string name="display_detailed_ping_stats">Display detailed ping stats</string>
<string name="donate">Donate to project</string>
<string name="unavailable_in_mode">Unavailable in current mode</string>
<string name="server_port">Server:Port</string>
<string name="tunnel_item_description">%1$s, %2$s, %3$s</string>
<string name="camera_permission_required">Camera permission required</string>
<string name="debounce_description">Delay between rapid network changes</string>
<string name="dns_protocol">DNS protocol</string>
<string name="enabled_app_shortcuts">Enable app shortcuts</string>
<string name="preferred_tunnel">Preferred tunnel</string>
<string name="allow">Allow</string>
<string name="underload_packet_magic_header">Underload packet magic header</string>
<string name="vpn_off">VPN off</string>
<string name="latest_installed">You are already running the latest version.</string>
<string name="add_wifi_name">Add Wi-Fi name</string>
<string name="never">Never</string>
<string name="delete_tunnel_message">Are you sure you would like to delete the selected tunnels?</string>
<string name="private_key">Private key</string>
<string name="fix">Fix</string>
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
<string name="settings">Settings</string>
<string name="ping_success_template">Last successful ping: %1$s</string>
<string name="incorrect_pin">Pin is incorrect</string>
<string name="tunnel_running">Tunnel running</string>
<string name="export_failed">Export failed</string>
<string name="enable_remote_app_control">Enable remote app control</string>
<string name="donation_closing">It\'s my dream to work for you on this project full-time.</string>
<string name="set_custom_ping_target">Custom ping targets</string>
<string name="update_download_failed">Update download failed.</string>
<string name="network_name">Network:</string>
<string name="mapped">Mapped</string>
<string name="pre_up">Pre up</string>
<string name="tunnel_mapping">Tunnel mapping</string>
<string name="android_integrations">Android integrations</string>
<string name="preferred_tunnel_label">Preferred tunnel:</string>
<string name="dns_settings">DNS settings</string>
<string name="always_on_vpn_support">Allow Always-On VPN</string>
<string name="junk_packet_maximum_size">Junk packet maximum size</string>
<string name="_default">Default</string>
<string name="exclude_lan">Exclude LAN</string>
<string name="ping_monitor">Ping monitor</string>
<string name="app_name">WG Tunnel</string>
<string name="error_root_denied">Root shell denied</string>
<string name="read_failed">Failed to read data.</string>
<string name="start_auto">Start auto-tunnel</string>
<string name="crypto">Cryptocurrency addresses</string>
<string name="hide_scripts">Hide scripts</string>
<string name="system">System</string>
<string name="tunnel_name">Tunnel Name</string>
<string name="error_tunnel_name">Tunnel name must be 15 characters or fewer in kernel mode</string>
<string name="wildcards_active">Wildcards active</string>
<string name="restart_message_template">Saving changes will cause the %1$s to restart, do you wish to continue?</string>
<string name="already_donated_description">Disables future donation prompts</string>
<string name="add_from_url">Add from URL</string>
<string name="init_packet_junk_size">Init packet junk size</string>
<string name="location_permissions_missing">Location permissions missing</string>
<string name="metered_tunnel">Metered tunnel</string>
<string name="stop_auto">Stop auto-tunnel</string>
<string name="multiple">Multiple</string>
<string name="shizuku">Shizuku</string>
<string name="lockdown_settings">Lockdown settings</string>
<string name="enter_pin">Enter PIN</string>
<string name="_true">True</string>
<string name="networks">Networks</string>
<string name="auto_tunnel_not_running">Auto-tunnel is not running</string>
<string name="set_primary_tunnel">Tunnel used when no preferred tunnel is configured</string>
<string name="pre_down">Pre down</string>
<string name="jitter_template">Jitter: %1$s</string>
<string name="ping_target_description">Defaults to an internal tunnel IP for split configurations or Cloudflare for full tunnel configurations.</string>
<string name="lockdown">Lockdown</string>
<string name="export_success">Export success</string>
<string name="proxy">Proxy</string>
<string name="auto_tunnel_running">Auto-tunnel is running</string>
<string name="done">Done</string>
<string name="thank_you">Thank you for using WG Tunnel!</string>
<string name="invalid_key">Invalid key</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="matrix_url" translatable="false">https://matrix.to/#/#wg-tunnel-space:matrix.org</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">Transport packet junk size</string>
<string name="cookie_packet_junk_size">Cookie packet junk size</string>
</resources>
+117 -16
View File
@@ -2,7 +2,7 @@
<resources>
<string name="no_tunnels">您还没有添加隧道!</string>
<string name="tunnels">隧道列表</string>
<string name="privacy_policy">查看隐私政策</string>
<string name="privacy_policy">隐私政策</string>
<string name="tunnel_mobile_data">允许隧道使用数据流量</string>
<string name="okay"></string>
<string name="tunnel_on_ethernet">在局域网中使用隧道</string>
@@ -34,12 +34,12 @@
<string name="copy_public_key">复制公钥</string>
<string name="email_chooser">发送邮件…</string>
<string name="persistent_keepalive">连接保活</string>
<string name="tunnel_on_wifi">在不受信任的 WiFi 上建立隧道</string>
<string name="tunnel_on_wifi">WiFi 上隧道</string>
<string name="exclude">排除</string>
<string name="base64_key">Base64 编码</string>
<string name="endpoint">端点</string>
<string name="thank_you">谢谢您使用 WG Tunnel!</string>
<string name="prominent_background_location_message">此功能是在应用关闭时,后台自动扫描 Wi-Fi SSID需要开启后台位置信息访问权限。更多信息,请在支持页面查看隐私政策。</string>
<string name="prominent_background_location_message">此功能意味着允许软件在后台自动扫描 Wi-Fi SSID这要求开启后台位置信息访问权限。更多信息,请在支持页面查看隐私政策。</string>
<string name="vpn_on">VPN 已连接</string>
<string name="vpn_off">VPN 已关闭</string>
<string name="auto_tunneling">自动建立隧道</string>
@@ -50,7 +50,7 @@
<string name="preshared_key">预共享密钥</string>
<string name="unknown_error">发生了未知错误</string>
<string name="error_ssid_exists">SSID 已经存在</string>
<string name="config_changes_saved">设置已保存。</string>
<string name="config_changes_saved">配置更改已保存。</string>
<string name="interface_">接口</string>
<string name="email_subject">WG Tunnel 支持</string>
<string name="auto_tunnel_title">自动隧道服务</string>
@@ -76,7 +76,7 @@
<string name="pin_created">创建密码成功</string>
<string name="enter_pin">输入 PIN 码</string>
<string name="create_pin">创建 PIN 码</string>
<string name="set_primary_tunnel">设置为主隧道</string>
<string name="set_primary_tunnel">没有配置首选隧道时使用的隧道</string>
<string name="init_packet_junk_size">初始化无效包大小</string>
<string name="junk_packet_maximum_size">无效包最大值</string>
<string name="response_packet_magic_header">响应包的 magic header</string>
@@ -89,10 +89,10 @@
<string name="vpn_settings">系统 VPN 设置</string>
<string name="always_on_message2">确保始终开启 VPN 功能已关闭,然后再尝试连接</string>
<string name="never">从不</string>
<string name="handshake">握手</string>
<string name="handshake">上次握手</string>
<string name="light">亮色</string>
<string name="dark">暗色</string>
<string name="trusted_wifi_names">可信 WiFi SSID</string>
<string name="trusted_wifi_names">可信 WiFi 名称</string>
<string name="prominent_background_location_title">后台定位披露</string>
<string name="dynamic">动态颜色</string>
<string name="display_theme">主题</string>
@@ -100,13 +100,13 @@
<string name="notifications">通知</string>
<string name="automatic">跟随系统</string>
<string name="language">语言</string>
<string name="add_wifi_name">添加 WiFi SSID</string>
<string name="primary_tunnel">隧道</string>
<string name="add_wifi_name">添加 WiFi 名称</string>
<string name="primary_tunnel">默认隧道</string>
<string name="mobile_tunnel">使用数据流量</string>
<string name="add_from_clipboard">从剪贴板添加</string>
<string name="transport_packet_magic_header">传输包的 magic header</string>
<string name="underload_packet_magic_header">欠载数据包 magic header</string>
<string name="restart_at_boot">开机时重新启动</string>
<string name="restart_at_boot">开机时启动</string>
<string name="learn_more">了解更多</string>
<string name="unsure_how">如果您不确定如何进行</string>
<string name="see_the">请查阅</string>
@@ -121,7 +121,7 @@
<string name="stop_auto">停止自动隧道</string>
<string name="tunnel_running">隧道运行中</string>
<string name="donate">捐赠</string>
<string name="local_logging">日志</string>
<string name="local_logging">本地日志监控器</string>
<string name="stop_on_no_internet">无网络时停用</string>
<string name="stop_on_internet_loss">网络丢失时停止隧道</string>
<string name="bypass_lan_for_kill_switch">绕过局域网流量</string>
@@ -237,9 +237,9 @@
<string name="pinger_bounce_recovery">Pinger 重启失败。用旧地址恢复了隧道。</string>
<string name="bounce_failed_template">Pinger 未能恢复隧道,错误:%1$s</string>
<string name="tunnel_monitoring">隧道监控</string>
<string name="set_custom_ping_target">自定义 ping 目标(可选)</string>
<string name="set_custom_ping_target">自定义 ping 目标</string>
<string name="ip_or_hostname">IP 或主机名</string>
<string name="ping_target_description">如内部 IP 不可用(比如使用不分流配置)会使用这个。留空则默认使用 Cloudflare。</string>
<string name="ping_target_description">分流配置默认使用内部隧道 IP不分流配置默认使用 Cloudflare。</string>
<string name="tunnel_ping_interval">隧道 ping 操作间隔</string>
<string name="attempts_per_interval">每一间隔的 Ping 次数</string>
<string name="ping_timeout">隧道 ping 超时</string>
@@ -247,14 +247,13 @@
<string name="display_detailed_ping_stats">展示详细的 ping 数据</string>
<string name="reachable_template">可抵达:%1$s</string>
<string name="ping_success_template">上次成功的 ping 操作:%1$s</string>
<string name="sec_ago_template">%1$s 秒前</string>
<string name="latency_template">延迟:%1$s</string>
<string name="jitter_template">抖动:%1$s</string>
<string name="packets_sent_template">已发送数据包:%1$s</string>
<string name="packet_loss_template">丢失数据包:%.2f%%</string>
<string name="ping_target_template">Ping 目标:%1$s</string>
<string name="_true">True</string>
<string name="_false">False</string>
<string name="_true"></string>
<string name="_false"></string>
<string name="backup_success">成功备份:%1$s</string>
<string name="restore_success">成功恢复:%1$s</string>
<string name="restarting_app">正重启应用来应用更改…</string>
@@ -325,4 +324,106 @@
<string name="donation_signoff">再次感谢,</string>
<string name="google_donation_message">不幸的是,由于 Google 的政策,本应用的 Play Store 版本不允许出现捐赠链接。请浏览本项目网页寻找捐赠地址。</string>
<string name="delete_active_message">无法删除活跃隧道。</string>
<string name="back">返回</string>
<string name="configuration">配置</string>
<string name="about">关于</string>
<string name="resources">资源</string>
<string name="website">应用网站</string>
<string name="contact">联系</string>
<string name="review">评价</string>
<string name="other">其他</string>
<string name="options">选项</string>
<string name="general">常规</string>
<string name="networks">网络</string>
<string name="preferred_tunnel_label">首选隧道:</string>
<string name="preferred_tunnel">首选隧道</string>
<string name="mapped">已映射</string>
<string name="tunnel_mapping">隧道映射</string>
<string name="wifi_settings">Wi-Fi 设置</string>
<string name="ping">Ping</string>
<string name="ping_monitor">Ping 监控器</string>
<string name="backup_and_restore">备份和恢复</string>
<string name="ping_target">Ping 目标</string>
<string name="set_ping_target">设置 ping 目标</string>
<string name="mobile_data">移动数据</string>
<string name="ethernet">以太网</string>
<string name="unknown">未知</string>
<string name="no_network">未连接网络</string>
<string name="active_network">活跃网络:</string>
<string name="security_type">安全性:</string>
<string name="network_name">网络:</string>
<string name="wifi">Wi-Fi</string>
<string name="text_too_large_for_qr">文本过大无法显示二维码。</string>
<string name="all_services_disabled">要执行此操作必须禁用自动隧道和隧道。</string>
<string name="ddns_success_message">成功更新了动态 DNS 端点。</string>
<string name="reliability">可靠性</string>
<string name="debounce_description">快速网络切换延迟</string>
<string name="aovpn_description">允许安卓系统启动隧道</string>
<string name="tunnel_boot_description">开机时启动默认隧道</string>
<string name="remote_key">远程 key</string>
<string name="tunnel_mapping_description">按照 Wi-Fi 名称将隧道映射为首选</string>
<string name="monitoring">监控</string>
<string name="kernel_name_dots">内核模式下隧道名称不能是 \'.\' 或 \'..\'</string>
<string name="kernel_name_special_characters">内核模式下的隧道名称不能有空格或某些特殊字符(允许:字母数字混合、_、=、+、.、-)</string>
<string name="tunnel_running_name_message">隧道活跃时无法更改名称。</string>
<string name="metered_tunnel">流量计费的隧道</string>
<string name="lockdown_settings">锁定设置</string>
<string name="unavailable_in_mode">当前模式下不可用</string>
<string name="global_split_tunneling">全局分流隧道</string>
<string name="global_dns_servers">全局 DNS 服务器</string>
<string name="dual_stack">双栈</string>
<string name="dual_stack_description">隧道必须支持 IPv4 和 IPv6</string>
<string name="save_changes">保存更改</string>
<string name="restart_message_template">保存更改会造成 %1$s 重启,要继续吗?</string>
<string name="_continue">继续</string>
<string name="kill_switch">紧急断连开关</string>
<string name="translation">翻译</string>
<string name="help_translate">帮忙翻译本应用</string>
<string name="info">信息</string>
<string name="already_donated">已捐赠</string>
<string name="already_donated_description">禁用未来捐赠提示</string>
<string name="donation_prompt_prefix">感谢使用 WG Tunnel!如有能力,请考虑</string>
<string name="donation_prompt_link">支持本项目</string>
<string name="donation_prompt_suffix">使其保持免费并不断完善。</string>
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
<string name="kofi_url" translatable="false">https://ko-fi.com/zaneschepke</string>
<string name="bitcoin_cash_address" translatable="false">bitcoincash:qp6xacvswha2tjfp2rscguq3gd4eecxeuvcgtyjv58</string>
<string name="solana" translatable="false">Solana (SOL)</string>
<string name="docs_wildcards" translatable="false">https://wgtunnel.com/docs/auto-tunneling/#use-name-wildcards</string>
<string name="litecoin" translatable="false">Litecoin (LTC)</string>
<string name="liberapay_url" translatable="false">https://liberapay.com/zaneschepke</string>
<string name="tron_address" translatable="false">TCbR2SqstTLxCA9zp52iC7G2DfHUGD9ak2</string>
<string name="vpn_channel_id" translatable="false">VPN Channel</string>
<string name="telegram_url" translatable="false">https://t.me/wgtunnel</string>
<string name="monero" translatable="false">Monero (XMR)</string>
<string name="bitcoin" translatable="false">Bitcoin (BTC)</string>
<string name="polygon" translatable="false">Polygon (POL)</string>
<string name="privacy_policy_url" translatable="false">https://wgtunnel.com/privacy-policy/</string>
<string name="avalanche_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar_address" translatable="false">GAOHREIPAOKSTD4ELXCMM7LDZPRGKJ2DNHEIXLU752PJS6CDPBAEM75B</string>
<string name="db_name" translatable="false">wg-tunnel-db</string>
<string name="ethereum" translatable="false">Ethereum (ETH)</string>
<string name="bitcoin_address" translatable="false">bc1qu6dwlwhav7cwp5gv3kyv3cpwrjrra80p75js6u</string>
<string name="translation_url" translatable="false">https://hosted.weblate.org/engage/wg-tunnel/</string>
<string name="zcash_address" translatable="false">u1fkx80l0mr7cgzmj5xusnf4fa0hlvttaedlqjzl657dyyfqq4tzq49v4ru53u8re0kfnlah7s363msewcva43v8a2rn8zqs56jeeu6m7snrfljs343kfkgv7gsa76xg005wz95855uwlrvgan0er8n3sp75mmmj44n3fnjar5y7jy0pd2k5yw33lgwpuectuknkwstdkkfyqvxh9xq6c</string>
<string name="docs_url" translatable="false">https://wgtunnel.com/docs/getting-started</string>
<string name="ecash" translatable="false">eCash (XEC)</string>
<string name="my_email" translatable="false">support@zaneschepke.com</string>
<string name="ethereum_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="litecoin_address" translatable="false">ltc1q983jnz3n2zshp2xyme8ant45aah5hv337k8nm7</string>
<string name="dev_name" translatable="false">Zane</string>
<string name="ecash_address" translatable="false">ecash:qrnnvzhezgm9unazue2mw7np5qhdk2874g996nd2zw</string>
<string name="tron" translatable="false">Tron (TRX)</string>
<string name="polygon_address" translatable="false">0xd711c24D0E355d9D694F60B42FdDAFd8653D2786</string>
<string name="stellar" translatable="false">Stellar (XLM)</string>
<string name="monero_address" translatable="false">44D1vWL4CqmEGiRhwtUy6MT2SgaCYpk5o3Nh6YxBFyoCXLZ5eZMLiDGj9uoo51mGjeiLxHWyV28MxDPUzQZN4PoqML16ZB9</string>
<string name="zcash" translatable="false">Zcash (ZEC)</string>
<string name="solana_address" translatable="false">5qPMZa2Y2R6D6AUzrofS4o2M1nzNpbMiAkcRcBkjsmwQ</string>
<string name="github_url" translatable="false">https://github.com/wgtunnel/wgtunnel/issues</string>
<string name="avalanche" translatable="false">Avalanche (AVAX)</string>
<string name="website_url" translatable="false">https://wgtunnel.com</string>
<string name="bitcoin_cash" translatable="false">Bitcoin Cash (BCH)</string>
<string name="github_sponsors_url" translatable="false">https://github.com/sponsors/zaneschepke</string>
<string name="transport_packet_junk_size">传输包垃圾大小</string>
<string name="cookie_packet_junk_size">Cookie 包垃圾大小</string>
</resources>

Some files were not shown because too many files have changed in this diff Show More