mirror of
https://github.com/wgtunnel/android.git
synced 2026-07-03 14:07:49 +02:00
Compare commits
135 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d43a219dce | |||
| 7e98691181 | |||
| b9becd433c | |||
| 2120810f5f | |||
| d8c2c24023 | |||
| 043865dcdc | |||
| 94d0227c42 | |||
| c56d314f32 | |||
| 795d18a44a | |||
| 1b987a8c80 | |||
| 4c647bd5c7 | |||
| 511b96dbc7 | |||
| acba25cbb2 | |||
| 87bb514da5 | |||
| d169385b5c | |||
| bcb010e3fd | |||
| 66101ed515 | |||
| 9e81a4d283 | |||
| d9ff97f83e | |||
| cf975a71d8 | |||
| ca555805b3 | |||
| 9c10e7c7b2 | |||
| f3fb4ab77c | |||
| 7a648fd930 | |||
| 2266cfc771 | |||
| 7166752d50 | |||
| f75e91fdc0 | |||
| 2b7d2d3da6 | |||
| 277068f6fb | |||
| 097b86db9b | |||
| a8ec89f59e | |||
| db993759e4 | |||
| 00a9f5ba8f | |||
| b3284339c1 | |||
| d67d524e7b | |||
| 6f1a1bdc48 | |||
| e5790f1fa0 | |||
| 525a12b2f2 | |||
| f083441370 | |||
| 2945fcbf75 | |||
| d379bf8960 | |||
| 4421d31f69 | |||
| 294081cec4 | |||
| 47617012c2 | |||
| 8cad5c6a14 | |||
| 8ac54c7a97 | |||
| 642f98fdaf | |||
| 91cb569585 | |||
| 4368bfdc62 | |||
| 9ac510eeff | |||
| ce08a5c308 | |||
| 5db281ba3e | |||
| 48917ad0b8 | |||
| d5c3983a5e | |||
| e0a75d8dad | |||
| eaf52b1476 | |||
| b1b906d863 | |||
| 351f8ba573 | |||
| 38168814b4 | |||
| 4214aeea37 | |||
| 85a0ca695a | |||
| 0a281bb257 | |||
| d71f307052 | |||
| de8f85ae9e | |||
| 402e258fcf | |||
| 271f1e5df3 | |||
| 0842364f74 | |||
| 427baab115 | |||
| ef636fdafa | |||
| e5e4bca5fa | |||
| cb3eeee9f8 | |||
| 47a84985f5 | |||
| 57a86709ec | |||
| d37c1cc139 | |||
| fcdcc07668 | |||
| 9bfda12147 | |||
| 84366f9642 | |||
| a213dba276 | |||
| 831723dfc2 | |||
| 0ddfb278df | |||
| c475b5c702 | |||
| 4b669ce8ec | |||
| 00f63ff914 | |||
| 2341d7a229 | |||
| 02bb01de76 | |||
| a0e42fd77e | |||
| 356fba697c | |||
| 1fad725e87 | |||
| 4ade7b2e64 | |||
| 8f60cf90ea | |||
| 3bb16c307f | |||
| 0d4c5a2731 | |||
| 3a968cf23c | |||
| d18798ab56 | |||
| fe32e32783 | |||
| d7b01f8b36 | |||
| 9702210303 | |||
| 403425dab7 | |||
| f5e71157f4 | |||
| 999a269fcb | |||
| eaf6421e82 | |||
| 219c036e8b | |||
| bd3268dcbc | |||
| c22deeee96 | |||
| 0966b724d6 | |||
| f9b73591e4 | |||
| 60dc43ebd5 | |||
| 69b7fd98de | |||
| 3b7c0880fc | |||
| ac69ff85d4 | |||
| 031bdba9dd | |||
| 51b3330154 | |||
| 71e66380b4 | |||
| aaad893d95 | |||
| dd40b166bc | |||
| 3e0cdb0b11 | |||
| 6a8fbdda5c | |||
| c6e023e217 | |||
| 154355c071 | |||
| 4eaa9fb481 | |||
| 255f1b3c23 | |||
| eaa32eb8cb | |||
| 0a2b57782f | |||
| 32d7305297 | |||
| 38d1ee76ce | |||
| c08f92f798 | |||
| d35adeb2dd | |||
| 97935d6ff9 | |||
| fb0bb144f9 | |||
| d264eee841 | |||
| 6cef71bf37 | |||
| 1a26f6f68c | |||
| 0795a20e9c | |||
| 076bd7f6df | |||
| 2f2864dade |
@@ -187,61 +187,57 @@ jobs:
|
||||
repository: wgtunnel/fdroid
|
||||
event-type: fdroid-update
|
||||
|
||||
build-google-aab:
|
||||
if: >-
|
||||
${{
|
||||
github.event_name == 'push' ||
|
||||
inputs.track != 'none'
|
||||
}}
|
||||
uses: ./.github/workflows/build-aab.yml
|
||||
secrets: inherit
|
||||
with:
|
||||
build_type: release
|
||||
flavor: google
|
||||
|
||||
publish-play:
|
||||
if: ${{ github.event_name == 'push' || inputs.track != 'none' }}
|
||||
name: Publish to Google Play
|
||||
runs-on: ubuntu-latest
|
||||
needs: build-google-aab
|
||||
|
||||
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/
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
ref: ${{ github.event_name == 'push' && github.ref || 'master' }}
|
||||
distribution: 'temurin'
|
||||
java-version: '17'
|
||||
cache: gradle
|
||||
|
||||
- name: Download AAB artifact
|
||||
uses: actions/download-artifact@v8
|
||||
- name: Grant execute permission for gradlew
|
||||
run: chmod +x gradlew
|
||||
|
||||
# Here we need to decode keystore.jks from base64 string and place it
|
||||
# in the folder specified in the release signing configuration
|
||||
- name: Decode Keystore
|
||||
id: decode_keystore
|
||||
uses: timheuer/base64-to-file@v2.0
|
||||
with:
|
||||
name: google-play-aab
|
||||
path: ${{ github.workspace }}/aab
|
||||
fileName: ${{ env.KEY_STORE_FILE }}
|
||||
fileDir: ${{ env.KEY_STORE_LOCATION }}
|
||||
encodedString: ${{ secrets.KEYSTORE }}
|
||||
|
||||
- name: Find exact AAB file path
|
||||
id: find-aab
|
||||
# create keystore path for gradle to read
|
||||
- name: Create keystore path env var
|
||||
run: |
|
||||
AAB_PATH=$(find "${{ github.workspace }}/aab" -name "*.aab" -type f | head -1)
|
||||
if [ -z "$AAB_PATH" ]; then
|
||||
echo "ERROR: No .aab file found after download!"
|
||||
find "${{ github.workspace }}/aab" -type f
|
||||
exit 1
|
||||
fi
|
||||
echo "Found AAB: $AAB_PATH"
|
||||
echo "aab_path=$AAB_PATH" >> $GITHUB_OUTPUT
|
||||
store_path=${{ env.KEY_STORE_LOCATION }}${{ env.KEY_STORE_FILE }}
|
||||
echo "KEY_STORE_PATH=$store_path" >> $GITHUB_ENV
|
||||
|
||||
- name: Create service_account.json
|
||||
id: createServiceAccount
|
||||
run: echo '${{ secrets.SERVICE_ACCOUNT_JSON }}' > service_account.json
|
||||
|
||||
- name: Set up Ruby
|
||||
- name: Deploy with fastlane
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: '3.4'
|
||||
ruby-version: '3.2' # Not needed with a .ruby-version file
|
||||
bundler-cache: true
|
||||
|
||||
- name: Upload to Google Play
|
||||
- name: Distribute app to Prod track 🚀
|
||||
run: |
|
||||
track=${{ github.event_name == 'push' && 'production' || inputs.track }}
|
||||
bundle exec fastlane run upload_to_play_store \
|
||||
track:"$track" \
|
||||
aab:"${{ steps.find-aab.outputs.aab_path }}" \
|
||||
json_key:"service_account.json" \
|
||||
package_name:"com.zaneschepke.wireguardautotunnel" \
|
||||
skip_upload_apk:true
|
||||
(cd ${{ github.workspace }} && bundle install && bundle exec fastlane $track --verbose)
|
||||
@@ -1,4 +1,3 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "fastlane"
|
||||
gem "multi_json"
|
||||
gem "fastlane"
|
||||
+2
-10
@@ -9,13 +9,10 @@ import com.zaneschepke.wireguardautotunnel.core.notification.TunnelNotificationL
|
||||
import com.zaneschepke.wireguardautotunnel.core.notification.TunnelNotificationService
|
||||
import com.zaneschepke.wireguardautotunnel.domain.repository.TunnelRepository
|
||||
import com.zaneschepke.wireguardautotunnel.ui.state.DisplayTunnelState
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.FlowPreview
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.combine
|
||||
import kotlinx.coroutines.flow.debounce
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.map
|
||||
@@ -27,7 +24,6 @@ class TunnelEventDispatcher(
|
||||
private val context: Context,
|
||||
) {
|
||||
|
||||
@OptIn(FlowPreview::class)
|
||||
fun bind(
|
||||
scope: CoroutineScope,
|
||||
providerEvents: Flow<TunnelEvent>,
|
||||
@@ -106,8 +102,7 @@ class TunnelEventDispatcher(
|
||||
val tunnel = allTunnels.find { it.id == id } ?: return@mapNotNull null
|
||||
|
||||
val displayState =
|
||||
displayStates[id]
|
||||
?: DisplayTunnelState.from(activeTunnel, System.currentTimeMillis())
|
||||
displayStates[id] ?: DisplayTunnelState.from(activeTunnel)
|
||||
|
||||
TunnelNotificationLine(
|
||||
id = id,
|
||||
@@ -118,7 +113,6 @@ class TunnelEventDispatcher(
|
||||
.associateBy { it.id }
|
||||
}
|
||||
.distinctUntilChanged()
|
||||
.debounce(500.milliseconds) // give the service notification time to display
|
||||
.onEach { vpnLines -> notificationManager.updateVpnPersistentNotification(vpnLines) }
|
||||
.launchIn(scope)
|
||||
|
||||
@@ -135,8 +129,7 @@ class TunnelEventDispatcher(
|
||||
|
||||
val tunnel = allTunnels.find { it.id == id } ?: return@mapNotNull null
|
||||
val displayState =
|
||||
displayStates[id]
|
||||
?: DisplayTunnelState.from(activeTunnel, System.currentTimeMillis())
|
||||
displayStates[id] ?: DisplayTunnelState.from(activeTunnel)
|
||||
|
||||
TunnelNotificationLine(
|
||||
id = id,
|
||||
@@ -147,7 +140,6 @@ class TunnelEventDispatcher(
|
||||
.associateBy { it.id }
|
||||
}
|
||||
.distinctUntilChanged()
|
||||
.debounce(500.milliseconds) // give the service notification time to display
|
||||
.onEach { proxyLines ->
|
||||
notificationManager.updateProxyPersistentNotification(proxyLines)
|
||||
}
|
||||
|
||||
+4
-17
@@ -47,15 +47,12 @@ class TunnelCoordinator(
|
||||
scope: CoroutineScope,
|
||||
) {
|
||||
|
||||
private val _userOverrideFlow = MutableSharedFlow<Unit>(extraBufferCapacity = 1)
|
||||
val userOverrideFlow = _userOverrideFlow.asSharedFlow()
|
||||
|
||||
@OptIn(FlowPreview::class)
|
||||
val tunnelDisplayStates: StateFlow<Map<Int, DisplayTunnelState>> =
|
||||
tunnelProvider.backendStatus
|
||||
.map { status ->
|
||||
status.activeTunnels.mapValues { (_, activeTunnel) ->
|
||||
DisplayTunnelState.from(activeTunnel, System.currentTimeMillis())
|
||||
DisplayTunnelState.from(activeTunnel)
|
||||
}
|
||||
}
|
||||
.debounce(400L.milliseconds)
|
||||
@@ -110,24 +107,11 @@ class TunnelCoordinator(
|
||||
) = tunnelMutex.withLock {
|
||||
// wait for app to be bootstrapped
|
||||
bootstrapCoordinator.isReady.first { it }
|
||||
|
||||
if (source == TunnelActionSource.USER) {
|
||||
_userOverrideFlow.tryEmit(Unit)
|
||||
}
|
||||
|
||||
// enforce single tunnel, for now
|
||||
if (backendStatus.value.activeTunnels.isNotEmpty()) {
|
||||
stopActiveTunnelsInternal()
|
||||
}
|
||||
|
||||
startTunnelInternal(config, source)
|
||||
}
|
||||
|
||||
suspend fun stopTunnel(id: Int, source: TunnelActionSource = TunnelActionSource.USER) =
|
||||
tunnelMutex.withLock {
|
||||
if (source == TunnelActionSource.USER) {
|
||||
_userOverrideFlow.tryEmit(Unit)
|
||||
}
|
||||
stopTunnelInternal(id, source)
|
||||
}
|
||||
|
||||
@@ -183,6 +167,9 @@ class TunnelCoordinator(
|
||||
}
|
||||
}
|
||||
|
||||
// TODO for now, enforce single tunnel until multi-tunneling is implement
|
||||
stopActiveTunnelsInternal()
|
||||
|
||||
tunnelProvider
|
||||
.startTunnel(
|
||||
tunnel =
|
||||
|
||||
+5
-12
@@ -17,7 +17,6 @@ class AutoTunnelEngine {
|
||||
}
|
||||
}
|
||||
Decision.None -> AutoTunnelEvent.DoNothing
|
||||
is Decision.StopDueToNoInternet -> AutoTunnelEvent.StopAllDueToNoInternet
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,17 +27,13 @@ class AutoTunnelEngine {
|
||||
|
||||
val activeTunnelIds = backend.activeTunnels.keys.toSet()
|
||||
|
||||
if (!network.hasInternet()) {
|
||||
return if (settings.isStopOnNoInternetEnabled) {
|
||||
Decision.StopDueToNoInternet
|
||||
} else {
|
||||
// keep tunnel state neutral on no internet otherwise
|
||||
Decision.None
|
||||
}
|
||||
}
|
||||
|
||||
val desiredTunnels = resolveDesiredTunnels(state).map { it.id }.toSet()
|
||||
|
||||
// stop condition overrides everything
|
||||
if (!network.hasInternet() && settings.isStopOnNoInternetEnabled) {
|
||||
return Decision.Sync(start = emptySet(), stop = activeTunnelIds)
|
||||
}
|
||||
|
||||
val toStart = desiredTunnels - activeTunnelIds
|
||||
val toStop = activeTunnelIds - desiredTunnels
|
||||
|
||||
@@ -101,7 +96,5 @@ class AutoTunnelEngine {
|
||||
data class Sync(val start: Set<TunnelConfig>, val stop: Set<Int>) : Decision
|
||||
|
||||
data object None : Decision
|
||||
|
||||
data object StopDueToNoInternet : Decision
|
||||
}
|
||||
}
|
||||
|
||||
+69
-79
@@ -16,6 +16,7 @@ import com.zaneschepke.wireguardautotunnel.domain.enums.NotificationAction
|
||||
import com.zaneschepke.wireguardautotunnel.domain.enums.TunnelActionSource
|
||||
import com.zaneschepke.wireguardautotunnel.domain.enums.TunnelMode
|
||||
import com.zaneschepke.wireguardautotunnel.domain.events.AutoTunnelEvent
|
||||
import com.zaneschepke.wireguardautotunnel.domain.events.TunnelActionEvent
|
||||
import com.zaneschepke.wireguardautotunnel.domain.model.AutoTunnelSettings
|
||||
import com.zaneschepke.wireguardautotunnel.domain.model.TunnelConfig
|
||||
import com.zaneschepke.wireguardautotunnel.domain.repository.AutoTunnelSettingsRepository
|
||||
@@ -25,16 +26,13 @@ import com.zaneschepke.wireguardautotunnel.domain.state.AutoTunnelState
|
||||
import com.zaneschepke.wireguardautotunnel.domain.state.toDomain
|
||||
import com.zaneschepke.wireguardautotunnel.util.Constants
|
||||
import com.zaneschepke.wireguardautotunnel.util.extensions.to
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
import kotlinx.coroutines.CoroutineDispatcher
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.flow.combine
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.distinctUntilChangedBy
|
||||
import kotlinx.coroutines.flow.firstOrNull
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.mapNotNull
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -65,7 +63,8 @@ class AutoTunnelService : LifecycleService() {
|
||||
private var autoTunnelJob: Job? = null
|
||||
private var permissionsJob: Job? = null
|
||||
private var overridesJob: Job? = null
|
||||
private var noInternetStopJob: Job? = null
|
||||
|
||||
@Volatile private var manualOverrideState = ManualOverrideState()
|
||||
|
||||
private data class PermissionWarningState(
|
||||
val detectionMethod: AndroidNetworkMonitor.WifiDetectionMethod,
|
||||
@@ -74,8 +73,11 @@ class AutoTunnelService : LifecycleService() {
|
||||
val ssidReadRequired: Boolean,
|
||||
)
|
||||
|
||||
@Volatile private var hasUserOverride = false
|
||||
private var lastNetworkFingerprint: AutoTunnelState.NetworkFingerprint? = null
|
||||
private data class ManualOverrideState(
|
||||
val fingerprint: AutoTunnelState.NetworkFingerprint? = null,
|
||||
val stoppedTunnelIds: Set<Int> = emptySet(),
|
||||
val startedTunnelIds: Set<Int> = emptySet(),
|
||||
)
|
||||
|
||||
private val autoTunnelStateFlow: Flow<AutoTunnelState> by lazy {
|
||||
val networkFlow = networkEngine.stableState.mapNotNull { it?.state?.toDomain() }
|
||||
@@ -119,7 +121,7 @@ class AutoTunnelService : LifecycleService() {
|
||||
permissionsJob?.cancel()
|
||||
permissionsJob = startLocationPermissionsNotificationJob()
|
||||
overridesJob?.cancel()
|
||||
overridesJob = startUserOverrideJob()
|
||||
overridesJob = startOverridesJob()
|
||||
}
|
||||
|
||||
fun stop() {
|
||||
@@ -128,23 +130,48 @@ class AutoTunnelService : LifecycleService() {
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
cancelNoInternetStopJob()
|
||||
ServiceCompat.stopForeground(this, ServiceCompat.STOP_FOREGROUND_REMOVE)
|
||||
stateHolder.setActive(false)
|
||||
AutoTunnelTileRefresher.refresh(this)
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
private fun startUserOverrideJob(): Job =
|
||||
private fun startOverridesJob(): Job =
|
||||
lifecycleScope.launch(ioDispatcher) {
|
||||
tunnelCoordinator.userOverrideFlow.collect {
|
||||
tunnelCoordinator.actions.collect { action ->
|
||||
reconciliationMutex.withLock {
|
||||
if (!hasUserOverride) {
|
||||
Timber.d(
|
||||
"User manually overrode Auto Tunnel on current network. Pausing auto decisions."
|
||||
)
|
||||
}
|
||||
hasUserOverride = true
|
||||
manualOverrideState =
|
||||
when (action) {
|
||||
is TunnelActionEvent.Started -> {
|
||||
|
||||
if (action.source != TunnelActionSource.USER) {
|
||||
return@withLock
|
||||
}
|
||||
|
||||
manualOverrideState.copy(
|
||||
startedTunnelIds =
|
||||
manualOverrideState.startedTunnelIds + action.tunnelId,
|
||||
stoppedTunnelIds =
|
||||
manualOverrideState.stoppedTunnelIds - action.tunnelId,
|
||||
)
|
||||
}
|
||||
|
||||
is TunnelActionEvent.Stopped -> {
|
||||
|
||||
if (action.source != TunnelActionSource.USER) {
|
||||
return@withLock
|
||||
}
|
||||
|
||||
manualOverrideState.copy(
|
||||
stoppedTunnelIds =
|
||||
manualOverrideState.stoppedTunnelIds + action.tunnelId,
|
||||
startedTunnelIds =
|
||||
manualOverrideState.startedTunnelIds - action.tunnelId,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Timber.d("Updated manual overrides: $manualOverrideState")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -175,83 +202,50 @@ class AutoTunnelService : LifecycleService() {
|
||||
)
|
||||
}
|
||||
|
||||
// Instead of stopping tunnel right away on no internet, we kick off this job to add short delay
|
||||
// and re-evaluation to prevent unwanted stops
|
||||
// on flaky networks and network transitions
|
||||
private fun scheduleNoInternetStop() {
|
||||
noInternetStopJob?.cancel()
|
||||
|
||||
noInternetStopJob =
|
||||
lifecycleScope.launch(ioDispatcher) {
|
||||
delay(NO_INTERNET_GRACE_PERIOD_MS.milliseconds)
|
||||
|
||||
reconciliationMutex.withLock {
|
||||
val currentNetworkState = networkEngine.stableState.value?.state?.toDomain()
|
||||
|
||||
val stillNoInternet = currentNetworkState?.hasInternet() == false
|
||||
val stopOnNoInternetEnabled =
|
||||
autoTunnelRepository.flow.firstOrNull()?.isStopOnNoInternetEnabled == true
|
||||
|
||||
if (stillNoInternet && stopOnNoInternetEnabled) {
|
||||
val currentActiveIds =
|
||||
tunnelCoordinator.backendStatus.value.activeTunnels.keys
|
||||
|
||||
if (currentActiveIds.isNotEmpty()) {
|
||||
Timber.w(
|
||||
"No internet grace period expired and still no internet. Stopping tunnels: $currentActiveIds"
|
||||
)
|
||||
currentActiveIds.forEach { tunnelId ->
|
||||
tunnelCoordinator.stopTunnel(
|
||||
tunnelId,
|
||||
TunnelActionSource.AUTO_TUNNEL,
|
||||
)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Timber.d(
|
||||
"No internet grace period expired, but internet is back or setting disabled. Doing nothing."
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun cancelNoInternetStopJob() {
|
||||
noInternetStopJob?.cancel()
|
||||
noInternetStopJob = null
|
||||
}
|
||||
|
||||
private fun startAutoTunnelStateJob(): Job =
|
||||
lifecycleScope.launch(ioDispatcher) {
|
||||
autoTunnelStateFlow.collectLatest { state ->
|
||||
reconciliationMutex.withLock {
|
||||
updateFingerprintIfNeeded(state)
|
||||
|
||||
val rawEvent = engine.evaluate(state)
|
||||
|
||||
val event = applyOverrides(rawEvent)
|
||||
|
||||
Timber.d("AutoTunnel reconciliation event: $event")
|
||||
|
||||
handleAutoTunnelEvent(event)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateFingerprintIfNeeded(state: AutoTunnelState) {
|
||||
val currentFingerprint = state.networkFingerPrint
|
||||
val fingerprint = state.networkFingerPrint
|
||||
|
||||
if (lastNetworkFingerprint != currentFingerprint) {
|
||||
if (hasUserOverride) {
|
||||
Timber.d("Network fingerprint changed, clearing user override")
|
||||
}
|
||||
hasUserOverride = false
|
||||
lastNetworkFingerprint = currentFingerprint
|
||||
if (manualOverrideState.fingerprint != fingerprint) {
|
||||
Timber.d("Network changed, clearing overrides")
|
||||
|
||||
manualOverrideState = ManualOverrideState(fingerprint = fingerprint)
|
||||
}
|
||||
}
|
||||
|
||||
private fun applyOverrides(event: AutoTunnelEvent): AutoTunnelEvent {
|
||||
return if (hasUserOverride) {
|
||||
AutoTunnelEvent.DoNothing
|
||||
} else {
|
||||
event
|
||||
|
||||
if (event !is AutoTunnelEvent.Sync) {
|
||||
return event
|
||||
}
|
||||
|
||||
val filteredStart =
|
||||
event.start.filterNot { it.id in manualOverrideState.stoppedTunnelIds }.toSet()
|
||||
|
||||
val filteredStop =
|
||||
event.stop.filterNot { it in manualOverrideState.startedTunnelIds }.toSet()
|
||||
|
||||
if (filteredStart.isEmpty() && filteredStop.isEmpty()) {
|
||||
return AutoTunnelEvent.DoNothing
|
||||
}
|
||||
|
||||
return event.copy(start = filteredStart, stop = filteredStop)
|
||||
}
|
||||
|
||||
private fun combineSettings():
|
||||
@@ -340,7 +334,7 @@ class AutoTunnelService : LifecycleService() {
|
||||
private suspend fun handleAutoTunnelEvent(event: AutoTunnelEvent) {
|
||||
when (event) {
|
||||
is AutoTunnelEvent.Sync -> {
|
||||
cancelNoInternetStopJob()
|
||||
|
||||
event.stop.forEach { tunnelId ->
|
||||
Timber.d("Stopping tunnel: $tunnelId")
|
||||
tunnelCoordinator.stopTunnel(tunnelId, TunnelActionSource.AUTO_TUNNEL)
|
||||
@@ -351,12 +345,8 @@ class AutoTunnelService : LifecycleService() {
|
||||
tunnelCoordinator.startTunnel(config, TunnelActionSource.AUTO_TUNNEL)
|
||||
}
|
||||
}
|
||||
AutoTunnelEvent.StopAllDueToNoInternet -> scheduleNoInternetStop()
|
||||
|
||||
AutoTunnelEvent.DoNothing -> Unit
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val NO_INTERNET_GRACE_PERIOD_MS = 10_000L
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,4 @@ sealed interface AutoTunnelEvent {
|
||||
data class Sync(val start: Set<TunnelConfig>, val stop: Set<Int>) : AutoTunnelEvent
|
||||
|
||||
data object DoNothing : AutoTunnelEvent
|
||||
|
||||
data object StopAllDueToNoInternet : AutoTunnelEvent
|
||||
}
|
||||
|
||||
+2
-7
@@ -4,12 +4,7 @@ import com.zaneschepke.wireguardautotunnel.domain.enums.TunnelActionSource
|
||||
|
||||
sealed interface TunnelActionEvent {
|
||||
|
||||
val source: TunnelActionSource
|
||||
val tunnelId: Int
|
||||
data class Started(val tunnelId: Int, val source: TunnelActionSource) : TunnelActionEvent
|
||||
|
||||
data class Started(override val tunnelId: Int, override val source: TunnelActionSource) :
|
||||
TunnelActionEvent
|
||||
|
||||
data class Stopped(override val tunnelId: Int, override val source: TunnelActionSource) :
|
||||
TunnelActionEvent
|
||||
data class Stopped(val tunnelId: Int, val source: TunnelActionSource) : TunnelActionEvent
|
||||
}
|
||||
|
||||
+33
-49
@@ -1,18 +1,13 @@
|
||||
package com.zaneschepke.wireguardautotunnel.ui.common.textbox
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.defaultMinSize
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.offset
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.text.KeyboardActions
|
||||
import androidx.compose.foundation.text.KeyboardOptions
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.text.input.ImeAction
|
||||
import androidx.compose.ui.text.input.KeyboardCapitalization
|
||||
@@ -34,59 +29,48 @@ fun ConfigurationTextBox(
|
||||
leading: (@Composable () -> Unit)? = null,
|
||||
trailing: (@Composable (Modifier) -> Unit)? = null,
|
||||
supportingText: (@Composable () -> Unit)? = null,
|
||||
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
|
||||
interactionSource: MutableInteractionSource = MutableInteractionSource(),
|
||||
visualTransformation: VisualTransformation = VisualTransformation.None,
|
||||
enabled: Boolean = true,
|
||||
readOnly: Boolean = false,
|
||||
singleLine: Boolean = true,
|
||||
) {
|
||||
Box(modifier = modifier.padding(top = 6.dp)) {
|
||||
CustomTextField(
|
||||
isError = isError,
|
||||
textStyle =
|
||||
MaterialTheme.typography.bodySmall.copy(
|
||||
color = MaterialTheme.colorScheme.onSurface
|
||||
),
|
||||
modifier = Modifier.fillMaxWidth().defaultMinSize(minHeight = 48.dp),
|
||||
value = value,
|
||||
visualTransformation = visualTransformation,
|
||||
singleLine = singleLine,
|
||||
interactionSource = interactionSource,
|
||||
onValueChange = onValueChange,
|
||||
label = null, // Disable built in label
|
||||
containerColor = MaterialTheme.colorScheme.surface,
|
||||
placeholder = {
|
||||
Text(
|
||||
text = hint,
|
||||
style = MaterialTheme.typography.bodySmall,
|
||||
color = MaterialTheme.colorScheme.outline,
|
||||
overflow = TextOverflow.Ellipsis,
|
||||
maxLines = 1,
|
||||
)
|
||||
},
|
||||
keyboardOptions = keyboardOptions,
|
||||
keyboardActions = keyboardActions,
|
||||
trailing = trailing,
|
||||
supportingText = supportingText,
|
||||
leading = leading,
|
||||
readOnly = readOnly,
|
||||
enabled = enabled,
|
||||
)
|
||||
|
||||
// custom static label notch
|
||||
if (label.isNotEmpty()) {
|
||||
CustomTextField(
|
||||
isError = isError,
|
||||
textStyle =
|
||||
MaterialTheme.typography.bodySmall.copy(color = MaterialTheme.colorScheme.onSurface),
|
||||
modifier = modifier.fillMaxWidth().defaultMinSize(minHeight = 48.dp),
|
||||
value = value,
|
||||
visualTransformation = visualTransformation,
|
||||
singleLine = singleLine,
|
||||
interactionSource = interactionSource,
|
||||
onValueChange = { onValueChange(it) },
|
||||
label = {
|
||||
Text(
|
||||
text = label,
|
||||
label,
|
||||
color = MaterialTheme.colorScheme.onSurface,
|
||||
style = MaterialTheme.typography.labelSmall,
|
||||
style = MaterialTheme.typography.labelMedium,
|
||||
overflow = TextOverflow.Ellipsis,
|
||||
maxLines = 1,
|
||||
modifier =
|
||||
Modifier.padding(start = 12.dp)
|
||||
.offset(y = (-8).dp)
|
||||
.background(MaterialTheme.colorScheme.surface)
|
||||
.padding(horizontal = 4.dp),
|
||||
)
|
||||
}
|
||||
}
|
||||
},
|
||||
containerColor = MaterialTheme.colorScheme.surface,
|
||||
placeholder = {
|
||||
Text(
|
||||
hint,
|
||||
style = MaterialTheme.typography.bodySmall,
|
||||
color = MaterialTheme.colorScheme.outline,
|
||||
overflow = TextOverflow.Ellipsis,
|
||||
maxLines = 1,
|
||||
)
|
||||
},
|
||||
keyboardOptions = keyboardOptions,
|
||||
keyboardActions = keyboardActions,
|
||||
trailing = trailing,
|
||||
supportingText = supportingText,
|
||||
leading = leading,
|
||||
readOnly = readOnly,
|
||||
enabled = enabled,
|
||||
)
|
||||
}
|
||||
|
||||
+15
-24
@@ -22,9 +22,7 @@ import androidx.compose.ui.focus.focusRequester
|
||||
import androidx.compose.ui.focus.onFocusChanged
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.SolidColor
|
||||
import androidx.compose.ui.text.TextRange
|
||||
import androidx.compose.ui.text.TextStyle
|
||||
import androidx.compose.ui.text.input.TextFieldValue
|
||||
import androidx.compose.ui.text.input.VisualTransformation
|
||||
import androidx.compose.ui.unit.dp
|
||||
|
||||
@@ -35,7 +33,7 @@ fun CustomTextField(
|
||||
modifier: Modifier = Modifier,
|
||||
textStyle: TextStyle =
|
||||
MaterialTheme.typography.bodyLarge.copy(color = MaterialTheme.colorScheme.onSurface),
|
||||
label: @Composable (() -> Unit)? = null,
|
||||
label: @Composable () -> Unit,
|
||||
containerColor: Color,
|
||||
onValueChange: (value: String) -> Unit = {},
|
||||
singleLine: Boolean = true,
|
||||
@@ -49,19 +47,10 @@ fun CustomTextField(
|
||||
readOnly: Boolean = false,
|
||||
enabled: Boolean = true,
|
||||
visualTransformation: VisualTransformation = VisualTransformation.None,
|
||||
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
|
||||
interactionSource: MutableInteractionSource = MutableInteractionSource(),
|
||||
) {
|
||||
val space = " "
|
||||
var isFocused by remember { mutableStateOf(false) }
|
||||
var textFieldValueState by remember { mutableStateOf(TextFieldValue(text = value)) }
|
||||
val textFieldValue =
|
||||
remember(value, textFieldValueState) {
|
||||
if (textFieldValueState.text == value) {
|
||||
textFieldValueState
|
||||
} else {
|
||||
textFieldValueState.copy(text = value, selection = TextRange(value.length))
|
||||
}
|
||||
}
|
||||
|
||||
val cursorBrush =
|
||||
if (isFocused) SolidColor(MaterialTheme.colorScheme.primary)
|
||||
else SolidColor(Color.Transparent)
|
||||
@@ -78,14 +67,9 @@ fun CustomTextField(
|
||||
}
|
||||
|
||||
BasicTextField(
|
||||
value = textFieldValue,
|
||||
value = value,
|
||||
textStyle = effectiveTextStyle,
|
||||
onValueChange = { newTextFieldValue ->
|
||||
textFieldValueState = newTextFieldValue
|
||||
if (value != newTextFieldValue.text) {
|
||||
onValueChange(newTextFieldValue.text)
|
||||
}
|
||||
},
|
||||
onValueChange = { onValueChange(it) },
|
||||
keyboardActions = keyboardActions,
|
||||
keyboardOptions = keyboardOptions,
|
||||
readOnly = readOnly,
|
||||
@@ -106,9 +90,15 @@ fun CustomTextField(
|
||||
visualTransformation = visualTransformation,
|
||||
) {
|
||||
OutlinedTextFieldDefaults.DecorationBox(
|
||||
value = value,
|
||||
innerTextField = it,
|
||||
placeholder = placeholder,
|
||||
value = space + value,
|
||||
innerTextField = {
|
||||
if (value.isEmpty()) {
|
||||
if (placeholder != null) {
|
||||
placeholder()
|
||||
}
|
||||
}
|
||||
it.invoke()
|
||||
},
|
||||
contentPadding = OutlinedTextFieldDefaults.contentPadding(top = 14.dp, bottom = 14.dp),
|
||||
leadingIcon = leading,
|
||||
trailingIcon =
|
||||
@@ -151,6 +141,7 @@ fun CustomTextField(
|
||||
label = label,
|
||||
visualTransformation = visualTransformation,
|
||||
interactionSource = interactionSource,
|
||||
placeholder = placeholder,
|
||||
container = {
|
||||
OutlinedTextFieldDefaults.Container(
|
||||
enabled = enabled,
|
||||
|
||||
@@ -42,10 +42,7 @@ sealed class Route : NavKey {
|
||||
|
||||
@Keep @Serializable data object Display : Route()
|
||||
|
||||
@Keep @Serializable data object Tunnels : Route(), SecureRoute {
|
||||
override val requiresProtection: Boolean
|
||||
get() = true
|
||||
}
|
||||
@Keep @Serializable data object Tunnels : Route()
|
||||
|
||||
@Keep @Serializable data class TunnelSettings(val id: Int) : Route()
|
||||
|
||||
|
||||
+2
-2
@@ -250,7 +250,7 @@ fun currentRouteAsNavbarState(
|
||||
val global = route !is ConfigEdit
|
||||
val tunnelName =
|
||||
if (!global) globalState.tunnelNames[route.id]
|
||||
else context.getString(R.string.tunnel_configuration)
|
||||
else context.getString(R.string.configuration_globals)
|
||||
NavbarState(
|
||||
topLeading = { TvBackButton { navController.pop() } },
|
||||
showBottomItems = true,
|
||||
@@ -297,7 +297,7 @@ fun currentRouteAsNavbarState(
|
||||
is SplitTunnelGlobal -> {
|
||||
val tunnelName =
|
||||
if (route is SplitTunnel) globalState.tunnelNames[route.id]
|
||||
else context.getString(R.string.splt_tunneling)
|
||||
else context.getString(R.string.global_split_tunneling)
|
||||
NavbarState(
|
||||
topLeading = { TvBackButton { navController.pop() } },
|
||||
topTitle = tunnelName ?: "",
|
||||
|
||||
+2
-5
@@ -302,9 +302,7 @@ fun AutoTunnelScreen(
|
||||
SurfaceRow(
|
||||
leading = { Icon(Icons.Outlined.PublicOff, contentDescription = null) },
|
||||
title = stringResource(R.string.stop_on_no_internet),
|
||||
description = {
|
||||
DescriptionText(stringResource(R.string.stop_on_no_internet_desc))
|
||||
},
|
||||
description = { DescriptionText(stringResource(R.string.stop_on_internet_loss)) },
|
||||
trailing = {
|
||||
ThemedSwitch(
|
||||
checked = uiState.autoTunnelSettings.isStopOnNoInternetEnabled,
|
||||
@@ -320,7 +318,7 @@ fun AutoTunnelScreen(
|
||||
}
|
||||
Column {
|
||||
GroupLabel(
|
||||
stringResource(R.string.automation),
|
||||
stringResource(R.string.other),
|
||||
modifier = Modifier.padding(horizontal = 16.dp),
|
||||
)
|
||||
SurfaceRow(
|
||||
@@ -332,7 +330,6 @@ fun AutoTunnelScreen(
|
||||
onClick = { viewModel.setStartAtBoot(it) },
|
||||
)
|
||||
},
|
||||
description = { DescriptionText(stringResource(R.string.start_on_boot_desc)) },
|
||||
onClick = { viewModel.setStartAtBoot(!uiState.autoTunnelSettings.startOnBoot) },
|
||||
)
|
||||
}
|
||||
|
||||
-2
@@ -176,7 +176,6 @@ fun SettingsScreen(
|
||||
leading = { Icon(Icons.Outlined.Public, contentDescription = null) },
|
||||
title = stringResource(R.string.tunnel_globals),
|
||||
onClick = { navController.push(Route.TunnelGlobals) },
|
||||
description = { DescriptionText(stringResource(R.string.tunnel_globals_desc)) },
|
||||
)
|
||||
SurfaceRow(
|
||||
leading = { Icon(Icons.Outlined.Terminal, contentDescription = null) },
|
||||
@@ -233,7 +232,6 @@ fun SettingsScreen(
|
||||
modifier = modifier,
|
||||
)
|
||||
},
|
||||
description = { DescriptionText(stringResource(R.string.local_logging_desc)) },
|
||||
onClick = { navController.push(Route.Logs) },
|
||||
)
|
||||
SurfaceRow(
|
||||
|
||||
+2
-2
@@ -56,7 +56,7 @@ fun TunnelGlobalsScreen(
|
||||
)
|
||||
},
|
||||
enabled = sharedUiState.tunnelMode != TunnelMode.PROXY,
|
||||
title = stringResource(R.string.splt_tunneling),
|
||||
title = stringResource(R.string.global_split_tunneling),
|
||||
trailing = { modifier ->
|
||||
SwitchWithDivider(
|
||||
checked = uiState.settings.isGlobalSplitTunnelEnabled,
|
||||
@@ -82,7 +82,7 @@ fun TunnelGlobalsScreen(
|
||||
)
|
||||
SurfaceRow(
|
||||
leading = { Icon(Icons.Outlined.Description, contentDescription = null) },
|
||||
title = stringResource(R.string.tunnel_configuration),
|
||||
title = stringResource(R.string.configuration_globals),
|
||||
onClick = {
|
||||
uiState.globalTunnelConfig?.let {
|
||||
navController.push(Route.ConfigGlobal(id = it.id))
|
||||
|
||||
+4
-6
@@ -11,7 +11,7 @@ import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.outlined.Launch
|
||||
import androidx.compose.material.icons.filled.AppShortcut
|
||||
import androidx.compose.material.icons.filled.SettingsRemote
|
||||
import androidx.compose.material.icons.filled.SmartToy
|
||||
import androidx.compose.material.icons.outlined.AdminPanelSettings
|
||||
import androidx.compose.material.icons.outlined.ContentCopy
|
||||
import androidx.compose.material.icons.outlined.Key
|
||||
@@ -133,22 +133,20 @@ fun AndroidIntegrationsScreen(viewModel: SettingsViewModel = koinViewModel()) {
|
||||
onClick = { viewModel.setShortcutsEnabled(it) },
|
||||
)
|
||||
},
|
||||
title = stringResource(R.string.app_shortcuts),
|
||||
description = { DescriptionText(stringResource(R.string.app_shortcuts_desc)) },
|
||||
title = stringResource(R.string.enabled_app_shortcuts),
|
||||
onClick = {
|
||||
viewModel.setShortcutsEnabled(!settingsState.settings.isShortcutsEnabled)
|
||||
},
|
||||
)
|
||||
SurfaceRow(
|
||||
leading = { Icon(Icons.Filled.SettingsRemote, contentDescription = null) },
|
||||
leading = { Icon(Icons.Filled.SmartToy, contentDescription = null) },
|
||||
trailing = {
|
||||
ThemedSwitch(
|
||||
checked = settingsState.isRemoteEnabled,
|
||||
onClick = { viewModel.setRemoteEnabled(it) },
|
||||
)
|
||||
},
|
||||
title = stringResource(R.string.remote_control),
|
||||
description = { DescriptionText(stringResource(R.string.remote_control_desc)) },
|
||||
title = stringResource(R.string.enable_remote_app_control),
|
||||
onClick = { viewModel.setRemoteEnabled(!settingsState.isRemoteEnabled) },
|
||||
)
|
||||
AnimatedVisibility(settingsState.isRemoteEnabled) {
|
||||
|
||||
-8
@@ -2,8 +2,6 @@ package com.zaneschepke.wireguardautotunnel.ui.screens.settings.proxy.compoents
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import com.zaneschepke.wireguardautotunnel.R
|
||||
import com.zaneschepke.wireguardautotunnel.domain.enums.TunnelMode
|
||||
import com.zaneschepke.wireguardautotunnel.ui.common.sheet.CustomBottomSheet
|
||||
import com.zaneschepke.wireguardautotunnel.ui.common.sheet.SheetOption
|
||||
@@ -29,12 +27,6 @@ fun AppModeBottomSheet(
|
||||
onDismiss()
|
||||
onAppModeChange(it)
|
||||
},
|
||||
description =
|
||||
when (it) {
|
||||
TunnelMode.VPN -> stringResource(R.string.vpn_desc)
|
||||
TunnelMode.PROXY -> stringResource(R.string.local_proxy_desc)
|
||||
TunnelMode.LOCK_DOWN -> stringResource(R.string.lockdown_desc)
|
||||
},
|
||||
selected = tunnelMode == it,
|
||||
)
|
||||
}
|
||||
|
||||
+1
-6
@@ -19,7 +19,6 @@ import com.zaneschepke.wireguardautotunnel.R
|
||||
import com.zaneschepke.wireguardautotunnel.ui.LocalNavController
|
||||
import com.zaneschepke.wireguardautotunnel.ui.common.button.SurfaceRow
|
||||
import com.zaneschepke.wireguardautotunnel.ui.common.button.ThemedSwitch
|
||||
import com.zaneschepke.wireguardautotunnel.ui.common.text.DescriptionText
|
||||
import com.zaneschepke.wireguardautotunnel.ui.navigation.Route
|
||||
import com.zaneschepke.wireguardautotunnel.viewmodel.SharedAppViewModel
|
||||
import org.koin.compose.viewmodel.koinActivityViewModel
|
||||
@@ -46,16 +45,13 @@ fun SecurityScreen(viewModel: SharedAppViewModel = koinActivityViewModel()) {
|
||||
onClick = { viewModel.setScreenRecordingSecurity(it) },
|
||||
)
|
||||
},
|
||||
description = {
|
||||
DescriptionText(stringResource(R.string.screen_recording_protection_desc))
|
||||
},
|
||||
onClick = {
|
||||
viewModel.setScreenRecordingSecurity(!uiState.isScreenRecordingProtectionEnabled)
|
||||
},
|
||||
)
|
||||
SurfaceRow(
|
||||
leading = { Icon(Icons.Outlined.Pin, contentDescription = null) },
|
||||
title = stringResource(R.string.app_lock),
|
||||
title = stringResource(R.string.enable_app_lock),
|
||||
trailing = {
|
||||
ThemedSwitch(
|
||||
checked = uiState.pinLockEnabled,
|
||||
@@ -68,7 +64,6 @@ fun SecurityScreen(viewModel: SharedAppViewModel = koinActivityViewModel()) {
|
||||
},
|
||||
)
|
||||
},
|
||||
description = { DescriptionText(stringResource(R.string.app_lock_desc)) },
|
||||
onClick = {
|
||||
if (!uiState.pinLockEnabled) {
|
||||
navController.push(Route.Lock)
|
||||
|
||||
-7
@@ -42,12 +42,5 @@ fun PeerStatisticsSection(peer: ActivePeer) {
|
||||
style = style,
|
||||
color = color,
|
||||
)
|
||||
peer.endpoint?.let {
|
||||
StatText(
|
||||
stringResource(R.string.endpoint_template, it),
|
||||
style = style,
|
||||
color = color
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-16
@@ -14,8 +14,6 @@ import androidx.compose.material.icons.rounded.Circle
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.produceState
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
@@ -36,8 +34,6 @@ import com.zaneschepke.wireguardautotunnel.ui.state.DisplayTunnelState
|
||||
import com.zaneschepke.wireguardautotunnel.ui.state.TunnelsUiState
|
||||
import com.zaneschepke.wireguardautotunnel.util.extensions.openWebUrl
|
||||
import com.zaneschepke.wireguardautotunnel.viewmodel.SharedAppViewModel
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
import kotlinx.coroutines.delay
|
||||
|
||||
@OptIn(ExperimentalFoundationApi::class)
|
||||
@Composable
|
||||
@@ -50,14 +46,6 @@ fun TunnelList(
|
||||
val context = LocalContext.current
|
||||
val isTv = LocalIsAndroidTV.current
|
||||
|
||||
val now by
|
||||
produceState(System.currentTimeMillis()) {
|
||||
while (true) {
|
||||
delay(1_000L.milliseconds)
|
||||
value = System.currentTimeMillis()
|
||||
}
|
||||
}
|
||||
|
||||
val focusRequester = remember { FocusRequester() }
|
||||
|
||||
LaunchedEffect(Unit) {
|
||||
@@ -100,9 +88,7 @@ fun TunnelList(
|
||||
}
|
||||
|
||||
val displayState =
|
||||
remember(activeTunnel, now, uiState.displayStates[tunnel.id]) {
|
||||
uiState.displayStates[tunnel.id] ?: DisplayTunnelState.from(activeTunnel, now)
|
||||
}
|
||||
uiState.displayStates[tunnel.id] ?: DisplayTunnelState.from(activeTunnel)
|
||||
|
||||
val isRunning = uiState.backendStatus.activeTunnels.containsKey(tunnel.id)
|
||||
|
||||
@@ -121,7 +107,7 @@ fun TunnelList(
|
||||
Icon(
|
||||
Icons.Rounded.Circle,
|
||||
contentDescription = stringResource(R.string.tunnel_monitoring),
|
||||
tint = remember(displayState) { displayState.asColor() },
|
||||
tint = displayState.asColor(),
|
||||
modifier = Modifier.size(14.dp),
|
||||
)
|
||||
},
|
||||
|
||||
+29
-27
@@ -141,10 +141,6 @@ fun TunnelSettingsScreen(
|
||||
onClick = { navController.push(Route.IPv6(tunnel.id)) },
|
||||
)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
val meteredDisabled = sharedUiState.tunnelMode == TunnelMode.PROXY
|
||||
val meteredTunnelDesc =
|
||||
if (meteredDisabled) stringResource(R.string.unavailable_in_mode)
|
||||
else stringResource(R.string.metered_tunnel_desc)
|
||||
SurfaceRow(
|
||||
leading = {
|
||||
Icon(
|
||||
@@ -157,9 +153,15 @@ fun TunnelSettingsScreen(
|
||||
},
|
||||
title = stringResource(R.string.metered_tunnel),
|
||||
enabled = sharedUiState.tunnelMode != TunnelMode.PROXY,
|
||||
description = {
|
||||
DescriptionText(meteredTunnelDesc, disabled = meteredDisabled)
|
||||
},
|
||||
description =
|
||||
if (sharedUiState.tunnelMode == TunnelMode.PROXY) {
|
||||
{
|
||||
DescriptionText(
|
||||
stringResource(R.string.unavailable_in_mode),
|
||||
disabled = true,
|
||||
)
|
||||
}
|
||||
} else null,
|
||||
trailing = {
|
||||
ThemedSwitch(
|
||||
checked = tunnel.isMetered,
|
||||
@@ -170,26 +172,26 @@ fun TunnelSettingsScreen(
|
||||
onClick = { viewModel.onMetered(!tunnel.isMetered) },
|
||||
)
|
||||
}
|
||||
}
|
||||
Column {
|
||||
GroupLabel(
|
||||
stringResource(R.string.automation),
|
||||
modifier = Modifier.padding(horizontal = 16.dp),
|
||||
)
|
||||
SurfaceRow(
|
||||
leading = { Icon(Icons.Outlined.Dns, contentDescription = null) },
|
||||
title = stringResource(R.string.ddns_auto_update),
|
||||
description = {
|
||||
DescriptionText(stringResource(R.string.ddns_auto_update_description))
|
||||
},
|
||||
trailing = {
|
||||
ThemedSwitch(
|
||||
checked = tunnel.dynamicDnsEnabled,
|
||||
onClick = { viewModel.onDynamicDns(it) },
|
||||
)
|
||||
},
|
||||
onClick = { viewModel.onDynamicDns(!tunnel.dynamicDnsEnabled) },
|
||||
)
|
||||
Column {
|
||||
GroupLabel(
|
||||
stringResource(R.string.automation),
|
||||
modifier = Modifier.padding(horizontal = 16.dp),
|
||||
)
|
||||
SurfaceRow(
|
||||
leading = { Icon(Icons.Outlined.Dns, contentDescription = null) },
|
||||
title = stringResource(R.string.ddns_auto_update),
|
||||
description = {
|
||||
DescriptionText(stringResource(R.string.ddns_auto_update_description))
|
||||
},
|
||||
trailing = {
|
||||
ThemedSwitch(
|
||||
checked = tunnel.dynamicDnsEnabled,
|
||||
onClick = { viewModel.onDynamicDns(it) },
|
||||
)
|
||||
},
|
||||
onClick = { viewModel.onDynamicDns(!tunnel.dynamicDnsEnabled) },
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -112,7 +112,7 @@ fun ConfigEditScreen(
|
||||
leading = {
|
||||
Icon(ImageVector.vectorResource(R.drawable.host), contentDescription = null)
|
||||
},
|
||||
title = stringResource(R.string.dns_servers),
|
||||
title = stringResource(R.string.global_dns_servers),
|
||||
trailing = { modifier ->
|
||||
ThemedSwitch(
|
||||
checked = uiState.globalSettings.dnsEnabled,
|
||||
@@ -126,7 +126,7 @@ fun ConfigEditScreen(
|
||||
)
|
||||
SurfaceRow(
|
||||
leading = { Icon(Icons.Outlined.HdrAuto, contentDescription = null) },
|
||||
title = stringResource(R.string.amnezia_configuration),
|
||||
title = stringResource(R.string.global_amnezia_configuration),
|
||||
trailing = { modifier ->
|
||||
ThemedSwitch(
|
||||
checked = uiState.globalSettings.amneziaEnabled,
|
||||
|
||||
+11
-18
@@ -61,47 +61,36 @@ sealed class DisplayTunnelState {
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val HANDSHAKE_FAILURE_DEGRADED_THRESHOLD_MS = 6_000L
|
||||
|
||||
// During this window we avoid showing Degraded even if we see HandshakeFailure
|
||||
private const val POST_RESOLUTION_GRACE_PERIOD_MS = 3_500L
|
||||
|
||||
fun from(activeTunnel: ActiveTunnel, now: Long): DisplayTunnelState {
|
||||
fun from(activeTunnel: ActiveTunnel): DisplayTunnelState {
|
||||
val transport = activeTunnel.transportState
|
||||
val bootstrap = activeTunnel.bootstrapState
|
||||
val mode = activeTunnel.mode
|
||||
val isVpnStyle = mode is BackendMode.Vpn || mode is BackendMode.Proxy.KillSwitchPrimary
|
||||
|
||||
// Static peers bootstrap never goes to complete, treat none the same
|
||||
val bootstrapPhaseDone =
|
||||
bootstrap is BootstrapState.Complete || bootstrap is BootstrapState.None
|
||||
|
||||
// Check if we recently completed peer resolution
|
||||
val recentlyResolvedPeers =
|
||||
activeTunnel.lastPeerUpdateMs > 0 &&
|
||||
(now - activeTunnel.lastPeerUpdateMs) < POST_RESOLUTION_GRACE_PERIOD_MS
|
||||
|
||||
return when {
|
||||
transport is Tunnel.State.Down -> Disconnected
|
||||
|
||||
bootstrap is BootstrapState.Failed -> Degraded
|
||||
|
||||
// DNS resolution still in progress
|
||||
bootstrap is BootstrapState.ResolvingDns ||
|
||||
bootstrap is BootstrapState.UpdatingPeers -> ResolvingDns
|
||||
|
||||
transport is Tunnel.State.Up.Healthy -> Connected
|
||||
|
||||
transport is Tunnel.State.Up.HandshakeFailure -> {
|
||||
val age = now - activeTunnel.lastStateChangeMs
|
||||
val age = System.currentTimeMillis() - activeTunnel.lastStateChangeMs
|
||||
|
||||
if (recentlyResolvedPeers && bootstrapPhaseDone) {
|
||||
if (isVpnStyle) EstablishingConnection else Ready
|
||||
} else if (
|
||||
age > HANDSHAKE_FAILURE_DEGRADED_THRESHOLD_MS && bootstrapPhaseDone
|
||||
) {
|
||||
if (age > 15_000L && bootstrapPhaseDone) {
|
||||
Degraded
|
||||
} else if (isVpnStyle && bootstrapPhaseDone) {
|
||||
EstablishingConnection
|
||||
} else if (bootstrapPhaseDone) {
|
||||
// For regular proxy mode, we go to ready once past bootstrap phase
|
||||
Ready
|
||||
} else {
|
||||
Connecting
|
||||
@@ -110,12 +99,16 @@ sealed class DisplayTunnelState {
|
||||
|
||||
transport is Tunnel.State.Starting -> {
|
||||
when {
|
||||
bootstrapPhaseDone -> if (isVpnStyle) EstablishingConnection else Ready
|
||||
bootstrapPhaseDone -> {
|
||||
if (isVpnStyle) EstablishingConnection else Ready
|
||||
}
|
||||
else -> Connecting
|
||||
}
|
||||
}
|
||||
|
||||
// Final fallback after bootstrap phase is done
|
||||
bootstrapPhaseDone -> if (isVpnStyle) EstablishingConnection else Ready
|
||||
|
||||
else -> Connecting
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -61,7 +61,7 @@ fun TunnelMode.asTitleString(context: Context): String {
|
||||
fun TunnelMode.asString(context: Context): String {
|
||||
return when (this) {
|
||||
TunnelMode.VPN -> context.getString(R.string.vpn)
|
||||
TunnelMode.PROXY -> context.getString(R.string.local_proxy)
|
||||
TunnelMode.PROXY -> context.getString(R.string.proxy)
|
||||
TunnelMode.LOCK_DOWN -> context.getString(R.string.lockdown)
|
||||
}
|
||||
}
|
||||
@@ -124,7 +124,7 @@ fun DnsError.labelRes(): Int {
|
||||
fun ActiveTunnel.statusText(context: Context): String {
|
||||
return context.getString(
|
||||
R.string.status_template,
|
||||
DisplayTunnelState.from(this, System.currentTimeMillis()).asLocalizedString(context),
|
||||
DisplayTunnelState.from(this).asLocalizedString(context),
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -93,6 +93,7 @@ class ConfigEditViewModel(
|
||||
tunnel = tunnel,
|
||||
tunnels = tunnels,
|
||||
isRunning = isRunning,
|
||||
globalSettings = globalSettings,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+14
-16
@@ -27,26 +27,21 @@ class ProxySettingsViewModel(
|
||||
combine(tunnelCoordinator.backendStatus, proxySettingsRepository.flow) {
|
||||
backendStatus,
|
||||
settings ->
|
||||
if (state.isLoading) {
|
||||
ProxySettingsUiState(
|
||||
proxySettings = settings,
|
||||
backendStatus = backendStatus,
|
||||
isLoading = false,
|
||||
socks5Enabled = settings.socks5ProxyEnabled,
|
||||
httpEnabled = settings.httpProxyEnabled,
|
||||
socksBindAddress = settings.socks5ProxyBindAddress ?: "",
|
||||
httpBindAddress = settings.httpProxyBindAddress ?: "",
|
||||
proxyUsername = settings.proxyUsername ?: "",
|
||||
proxyPassword = settings.proxyPassword ?: "",
|
||||
)
|
||||
} else {
|
||||
state.copy(backendStatus = backendStatus)
|
||||
}
|
||||
ProxySettingsUiState(
|
||||
proxySettings = settings,
|
||||
backendStatus = backendStatus,
|
||||
isLoading = false,
|
||||
socks5Enabled = settings.socks5ProxyEnabled,
|
||||
httpEnabled = settings.httpProxyEnabled,
|
||||
socksBindAddress = settings.socks5ProxyBindAddress ?: "",
|
||||
httpBindAddress = settings.httpProxyBindAddress ?: "",
|
||||
proxyUsername = settings.proxyUsername ?: "",
|
||||
proxyPassword = settings.proxyPassword ?: "",
|
||||
)
|
||||
}
|
||||
.collect { reduce { it } }
|
||||
}
|
||||
|
||||
// TODO add a dialog requesting restart if any tunnels active
|
||||
fun save() = intent {
|
||||
reduce { state.copy(showSaveModal = false) }
|
||||
|
||||
@@ -103,6 +98,9 @@ class ProxySettingsViewModel(
|
||||
|
||||
proxySettingsRepository.upsert(updated)
|
||||
|
||||
tunnelCoordinator.toggleTunnels()
|
||||
tunnelCoordinator.toggleTunnels()
|
||||
|
||||
postSideEffect(
|
||||
GlobalSideEffect.Snackbar(StringValue.StringResource(R.string.config_changes_saved))
|
||||
)
|
||||
|
||||
+3
-16
@@ -18,7 +18,6 @@ import com.zaneschepke.wireguardautotunnel.domain.repository.TunnelRepository
|
||||
import com.zaneschepke.wireguardautotunnel.domain.sideeffect.GlobalSideEffect
|
||||
import com.zaneschepke.wireguardautotunnel.parser.ConfigParseException
|
||||
import com.zaneschepke.wireguardautotunnel.ui.sideeffect.LocalSideEffect
|
||||
import com.zaneschepke.wireguardautotunnel.ui.state.DisplayTunnelState
|
||||
import com.zaneschepke.wireguardautotunnel.ui.state.GlobalAppUiState
|
||||
import com.zaneschepke.wireguardautotunnel.ui.state.TunnelsUiState
|
||||
import com.zaneschepke.wireguardautotunnel.ui.theme.Theme
|
||||
@@ -72,22 +71,10 @@ class SharedAppViewModel(
|
||||
tunnelRepository.userTunnelsFlow,
|
||||
tunnelCoordinator.backendStatus,
|
||||
selectedTunnelsRepository.flow,
|
||||
) { tunnels, backendStatus, selectedTuns ->
|
||||
val activeTunnelIds = backendStatus.activeTunnels.keys
|
||||
|
||||
val sortedTunnels =
|
||||
tunnels.sortedWith(
|
||||
compareByDescending<TunnelConfig> { it.id in activeTunnelIds }
|
||||
.thenBy { it.position }
|
||||
)
|
||||
|
||||
val displayStates =
|
||||
backendStatus.activeTunnels.mapValues { (_, activeTunnel) ->
|
||||
DisplayTunnelState.from(activeTunnel, System.currentTimeMillis())
|
||||
}
|
||||
|
||||
tunnelCoordinator.tunnelDisplayStates,
|
||||
) { tunnels, backendStatus, selectedTuns, displayStates ->
|
||||
TunnelsUiState(
|
||||
tunnels = sortedTunnels,
|
||||
tunnels = tunnels,
|
||||
backendStatus = backendStatus,
|
||||
displayStates = displayStates,
|
||||
selectedTunnels = selectedTuns,
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
<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="config_changes_saved">Configuration changes saved.</string>
|
||||
<string name="join_telegram">Join Telegram community</string>
|
||||
<string name="pin_created">Pin successfully created</string>
|
||||
@@ -26,6 +27,7 @@
|
||||
<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="allow_lan_traffic">Allow LAN traffic</string>
|
||||
@@ -131,6 +133,7 @@
|
||||
<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>
|
||||
@@ -153,6 +156,7 @@
|
||||
<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>
|
||||
@@ -253,6 +257,7 @@
|
||||
<string name="unavailable_in_mode">Unavailable in current mode</string>
|
||||
<string name="server_port">Server:Port</string>
|
||||
<string name="camera_permission_required">Camera permission required</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>
|
||||
@@ -267,6 +272,7 @@
|
||||
<string name="settings">Settings</string>
|
||||
<string name="incorrect_pin">Pin is incorrect</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="update_download_failed">Update download failed.</string>
|
||||
<string name="network_name">Network:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
<string name="preshared_key">Předsdílený klíč</string>
|
||||
<string name="seconds">s</string>
|
||||
<string name="cancel">Zrušit</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 Wi-Fi</string>
|
||||
<string name="email_subject">WG Tunnel podpora</string>
|
||||
@@ -64,6 +65,7 @@
|
||||
<string name="no_browser_detected">Žádný prohlížeč nebyl nalezen</string>
|
||||
<string name="pin_created">PIN úspěšně vytvořen</string>
|
||||
<string name="enter_pin">Zadejte PIN</string>
|
||||
<string name="enable_app_lock">Zapnout zámek aplikace</string>
|
||||
<string name="settings">Nastavení</string>
|
||||
<string name="support">Podpora</string>
|
||||
<string name="app_name">WG Tunnel</string>
|
||||
@@ -88,6 +90,7 @@
|
||||
<string name="primary_tunnel">Výchozí tunel</string>
|
||||
<string name="skip">Přeskočit</string>
|
||||
<string name="donate">Přispět na projekt</string>
|
||||
<string name="stop_on_internet_loss">Zastavit tunel při ztrátě internetu</string>
|
||||
<string name="stop_on_no_internet">Zastavit při ztrátě internetu</string>
|
||||
<string name="native_kill_switch">Nativní kill switch</string>
|
||||
<string name="vpn_channel_description">Kanál pro oznámení o stavu VPN</string>
|
||||
@@ -141,6 +144,7 @@
|
||||
<string name="vpn_denied_dialog_title">Oprávnění zamítnuto</string>
|
||||
<string name="app_permission_title">Ovládání tunelů a funkcí automatického tunelování</string>
|
||||
<string name="app_permission_description">https://hosted.weblate.org/translate/wg-tunnel/strings/en/?checksum=e52d7eb2e28a9a12 Ovládání funkcí tunelu a automatického tunelování.</string>
|
||||
<string name="enable_remote_app_control">Povolit vzdálené ovládání aplikace</string>
|
||||
<string name="export_success">Export byl úspěšně dokončen</string>
|
||||
<string name="download">Stáhnout</string>
|
||||
<string name="check_for_update">Zkontrolovat aktualizaci</string>
|
||||
@@ -272,6 +276,7 @@
|
||||
<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>
|
||||
@@ -279,6 +284,7 @@
|
||||
<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="about">O aplikaci</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
<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="config_changes_saved">Configuration changes saved.</string>
|
||||
<string name="join_telegram">Join Telegram community</string>
|
||||
<string name="pin_created">Pin successfully created</string>
|
||||
@@ -28,6 +29,7 @@
|
||||
<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="allow_lan_traffic">Allow LAN traffic</string>
|
||||
@@ -133,6 +135,7 @@
|
||||
<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>
|
||||
@@ -155,6 +158,7 @@
|
||||
<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>
|
||||
@@ -254,6 +258,7 @@
|
||||
<string name="unavailable_in_mode">Unavailable in current mode</string>
|
||||
<string name="server_port">Server:Port</string>
|
||||
<string name="camera_permission_required">Camera permission required</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>
|
||||
@@ -268,6 +273,7 @@
|
||||
<string name="settings">Settings</string>
|
||||
<string name="incorrect_pin">Pin is incorrect</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="update_download_failed">Update download failed.</string>
|
||||
<string name="network_name">Network:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<string name="base64_key">base64-Schlüssel</string>
|
||||
<string name="delete_tunnel">Tunnel löschen</string>
|
||||
<string name="persistent_keepalive">Dauerhaftes Keepalive</string>
|
||||
<string name="enable_app_lock">App-Sperre aktivieren</string>
|
||||
<string name="interface_">Schnittstelle</string>
|
||||
<string name="listen_port">Eingehender Port</string>
|
||||
<string name="random">(zufällig)</string>
|
||||
@@ -44,6 +45,7 @@
|
||||
<string name="seconds">Sekunden</string>
|
||||
<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 WLAN</string>
|
||||
<string name="email_subject">WG Tunnel Unterstützung</string>
|
||||
<string name="docs_description">Dokumentation lesen</string>
|
||||
@@ -123,6 +125,7 @@
|
||||
<string name="pre_down">Vor Deaktivierung</string>
|
||||
<string name="post_down">Nach Deaktivierung</string>
|
||||
<string name="quick_actions">Schnellaktionen</string>
|
||||
<string name="stop_on_internet_loss">Stoppen, wenn die Internetverbindung getrennt wird</string>
|
||||
<string name="bypass_lan_for_kill_switch">LAN umgehen für Notschalter</string>
|
||||
<string name="hide_scripts">Skripte verbergen</string>
|
||||
<string name="enable_amnezia_compatibility">Amnezia Kompatibilität aktivieren</string>
|
||||
@@ -150,6 +153,7 @@
|
||||
<string name="copy">Kopieren</string>
|
||||
<string name="service_running_error">Dienst läuft nicht</string>
|
||||
<string name="auth_error">Nicht autorisiert</string>
|
||||
<string name="enable_remote_app_control">App-Fernsteuerung aktivieren</string>
|
||||
<string name="export_failed">Export fehlgeschlagen</string>
|
||||
<string name="app_permission_description">https://hosted.weblate.org/translate/wg-tunnel/strings/en/?checksum=e52d7eb2e28a9a12Steuere Tunnel und Auto-Tunnel Funktionen.</string>
|
||||
<string name="dns_resolve_error">DNS-Auflösung fehlgeschlagen</string>
|
||||
@@ -277,12 +281,14 @@
|
||||
<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="about">Über</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
<string name="optional">(opcional)</string>
|
||||
<string name="seconds">Segundos</string>
|
||||
<string name="cancel">Cancelar</string>
|
||||
<string name="enabled_app_shortcuts">Habilitar acesos directos de app</string>
|
||||
<string name="unknown_error">Error desconocido</string>
|
||||
<string name="email_subject">Ayuda de WG Tunnel</string>
|
||||
<string name="interface_">Interfaz</string>
|
||||
@@ -64,6 +65,7 @@
|
||||
<string name="pin_created">Pin creado con éxito</string>
|
||||
<string name="enter_pin">Introduce tu pin</string>
|
||||
<string name="create_pin">Crear pin</string>
|
||||
<string name="enable_app_lock">Activar el bloqueo de aplicaciones</string>
|
||||
<string name="set_primary_tunnel">Establecer como túnel Principal</string>
|
||||
<string name="edit_tunnel">Editar túnel</string>
|
||||
<string name="settings">Ajustes</string>
|
||||
@@ -119,6 +121,7 @@
|
||||
<string name="learn_more">Saber más</string>
|
||||
<string name="wildcards_active">Comodines activos</string>
|
||||
<string name="stop_on_no_internet">Detener cuando no hay internet</string>
|
||||
<string name="stop_on_internet_loss">Detener túnel cuando se pierda el internet</string>
|
||||
<string name="native_kill_switch">Interruptor de apagado nativo</string>
|
||||
<string name="allow_lan_traffic">Permitir tráfico LAN</string>
|
||||
<string name="bypass_lan_for_kill_switch">Excluir LAN del interruptor de apagado</string>
|
||||
@@ -163,6 +166,7 @@
|
||||
<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">Variante: %1$s</string>
|
||||
<string name="enable_remote_app_control">Activar control remoto de la app</string>
|
||||
<string name="export_success">Exportación completada</string>
|
||||
<string name="download">Descargar</string>
|
||||
<string name="latest_installed">Ya se está ejecutando la última versión.</string>
|
||||
@@ -276,12 +280,14 @@
|
||||
<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="about">Acerca de</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
<string name="allow">Luba</string>
|
||||
<string name="select_all">Vali kõik</string>
|
||||
<string name="export_success">Eksportimine õnnestus</string>
|
||||
<string name="enable_remote_app_control">Luba rakenduse kaugjuhtimine</string>
|
||||
<string name="add_from_url">Lisa võrguaadressilt</string>
|
||||
<string name="enter_config_url">Sisesta seadistuse võrguaadress</string>
|
||||
<string name="error_download_failed">Seadistuse allalaadimine ei õnnestunud</string>
|
||||
@@ -150,6 +151,8 @@
|
||||
<string name="splt_tunneling">Jagatud tunneldus</string>
|
||||
<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">Luba rakenduse lukustamine</string>
|
||||
<string name="launch_app_settings">Käivita rakenduse seadistused</string>
|
||||
<string name="use_wildcards">Kasuta nimedes metamärke</string>
|
||||
<string name="wildcards_active">Metamärgid on kasutusel</string>
|
||||
@@ -178,6 +181,7 @@
|
||||
<string name="_default">Vaikimisi meetod</string>
|
||||
<string name="wifi_detection_method">WiFi tuvastamise meetod</string>
|
||||
<string name="current_template">Praegune: %1$s</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>
|
||||
@@ -276,12 +280,14 @@
|
||||
<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="about">Rakenduse teave</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
<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="config_changes_saved">Configuration changes saved.</string>
|
||||
<string name="join_telegram">Join Telegram community</string>
|
||||
<string name="pin_created">Pin successfully created</string>
|
||||
@@ -38,6 +39,7 @@
|
||||
<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="allow_lan_traffic">Allow LAN traffic</string>
|
||||
@@ -141,6 +143,7 @@
|
||||
<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>
|
||||
@@ -162,6 +165,7 @@
|
||||
<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>
|
||||
@@ -255,6 +259,7 @@
|
||||
<string name="unavailable_in_mode">Unavailable in current mode</string>
|
||||
<string name="server_port">Server:Port</string>
|
||||
<string name="camera_permission_required">Camera permission required</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>
|
||||
@@ -269,6 +274,7 @@
|
||||
<string name="settings">Settings</string>
|
||||
<string name="incorrect_pin">Pin is incorrect</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="update_download_failed">Update download failed.</string>
|
||||
<string name="network_name">Network:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
<string name="pin_created">Pin luotu</string>
|
||||
<string name="enter_pin">Syötä pin-koodi</string>
|
||||
<string name="create_pin">Luo pin-koodi</string>
|
||||
<string name="enable_app_lock">Ota käyttöön sovelluksen lukitus</string>
|
||||
<string name="set_primary_tunnel">Aseta ensisijaiseksi tunneliksi</string>
|
||||
<string name="edit_tunnel">Muokkaa tunnelia</string>
|
||||
<string name="settings">Asetukset</string>
|
||||
@@ -86,6 +87,7 @@
|
||||
<string name="add_wifi_name">Lisää WIFI:n nimi</string>
|
||||
<string name="language">Kieli</string>
|
||||
<string name="include">Sisällytä</string>
|
||||
<string name="enabled_app_shortcuts">Salli sovelluksen pikakuvakkeet</string>
|
||||
<string name="automatic">Automaattinen</string>
|
||||
<string name="tunnel_name">Tunnelin nimi</string>
|
||||
<string name="restart_at_boot">Käynnistä laitteen käynnistyksen yhteydessä</string>
|
||||
@@ -112,6 +114,7 @@
|
||||
<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="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>
|
||||
@@ -184,6 +187,7 @@
|
||||
<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>
|
||||
@@ -199,6 +203,7 @@
|
||||
<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>
|
||||
@@ -277,6 +282,7 @@
|
||||
<string name="fix">Fix</string>
|
||||
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</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="update_download_failed">Update download failed.</string>
|
||||
<string name="network_name">Network:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -71,6 +71,7 @@
|
||||
<string name="show_amnezia_properties">Voir les propriétés d\'Amnezia</string>
|
||||
<string name="never">Jamais</string>
|
||||
<string name="logs">Journaux</string>
|
||||
<string name="enabled_app_shortcuts">Activer les raccourcis</string>
|
||||
<string name="unknown_error">Une erreur inconnue s\'est produite</string>
|
||||
<string name="email_subject">Assistance WG Tunnel</string>
|
||||
<string name="yes">Oui</string>
|
||||
@@ -78,6 +79,7 @@
|
||||
<string name="set_primary_tunnel">Tunnel utilisé quand aucun tunnel favori n\'est défini</string>
|
||||
<string name="auto">(Auto)</string>
|
||||
<string name="pin_created">Code PIN bien créé</string>
|
||||
<string name="enable_app_lock">Activer le verrouillage de l\'appli</string>
|
||||
<string name="edit_tunnel">Éditer le tunnel</string>
|
||||
<string name="settings">Réglages</string>
|
||||
<string name="junk_packet_count">Nombre de paquets indésirables</string>
|
||||
@@ -116,6 +118,7 @@
|
||||
<string name="remove_amnezia_compatibility">Retirer la prise en charge d\'Amnezia</string>
|
||||
<string name="hide_amnezia_properties">Cacher les propriétés d\'Amnezia</string>
|
||||
<string name="stop_on_no_internet">Arrêt en l\'absence d\'internet</string>
|
||||
<string name="stop_on_internet_loss">Couper les tunnels en l\'absence d\'internet</string>
|
||||
<string name="native_kill_switch">Arrêt d\'urgence natif</string>
|
||||
<string name="allow_lan_traffic">Autoriser le trafic LAN</string>
|
||||
<string name="bypass_lan_for_kill_switch">Contourner le LAN en cas d\'arrêt d\'urgence</string>
|
||||
@@ -210,6 +213,7 @@
|
||||
<string name="kofi">Ko-fi</string>
|
||||
<string name="donation_signoff">Avec toute ma gratitude,</string>
|
||||
<string name="selected">Sélectionné</string>
|
||||
<string name="global_split_tunneling">Tunneling sélectif global</string>
|
||||
<string name="active_network">Réseau actif:</string>
|
||||
<string name="range_hint">(%1$d–%2$d)</string>
|
||||
<string name="delete_active_message">Impossible de supprimer un tunnel actif.</string>
|
||||
@@ -223,6 +227,7 @@
|
||||
<string name="kill_switch">kill switch</string>
|
||||
<string name="configuration">Configuration</string>
|
||||
<string name="drag_handle">Poignée de glissement</string>
|
||||
<string name="global_dns_servers">Serveurs DNS global</string>
|
||||
<string name="contact">Contact</string>
|
||||
<string name="ports_must_differ">Échec. Les serveurs proxy doivent utiliser des ports différents.</string>
|
||||
<string name="backup_and_restore">Sauvegarde et restauration</string>
|
||||
@@ -282,6 +287,7 @@
|
||||
<string name="fix">Corriger</string>
|
||||
<string name="tunnel_running_name_message">Le nom ne peut pas être modifié tant que le tunnel est actif.</string>
|
||||
<string name="export_failed">L\'exportation a échoué</string>
|
||||
<string name="enable_remote_app_control">Activer le contrôle à distance des applications</string>
|
||||
<string name="donation_closing">Mon rêve serait de travailler à plein temps pour vous sur ce projet.</string>
|
||||
<string name="update_download_failed">La mise à jour n\'a pas pu être téléchargée.</string>
|
||||
<string name="network_name">Réseau:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
<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="config_changes_saved">Configuration changes saved.</string>
|
||||
<string name="join_telegram">Join Telegram community</string>
|
||||
<string name="pin_created">Pin successfully created</string>
|
||||
@@ -26,6 +27,7 @@
|
||||
<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="allow_lan_traffic">Allow LAN traffic</string>
|
||||
@@ -132,6 +134,7 @@
|
||||
<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>
|
||||
@@ -154,6 +157,7 @@
|
||||
<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>
|
||||
@@ -255,6 +259,7 @@
|
||||
<string name="unavailable_in_mode">Unavailable in current mode</string>
|
||||
<string name="server_port">Server:Port</string>
|
||||
<string name="camera_permission_required">Camera permission required</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>
|
||||
@@ -269,6 +274,7 @@
|
||||
<string name="settings">Settings</string>
|
||||
<string name="incorrect_pin">Pin is incorrect</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="update_download_failed">Update download failed.</string>
|
||||
<string name="network_name">Network:</string>
|
||||
@@ -384,6 +390,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -425,6 +432,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -458,4 +466,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
<string name="delete_tunnel">Alagút törlése</string>
|
||||
<string name="tunnel_mobile_data">Alagút mobiladat-forgalmon</string>
|
||||
<string name="logs">Naplók</string>
|
||||
<string name="enable_app_lock">Alkalmazászár engedélyezése</string>
|
||||
<string name="config_changes_saved">Konfigurációs módosítások mentve.</string>
|
||||
<string name="join_telegram">Csatlakozás a Telegram közösséghez</string>
|
||||
<string name="pin_created">PIN-kód sikeresen létrehozva</string>
|
||||
@@ -28,6 +29,7 @@
|
||||
<string name="remote_key">Távoli kulcs</string>
|
||||
<string name="mobile_data">Mobiladat</string>
|
||||
<string name="use_shell_via_shizuku">Shell használata Shizuku-n keresztül a Wi-Fi információkhoz, így nincs szükség helymeghatározási engedélyre nem rootolt eszközökön</string>
|
||||
<string name="stop_on_internet_loss">Alagút leállítása az internet megszűnésekor</string>
|
||||
<string name="vpn">VPN</string>
|
||||
<string name="tunnel_boot_description">Alapértelmezett alagút indítása rendszerindításkor</string>
|
||||
<string name="allow_lan_traffic">LAN forgalom engedélyezése</string>
|
||||
@@ -133,6 +135,7 @@
|
||||
<string name="kofi">Ko-fi</string>
|
||||
<string name="donation_signoff">Hálával,</string>
|
||||
<string name="selected">Kiválasztva</string>
|
||||
<string name="global_split_tunneling">Globális split tunneling</string>
|
||||
<string name="active_network">Aktív hálózat:</string>
|
||||
<string name="range_hint">(%1$d–%2$d)</string>
|
||||
<string name="delete_active_message">Aktív alagút nem törölhető.</string>
|
||||
@@ -155,6 +158,7 @@
|
||||
<string name="mtu">MTU</string>
|
||||
<string name="configuration">Konfiguráció</string>
|
||||
<string name="drag_handle">Húzóka</string>
|
||||
<string name="global_dns_servers">Globális DNS szerverek</string>
|
||||
<string name="display_theme">Megjelenítési téma</string>
|
||||
<string name="contact">Kapcsolat</string>
|
||||
<string name="ports_must_differ">Sikertelen. A proxyknak különböző portokat kell használniuk.</string>
|
||||
@@ -254,6 +258,7 @@
|
||||
<string name="unavailable_in_mode">Nem érhető el a jelenlegi módban</string>
|
||||
<string name="server_port">Szerver:Port</string>
|
||||
<string name="camera_permission_required">Kamera engedély szükséges</string>
|
||||
<string name="enabled_app_shortcuts">App gyorsindítók engedélyezése</string>
|
||||
<string name="preferred_tunnel">Preferált alagút</string>
|
||||
<string name="allow">Engedélyezés</string>
|
||||
<string name="underload_packet_magic_header">Underload csomag magic header</string>
|
||||
@@ -268,6 +273,7 @@
|
||||
<string name="settings">Beállítások</string>
|
||||
<string name="incorrect_pin">A PIN-kód helytelen</string>
|
||||
<string name="export_failed">Exportálás sikertelen</string>
|
||||
<string name="enable_remote_app_control">Távoli vezérlés engedélyezése</string>
|
||||
<string name="donation_closing">Minden álmom, hogy teljes munkaidőben ezen a projekten dolgozhassak.</string>
|
||||
<string name="update_download_failed">Frissítés letöltése sikertelen.</string>
|
||||
<string name="network_name">Hálózat:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
<string name="seconds">Detik</string>
|
||||
<string name="persistent_keepalive">Keepalive persisten</string>
|
||||
<string name="cancel">Batal</string>
|
||||
<string name="enabled_app_shortcuts">Aktifkan pintasan aplikasi</string>
|
||||
<string name="unknown_error">Terjadi kesalahan tidak dikenal</string>
|
||||
<string name="tunnel_on_wifi">Terowongan pada Wi-Fi</string>
|
||||
<string name="email_subject">Dukungan WG Tunnel</string>
|
||||
@@ -63,6 +64,7 @@
|
||||
<string name="prominent_background_location_message">Fitur ini memerlukan izin lokasi latar belakang untuk mengaktifkan pemantauan SSID Wi-Fi bahkan saat aplikasi ditutup. Untuk detail selengkapnya, silakan lihat Kebijakan Privasi yang tertaut di layar Dukungan.</string>
|
||||
<string name="copy_public_key">Salin kunci publik</string>
|
||||
<string name="base64_key">Kunci Base64</string>
|
||||
<string name="enable_app_lock">Aktifkan kunci aplikasi</string>
|
||||
<string name="delete_tunnel">Hapus terowongan</string>
|
||||
<string name="delete_tunnel_message">Apakah Anda yakin ingin menghapus terowongan yang dipilih?</string>
|
||||
<string name="no_email_detected">Tidak ada aplikasi email yang terdeteksi</string>
|
||||
@@ -91,6 +93,7 @@
|
||||
<string name="remote_key">Kunci jarak jauh</string>
|
||||
<string name="mobile_data">Data seluler</string>
|
||||
<string name="use_shell_via_shizuku">Gunakan shell melalui Shizuku untuk mendapatkan informasi Wi-Fi, sehingga tidak memerlukan izin lokasi pada perangkat yang tidak di-root</string>
|
||||
<string name="stop_on_internet_loss">Hentikan terowongan saat koneksi internet terputus</string>
|
||||
<string name="vpn">VPN</string>
|
||||
<string name="tunnel_boot_description">Mulai terowongan bawaan saat booting</string>
|
||||
<string name="allow_lan_traffic">Izinkan lalu lintas LAN</string>
|
||||
@@ -171,6 +174,7 @@
|
||||
<string name="kofi">Ko-fi</string>
|
||||
<string name="donation_signoff">Dengan penuh rasa syukur,</string>
|
||||
<string name="selected">Dipilih</string>
|
||||
<string name="global_split_tunneling">Terowongan terpisah global</string>
|
||||
<string name="active_network">Jaringan Aktif:</string>
|
||||
<string name="range_hint">(%1$d–%2$d)</string>
|
||||
<string name="delete_active_message">Tidak dapat menghapus terowongan yang sedang aktif.</string>
|
||||
@@ -188,6 +192,7 @@
|
||||
<string name="mtu">MTU</string>
|
||||
<string name="configuration">Konfigurasi</string>
|
||||
<string name="drag_handle">Pegangan Seret</string>
|
||||
<string name="global_dns_servers">Server DNS global</string>
|
||||
<string name="display_theme">Tema tampilan</string>
|
||||
<string name="contact">Kontak</string>
|
||||
<string name="ports_must_differ">Gagal. Proksi harus memiliki port yang berbeda.</string>
|
||||
@@ -274,6 +279,7 @@
|
||||
<string name="fix">Perbaiki</string>
|
||||
<string name="tunnel_running_name_message">Nama tidak dapat diubah saat terowongan aktif.</string>
|
||||
<string name="export_failed">Ekspor gagal</string>
|
||||
<string name="enable_remote_app_control">Aktifkan kontrol aplikasi jarak jauh</string>
|
||||
<string name="donation_closing">Impian saya adalah bekerja penuh waktu untuk Anda pada proyek ini.</string>
|
||||
<string name="update_download_failed">Unduhan pembaruan gagal.</string>
|
||||
<string name="network_name">Jaringan:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
<string name="public_key">Chiave pubblica</string>
|
||||
<string name="addresses">Indirizzi</string>
|
||||
<string name="dns_servers">Server DNS</string>
|
||||
<string name="enabled_app_shortcuts">Abilita le scorciatoie da app</string>
|
||||
<string name="email_subject">Supporto di Tunnel WG</string>
|
||||
<string name="email_chooser">Invia una email…</string>
|
||||
<string name="docs_description">Leggi la documentazione</string>
|
||||
@@ -63,6 +64,7 @@
|
||||
<string name="no_browser_detected">Nessun browser rilevato</string>
|
||||
<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">Tunnel utilizzato quando non è configurato alcun tunnel preferito</string>
|
||||
<string name="edit_tunnel">Modifica tunnel</string>
|
||||
<string name="settings">Impostazioni</string>
|
||||
@@ -86,6 +88,7 @@
|
||||
<string name="prominent_background_location_message">Questa caratteristica richiede il permesso di localizzazione in background per abilitare il monitoraggio dell\'SSID delle reti Wi-fi anche quando l\'applicazione è chiusa. Per maggiori dettagli, consultare il link alla Privacy Policy presente nella schermata \"Supporto\".</string>
|
||||
<string name="auto_tunnel_title">Servizio tunneling automatico</string>
|
||||
<string name="use_root_shell_for_wifi">Utilizzare una shell root per ottenere le informazioni Wi-Fi, evitando la necessità dell\'autorizzazioni della posizione</string>
|
||||
<string name="stop_on_internet_loss">Arresta il tunnel in caso di assenza di connessione internet</string>
|
||||
<string name="allow_lan_traffic">Abilita traffico LAN</string>
|
||||
<string name="tunnel_control">Controllo tunnel</string>
|
||||
<string name="include_lan">Includi la LAN</string>
|
||||
@@ -155,6 +158,7 @@
|
||||
<string name="service_running_error">Il servizio non è in esecuzione</string>
|
||||
<string name="config_error">Configurazione non valida</string>
|
||||
<string name="dns_resolve_error">Risoluzione DNS fallita</string>
|
||||
<string name="enable_remote_app_control">Abilita il controllo dell\'app da remoto</string>
|
||||
<string name="version_template">Versione: %1$s</string>
|
||||
<string name="flavor_template">Caratteristica: %1$s</string>
|
||||
<string name="update_available">Aggiornamento disponibile!</string>
|
||||
@@ -268,6 +272,7 @@
|
||||
<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>
|
||||
@@ -275,6 +280,7 @@
|
||||
<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="about">Informazioni</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
<string name="cancel">キャンセル</string>
|
||||
<string name="unknown_error">不明なエラーが発生しました</string>
|
||||
<string name="error_no_file_explorer">ファイルエクスプローラーはインストールされていません</string>
|
||||
<string name="enabled_app_shortcuts">アプリのショートカットを有効にする</string>
|
||||
<string name="no_email_detected">メールアプリは検出されません</string>
|
||||
<string name="email_description">メールを送る</string>
|
||||
<string name="no_browser_detected">ブラウザは検出されません</string>
|
||||
@@ -54,6 +55,7 @@
|
||||
<string name="auto_tunnel_title">自動トンネルサービス</string>
|
||||
<string name="edit_tunnel">トンネルの編集</string>
|
||||
<string name="create_pin">新規PINを作成</string>
|
||||
<string name="enable_app_lock">アプリロックを有効にする</string>
|
||||
<string name="always_on_message">VPN接続の許可が拒否されました。</string>
|
||||
<string name="always_on_message2">他のすべてのアプリで常時接続VPNがオフになっていることを確認して、再度お試しください</string>
|
||||
<string name="notifications">通知</string>
|
||||
@@ -81,6 +83,7 @@
|
||||
<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="allow_lan_traffic">Allow LAN traffic</string>
|
||||
@@ -164,6 +167,7 @@
|
||||
<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>
|
||||
@@ -180,6 +184,7 @@
|
||||
<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>
|
||||
@@ -272,6 +277,7 @@
|
||||
<string name="fix">Fix</string>
|
||||
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</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="update_download_failed">Update download failed.</string>
|
||||
<string name="network_name">Network:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
<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>
|
||||
@@ -60,6 +61,7 @@
|
||||
<string name="pin_created">პინი წარმატებით შეიქმნა</string>
|
||||
<string name="enter_pin">შეიყვანეთ პინი</string>
|
||||
<string name="create_pin">შექმენით პინი</string>
|
||||
<string name="enable_app_lock">გააქტიურე აპლიკაციის დაბლოკვა</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>
|
||||
@@ -139,6 +141,7 @@
|
||||
<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="allow_lan_traffic">Allow LAN traffic</string>
|
||||
@@ -215,6 +218,7 @@
|
||||
<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>
|
||||
@@ -232,6 +236,7 @@
|
||||
<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>
|
||||
@@ -314,6 +319,7 @@
|
||||
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</string>
|
||||
<string name="settings">Settings</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="update_download_failed">Update download failed.</string>
|
||||
<string name="network_name">Network:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
<string name="delete_tunnel">터널 삭제</string>
|
||||
<string name="tunnel_mobile_data">모바일 데이터에서 터널 사용</string>
|
||||
<string name="logs">로그</string>
|
||||
<string name="enable_app_lock">앱 잠금 켜기</string>
|
||||
<string name="config_changes_saved">변경한 설정이 저장되었습니다.</string>
|
||||
<string name="join_telegram">Telegram 커뮤니티 참여</string>
|
||||
<string name="pin_created">Pin 생성 성공</string>
|
||||
@@ -26,6 +27,7 @@
|
||||
<string name="remote_key">원격 키</string>
|
||||
<string name="mobile_data">모바일 데이터</string>
|
||||
<string name="use_shell_via_shizuku">Shizuku 셸을 이용하여, 루팅하지 않은 기기에서 위치 권한을 요구하지 않고 Wi-Fi 정보를 얻습니다</string>
|
||||
<string name="stop_on_internet_loss">인터넷이 끊겼을 때 터널 중지</string>
|
||||
<string name="vpn">VPN</string>
|
||||
<string name="tunnel_boot_description">부팅 시 기본 터널 시작</string>
|
||||
<string name="allow_lan_traffic">LAN 트래픽 허용</string>
|
||||
@@ -132,6 +134,7 @@
|
||||
<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>
|
||||
@@ -154,6 +157,7 @@
|
||||
<string name="mtu">MTU</string>
|
||||
<string name="configuration">설정</string>
|
||||
<string name="drag_handle">핸들 드래그</string>
|
||||
<string name="global_dns_servers">글로벌 DNS 서버</string>
|
||||
<string name="display_theme">표시 테마</string>
|
||||
<string name="contact">연락</string>
|
||||
<string name="ports_must_differ">실패. 프록시는 다른 포트를 이용해야 합니다.</string>
|
||||
@@ -255,6 +259,7 @@
|
||||
<string name="unavailable_in_mode">현재 모드에서는 이용 불가</string>
|
||||
<string name="server_port">서버:포트</string>
|
||||
<string name="camera_permission_required">카메라 권한 필요</string>
|
||||
<string name="enabled_app_shortcuts">앱 바로가기 켜기</string>
|
||||
<string name="preferred_tunnel">선호 터널</string>
|
||||
<string name="allow">허용</string>
|
||||
<string name="underload_packet_magic_header">언더로드 패킷 매직 헤더</string>
|
||||
@@ -269,6 +274,7 @@
|
||||
<string name="settings">설정</string>
|
||||
<string name="incorrect_pin">Pin이 잘못되었습니다</string>
|
||||
<string name="export_failed">내보내기 실패</string>
|
||||
<string name="enable_remote_app_control">원격 앱 제어 켜기</string>
|
||||
<string name="donation_closing">프로젝트에 모든 시간을 할애하는 것이 제 꿈입니다.</string>
|
||||
<string name="update_download_failed">업데이트 다운로드에 실패했습니다.</string>
|
||||
<string name="network_name">네트워크:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
<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="config_changes_saved">Configuration changes saved.</string>
|
||||
<string name="join_telegram">Join Telegram community</string>
|
||||
<string name="pin_created">Pin successfully created</string>
|
||||
@@ -28,6 +29,7 @@
|
||||
<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="allow_lan_traffic">Allow LAN traffic</string>
|
||||
@@ -133,6 +135,7 @@
|
||||
<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>
|
||||
@@ -155,6 +158,7 @@
|
||||
<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>
|
||||
@@ -254,6 +258,7 @@
|
||||
<string name="unavailable_in_mode">Unavailable in current mode</string>
|
||||
<string name="server_port">Server:Port</string>
|
||||
<string name="camera_permission_required">Camera permission required</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>
|
||||
@@ -268,6 +273,7 @@
|
||||
<string name="settings">Settings</string>
|
||||
<string name="incorrect_pin">Pin is incorrect</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="update_download_failed">Update download failed.</string>
|
||||
<string name="network_name">Network:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
<string name="name">Naam</string>
|
||||
<string name="seconds">Seconden</string>
|
||||
<string name="persistent_keepalive">Persistent keepalive</string>
|
||||
<string name="enabled_app_shortcuts">App snelkoppelingen inschakelen</string>
|
||||
<string name="random">(willekeurig)</string>
|
||||
<string name="thank_you">Bedankt voor het gebruiken van WG Tunnel!</string>
|
||||
<string name="trusted_ssid_value_description">Verstuur SSID</string>
|
||||
@@ -43,6 +44,7 @@
|
||||
<string name="auto_tunnel_title">Auto-tunnel service</string>
|
||||
<string name="open_issue">Open een melding</string>
|
||||
<string name="create_pin">Maak PIN</string>
|
||||
<string name="enable_app_lock">Schakel app-lock in</string>
|
||||
<string name="init_packet_junk_size">Initiële junk packet grootte</string>
|
||||
<string name="junk_packet_maximum_size">Junk packet maximum grootte</string>
|
||||
<string name="response_packet_junk_size">Response junk packet grootte</string>
|
||||
@@ -108,6 +110,7 @@
|
||||
<string name="enable_amnezia_compatibility">Amnezia compatibiliteit inschakelen</string>
|
||||
<string name="add_from_url">Toevoegen met link</string>
|
||||
<string name="stop_on_no_internet">Stoppen wanneer geen internet</string>
|
||||
<string name="stop_on_internet_loss">Stop tunnel bij verlies van internet</string>
|
||||
<string name="wildcards_active">Wildcards actief</string>
|
||||
<string name="use_root_shell_for_wifi">Gebruik root shell om wifi naam te bepalen, zodat locatie toestemmingen niet nodig zijn</string>
|
||||
<string name="start_auto">Start auto-tunnel</string>
|
||||
@@ -151,6 +154,7 @@
|
||||
<string name="auto_tunnel_not_running">Auto-tunnel is niet actief</string>
|
||||
<string name="auth_error">Niet toegelaten</string>
|
||||
<string name="service_running_error">Service niet actief</string>
|
||||
<string name="enable_remote_app_control">Activeer applicatie controle vanop afstand</string>
|
||||
<string name="select_all">Selecteer alles</string>
|
||||
<string name="export_success">Export gelukt</string>
|
||||
<string name="download">Download</string>
|
||||
@@ -247,6 +251,7 @@
|
||||
<string name="kofi">Ko-fi</string>
|
||||
<string name="donation_signoff">Hartelijk bedankt,</string>
|
||||
<string name="selected">Geselecteerd</string>
|
||||
<string name="global_split_tunneling">Globale split tunneling</string>
|
||||
<string name="active_network">Actief Netwerk:</string>
|
||||
<string name="range_hint">(%1$d–%2$d)</string>
|
||||
<string name="delete_active_message">Actieve tunnel kan niet worden verwijderd.</string>
|
||||
@@ -257,6 +262,7 @@
|
||||
<string name="new_tunnel">Nieuwe tunnel</string>
|
||||
<string name="kill_switch">kill switch</string>
|
||||
<string name="configuration">Configuratie</string>
|
||||
<string name="global_dns_servers">Globale DNS servers</string>
|
||||
<string name="contact">Contact</string>
|
||||
<string name="ports_must_differ">Mislukt. Proxyservers moeten verschillende poorten hebben.</string>
|
||||
<string name="backup_and_restore">Backup en herstellen</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
<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="config_changes_saved">Configuration changes saved.</string>
|
||||
<string name="join_telegram">Join Telegram community</string>
|
||||
<string name="pin_created">Pin successfully created</string>
|
||||
@@ -26,6 +27,7 @@
|
||||
<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="allow_lan_traffic">Allow LAN traffic</string>
|
||||
@@ -132,6 +134,7 @@
|
||||
<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>
|
||||
@@ -154,6 +157,7 @@
|
||||
<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>
|
||||
@@ -255,6 +259,7 @@
|
||||
<string name="unavailable_in_mode">Unavailable in current mode</string>
|
||||
<string name="server_port">Server:Port</string>
|
||||
<string name="camera_permission_required">Camera permission required</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>
|
||||
@@ -269,6 +274,7 @@
|
||||
<string name="settings">Settings</string>
|
||||
<string name="incorrect_pin">Pin is incorrect</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="update_download_failed">Update download failed.</string>
|
||||
<string name="network_name">Network:</string>
|
||||
@@ -384,6 +390,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -425,6 +432,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -458,4 +466,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -11,11 +11,13 @@
|
||||
<string name="vpn_on">Włącz VPN</string>
|
||||
<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">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>
|
||||
<string name="enter_pin">Podaj kod PIN</string>
|
||||
<string name="enable_app_lock">Włącz blokadę aplikacji</string>
|
||||
<string name="response_packet_junk_size">Rozmiar śmieciowego pakietu odpowiedzi</string>
|
||||
<string name="response_packet_magic_header">Nagłówek magicznego pakietu odpowiedzi</string>
|
||||
<string name="transport_packet_magic_header">Nagłówek magicznego pakietu transportowego</string>
|
||||
@@ -55,7 +57,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">Monitor lokalnych dzienników</string>
|
||||
<string name="local_logging">Lokalne rejestrowanie</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>
|
||||
@@ -112,10 +114,11 @@
|
||||
<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="allow_lan_traffic">Zezwól na ruch LAN</string>
|
||||
<string name="bypass_lan_for_kill_switch">Omiń LAN dla wyłącznika awaryjnego</string>
|
||||
<string name="vpn_channel_description">Kanał powiadomień o stanie VPN</string>
|
||||
<string name="auto_tunnel_channel_description">Kanał powiadomień o stanie autotunelowania</string>
|
||||
<string name="vpn_channel_description">Powiadomienia dotyczące tuneli VPN.</string>
|
||||
<string name="auto_tunnel_channel_description">Powiadomienia o zdarzeniach autotunelowania.</string>
|
||||
<string name="stop">Zatrzymaj</string>
|
||||
<string name="splt_tunneling">Tunelowanie dzielone</string>
|
||||
<string name="pre_up">Przed aktywacją</string>
|
||||
@@ -140,7 +143,7 @@
|
||||
<string name="join_telegram">Dołącz do społeczności Telegramu</string>
|
||||
<string name="error_download_failed">Nie udało się pobrać konfiguracji</string>
|
||||
<string name="service_running_error">Usługa nie działa</string>
|
||||
<string name="app_permission_title">Mostek sterujący WG Tunnel</string>
|
||||
<string name="app_permission_title">Sterowanie tunelem i funkcje autotunelowania.</string>
|
||||
<string name="enter_config_url">Wpisz adres URL konfiguracji</string>
|
||||
<string name="save">Zapisz</string>
|
||||
<string name="search">Szukaj</string>
|
||||
@@ -153,6 +156,7 @@
|
||||
<string name="config_error">Nieprawidłowa konfiguracja</string>
|
||||
<string name="dropdown">Rozwijane</string>
|
||||
<string name="auth_error">Brak autoryzacji</string>
|
||||
<string name="enable_remote_app_control">Włącz zdalne sterowanie aplikacją</string>
|
||||
<string name="add_tunnel">Dodaj tunel</string>
|
||||
<string name="select">Wybierz</string>
|
||||
<string name="dns_resolve_error">Rozwiązywanie DNS się nie powiodło</string>
|
||||
@@ -238,14 +242,14 @@
|
||||
<string name="read_failed">Nie udało się odczytać danych.</string>
|
||||
<string name="config_error_template">Błędna konfiguracja. %1$s w lokalizacji: %2$s.</string>
|
||||
<string name="ports_must_differ">Nie udało się. Serwery proxy muszą mieć różne porty.</string>
|
||||
<string name="password_no_spaces">Hasło nie może zawierać spacji.</string>
|
||||
<string name="tunnel_name_taken">Nazwa tunelu jest już używana.</string>
|
||||
<string name="password_no_spaces">Hasło nie może zawierać spacji</string>
|
||||
<string name="tunnel_name_taken">Nazwa tunelu jest już używana</string>
|
||||
<string name="range_hint">(%1$d–%2$d)</string>
|
||||
<string name="mimic_quic">Imituj QUIC</string>
|
||||
<string name="mimic_dns">Imituj DNS</string>
|
||||
<string name="mimic_sip">Imituj SIP</string>
|
||||
<string name="ddns_auto_update">Automatyczna aktualizacja dynamicznego DNS</string>
|
||||
<string name="ddns_auto_update_description">Automatyczna aktualizacja adresu IP po zmianach DDNS</string>
|
||||
<string name="ddns_auto_update">Dynamiczny DNS (DDNS)</string>
|
||||
<string name="ddns_auto_update_description">Ponownie rozwiązuje nazwę hosta serwera i aktualizuje punkty końcowe równorzędne po zmianach DDNS</string>
|
||||
<string name="mode_disabled_template">Funkcja niedostępna w trybie %1$s.</string>
|
||||
<string name="lockdown">Zablokowane</string>
|
||||
<string name="active_tunnel_update_failed">Aktualizacja aktywnego tunelu się nie powiodła</string>
|
||||
@@ -298,6 +302,8 @@
|
||||
<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>
|
||||
@@ -352,91 +358,93 @@
|
||||
<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>
|
||||
<string name="fallback_to_ipv4">Fallback to IPv4</string>
|
||||
<string name="excluded_apps">%1$s apps excluded</string>
|
||||
<string name="resolution_method">Resolution method</string>
|
||||
<string name="notification_ipv6_recovery_message">%1$s recovered IPv6 connectivity</string>
|
||||
<string name="tunnel_state_resolving_dns">Resolving DNS</string>
|
||||
<string name="handshake_template">handshake: %1$s</string>
|
||||
<string name="fallback_to_ipv4">Awaryjny powrót do IPv4</string>
|
||||
<string name="excluded_apps">Wykluczone aplikacje: %1$s</string>
|
||||
<string name="resolution_method">Metoda rozwiązania</string>
|
||||
<string name="notification_ipv6_recovery_message">%1$s odzyskał łączność IPv6</string>
|
||||
<string name="tunnel_state_resolving_dns">Rozwiązywanie DNS</string>
|
||||
<string name="handshake_template">wymiana potwierdzeń: %1$s</string>
|
||||
<string name="peer_template">peer: %1$s</string>
|
||||
<string name="errors">Errors</string>
|
||||
<string name="no_system_dns_information">No system DNS information</string>
|
||||
<string name="export_unsupported">Export is not supported on this device</string>
|
||||
<string name="tunnel_globals">Tunnel globals</string>
|
||||
<string name="sort_by_latency">Sort by latency</string>
|
||||
<string name="ready">Ready</string>
|
||||
<string name="no_system_dns_detected">No system DNS detected</string>
|
||||
<string name="name_error_empty">Tunnel name cannot be empty</string>
|
||||
<string name="notification_ipv4_fallback_message">%1$s switched to IPv4 connectivity</string>
|
||||
<string name="errors">Błędy</string>
|
||||
<string name="no_system_dns_information">Brak informacji o systemie DNS</string>
|
||||
<string name="export_unsupported">Eksport nie jest obsługiwany na tym urządzeniu</string>
|
||||
<string name="tunnel_globals">Globalne zmienne tunelu</string>
|
||||
<string name="sort_by_latency">Sortuj według opóźnienia</string>
|
||||
<string name="ready">Gotowy</string>
|
||||
<string name="no_system_dns_detected">Nie wykryto systemu DNS</string>
|
||||
<string name="name_error_empty">Nazwa tunelu nie może być pusta</string>
|
||||
<string name="notification_ipv4_fallback_message">%1$s przełączył się na łączność IPv4</string>
|
||||
<string name="notification_tunnel_status_format">%1$s • %2$s</string>
|
||||
<string name="dns_error_invalid_ip_or_host">Invalid IP address or hostname</string>
|
||||
<string name="proxy_channel_description">Notifications for proxy tunnels.</string>
|
||||
<string name="system_dns_servers">Servers: %1$s</string>
|
||||
<string name="balanced">Balanced (3s)</string>
|
||||
<string name="import_url_description">The URL must be secure and serve a .conf file.</string>
|
||||
<string name="dns_error_invalid_port">Port must be between 1 and 65535</string>
|
||||
<string name="view_configuration">View configuration</string>
|
||||
<string name="dot">DNS over TLS (DoT)</string>
|
||||
<string name="ipv6_recovery">IPv6 recovery</string>
|
||||
<string name="screen_recording_protection">Screen recording protection</string>
|
||||
<string name="dns_error_invalid_host">Host cannot be empty</string>
|
||||
<string name="toggle_sensitive_data_visibility">Toggle sensitive data visibility</string>
|
||||
<string name="ipv4_fallback">IPv4 fallback</string>
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
<string name="app_selection">App selection</string>
|
||||
<string name="tunnel_state_handshake_failure">Handshake failure</string>
|
||||
<string name="notification_dynamic_dns_message">%1$s updated after Dynamic DNS change</string>
|
||||
<string name="tunnel_state_establishing_connection">Establishing connection</string>
|
||||
<string name="prefer_ipv6">Prefer IPv6</string>
|
||||
<string name="peer_endpoints">Peer endpoints</string>
|
||||
<string name="dns_endpoint_hint">IP, hostname, or DoH URL</string>
|
||||
<string name="restore_ipv6">Restore IPv6</string>
|
||||
<string name="network">Network</string>
|
||||
<string name="fallback_to_ipv4_desc">Switch to IPv4 if IPv6 fails, without restarting the tunnel.</string>
|
||||
<string name="tunnel_state_disconnected">Disconnected</string>
|
||||
<string name="live">Real-time (1s)</string>
|
||||
<string name="uptime_template">uptime: %1$s</string>
|
||||
<string name="events">Events</string>
|
||||
<string name="peer_resolution">Peer Resolution</string>
|
||||
<string name="restore_ipv6_desc">Switch back to IPv6 when an IPv6 network is detected.</string>
|
||||
<string name="errors_channel_description">A channel for application and tunnel errors</string>
|
||||
<string name="vpn_permission_required">VPN permission required</string>
|
||||
<string name="app_channel_description">A channel for general application notifications, like version updates</string>
|
||||
<string name="automation">Automation</string>
|
||||
<string name="balance_saver">Battery Saver (10s)</string>
|
||||
<string name="pinging_servers">Pinging servers…</string>
|
||||
<string name="dynamic_dns_update">Dynamic DNS update</string>
|
||||
<string name="statistics">Statistics</string>
|
||||
<string name="events_channel_description">A channel for app events, like automation event</string>
|
||||
<string name="private_dns_automatic">Private DNS: automatic</string>
|
||||
<string name="tunnel_statistics">Live tunnel statistics</string>
|
||||
<string name="ipv6_settings">IPv6 settings</string>
|
||||
<string name="error">Error</string>
|
||||
<string name="dns_error_invalid_url">Invalid URL format</string>
|
||||
<string name="view_live_tunnel">View live tunnel</string>
|
||||
<string name="mode">Mode</string>
|
||||
<string name="tunnel_state_starting">Starting</string>
|
||||
<string name="dns_endpoint_label">DNS server endpoint</string>
|
||||
<string name="plain_dns">Plain DNS (port 53)</string>
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
<string name="export_canceled">Export canceled</string>
|
||||
<string name="prefer_ipv6_desc">Use IPv6 endpoints when the network supports it.</string>
|
||||
<string name="stop_all">Stop all</string>
|
||||
<string name="copy_from">Copy from</string>
|
||||
<string name="special_junk_packet">Special junk packet</string>
|
||||
<string name="error_socks5_port_unavailable">SOCKS5 port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="tunnel_scripting">Pre/Post script support</string>
|
||||
<string name="initializing">Initializing…</string>
|
||||
<string name="dns_error_invalid_ip_or_host">Nieprawidłowy adres IP lub nazwa hosta</string>
|
||||
<string name="proxy_channel_description">Powiadomienia dotyczące tuneli proxy.</string>
|
||||
<string name="system_dns_servers">Serwery: %1$s</string>
|
||||
<string name="balanced">Zrównoważona (3 s)</string>
|
||||
<string name="import_url_description">Adres URL musi być bezpieczny i obsługiwać plik .conf.</string>
|
||||
<string name="dns_error_invalid_port">Port musi być pomiędzy 1 a 65535</string>
|
||||
<string name="view_configuration">Wyświetl konfigurację</string>
|
||||
<string name="dot">DNS poprzez TLS (DoT)</string>
|
||||
<string name="ipv6_recovery">Odzyskiwanie IPv6</string>
|
||||
<string name="screen_recording_protection">Ochrona przed nagrywaniem ekranu</string>
|
||||
<string name="dns_error_invalid_host">Host nie może być pusty</string>
|
||||
<string name="toggle_sensitive_data_visibility">Przełącz widoczność poufnych danych</string>
|
||||
<string name="ipv4_fallback">Zapasowy IPv4</string>
|
||||
<string name="dns_error_empty">Punkt końcowy nie może być pusty</string>
|
||||
<string name="tunnel_state_connected">Połączono</string>
|
||||
<string name="dns_error_invalid_scheme">DoH musi używać HTTPS</string>
|
||||
<string name="configuration_globals">Globalne zmienne konfiguracji</string>
|
||||
<string name="private_dns_hostname">Prywatny DNS: nazwa hosta (%1$s)</string>
|
||||
<string name="app">Aplikacja</string>
|
||||
<string name="refresh_rate">Częstotliwość odświeżania statystyki</string>
|
||||
<string name="app_selection">Wybór aplikacji</string>
|
||||
<string name="tunnel_state_handshake_failure">Niepowodzenie wymiany potwierdzeń</string>
|
||||
<string name="notification_dynamic_dns_message">%1$s zaktualizowany po zmianie dynamicznego DNS</string>
|
||||
<string name="tunnel_state_establishing_connection">Nawiązywanie połączenia</string>
|
||||
<string name="prefer_ipv6">Preferuj IPv6</string>
|
||||
<string name="peer_endpoints">Punkty końcowe peerów</string>
|
||||
<string name="dns_endpoint_hint">Adres IP, nazwa hosta lub adres URL DoH</string>
|
||||
<string name="restore_ipv6">Przywróć IPv6</string>
|
||||
<string name="network">Sieć</string>
|
||||
<string name="fallback_to_ipv4_desc">W przypadku awarii protokołu IPv6 przełącz się na protokół IPv4 bez ponownego uruchamiania tunelu.</string>
|
||||
<string name="tunnel_state_disconnected">Rozłączono</string>
|
||||
<string name="live">Czasu rzeczywistego (1 s)</string>
|
||||
<string name="uptime_template">czas pracy: %1$s</string>
|
||||
<string name="events">Zdarzenia</string>
|
||||
<string name="peer_resolution">Rozwiązanie peerów</string>
|
||||
<string name="restore_ipv6_desc">Po wykryciu sieci IPv6 przełącz się z powrotem na IPv6.</string>
|
||||
<string name="errors_channel_description">Kanał dla błędów aplikacji i tuneli</string>
|
||||
<string name="vpn_permission_required">Wymagane zezwolenie VPN</string>
|
||||
<string name="app_channel_description">Kanał powiadomień ogólnych aplikacji, takich jak aktualizacje wersji</string>
|
||||
<string name="automation">Automatyzacja</string>
|
||||
<string name="balance_saver">Oszczędzanie baterii (10 s)</string>
|
||||
<string name="pinging_servers">Pingowanie serwerów…</string>
|
||||
<string name="dynamic_dns_update">Aktualizacja dynamicznego DNS</string>
|
||||
<string name="statistics">Statystyka</string>
|
||||
<string name="events_channel_description">Kanał dla zdarzeń aplikacji, takich jak zdarzenia automatyzacji</string>
|
||||
<string name="private_dns_automatic">Prywatny DNS: automatyczny</string>
|
||||
<string name="tunnel_statistics">Statystyka aktywnego tunelu</string>
|
||||
<string name="ipv6_settings">Ustawienia IPv6</string>
|
||||
<string name="error">Błąd</string>
|
||||
<string name="dns_error_invalid_url">Nieprawidłowy format adresu URL</string>
|
||||
<string name="view_live_tunnel">Wyświetl aktywny tunel</string>
|
||||
<string name="mode">Tryb</string>
|
||||
<string name="tunnel_state_starting">Uruchamianie</string>
|
||||
<string name="dns_endpoint_label">Punkt końcowy serwera DNS</string>
|
||||
<string name="plain_dns">Zwykły DNS (port 53)</string>
|
||||
<string name="included_apps">Uwzględnione aplikacje: %1$s</string>
|
||||
<string name="error_http_port_unavailable">Port nasłuchiwania HTTP %1$d jest już używany.\nWybierz inny port.</string>
|
||||
<string name="current_system_dns">Bieżący system DNS</string>
|
||||
<string name="global_amnezia_configuration">Globalna konfiguracja Amnezia</string>
|
||||
<string name="security">Bezpieczeństwo</string>
|
||||
<string name="more_options">Więcej opcji</string>
|
||||
<string name="status_template">stan: %1$s</string>
|
||||
<string name="export_canceled">Eksport anulowano</string>
|
||||
<string name="prefer_ipv6_desc">Używaj punktów końcowych IPv6, jeśli sieć to obsługuje.</string>
|
||||
<string name="stop_all">Zatrzymaj wszystko</string>
|
||||
<string name="copy_from">Skopiuj z</string>
|
||||
<string name="special_junk_packet">Specjalny pakiet śmieciowy</string>
|
||||
<string name="error_socks5_port_unavailable">Port SOCKS5 %1$d jest już zajęty.\nWybierz inny port.</string>
|
||||
<string name="tunnel_scripting">Obsługa skryptu przed/po</string>
|
||||
<string name="initializing">Inicjalizacja…</string>
|
||||
<string name="errors_channel_id" translatable="false">Errors Channel</string>
|
||||
<string name="s2" translatable="false">S2</string>
|
||||
<string name="jc" translatable="false">Jc</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
<string name="app_name">WG Tunnel</string>
|
||||
<string name="error_file_extension">O ficheiro não é .conf ou .zip</string>
|
||||
<string name="prominent_background_location_message">Este recurso precisa de permissões de localização em segundo plano para ativar o monitoramento do SSID da rede Wi-Fi mesmo quando a aplicação está fechado. Para mais pormenores, por favor veja a Política de Privacidade no ecrã de Suporte.</string>
|
||||
<string name="enabled_app_shortcuts">Ativar atalhos de aplicações</string>
|
||||
<string name="tunnels">Túneis</string>
|
||||
<string name="privacy_policy">Política de Privacidade</string>
|
||||
<string name="okay">OK</string>
|
||||
@@ -70,6 +71,7 @@
|
||||
<string name="auto">(automático)</string>
|
||||
<string name="pin_created">Pin criado com sucesso</string>
|
||||
<string name="create_pin">Criar um pin</string>
|
||||
<string name="enable_app_lock">Ligar bloqueio de aplicação</string>
|
||||
<string name="edit_tunnel">Editar túnel</string>
|
||||
<string name="set_primary_tunnel">Selecionar como túnel principal</string>
|
||||
<string name="support">Suporte</string>
|
||||
@@ -108,6 +110,7 @@
|
||||
<string name="donate">Contribua com esse projeto</string>
|
||||
<string name="local_logging">Registro local</string>
|
||||
<string name="stop_on_no_internet">Interromper quando não há internet</string>
|
||||
<string name="stop_on_internet_loss">Interrompa o túnel quando a internet não estiver disponível</string>
|
||||
<string name="native_kill_switch">Interruptor de desligamento padrão</string>
|
||||
<string name="allow_lan_traffic">Permitir tráfego LAN</string>
|
||||
<string name="bypass_lan_for_kill_switch">Ignorar LAN no interruptor de desligamento</string>
|
||||
@@ -198,6 +201,7 @@
|
||||
<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>
|
||||
@@ -212,6 +216,7 @@
|
||||
<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>
|
||||
@@ -281,6 +286,7 @@
|
||||
<string name="fix">Fix</string>
|
||||
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</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="update_download_failed">Update download failed.</string>
|
||||
<string name="network_name">Network:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
<string name="okay">OK</string>
|
||||
<string name="tunnel_on_ethernet">Túnel na ethernet</string>
|
||||
<string name="create_import">Criar do zero</string>
|
||||
<string name="enabled_app_shortcuts">Ativar atalhos de aplicações</string>
|
||||
<string name="tunnel_on_wifi">Túnel em Wi-Fi não confiável</string>
|
||||
<string name="email_subject">Apoio para o WG Tunnel</string>
|
||||
<string name="email_chooser">Enviar um email…</string>
|
||||
@@ -33,6 +34,7 @@
|
||||
<string name="auto">(automático)</string>
|
||||
<string name="pin_created">Pin criado com sucesso</string>
|
||||
<string name="enter_pin">Digite o seu pin</string>
|
||||
<string name="enable_app_lock">Ligar bloqueio de aplicação</string>
|
||||
<string name="edit_tunnel">Editar túnel</string>
|
||||
<string name="junk_packet_count">Quantidade de pacotes-lixo</string>
|
||||
<string name="junk_packet_minimum_size">Tamanho mínimo de pacote-lixo</string>
|
||||
@@ -109,6 +111,7 @@
|
||||
<string name="monitoring_state_changes">Monitorar estado de alterações</string>
|
||||
<string name="donate">Contribua com projeto</string>
|
||||
<string name="add_from_clipboard">Adicionar da área de transferência</string>
|
||||
<string name="stop_on_internet_loss">Interrompa o túnel quando a internet não estiver disponível</string>
|
||||
<string name="stop">pausar</string>
|
||||
<string name="splt_tunneling">Tunelamento dividido</string>
|
||||
<string name="show_scripts">Mostrar scripts</string>
|
||||
@@ -199,6 +202,7 @@
|
||||
<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>
|
||||
@@ -212,6 +216,7 @@
|
||||
<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>
|
||||
@@ -281,6 +286,7 @@
|
||||
<string name="fix">Fix</string>
|
||||
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</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="update_download_failed">Update download failed.</string>
|
||||
<string name="network_name">Network:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
<string name="all">Все</string>
|
||||
<string name="no_email_detected">Приложение для отправки почты не найдено</string>
|
||||
<string name="enter_pin">Введите PIN-код</string>
|
||||
<string name="enable_app_lock">Защита приложения</string>
|
||||
<string name="settings">Настройки</string>
|
||||
<string name="support">Поддержка</string>
|
||||
<string name="init_packet_junk_size">S1</string>
|
||||
@@ -62,6 +63,7 @@
|
||||
<string name="yes">Да</string>
|
||||
<string name="prominent_background_location_message">Эта функция требует фоновый доступ к местоположению для отслеживания имён сетей Wi-Fi, даже когда приложение закрыто. Для получения дополнительной информации, прочтите политику конфиденциальности на экране поддержки.</string>
|
||||
<string name="copy_public_key">Копировать открытый ключ</string>
|
||||
<string name="enabled_app_shortcuts">Ярлыки приложения</string>
|
||||
<string name="open_issue">Сообщить о проблеме</string>
|
||||
<string name="incorrect_pin">Некорректный PIN-код</string>
|
||||
<string name="pin_created">PIN-код создан успешно</string>
|
||||
@@ -113,6 +115,7 @@
|
||||
<string name="show_scripts">Показать сценарии</string>
|
||||
<string name="quick_actions">Быстрые действия</string>
|
||||
<string name="stop_on_no_internet">Остановить без интернета</string>
|
||||
<string name="stop_on_internet_loss">Остановить туннель при потере интернета</string>
|
||||
<string name="native_kill_switch">Штатное экстренное отключение</string>
|
||||
<string name="allow_lan_traffic">Обход LAN</string>
|
||||
<string name="bypass_lan_for_kill_switch">Разрешать трафик LAN при экстренном отключении</string>
|
||||
@@ -154,6 +157,7 @@
|
||||
<string name="copy">Копировать</string>
|
||||
<string name="delete">Удалить</string>
|
||||
<string name="export_failed">Экспорт не выполнен</string>
|
||||
<string name="enable_remote_app_control">Удалённое управление приложением</string>
|
||||
<string name="error_download_failed">Невозможно скачать конфигурацию</string>
|
||||
<string name="select_all">Выбрать все</string>
|
||||
<string name="export_success">Экспорт успешно выполнен</string>
|
||||
@@ -277,12 +281,14 @@
|
||||
<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="about">О приложении</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
<string name="seconds">Sekundy</string>
|
||||
<string name="persistent_keepalive">Trvalé udržanie spojenia</string>
|
||||
<string name="cancel">Zrušiť</string>
|
||||
<string name="enabled_app_shortcuts">Povoliť skratky aplikácií</string>
|
||||
<string name="unknown_error">Došlo k neznámej chybe</string>
|
||||
<string name="tunnel_on_wifi">Tunel na nedôveryhodnej wifi</string>
|
||||
<string name="email_subject">Podpora tunela WG</string>
|
||||
@@ -70,6 +71,7 @@
|
||||
<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">Zapnúť App Lock</string>
|
||||
<string name="join_telegram">Join Telegram community</string>
|
||||
<string name="pin_created">Pin úspešne vytvorený</string>
|
||||
<string name="post_up">Post up</string>
|
||||
@@ -80,6 +82,7 @@
|
||||
<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="allow_lan_traffic">Allow LAN traffic</string>
|
||||
@@ -163,6 +166,7 @@
|
||||
<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>
|
||||
@@ -180,6 +184,7 @@
|
||||
<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">Motív zobrazenia</string>
|
||||
<string name="contact">Contact</string>
|
||||
<string name="ports_must_differ">Failed. Proxies must have different ports.</string>
|
||||
@@ -271,6 +276,7 @@
|
||||
<string name="settings">Nastavenia</string>
|
||||
<string name="incorrect_pin">Pin je nesprávny</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="update_download_failed">Update download failed.</string>
|
||||
<string name="network_name">Network:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
<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="config_changes_saved">Configuration changes saved.</string>
|
||||
<string name="join_telegram">Join Telegram community</string>
|
||||
<string name="pin_created">Pin successfully created</string>
|
||||
@@ -26,6 +27,7 @@
|
||||
<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="allow_lan_traffic">Allow LAN traffic</string>
|
||||
@@ -131,6 +133,7 @@
|
||||
<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>
|
||||
@@ -153,6 +156,7 @@
|
||||
<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>
|
||||
@@ -253,6 +257,7 @@
|
||||
<string name="unavailable_in_mode">Unavailable in current mode</string>
|
||||
<string name="server_port">Server:Port</string>
|
||||
<string name="camera_permission_required">Camera permission required</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>
|
||||
@@ -267,6 +272,7 @@
|
||||
<string name="settings">Settings</string>
|
||||
<string name="incorrect_pin">Pin is incorrect</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="update_download_failed">Update download failed.</string>
|
||||
<string name="network_name">Network:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
<string name="listen_port">துறைமுகம் கேளுங்கள்</string>
|
||||
<string name="persistent_keepalive">தொடர்ச்சியான கீப்அலிவ்</string>
|
||||
<string name="cancel">ரத்துசெய்</string>
|
||||
<string name="enabled_app_shortcuts">பயன்பாட்டு குறுக்குவழிகளை இயக்கவும்</string>
|
||||
<string name="unknown_error">தெரியாத பிழை ஏற்பட்டது</string>
|
||||
<string name="tunnel_on_wifi">நம்பத்தகாத வைஃபை மீது சுரங்கப்பாதை</string>
|
||||
<string name="email_subject">WG சுரங்கப்பாதை உதவி</string>
|
||||
@@ -47,6 +48,7 @@
|
||||
<string name="pin_created">முள் வெற்றிகரமாக உருவாக்கப்பட்டது</string>
|
||||
<string name="enter_pin">உங்கள் முள் உள்ளிடவும்</string>
|
||||
<string name="create_pin">முள் உருவாக்கவும்</string>
|
||||
<string name="enable_app_lock">பயன்பாட்டு பூட்டை இயக்கவும்</string>
|
||||
<string name="settings">அமைப்புகள்</string>
|
||||
<string name="support">உதவி</string>
|
||||
<string name="junk_packet_count">குப்பை பாக்கெட் எண்ணிக்கை</string>
|
||||
@@ -90,6 +92,7 @@
|
||||
<string name="local_logging">உள்ளூர்வாசிகள்</string>
|
||||
<string name="add_from_clipboard">கிளிப்போர்டில் இருந்து சேர்க்கவும்</string>
|
||||
<string name="stop_on_no_internet">இணையத்தில் நிறுத்துங்கள்</string>
|
||||
<string name="stop_on_internet_loss">இணைய இழப்பில் சுரங்கப்பாதையை நிறுத்துங்கள்</string>
|
||||
<string name="native_kill_switch">சொந்த கொலை சுவிட்ச்</string>
|
||||
<string name="allow_lan_traffic">லேன் போக்குவரத்தை அனுமதிக்கவும்</string>
|
||||
<string name="bypass_lan_for_kill_switch">கொலை சுவிட்சுக்கு பைபாச் லேன்</string>
|
||||
@@ -154,6 +157,7 @@
|
||||
<string name="dns_resolve_error">டிஎன்எச் தீர்மானம் பிழை</string>
|
||||
<string name="auth_error">அங்கீகரிக்கப்பட்ட பிழை இல்லை</string>
|
||||
<string name="service_running_error">பணி இயங்கும் பிழை</string>
|
||||
<string name="enable_remote_app_control">தொலைநிலை பயன்பாட்டுக் கட்டுப்பாட்டை இயக்கவும்</string>
|
||||
<string name="flavor_template">சுவை: %1$s</string>
|
||||
<string name="add_from_url">முகவரி இலிருந்து சேர்க்கவும்</string>
|
||||
<string name="delete_logs">பதிவுகளை நீக்கவும் அழிக்கவும்</string>
|
||||
@@ -228,6 +232,7 @@
|
||||
<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>
|
||||
@@ -240,6 +245,7 @@
|
||||
<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>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
<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="config_changes_saved">Configuration changes saved.</string>
|
||||
<string name="join_telegram">Join Telegram community</string>
|
||||
<string name="pin_created">Pin successfully created</string>
|
||||
@@ -26,6 +27,7 @@
|
||||
<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="allow_lan_traffic">Allow LAN traffic</string>
|
||||
@@ -132,6 +134,7 @@
|
||||
<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>
|
||||
@@ -154,6 +157,7 @@
|
||||
<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>
|
||||
@@ -254,6 +258,7 @@
|
||||
<string name="unavailable_in_mode">Unavailable in current mode</string>
|
||||
<string name="server_port">Server:Port</string>
|
||||
<string name="camera_permission_required">Camera permission required</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>
|
||||
@@ -268,6 +273,7 @@
|
||||
<string name="settings">Settings</string>
|
||||
<string name="incorrect_pin">Pin is incorrect</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="update_download_failed">Update download failed.</string>
|
||||
<string name="network_name">Network:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
<string name="seconds">Saniye</string>
|
||||
<string name="persistent_keepalive">Kalıcı canlı tutma</string>
|
||||
<string name="cancel">İptal</string>
|
||||
<string name="enabled_app_shortcuts">Uygulama kısayollarını etkinleştir</string>
|
||||
<string name="unknown_error">Bilinmeyen bir hata oluştu</string>
|
||||
<string name="tunnel_on_wifi">Güvenilmeyen wifi’da tünel</string>
|
||||
<string name="my_email" translatable="false">support@zaneschepke.com</string>
|
||||
@@ -72,6 +73,7 @@
|
||||
<string name="pin_created">Pin başarıyla oluşturuldu</string>
|
||||
<string name="enter_pin">Pin’inizi girin</string>
|
||||
<string name="create_pin">Pin oluştur</string>
|
||||
<string name="enable_app_lock">Uygulama kilidini etkinleştir</string>
|
||||
<string name="set_primary_tunnel">Birincil tünel olarak ayarla</string>
|
||||
<string name="edit_tunnel">Tüneli düzenle</string>
|
||||
<string name="settings">Ayarlar</string>
|
||||
@@ -119,6 +121,7 @@
|
||||
<string name="local_logging">Yerel günlüğe kaydetme</string>
|
||||
<string name="add_from_clipboard">Panodan ekle</string>
|
||||
<string name="stop_on_no_internet">İnternet olmadığında durdur</string>
|
||||
<string name="stop_on_internet_loss">İnternet kaybında tüneli durdur</string>
|
||||
<string name="native_kill_switch">Yerel kill switch</string>
|
||||
<string name="allow_lan_traffic">LAN trafiğine izin ver</string>
|
||||
<string name="bypass_lan_for_kill_switch">Kill switch için LAN’ı atla</string>
|
||||
@@ -216,6 +219,7 @@
|
||||
<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>
|
||||
@@ -229,6 +233,7 @@
|
||||
<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>
|
||||
@@ -292,6 +297,7 @@
|
||||
<string name="fix">Fix</string>
|
||||
<string name="tunnel_running_name_message">Name unchangeable while tunnel is active.</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="update_download_failed">Update download failed.</string>
|
||||
<string name="network_name">Network:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
<string name="preshared_key">Загальний ключ</string>
|
||||
<string name="seconds">Секунд</string>
|
||||
<string name="persistent_keepalive">Підтримка роботи тунелю (keepalive)</string>
|
||||
<string name="enabled_app_shortcuts">Дозволити ярлики</string>
|
||||
<string name="unknown_error">Невідома помилка</string>
|
||||
<string name="tunnel_on_wifi">Тунелювати недовірені мережі Wi-Fi</string>
|
||||
<string name="email_subject">Підтримка WG-Tunnel</string>
|
||||
@@ -66,6 +67,7 @@
|
||||
<string name="pin_created">PIN-код створено успішно</string>
|
||||
<string name="enter_pin">Введіть PIN-код</string>
|
||||
<string name="create_pin">Створити PIN-код</string>
|
||||
<string name="enable_app_lock">Увімкнути блокування додатку</string>
|
||||
<string name="edit_tunnel">Редагувати тунель</string>
|
||||
<string name="set_primary_tunnel">Встановити як основний тунель</string>
|
||||
<string name="support">Підтримка</string>
|
||||
@@ -130,6 +132,7 @@
|
||||
<string name="local_logging">Локальне ведення журналу</string>
|
||||
<string name="start_auto">Запустити автотунель</string>
|
||||
<string name="stop_auto">Зупинити автотунель</string>
|
||||
<string name="stop_on_internet_loss">Зупинити тунель під час втрати інтернету</string>
|
||||
<string name="vpn_channel_description">Канал сповіщень про стан VPN</string>
|
||||
<string name="enable_amnezia_compatibility">Включити сумісність із Amnezia</string>
|
||||
<string name="enter_config_url">Введіть URL-адресу конфігурації</string>
|
||||
@@ -205,6 +208,7 @@
|
||||
<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>
|
||||
@@ -218,6 +222,7 @@
|
||||
<string name="kill_switch">kill switch</string>
|
||||
<string name="configuration">Конфігурація</string>
|
||||
<string name="drag_handle">Елемент перетягування</string>
|
||||
<string name="global_dns_servers">Глобальні DNS сервери</string>
|
||||
<string name="contact">Зв\'язок</string>
|
||||
<string name="ports_must_differ">Помилка. Проксі мають мати різні порти.</string>
|
||||
<string name="join_matrix">Приєднуйтесь до спільноти Matrix</string>
|
||||
@@ -283,6 +288,7 @@
|
||||
<string name="fix">Виправлення</string>
|
||||
<string name="tunnel_running_name_message">Неможливо змінити назву, поки тунель активний.</string>
|
||||
<string name="export_failed">Експорт не вдався</string>
|
||||
<string name="enable_remote_app_control">Увімкнути дистанційне керування застосунком</string>
|
||||
<string name="donation_closing">Присвятити весь свій робочий час цьому проєкту — моя мрія.</string>
|
||||
<string name="update_download_failed">Не вдалося завантажити оновлення.</string>
|
||||
<string name="network_name">Мережа:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
<string name="random">(بے ترتیب)</string>
|
||||
<string name="preshared_key">پہلے سے مشترکہ کلید</string>
|
||||
<string name="cancel">منسوخ</string>
|
||||
<string name="enabled_app_shortcuts">ایپ شارٹ کٹس کو فعال کریں</string>
|
||||
<string name="tunnel_on_wifi">ناقابل اعتماد وائی فائی پر ٹنل</string>
|
||||
<string name="email_subject">ڈبلیو جی ٹنل سپورٹ</string>
|
||||
<string name="docs_description">دستاویزات پڑھیں</string>
|
||||
@@ -81,6 +82,7 @@
|
||||
<string name="donate">پروجیکٹ کے لیے عطیہ کریں</string>
|
||||
<string name="local_logging">مقامی لاگنگ</string>
|
||||
<string name="stop_on_no_internet">بغیر انٹرنیٹ پر روکیں</string>
|
||||
<string name="stop_on_internet_loss">انٹرنیٹ لاس پر ٹنل روکیں</string>
|
||||
<string name="allow_lan_traffic">لین ٹریفک کی اجازت دیں</string>
|
||||
<string name="splt_tunneling">سپلٹ ٹنلنگ</string>
|
||||
<string name="show_scripts">اسکرپٹس دکھائیں</string>
|
||||
@@ -111,6 +113,7 @@
|
||||
<string name="response_packet_junk_size">رسپانس پیکٹ جنک سائز</string>
|
||||
<string name="junk_packet_minimum_size">جنک پیکٹ کا کم از کم سائز</string>
|
||||
<string name="edit_tunnel">ٹنل میں ترمیم کریں</string>
|
||||
<string name="enable_app_lock">ایپ لاک فعال کریں</string>
|
||||
<string name="logs">لاگز</string>
|
||||
<string name="restart_at_boot">بوٹ پر دوبارہ شروع کریں</string>
|
||||
<string name="support">سپورٹ</string>
|
||||
@@ -132,6 +135,7 @@
|
||||
<string name="vpn_channel_description">وی پی این ریاستی اطلاعات کے لیے ایک چینل</string>
|
||||
<string name="hide_scripts">اسکرپٹس چھپائیں</string>
|
||||
<string name="add_from_clipboard">کلپ بورڈ سے شامل کریں</string>
|
||||
<string name="enable_remote_app_control">ریموٹ ایپ کنٹرول فعال کریں</string>
|
||||
<string name="app_permission_title">ڈبلیو جی ٹنل کنٹرول برج</string>
|
||||
<string name="app_permission_description">ٹنل اور خودکار ٹنل کی خصوصیات کو کنٹرول کریں۔</string>
|
||||
<string name="add_from_url">یو آر ایل سے شامل کریں</string>
|
||||
@@ -277,12 +281,14 @@
|
||||
<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="about">About</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
<string name="delete_tunnel">Delete tunnel</string>
|
||||
<string name="tunnel_mobile_data">Tunnel trên dữ liệu di động</string>
|
||||
<string name="logs">Logs</string>
|
||||
<string name="enable_app_lock">Enable app lock</string>
|
||||
<string name="config_changes_saved">Các thay đổi cấu hình đã được lưu.</string>
|
||||
<string name="join_telegram">Join Telegram community</string>
|
||||
<string name="pin_created">Pin successfully created</string>
|
||||
@@ -28,6 +29,7 @@
|
||||
<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="allow_lan_traffic">Allow LAN traffic</string>
|
||||
@@ -132,6 +134,7 @@
|
||||
<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>
|
||||
@@ -154,6 +157,7 @@
|
||||
<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>
|
||||
@@ -253,6 +257,7 @@
|
||||
<string name="unavailable_in_mode">Unavailable in current mode</string>
|
||||
<string name="server_port">Server:Port</string>
|
||||
<string name="camera_permission_required">Camera permission required</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>
|
||||
@@ -267,6 +272,7 @@
|
||||
<string name="settings">Settings</string>
|
||||
<string name="incorrect_pin">Pin is incorrect</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="update_download_failed">Update download failed.</string>
|
||||
<string name="network_name">Network:</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
<string name="private_key">私钥</string>
|
||||
<string name="listen_port">监听端口</string>
|
||||
<string name="optional">(可选)</string>
|
||||
<string name="enabled_app_shortcuts">创建桌面快捷方式</string>
|
||||
<string name="docs_description">阅读文档</string>
|
||||
<string name="email_description">给作者发邮件</string>
|
||||
<string name="error_root_denied">root 权限未开启</string>
|
||||
@@ -56,6 +57,7 @@
|
||||
<string name="yes">是</string>
|
||||
<string name="all">全部</string>
|
||||
<string name="no_email_detected">未安装邮件应用</string>
|
||||
<string name="enable_app_lock">锁定应用</string>
|
||||
<string name="settings">设置</string>
|
||||
<string name="support">支持</string>
|
||||
<string name="junk_packet_minimum_size">无效包最小值</string>
|
||||
@@ -111,6 +113,7 @@
|
||||
<string name="donate">捐赠</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>
|
||||
<string name="auto_tunnel_channel_description">自动隧道状态通知频道</string>
|
||||
<string name="stop">停止</string>
|
||||
@@ -151,6 +154,7 @@
|
||||
<string name="copy">复制</string>
|
||||
<string name="config_error">无效配置</string>
|
||||
<string name="service_running_error">服务未运行</string>
|
||||
<string name="enable_remote_app_control">开启远程应用控制</string>
|
||||
<string name="join_matrix">加入 Matrix 社区</string>
|
||||
<string name="app_permission_description">控制隧道和自动隧道功能.</string>
|
||||
<string name="app_permission_title">控制隧道和自动隧道功能。</string>
|
||||
@@ -296,6 +300,8 @@
|
||||
<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>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
<string name="enter_pin">輸入 PIN</string>
|
||||
<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="edit_tunnel">編輯隧道</string>
|
||||
<string name="vpn_settings">系統 VPN 設定</string>
|
||||
@@ -63,6 +64,7 @@
|
||||
<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>
|
||||
<string name="add_from_clipboard">從剪貼簿新增</string>
|
||||
<string name="stop">停止</string>
|
||||
<string name="exclude_lan">排除 LAN</string>
|
||||
@@ -81,6 +83,7 @@
|
||||
<string name="vpn_off">VPN 已關閉</string>
|
||||
<string name="error_root_denied">無法取得 root 權限</string>
|
||||
<string name="root_accepted">已取得 root 權限</string>
|
||||
<string name="enable_remote_app_control">啟用遠端應用程式控制</string>
|
||||
<string name="join_telegram">加入 Telegram 社群</string>
|
||||
<string name="add_from_url">從 URL 新增</string>
|
||||
<string name="join_matrix">加入 Matrix 社群</string>
|
||||
@@ -245,6 +248,7 @@
|
||||
<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>
|
||||
@@ -256,6 +260,7 @@
|
||||
<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>
|
||||
@@ -290,6 +295,7 @@
|
||||
<string name="mimic_sip">模仿 SIP</string>
|
||||
<string name="unavailable_in_mode">當前模式下不可用</string>
|
||||
<string name="server_port">伺服器:連接埠</string>
|
||||
<string name="enabled_app_shortcuts">啟用應用程式捷徑</string>
|
||||
<string name="preferred_tunnel">首選隧道</string>
|
||||
<string name="tunnel_running_name_message">隧道正在使用時無法變更名稱。</string>
|
||||
<string name="donation_closing">為您全職開發本專案是我的夢想。</string>
|
||||
@@ -385,6 +391,7 @@
|
||||
<string name="dns_error_empty">Endpoint cannot be empty</string>
|
||||
<string name="tunnel_state_connected">Connected</string>
|
||||
<string name="dns_error_invalid_scheme">DoH must use HTTPS</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="private_dns_hostname">Private DNS: hostname (%1$s)</string>
|
||||
<string name="app">App</string>
|
||||
<string name="refresh_rate">Statistics refresh rate</string>
|
||||
@@ -426,6 +433,7 @@
|
||||
<string name="included_apps">%1$s apps included</string>
|
||||
<string name="error_http_port_unavailable">HTTP listener port %1$d is already in use.\nPlease choose a different port.</string>
|
||||
<string name="current_system_dns">Current system DNS</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="more_options">More options</string>
|
||||
<string name="status_template">status: %1$s</string>
|
||||
@@ -459,4 +467,7 @@
|
||||
<string name="i4" translatable="false">I4</string>
|
||||
<string name="s1" translatable="false">S1</string>
|
||||
<string name="h4" translatable="false">H4</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
</resources>
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
<string name="seconds">Seconds</string>
|
||||
<string name="persistent_keepalive">Persistent keepalive</string>
|
||||
<string name="cancel">Cancel</string>
|
||||
<string name="enabled_app_shortcuts">Enable app shortcuts</string>
|
||||
<string name="unknown_error">Unknown error occurred</string>
|
||||
<string name="tunnel_on_wifi">Tunnel on Wi-Fi</string>
|
||||
<string name="my_email" translatable="false">support@zaneschepke.com</string>
|
||||
@@ -82,6 +83,7 @@
|
||||
<string name="pin_created">Pin successfully created</string>
|
||||
<string name="enter_pin">Enter PIN</string>
|
||||
<string name="create_pin">Create PIN</string>
|
||||
<string name="enable_app_lock">Enable app lock</string>
|
||||
<string name="set_primary_tunnel">Tunnel used when no preferred tunnel is configured</string>
|
||||
<string name="edit_tunnel">Edit tunnel</string>
|
||||
<string name="settings">Settings</string>
|
||||
@@ -127,7 +129,8 @@
|
||||
<string name="donate">Donate to project</string>
|
||||
<string name="local_logging">Local logging</string>
|
||||
<string name="add_from_clipboard">Add from clipboard</string>
|
||||
<string name="stop_on_no_internet">Stop on no network</string>
|
||||
<string name="stop_on_no_internet">Stop on no internet</string>
|
||||
<string name="stop_on_internet_loss">Stop tunnel on internet loss</string>
|
||||
<string name="native_kill_switch">Native kill switch</string>
|
||||
<string name="allow_lan_traffic">Allow LAN traffic</string>
|
||||
<string name="bypass_lan_for_kill_switch">Bypass LAN for kill switch</string>
|
||||
@@ -135,7 +138,7 @@
|
||||
<string name="auto_tunnel_channel_id" translatable="false">Auto-tunnel Channel</string>
|
||||
<string name="auto_tunnel_channel_description">Notifications for auto-tunnel events.</string>
|
||||
<string name="stop">Stop</string>
|
||||
<string name="splt_tunneling">App split tunneling</string>
|
||||
<string name="splt_tunneling">Split tunneling</string>
|
||||
<string name="show_scripts">Show scripts</string>
|
||||
<string name="pre_up">Pre up</string>
|
||||
<string name="post_up">Post up</string>
|
||||
@@ -176,6 +179,7 @@
|
||||
<string name="dns_resolve_error">DNS resolution failed</string>
|
||||
<string name="auth_error">Unauthorized</string>
|
||||
<string name="service_running_error">Service not running</string>
|
||||
<string name="enable_remote_app_control">Enable remote app control</string>
|
||||
<string name="select_all">Select all</string>
|
||||
<string name="export_success">Export success</string>
|
||||
<string name="download">Download</string>
|
||||
@@ -272,7 +276,7 @@
|
||||
<string name="active_tunnel_update_failed">Active tunnel update failed</string>
|
||||
<string name="ddns_auto_update">Dynamic DNS (DDNS)</string>
|
||||
<string name="ddns_auto_update_description">
|
||||
Automatically update the server endpoint when its IP changes
|
||||
Re-resolves the server hostname and updates peer endpoints on DDNS changes
|
||||
</string>
|
||||
<string name="mode_disabled_template">Feature unavailable in %1$s mode.</string>
|
||||
<string name="lockdown">Lockdown</string>
|
||||
@@ -354,6 +358,9 @@
|
||||
<string name="metered_tunnel">Metered tunnel</string>
|
||||
<string name="lockdown_settings">Lockdown settings</string>
|
||||
<string name="unavailable_in_mode">Unavailable in current mode</string>
|
||||
<string name="global_split_tunneling">Global split tunneling</string>
|
||||
<string name="global_dns_servers">Global DNS servers</string>
|
||||
<string name="global_amnezia_configuration">Global Amnezia configuration</string>
|
||||
<string name="dual_stack">Dual-stack</string>
|
||||
<string name="dual_stack_description">Tunnels must support IPv4 and IPv6</string>
|
||||
<string name="save_changes">Save changes</string>
|
||||
@@ -468,6 +475,7 @@
|
||||
|
||||
<string name="error">Error</string>
|
||||
<string name="tunnel_globals">Tunnel globals</string>
|
||||
<string name="configuration_globals">Configuration globals</string>
|
||||
<string name="screen_recording_protection">Screen recording protection</string>
|
||||
<string name="security">Security</string>
|
||||
<string name="ready">Ready</string>
|
||||
@@ -496,33 +504,14 @@
|
||||
<string name="tunnel_state_establishing_connection">Establishing connection</string>
|
||||
<string name="peer_endpoints">Peer endpoints</string>
|
||||
<string name="prefer_ipv6">Prefer IPv6</string>
|
||||
<string name="prefer_ipv6_desc">Use IPv6 endpoints when the network supports it</string>
|
||||
<string name="prefer_ipv6_desc">Use IPv6 endpoints when the network supports it.</string>
|
||||
|
||||
<string name="fallback_to_ipv4">Fallback to IPv4</string>
|
||||
<string name="fallback_to_ipv4_desc">Switch to IPv4 if IPv6 fails, without restarting the tunnel</string>
|
||||
<string name="fallback_to_ipv4_desc">Switch to IPv4 if IPv6 fails, without restarting the tunnel.</string>
|
||||
|
||||
<string name="restore_ipv6">Restore IPv6</string>
|
||||
<string name="restore_ipv6_desc">Switch back to IPv6 when an IPv6 network is detected.</string>
|
||||
<string name="no_tunnels_yet">Nothing here… yet.</string>
|
||||
<string name="getting_started_guidance">Use the + button to import a tunnel, or view the getting started guide.</string>
|
||||
<string name="getting_started_guide_link">view the getting started guide</string>
|
||||
<string name="metered_tunnel_desc">Mark this tunnel as metered so apps treat it like mobile data</string>
|
||||
<string name="local_proxy">Local proxy</string>
|
||||
<string name="local_proxy_desc">Expose the tunnel as a local SOCKS5/HTTP proxy</string>
|
||||
<string name="lockdown_desc">Permanent kill switch that blocks all non-tunnel traffic</string>
|
||||
<string name="vpn_desc">Standard system-wide VPN mode</string>
|
||||
<string name="stop_on_no_internet_desc">Stop the tunnel when the device has no network connection</string>
|
||||
<string name="start_on_boot_desc">Start auto-tunnel automatically on boot</string>
|
||||
<string name="local_logging_desc">Local log storage with live viewer</string>
|
||||
<string name="tunnel_globals_desc">Global configuration overrides for all tunnels</string>
|
||||
<string name="tunnel_configuration">Tunnel configuration</string>
|
||||
<string name="amnezia_configuration">Amnezia configuration</string>
|
||||
<string name="screen_recording_protection_desc">Block screen recording on screens with sensitive data</string>
|
||||
<string name="app_lock">App lock</string>
|
||||
<string name="app_lock_desc">Require a PIN to access the app</string>
|
||||
<string name="app_shortcuts">App shortcuts</string>
|
||||
<string name="app_shortcuts_desc">Add quick actions to the app icon</string>
|
||||
<string name="remote_control">Remote control</string>
|
||||
<string name="remote_control_desc">Allow other apps (like Tasker) to control tunnels</string>
|
||||
<string name="endpoint_template">endpoint: %1$s</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
object Constants {
|
||||
const val VERSION_NAME = "5.0.1"
|
||||
const val VERSION_CODE = 50001
|
||||
const val VERSION_NAME = "5.0.0"
|
||||
const val VERSION_CODE = 50000
|
||||
const val TARGET_SDK = 37
|
||||
const val MIN_SDK = 26
|
||||
|
||||
|
||||
@@ -1 +1 @@
|
||||
VPN klient WireGuard & AmneziaWG s automatickým tunelováním
|
||||
WireGuard & AmneziaWG VPN klient s automatickým tunelováním, blokováním a proxy.
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
What's new:
|
||||
- Bugfix for some tunnel endpoints failing to resolve in system DNS mode
|
||||
- Mitigated memory tagging error bug for system DNS mode
|
||||
- Bugfix for split tunneling regression by reverting Android Auto workaround
|
||||
@@ -1,10 +0,0 @@
|
||||
What's new:
|
||||
- Improved tunnel reliability and leak protection with new deferred endpoint bootstrapping
|
||||
- Improved tunnel status monitoring with real time handshake status monitoring
|
||||
- Kernel mode and ping monitoring removed
|
||||
- Full config and live tunnel view in quick format
|
||||
- Automatic ipv4/ipv6 endpoint fallback and recovery
|
||||
- Added support got DoT and custom endpoints for peer resolution DNS
|
||||
- Amnezia tunnel globals
|
||||
- Improved notifications
|
||||
- Various bug fix and app performance improvements
|
||||
@@ -1 +1 @@
|
||||
WireGuardi ja AmneziaWG VPN-klient automaattunnelduse ja lukustusega
|
||||
WireGuardi & AmneziaWG VPNi klient automaatse tunnelduse, lukustuse ja proksiga.
|
||||
|
||||
@@ -1 +1 @@
|
||||
برنامه ای برای جایگزینی وایرگارد با امکانات بیشتر
|
||||
e90dc18c2ed6afd480ad4ef1f284f353ecff5f5eبرنامه ای برای جایگزینی وایرگارد با امکانات بیشتر
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
What's new:
|
||||
- Fixes deprecate location API bug by adding Wi-Fi info method selection
|
||||
- Simplified update check dialog UI
|
||||
- Improve auto-tunnel reliability with delayed recheck
|
||||
@@ -0,0 +1,6 @@
|
||||
What's new:
|
||||
- Tunnel sorting
|
||||
- Shizuku support for Wi-Fi SSIDs
|
||||
- Android TV hover visibility improvements
|
||||
- Auto-tunnel default detection method bug fix
|
||||
- Other UI changes and improvements
|
||||
@@ -0,0 +1,7 @@
|
||||
What's new:
|
||||
- Fix for tunnel sort bug
|
||||
- Improved location permissions flow
|
||||
- Location permission detection and notifications
|
||||
- Fix for AndroidTV apps detection for split tunneling
|
||||
- Improved tunnel monitoring and reboot recovery
|
||||
- Fix tunnel slow reconnect from sleep
|
||||
@@ -0,0 +1,8 @@
|
||||
What's new:
|
||||
- Introduction of app modes
|
||||
- HTTP/SOCKS5 proxying of tunnels
|
||||
- Lockdown mode for leakproof kill switch
|
||||
- Dynamic DNS endpoint updates without tunnel restart
|
||||
- DoH for peer endpoint resolutions
|
||||
- AmneziaWG 1.5 with protocol mimic
|
||||
- Many bug fixes and performance improvements
|
||||
@@ -0,0 +1,4 @@
|
||||
What's new:
|
||||
- Search domain tunnels fail to start bugfix
|
||||
- DNS fallback to IPv4 on IPv4 only networks bugfix
|
||||
- Ping target not editable bugfix
|
||||
@@ -0,0 +1,5 @@
|
||||
What's new:
|
||||
- App lock crash bugfix
|
||||
- Fdroid publishing bugfix
|
||||
- Exporting logs bugfix
|
||||
- Auto-tunnel ethernet toggle bugfix
|
||||
@@ -0,0 +1,4 @@
|
||||
What's new:
|
||||
- Monitoring failing to shut down race bugfix
|
||||
- Notifications stop action bugfix
|
||||
- Notification relaunch activity when already active bugfix
|
||||
@@ -0,0 +1,8 @@
|
||||
What's new:
|
||||
- UI rework
|
||||
- Dynamic DNS fixes
|
||||
- Battery usage bugfix
|
||||
- Auto-tunnel reliability improvements
|
||||
- Global split tunneling and config overrides
|
||||
- Restart on boot and AOVPN bugfixes
|
||||
- Various other improvements and optimizations
|
||||
@@ -0,0 +1,3 @@
|
||||
What's new:
|
||||
- Auto tunnel start ui bugfix
|
||||
- Peer stats ui bugfix
|
||||
@@ -0,0 +1,8 @@
|
||||
What's new:
|
||||
- Metered tunnels settings
|
||||
- Lockdown dual-stack support
|
||||
- Lockdown multiple profile bugfix
|
||||
- Split tunneling improved installed packages querying
|
||||
- Restart active tunnels on configuration changes
|
||||
- Android TV UI bugfixes
|
||||
- Various other bugfixes and improvements
|
||||
@@ -0,0 +1,5 @@
|
||||
What's new:
|
||||
- Resource usage bugfix
|
||||
- Improve network monitoring
|
||||
- Tab navigation bugfix
|
||||
- Tunnel metered default bugfix
|
||||
@@ -0,0 +1,3 @@
|
||||
What's new:
|
||||
- Auto tunnel network detection bugfix
|
||||
- Tunnel notification sometimes don't start bugfix
|
||||
@@ -0,0 +1,3 @@
|
||||
What's new:
|
||||
- Fixes crash on older Android versions where metered tunnel override is unavailable
|
||||
- Fixes auto-tunnel network monitor incorrectly detecting VPN changes
|
||||
@@ -0,0 +1,3 @@
|
||||
What's new:
|
||||
- Auto-tunnel regression bugfix
|
||||
- Resource usage bugfix for kill switch mode
|
||||
@@ -0,0 +1,6 @@
|
||||
What's new:
|
||||
- Improved QR scanning and device support
|
||||
- Display tunnel uptime
|
||||
- Fixes quick tile crash bug when running app in multiple profiles
|
||||
- Fixes global overrides regression causing unexpected tunnel start errors
|
||||
- Fixes network detection race while VPN is active
|
||||
@@ -0,0 +1,2 @@
|
||||
What's new:
|
||||
- Rapid network changes cause invalid network state bugfix
|
||||
@@ -0,0 +1,5 @@
|
||||
What's new:
|
||||
- Amnezia 2.0 support
|
||||
- Copy split tunnel apps from existing config
|
||||
- Logger start bugfix
|
||||
- Quick tile added sync bugfix
|
||||
@@ -0,0 +1,3 @@
|
||||
What's new:
|
||||
- Auto-tunnel screen not loading without connecting to Wi-Fi bugfix
|
||||
- Import tunnel via URL bugfix
|
||||
@@ -0,0 +1,6 @@
|
||||
What's new:
|
||||
- Private profile lockdown mode bugfix
|
||||
- UI performance optimizations
|
||||
- Back navigation crash in certain scenarios bugfix
|
||||
- Auto tunneling race after Amnezia 2.0 changes bugfix
|
||||
- Localizations
|
||||
@@ -0,0 +1,7 @@
|
||||
What's new:
|
||||
- Doze mode handshake fix
|
||||
- Optional I2-5 bugfix
|
||||
- Create from scratch crash bugfix
|
||||
- Show tunnel statistics in notification
|
||||
- Filter tunnel by latency
|
||||
- Translations
|
||||
@@ -0,0 +1,13 @@
|
||||
WG Tunnel is a WireGuard VPN client that strikes the balance between simplicity and robustness, making it the ideal client for casual and power users alike.
|
||||
Whether you simply want to automate when you're connected to your VPN or you're a power user with advanced privacy use cases, WG Tunnel has you covered.
|
||||
|
||||
- **Auto-Tunneling:** Automatically activate tunnels based on Wi-Fi SSID, Ethernet connections, or mobile data networks.
|
||||
- **Split Tunneling:** Flexible support for routing specific apps or traffic through the VPN.
|
||||
- **App Modes:** Support for multiple tunnel modes, including standard VPN, kernel, lockdown (custom kill switch), and proxy modes.
|
||||
- **AmneziaWG Integration:** Full support for AmneziaWG, providing robust censorship evasion.
|
||||
- **Proxying Options:** Built-in HTTP and SOCKS5 proxy support allowing third-party apps to tunnel their traffic.
|
||||
- **Quick Controls:** Quick Settings tile and home screen shortcuts for easy toggling actions.
|
||||
- **Automation Support:** Intent-based automation for controlling tunnels and auto-tunneling.
|
||||
- **Dynamic DNS Handling:** Detects and updates DNS changes without tunnel restarts.
|
||||
- **Monitoring Tools:** Advanced tunnel monitoring features for tunnel performance monitoring.
|
||||
- **Android TV Support:** Android TV support for nearly all app features.
|
||||
@@ -0,0 +1 @@
|
||||
A WireGuard & AmneziaWG VPN client with auto-tunneling, lockdown & proxying.
|
||||
@@ -0,0 +1 @@
|
||||
WG Tunnel
|
||||
@@ -1 +1 @@
|
||||
WireGuard- en AmneziaWG-VPN-client met autotunneling en lockdown
|
||||
Een WireGuard- en AmneziaWG-VPN-client met automatische tunneling, lockdown en proxying.
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
What's new:
|
||||
- Fixes deprecate location API bug by adding Wi-Fi info method selection
|
||||
- Simplified update check dialog UI
|
||||
- Improve auto-tunnel reliability with delayed recheck
|
||||
@@ -0,0 +1,6 @@
|
||||
What's new:
|
||||
- Tunnel sorting
|
||||
- Shizuku support for Wi-Fi SSIDs
|
||||
- Android TV hover visibility improvements
|
||||
- Auto-tunnel default detection method bug fix
|
||||
- Other UI changes and improvements
|
||||
@@ -0,0 +1,7 @@
|
||||
What's new:
|
||||
- Fix for tunnel sort bug
|
||||
- Improved location permissions flow
|
||||
- Location permission detection and notifications
|
||||
- Fix for AndroidTV apps detection for split tunneling
|
||||
- Improved tunnel monitoring and reboot recovery
|
||||
- Fix tunnel slow reconnect from sleep
|
||||
@@ -0,0 +1,8 @@
|
||||
What's new:
|
||||
- Introduction of app modes
|
||||
- HTTP/SOCKS5 proxying of tunnels
|
||||
- Lockdown mode for leakproof kill switch
|
||||
- Dynamic DNS endpoint updates without tunnel restart
|
||||
- DoH for peer endpoint resolutions
|
||||
- AmneziaWG 1.5 with protocol mimic
|
||||
- Many bug fixes and performance improvements
|
||||
@@ -0,0 +1,4 @@
|
||||
What's new:
|
||||
- Search domain tunnels fail to start bugfix
|
||||
- DNS fallback to IPv4 on IPv4 only networks bugfix
|
||||
- Ping target not editable bugfix
|
||||
@@ -0,0 +1,5 @@
|
||||
What's new:
|
||||
- App lock crash bugfix
|
||||
- Fdroid publishing bugfix
|
||||
- Exporting logs bugfix
|
||||
- Auto-tunnel ethernet toggle bugfix
|
||||
@@ -0,0 +1,4 @@
|
||||
What's new:
|
||||
- Monitoring failing to shut down race bugfix
|
||||
- Notifications stop action bugfix
|
||||
- Notification relaunch activity when already active bugfix
|
||||
@@ -0,0 +1,8 @@
|
||||
What's new:
|
||||
- UI rework
|
||||
- Dynamic DNS fixes
|
||||
- Battery usage bugfix
|
||||
- Auto-tunnel reliability improvements
|
||||
- Global split tunneling and config overrides
|
||||
- Restart on boot and AOVPN bugfixes
|
||||
- Various other improvements and optimizations
|
||||
@@ -0,0 +1,3 @@
|
||||
What's new:
|
||||
- Auto tunnel start ui bugfix
|
||||
- Peer stats ui bugfix
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user