mirror of
https://github.com/wgtunnel/android.git
synced 2026-07-03 14:07:49 +02:00
Compare commits
52 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 394188b55f | |||
| d61a4213cf | |||
| 90a693abb4 | |||
| 05b950fbb3 | |||
| 5310cf17e6 | |||
| 3ffc8c5e39 | |||
| e538ec80d0 | |||
| 6b24cca551 | |||
| f0c885708b | |||
| c028b9b5b6 | |||
| de8b39d848 | |||
| a573208db6 | |||
| 0e9a63c850 | |||
| 341a806f29 | |||
| 8d257a604c | |||
| 0b674684ba | |||
| 85a27f48a2 | |||
| 1f978cdf96 | |||
| 4f816fa175 | |||
| ee4ac4e968 | |||
| ff53454966 | |||
| 22c17ef66b | |||
| 7a60b90d2b | |||
| 5fd3f89a59 | |||
| 9510f43252 | |||
| 064aa6aa74 | |||
| 0c09add0e4 | |||
| fd0fd33f71 | |||
| aaeb251bbf | |||
| e563608e49 | |||
| 584f0386b6 | |||
| cf49c34bff | |||
| a0f89d40f5 | |||
| 4da05e23f1 | |||
| 6749719e21 | |||
| 1c160ff5f9 | |||
| 861440b7db | |||
| bdb0d27b53 | |||
| 9b3283a2b1 | |||
| 78def29980 | |||
| e83bbdf23a | |||
| 4beeb4e01e | |||
| 4bcd810b38 | |||
| e71174995b | |||
| f256a32bda | |||
| c49666303a | |||
| 3a9b435e50 | |||
| 0993f60977 | |||
| 3d88feb97c | |||
| f61e6d6c6e | |||
| df864ade95 | |||
| 0abe3f67ef |
@@ -1,3 +1,4 @@
|
||||
ko_fi: zaneschepke
|
||||
liberapay: zaneschepke
|
||||
github: zaneschepke
|
||||
custom: ["https://wgtunnel.com/donate/"]
|
||||
|
||||
@@ -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
|
||||
@@ -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: >-
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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')"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -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() }
|
||||
}
|
||||
|
||||
+1
@@ -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)
|
||||
|
||||
+1
-1
@@ -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
-12
@@ -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")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+23
-10
@@ -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
|
||||
|
||||
+35
-31
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+61
-34
@@ -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)
|
||||
|
||||
+1
-1
@@ -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`)"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+2
@@ -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 {
|
||||
|
||||
+4
@@ -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
|
||||
}
|
||||
|
||||
+12
-10
@@ -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)
|
||||
|
||||
+28
-38
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-9
@@ -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
|
||||
}
|
||||
+36
-26
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
+2
-3
@@ -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)
|
||||
}
|
||||
|
||||
-2
@@ -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
|
||||
|
||||
+5
@@ -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,
|
||||
|
||||
+4
-14
@@ -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?
|
||||
|
||||
+20
-5
@@ -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,
|
||||
|
||||
+38
-54
@@ -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) },
|
||||
|
||||
+21
-24
@@ -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),
|
||||
)
|
||||
|
||||
+2
-2
@@ -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()
|
||||
|
||||
+4
-4
@@ -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
|
||||
|
||||
+2
-3
@@ -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,
|
||||
|
||||
+9
-6
@@ -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)
|
||||
|
||||
+2
-2
@@ -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) }
|
||||
|
||||
|
||||
+24
-14
@@ -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) {
|
||||
|
||||
+2
-2
@@ -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 {
|
||||
|
||||
+7
-1
@@ -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,
|
||||
|
||||
+24
-16
@@ -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,
|
||||
)
|
||||
)
|
||||
|
||||
+2
-2
@@ -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())
|
||||
|
||||
+137
-54
@@ -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(),
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -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(
|
||||
|
||||
+6
-5
@@ -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,
|
||||
|
||||
+33
-30
@@ -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) },
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+36
-16
@@ -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 =
|
||||
|
||||
+2
-2
@@ -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 {
|
||||
|
||||
+70
@@ -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),
|
||||
)
|
||||
}
|
||||
}
|
||||
+3
-2
@@ -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,
|
||||
|
||||
+25
-9
@@ -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,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -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)
|
||||
|
||||
+17
-7
@@ -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
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -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
|
||||
}
|
||||
|
||||
+25
-38
@@ -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 {
|
||||
|
||||
+23
-2
@@ -3,6 +3,7 @@ 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
|
||||
@@ -34,6 +35,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
|
||||
@@ -164,6 +166,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))
|
||||
@@ -320,8 +337,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))
|
||||
)
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
|
||||
@@ -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 Wi‑Fi</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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<string name="app_name">WG Tunnel</string>
|
||||
<string name="name">名稱</string>
|
||||
<string name="public_key">公鑰</string>
|
||||
<string name="privacy_policy">查看隱私政策</string>
|
||||
<string name="privacy_policy">隱私政策</string>
|
||||
<string name="tunnels">隧道清單</string>
|
||||
<string name="thank_you">感謝您使用 WG Tunnel!</string>
|
||||
<string name="mtu">MTU</string>
|
||||
@@ -42,14 +42,14 @@
|
||||
<string name="pin_created">成功建立 PIN</string>
|
||||
<string name="incorrect_pin">PIN 不正確</string>
|
||||
<string name="enable_app_lock">啟用應用程式鎖定</string>
|
||||
<string name="set_primary_tunnel">設為主要隧道</string>
|
||||
<string name="set_primary_tunnel">沒有配置首選隧道時使用的隧道</string>
|
||||
<string name="edit_tunnel">編輯隧道</string>
|
||||
<string name="kernel">核心</string>
|
||||
<string name="vpn_settings">系統 VPN 設定</string>
|
||||
<string name="support">支援</string>
|
||||
<string name="getting_started_guide">取得入門指南</string>
|
||||
<string name="settings">設定</string>
|
||||
<string name="restart_at_boot">開機時重新啟動</string>
|
||||
<string name="restart_at_boot">開機時啟動</string>
|
||||
<string name="junk_packet_count">垃圾封包數</string>
|
||||
<string name="logs">日誌</string>
|
||||
<string name="dark">灰色</string>
|
||||
@@ -57,13 +57,13 @@
|
||||
<string name="donate">捐款給此專案</string>
|
||||
<string name="appearance">外觀</string>
|
||||
<string name="display_theme">主題</string>
|
||||
<string name="primary_tunnel">主要隧道</string>
|
||||
<string name="primary_tunnel">預設隧道</string>
|
||||
<string name="learn_more">了解更多</string>
|
||||
<string name="notifications">通知</string>
|
||||
<string name="dynamic">動態</string>
|
||||
<string name="never">從不</string>
|
||||
<string name="automatic">自動</string>
|
||||
<string name="add_wifi_name">新增 WiFi SSID</string>
|
||||
<string name="add_wifi_name">新增 WiFi 名稱</string>
|
||||
<string name="allow_lan_traffic">允許 LAN 流量</string>
|
||||
<string name="stop_on_no_internet">沒有連上網路時停止</string>
|
||||
<string name="stop_on_internet_loss">網路斷線時停止隧道</string>
|
||||
@@ -82,7 +82,7 @@
|
||||
<string name="error_no_file_explorer">未安裝任何檔案管理器</string>
|
||||
<string name="unsure_how">如果您不確定如何進行</string>
|
||||
<string name="see_the">請參閱</string>
|
||||
<string name="local_logging">日誌</string>
|
||||
<string name="local_logging">本機日誌監視器</string>
|
||||
<string name="email_description">給作者寄電子郵件</string>
|
||||
<string name="always_on_vpn_support">允許永久連線的 VPN</string>
|
||||
<string name="vpn_on">VPN 已開啟</string>
|
||||
@@ -120,7 +120,7 @@
|
||||
<string name="export_tunnels_amnezia">將隧道匯出為 Amnezia</string>
|
||||
<string name="export_tunnels_wireguard">將隧道匯出為 WireGuard</string>
|
||||
<string name="inactive">未使用</string>
|
||||
<string name="trusted_wifi_names">信任的 WiFi SSID</string>
|
||||
<string name="trusted_wifi_names">信任的 WiFi 名稱</string>
|
||||
<string name="auto_tunnel">自動隧道管理</string>
|
||||
<string name="auto_tunnel_title">自動隧道管理服務</string>
|
||||
<string name="select_all">全選</string>
|
||||
@@ -131,7 +131,7 @@
|
||||
<string name="tunnel_control">隧道控制</string>
|
||||
<string name="export_logs">匯出已儲存的日誌</string>
|
||||
<string name="delete_logs">刪除並清理日誌</string>
|
||||
<string name="monitoring_state_changes">監控狀態變化</string>
|
||||
<string name="monitoring_state_changes">監測狀態變化</string>
|
||||
<string name="use_root_shell_for_wifi">透過 root 權限取得 Wi-Fi 資訊,避免需要位置存取權</string>
|
||||
<string name="splt_tunneling">隧道拆分</string>
|
||||
<string name="use_wildcards">SSID 使用萬用字元</string>
|
||||
@@ -205,17 +205,16 @@
|
||||
<string name="jitter_template">抖動: %1$s</string>
|
||||
<string name="warning">警告</string>
|
||||
<string name="ip_or_hostname">IP 或主機名稱</string>
|
||||
<string name="sec_ago_template">%1$s 秒前</string>
|
||||
<string name="restarting_app">正在重啟應用程式以應用變更…</string>
|
||||
<string name="packets_sent_template">已發送封包: %1$s</string>
|
||||
<string name="packet_loss_template">丟失封包: %.2f%%</string>
|
||||
<string name="restore_application">從備份還原</string>
|
||||
<string name="restore_success">復原成功。 %1$s</string>
|
||||
<string name="restore_success">還原成功。 %1$s</string>
|
||||
<string name="backup_success">備份成功。%1$s</string>
|
||||
<string name="backup_application">備份應用程式資料</string>
|
||||
<string name="restore_failed">還原備份失敗。</string>
|
||||
<string name="backup_failed">建立備份失敗。</string>
|
||||
<string name="set_custom_ping_target">自訂 ping 目標 (可選)</string>
|
||||
<string name="set_custom_ping_target">自訂 ping 目標</string>
|
||||
<string name="ping_success_template">上次 ping 成功: %1$s</string>
|
||||
<string name="display_detailed_ping_stats">顯示詳細的 ping 統計資訊</string>
|
||||
<string name="fix">修復</string>
|
||||
@@ -230,7 +229,7 @@
|
||||
<string name="_false">False</string>
|
||||
<string name="ping_target_template">Ping 目標: %1$s</string>
|
||||
<string name="reachable_template">可抵達: %1$s</string>
|
||||
<string name="tunnel_monitoring">隧道監控</string>
|
||||
<string name="tunnel_monitoring">隧道監測</string>
|
||||
<string name="ping_timeout">隧道 ping 逾時</string>
|
||||
<string name="tunnel_ping_interval">隧道 ping 間隔</string>
|
||||
<string name="attempts_per_interval">每一間隔的 ping 嘗試次數</string>
|
||||
@@ -240,13 +239,191 @@
|
||||
<string name="move_down">向下移動</string>
|
||||
<string name="trusted_ssid_value_description">提交 SSID</string>
|
||||
<string name="timeout_all_attempts">所有嘗試的總逾時值</string>
|
||||
<string name="ping_target_description">如果內部 IP 不可用才會使用 (例如: full-tunnel 組態)。留空預設為 Cloudflare。</string>
|
||||
<string name="ping_target_description">拆分組態預設使用內部隧道 IP,非拆分組態預設使用 Cloudflare。</string>
|
||||
<string name="drag_handle">拖曳操作</string>
|
||||
<string name="tunnel_mobile_data">行動數據上的隧道</string>
|
||||
<string name="tunnel_on_ethernet">乙太網路上的隧道</string>
|
||||
<string name="prominent_background_location_title">背景定位披露</string>
|
||||
<string name="tunnel_on_wifi">不受信任 Wi-Fi 上的隧道</string>
|
||||
<string name="tunnel_on_wifi">Wi-Fi 上的隧道</string>
|
||||
<string name="mobile_tunnel">行動數據隧道</string>
|
||||
<string name="skip">略過</string>
|
||||
<string name="ethernet_tunnel">乙太網路隧道</string>
|
||||
<string name="dual_stack">雙堆疊</string>
|
||||
<string name="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">儲存變更</string>
|
||||
<string name="dual_stack_description">隧道必須支援 IPv4 和 IPv6</string>
|
||||
<string name="password">密碼</string>
|
||||
<string name="remote_key">遠端金鑰</string>
|
||||
<string name="mobile_data">行動數據</string>
|
||||
<string name="vpn">VPN</string>
|
||||
<string name="tunnel_boot_description">開機時啟動預設隧道</string>
|
||||
<string name="prefer_ipv6_resolution">偏好 IPv6 端點解析</string>
|
||||
<string name="quick_actions">快速操作</string>
|
||||
<string name="google_donation_message">不幸的是,由於 Google 的政策,此應用程式的 Play Store 版本不被允許出現捐款連結。請至此專案的網站尋找捐款方式。</string>
|
||||
<string name="http_bind_address">HTTP 綁定位址</string>
|
||||
<string name="tunnel_mapping_description">Map tunnels as preferred by Wi-Fi name</string>
|
||||
<string name="tunnel_name_taken">隧道名稱已經被使用。</string>
|
||||
<string name="mimic_dns">模仿 DNS</string>
|
||||
<string name="unknown_attribute">未知屬性</string>
|
||||
<string name="donation_prompt_prefix">感謝使用 WG Tunnel!如果您可以,請考慮</string>
|
||||
<string name="hint_template">(%1$s)</string>
|
||||
<string name="socks_5_bind_address">SOCKS5 綁定位址</string>
|
||||
<string name="root_required_template">%1$s (需要 root)</string>
|
||||
<string name="website">官方網站</string>
|
||||
<string name="mimic_quic">模仿 QUIC</string>
|
||||
<string name="wifi_settings">Wi-Fi 設定</string>
|
||||
<string name="invalid_value">無效值</string>
|
||||
<string name="info">資訊</string>
|
||||
<string name="pinger_bounce_successful">Tunnel restarted successfully by pinger.</string>
|
||||
<string name="unknown_section">未知部份</string>
|
||||
<string name="unknown">未知</string>
|
||||
<string name="tunnel_error_template">Tunnel failed with: %1$s</string>
|
||||
<string name="syntax_error">句法錯誤</string>
|
||||
<string name="all_services_disabled">執行此操作必須停用自動隧道管理及所有隧道。</string>
|
||||
<string name="pinger_bounce_recovery">Pinger restart failed. Tunnel recovered with old addresses.</string>
|
||||
<string name="defaults_to_template">(預設為 %1$s)</string>
|
||||
<string name="ddns_auto_update_description">DDNS 變更時自動更新 IP</string>
|
||||
<string name="no_network">沒有連上網路</string>
|
||||
<string name="wifi">Wi-Fi</string>
|
||||
<string name="ping_target">Ping 目標</string>
|
||||
<string name="dns_provider">DNS 提供者</string>
|
||||
<string name="recommended_template">%1$s (推薦)</string>
|
||||
<string name="missing_section">缺少部份</string>
|
||||
<string name="config_error_template">錯誤組態。%2$s 的 %1$s。</string>
|
||||
<string name="locked_down">鎖定</string>
|
||||
<string name="username">使用者名稱</string>
|
||||
<string name="password_no_spaces">密碼不能含有空格。</string>
|
||||
<string name="resources">資源</string>
|
||||
<string name="invalid_number">無效數字</string>
|
||||
<string name="back">返回</string>
|
||||
<string name="liberapay">Liberapay</string>
|
||||
<string name="donate_title">捐款</string>
|
||||
<string name="active_tunnel_update_failed">使用中的隧道更新失敗</string>
|
||||
<string name="mode_disabled_template">此功能在 %1$s 模式下不可用。</string>
|
||||
<string name="already_donated">已捐款</string>
|
||||
<string name="kofi">Ko-fi</string>
|
||||
<string name="donation_signoff">感激地,</string>
|
||||
<string name="selected">已選擇的</string>
|
||||
<string name="global_split_tunneling">全域隧道拆分</string>
|
||||
<string name="active_network">正在使用的網路:</string>
|
||||
<string name="range_hint">(%1$d–%2$d)</string>
|
||||
<string name="delete_active_message">無法刪除正在使用的隧道。</string>
|
||||
<string name="native_kill_switch">Native kill switch</string>
|
||||
<string name="help_translate">協助翻譯此應用程式</string>
|
||||
<string name="ethernet">乙太網路</string>
|
||||
<string name="socks_5_proxy">SOCKS5 代理</string>
|
||||
<string name="other">其他</string>
|
||||
<string name="new_tunnel">新隧道</string>
|
||||
<string name="kill_switch">kill switch</string>
|
||||
<string name="configuration">組態</string>
|
||||
<string name="global_dns_servers">全域 DNS 伺服器</string>
|
||||
<string name="contact">聯絡</string>
|
||||
<string name="ports_must_differ">失敗。代理必須具有不同連接埠。</string>
|
||||
<string name="backup_and_restore">備份和還原</string>
|
||||
<string name="proxy_settings">代理設定</string>
|
||||
<string name="show_password">顯示密碼</string>
|
||||
<string name="proxy_credentials">代理身份驗證資訊</string>
|
||||
<string name="ping">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 code。</string>
|
||||
<string name="options">選項</string>
|
||||
<string name="bypass_lan_for_kill_switch">Bypass LAN for kill switch</string>
|
||||
<string name="security_type">安全性:</string>
|
||||
<string name="bounce_failed_template">Pinger failed to recovery tunnel with error: %1$s</string>
|
||||
<string name="ddns_success_message">動態 DNS 終端點已更新成功。</string>
|
||||
<string name="http_proxy">HTTP 代理</string>
|
||||
<string name="translation">翻譯</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">可靠性</string>
|
||||
<string name="monitoring">監測</string>
|
||||
<string name="app_permission_title">WG Tunnel Control Bridge</string>
|
||||
<string name="aovpn_description">允許 Android 系統啟動隧道</string>
|
||||
<string name="dropdown">下拉</string>
|
||||
<string name="set_ping_target">設定 ping 目標</string>
|
||||
<string name="donation_thanks_intro">感謝您考慮向本專案捐款!</string>
|
||||
<string name="comma_separated">以逗號分隔</string>
|
||||
<string name="general">一般</string>
|
||||
<string name="donation_dev_message">作為唯一的開發者,我不知疲倦地使 WG Tunnel 成為 Android 最好的自由開源 WireGuard 用戶端,但沒有您的支援這無法實現。</string>
|
||||
<string name="review">評分此應用程式</string>
|
||||
<string name="disabled">已停用</string>
|
||||
<string name="ddns_auto_update">動態 DNS 自動更新</string>
|
||||
<string name="backend_mode">運作模式</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="_continue">繼續</string>
|
||||
<string name="mimic_sip">模仿 SIP</string>
|
||||
<string name="expiremental_template">%1$s (實驗性)</string>
|
||||
<string name="unavailable_in_mode">當前模式下不可用</string>
|
||||
<string name="server_port">伺服器:連接埠</string>
|
||||
<string name="debounce_description">快速網路變化間的延遲</string>
|
||||
<string name="dns_protocol">DNS 協定</string>
|
||||
<string name="enabled_app_shortcuts">啟用應用程式捷徑</string>
|
||||
<string name="preferred_tunnel">首選隧道</string>
|
||||
<string name="tunnel_running_name_message">隧道正在使用時無法變更名稱。</string>
|
||||
<string name="donation_closing">為您全職開發本專案是我的夢想。</string>
|
||||
<string name="network_name">網路:</string>
|
||||
<string name="mapped">Mapped</string>
|
||||
<string name="tunnel_mapping">Tunnel mapping</string>
|
||||
<string name="android_integrations">Android 整合</string>
|
||||
<string name="preferred_tunnel_label">首選隧道:</string>
|
||||
<string name="dns_settings">DNS 設定</string>
|
||||
<string name="ping_monitor">Ping 監測</string>
|
||||
<string name="read_failed">讀取資料失敗。</string>
|
||||
<string name="crypto">加密貨幣地址</string>
|
||||
<string name="system">系統</string>
|
||||
<string name="restart_message_template">儲存變更會導致 %1$s 重新啟動,您希望要繼續嗎?</string>
|
||||
<string name="already_donated_description">停用未來的捐款提示</string>
|
||||
<string name="metered_tunnel">Metered tunnel</string>
|
||||
<string name="lockdown_settings">鎖定設定</string>
|
||||
<string name="networks">網路</string>
|
||||
<string name="lockdown">鎖定</string>
|
||||
<string name="proxy">代理</string>
|
||||
<string name="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>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user