fix: localize user-facing and accessibility text (2/3) (#6025)
* fix: localize UI and accessibility text * fix: translate BQI core errors * fix: correct Bakhtiari orthography and wording Replace the remaining Persian confirmation fallbacks, correct stale or mismatched UI meanings, and normalize established Bakhtiari terms without translating xray-core identifiers. Primary source: Erik Anonby and Ashraf Asadi, Bakhtiari Studies II: Orthography (2018), sections 6.1.1, 6.8.1, 6.8.2, 6.8.7, and 6.8.9. https://www.diva-portal.org/smash/get/diva2%3A1231755/FULLTEXT02.pdf The standard recommends that "Arabic letters be retained for Bakhtiari words borrowed from Persian" and reports that speakers view soft d as "a defining feature of how the language is pronounced." Lexicon and phonology source: Erik Anonby and Ashraf Asadi, Bakhtiari Studies: Phonology, Text, Lexicon (2014). https://uu.diva-portal.org/smash/record.jsf?pid=diva2%3A758171 Historical corroboration: D. L. R. Lorimer, The Phonology of the Bakhtiari, Badakhshani, and Madaglashti Dialects of Modern Persian (1922). https://archive.org/details/phonologyofbakht06loriuoft * fix: keep protocol description technical * fix: keep Logcat diagnostics unlocalized * getRemoteIPInfo --------- Co-authored-by: 2dust <31833384+2dust@users.noreply.github.com>
This commit is contained in:
1 parent
d8b857665c
commit
775546ce40
38 files changed
+721
-183
No files matched your search
@@ -5,6 +5,7 @@ import android.text.TextUtils
|
||||
import com.google.gson.JsonArray
|
||||
import com.google.gson.JsonObject
|
||||
import com.v2ray.ang.AppConfig
|
||||
import com.v2ray.ang.R
|
||||
import com.v2ray.ang.dto.ConfigResult
|
||||
import com.v2ray.ang.dto.CoreConfigContext
|
||||
import com.v2ray.ang.dto.V2rayConfig
|
||||
@@ -34,17 +35,27 @@ object CoreConfigManager {
|
||||
fun getV2rayConfig(context: Context, guid: String): ConfigResult {
|
||||
try {
|
||||
val configContext = CoreConfigContextBuilder.build(context, guid)
|
||||
?: return ConfigResult(status = false, guid = guid, errorMessage = "Failed to build config context")
|
||||
?: return ConfigResult(
|
||||
status = false,
|
||||
guid = guid,
|
||||
errorMessage = "Failed to build config context",
|
||||
displayMessage = context.getString(R.string.core_error_build_config_context)
|
||||
)
|
||||
if (configContext.isCustom) {
|
||||
return buildV2rayCustomConfig(configContext)
|
||||
}
|
||||
return toConfigResult(configContext, buildUnifiedConfig(configContext))
|
||||
} catch (e: Exception) {
|
||||
LogUtil.e(AppConfig.TAG, "Failed to get V2ray config", e)
|
||||
val detail = e.message ?: e.javaClass.simpleName
|
||||
return ConfigResult(
|
||||
status = false,
|
||||
guid = guid,
|
||||
errorMessage = "Failed to get V2ray config: ${e.message ?: e.javaClass.simpleName}"
|
||||
errorMessage = "Failed to get V2ray config: $detail",
|
||||
displayMessage = context.getString(
|
||||
R.string.core_error_get_config_detail,
|
||||
detail
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -57,7 +68,12 @@ object CoreConfigManager {
|
||||
fun getV2rayConfig4Speedtest(context: Context, guid: String): ConfigResult {
|
||||
try {
|
||||
val configContext = CoreConfigContextBuilder.build(context, guid)
|
||||
?: return ConfigResult(status = false, guid = guid, errorMessage = "Failed to build config context")
|
||||
?: return ConfigResult(
|
||||
status = false,
|
||||
guid = guid,
|
||||
errorMessage = "Failed to build config context",
|
||||
displayMessage = context.getString(R.string.core_error_build_config_context)
|
||||
)
|
||||
if (configContext.isCustom) {
|
||||
return buildV2rayCustomConfig(configContext)
|
||||
}
|
||||
@@ -67,10 +83,15 @@ object CoreConfigManager {
|
||||
return toConfigResult(configContext, v2rayConfig)
|
||||
} catch (e: Exception) {
|
||||
LogUtil.e(AppConfig.TAG, "Failed to get V2ray config for speedtest", e)
|
||||
val detail = e.message ?: e.javaClass.simpleName
|
||||
return ConfigResult(
|
||||
status = false,
|
||||
guid = guid,
|
||||
errorMessage = "Failed to get V2ray config for speedtest: ${e.message ?: e.javaClass.simpleName}"
|
||||
errorMessage = "Failed to get V2ray config for speedtest: $detail",
|
||||
displayMessage = context.getString(
|
||||
R.string.core_error_get_speedtest_config_detail,
|
||||
detail
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -81,7 +102,12 @@ object CoreConfigManager {
|
||||
private fun buildV2rayCustomConfig(configContext: CoreConfigContext): ConfigResult {
|
||||
val context = configContext.context
|
||||
val raw = MmkvManager.decodeServerRaw(configContext.guid)
|
||||
?: return ConfigResult(status = false, guid = configContext.guid, errorMessage = "Custom config is empty")
|
||||
?: return ConfigResult(
|
||||
status = false,
|
||||
guid = configContext.guid,
|
||||
errorMessage = "Custom config is empty",
|
||||
displayMessage = context.getString(R.string.core_error_custom_config_empty)
|
||||
)
|
||||
val result = ConfigResult(true, configContext.guid, raw)
|
||||
|
||||
val json = JsonUtil.parseString(raw)?.takeIf { it.isJsonObject }?.asJsonObject ?: return result
|
||||
|
||||
@@ -58,12 +58,12 @@ object CoreNativeManager {
|
||||
*
|
||||
* @return Version string of the V2Ray core
|
||||
*/
|
||||
fun getLibVersion(): String {
|
||||
fun getLibVersion(): String? {
|
||||
return try {
|
||||
Libv2ray.checkVersionX()
|
||||
} catch (e: Exception) {
|
||||
LogUtil.e(AppConfig.TAG, "Failed to check V2Ray version", e)
|
||||
"Unknown"
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -53,6 +53,11 @@ object CoreServiceManager {
|
||||
/** Tun descriptor the core was started with, null in the proxy only and root run modes. */
|
||||
private var currentVpnInterface: ParcelFileDescriptor? = null
|
||||
|
||||
private class CoreStartException(
|
||||
logMessage: String,
|
||||
val displayMessage: String,
|
||||
) : IllegalStateException(logMessage)
|
||||
|
||||
var serviceControl: SoftReference<ServiceControl>? = null
|
||||
set(value) {
|
||||
field = value
|
||||
@@ -96,15 +101,22 @@ object CoreServiceManager {
|
||||
try {
|
||||
doStartCoreLoop(service, vpnInterface)
|
||||
return true
|
||||
} catch (e: CoreStartException) {
|
||||
reportCoreStartFailure(service, e.message.orEmpty(), e.displayMessage, e)
|
||||
return false
|
||||
} catch (e: Exception) {
|
||||
val message = e.message?.takeUnless { it.isBlank() } ?: e.javaClass.simpleName
|
||||
LogUtil.e(AppConfig.TAG, "StartCore-Manager: $message", e)
|
||||
MessageHelper.sendMsg2UI(service, AppConfig.MSG_STATE_START_FAILURE, message)
|
||||
NotificationManager.cancelNotification()
|
||||
reportCoreStartFailure(service, message, message, e)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
private fun reportCoreStartFailure(service: Service, logMessage: String, displayMessage: String, error: Throwable) {
|
||||
LogUtil.e(AppConfig.TAG, "StartCore-Manager: $logMessage", error)
|
||||
MessageHelper.sendMsg2UI(service, AppConfig.MSG_STATE_START_FAILURE, displayMessage)
|
||||
NotificationManager.cancelNotification()
|
||||
}
|
||||
|
||||
@Throws(Exception::class)
|
||||
private fun doStartCoreLoop(service: Service, vpnInterface: ParcelFileDescriptor?) {
|
||||
val mFilter = IntentFilter(AppConfig.BROADCAST_ACTION_SERVICE)
|
||||
@@ -120,14 +132,27 @@ object CoreServiceManager {
|
||||
|
||||
@Throws(Exception::class)
|
||||
private fun launchCore(service: Service, vpnInterface: ParcelFileDescriptor?, isReload: Boolean = false) {
|
||||
val guid = MmkvManager.getSelectServer() ?: error("No server selected")
|
||||
val config = MmkvManager.decodeServerConfig(guid) ?: error("Failed to decode server config")
|
||||
val guid = MmkvManager.getSelectServer()
|
||||
?: throw CoreStartException(
|
||||
logMessage = "No server selected",
|
||||
displayMessage = service.getString(R.string.core_error_no_server_selected)
|
||||
)
|
||||
val config = MmkvManager.decodeServerConfig(guid)
|
||||
?: throw CoreStartException(
|
||||
logMessage = "Failed to decode server config",
|
||||
displayMessage = service.getString(R.string.core_error_decode_server_config)
|
||||
)
|
||||
|
||||
LogUtil.i(AppConfig.TAG, "StartCore-Manager: Starting core loop for ${config.remarks}")
|
||||
val result = CoreConfigManager.getV2rayConfig(service, guid)
|
||||
LogUtil.d(AppConfig.TAG, result.content)
|
||||
if (!result.status) {
|
||||
error(result.errorMessage.ifBlank { "Failed to get V2Ray config" })
|
||||
throw CoreStartException(
|
||||
logMessage = result.errorMessage.ifBlank { "Failed to get V2Ray config" },
|
||||
displayMessage = result.displayMessage.ifBlank {
|
||||
service.getString(R.string.core_error_get_config)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
currentConfig = config
|
||||
@@ -149,7 +174,10 @@ object CoreServiceManager {
|
||||
coreController.startLoop(result.content, tunFd)
|
||||
|
||||
if (!isRunning()) {
|
||||
error("Core failed to start")
|
||||
throw CoreStartException(
|
||||
logMessage = "Core failed to start",
|
||||
displayMessage = service.getString(R.string.core_error_start)
|
||||
)
|
||||
}
|
||||
|
||||
if (browserDialer != null) {
|
||||
@@ -260,6 +288,10 @@ object CoreServiceManager {
|
||||
|
||||
LogUtil.i(AppConfig.TAG, "StartCore-Manager: Core reload finished")
|
||||
true
|
||||
} catch (e: CoreStartException) {
|
||||
LogUtil.e(AppConfig.TAG, "StartCore-Manager: Failed to reload core: ${e.message}", e)
|
||||
MessageHelper.sendMsg2UI(service, AppConfig.MSG_STATE_START_FAILURE, e.displayMessage)
|
||||
false
|
||||
} catch (e: Exception) {
|
||||
val message = e.message?.takeUnless { it.isBlank() } ?: e.javaClass.simpleName
|
||||
LogUtil.e(AppConfig.TAG, "StartCore-Manager: Failed to reload core: $message", e)
|
||||
@@ -321,14 +353,16 @@ object CoreServiceManager {
|
||||
time = coreController.measureDelay(SettingsManager.getDelayTestUrl())
|
||||
} catch (e: Exception) {
|
||||
LogUtil.e(AppConfig.TAG, "StartCore-Manager: Failed to measure delay", e)
|
||||
errorStr = e.message?.substringAfter("\":") ?: "empty message"
|
||||
errorStr = e.message?.substringAfter("\":")
|
||||
?: service.getString(R.string.connection_test_empty_message)
|
||||
}
|
||||
if (time == -1L) {
|
||||
try {
|
||||
time = coreController.measureDelay(SettingsManager.getDelayTestUrl(true))
|
||||
} catch (e: Exception) {
|
||||
LogUtil.e(AppConfig.TAG, "StartCore-Manager: Failed to measure delay", e)
|
||||
errorStr = e.message?.substringAfter("\":") ?: "empty message"
|
||||
errorStr = e.message?.substringAfter("\":")
|
||||
?: service.getString(R.string.connection_test_empty_message)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -492,4 +526,4 @@ object CoreServiceManager {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,9 @@ data class ConfigResult(
|
||||
var status: Boolean,
|
||||
var guid: String? = null,
|
||||
var content: String = "",
|
||||
/** Stable English diagnostic text suitable for Logcat. */
|
||||
var errorMessage: String = "",
|
||||
/** Localized message suitable for the UI. */
|
||||
var displayMessage: String = "",
|
||||
)
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.v2ray.ang.enums
|
||||
import android.Manifest
|
||||
import android.os.Build
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.annotation.StringRes
|
||||
import com.v2ray.ang.R
|
||||
|
||||
/**
|
||||
* Permission types used in the app, handling API level differences.
|
||||
@@ -28,12 +30,13 @@ enum class PermissionType {
|
||||
/** Return the actual Android permission string */
|
||||
abstract fun getPermission(): String
|
||||
|
||||
/** Return a human-readable label for the permission */
|
||||
fun getLabel(): String {
|
||||
/** Return the string resource for the human-readable permission label. */
|
||||
@StringRes
|
||||
fun getLabelRes(): Int {
|
||||
return when (this) {
|
||||
CAMERA -> "Camera"
|
||||
POST_NOTIFICATIONS -> "Notification"
|
||||
ACCESS_LOCAL_NETWORK -> "Local Network"
|
||||
CAMERA -> R.string.permission_camera
|
||||
POST_NOTIFICATIONS -> R.string.permission_notification
|
||||
ACCESS_LOCAL_NETWORK -> R.string.permission_local_network
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -36,7 +36,10 @@ class PermissionHelper(private val activity: ComponentActivity) {
|
||||
if (isGranted) {
|
||||
onGranted()
|
||||
} else {
|
||||
val message = "${activity.getString(R.string.toast_permission_denied)} ${permissionType.getLabel()}"
|
||||
val message = activity.getString(
|
||||
R.string.toast_permission_denied_for,
|
||||
activity.getString(permissionType.getLabelRes())
|
||||
)
|
||||
activity.toast(message)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ class SubscriptionUpdateService : Service() {
|
||||
showNotification(
|
||||
context = this,
|
||||
titleResId = R.string.title_pref_auto_update_subscription,
|
||||
content = "Updating ${subItem.remarks}"
|
||||
content = getString(R.string.subscription_update_updating, subItem.remarks)
|
||||
)
|
||||
|
||||
if (forcedUpdate || MmkvManager.decodeSettingsBool(AppConfig.PREF_UPDATE_SUBSCRIPTION, false)) {
|
||||
@@ -184,13 +184,17 @@ class SubscriptionUpdateService : Service() {
|
||||
private fun handleWorkerEvent(event: RealPingEvent, remarks: String, onWorkerDone: () -> Unit) {
|
||||
when (event) {
|
||||
is RealPingEvent.Progress -> {
|
||||
val text = "${event.text} in $remarks"
|
||||
val notificationText = getString(
|
||||
R.string.subscription_update_progress,
|
||||
event.text,
|
||||
remarks
|
||||
)
|
||||
showNotification(
|
||||
context = this,
|
||||
titleResId = R.string.title_real_ping_all_server,
|
||||
content = text
|
||||
content = notificationText
|
||||
)
|
||||
LogUtil.i(AppConfig.TAG, "SubscriptionUpdateService: $text")
|
||||
LogUtil.i(AppConfig.TAG, "SubscriptionUpdateService: ${event.text} in $remarks")
|
||||
}
|
||||
|
||||
is RealPingEvent.Result -> {
|
||||
|
||||
@@ -53,7 +53,8 @@ fun AboutScreen(onBackClick: () -> Unit) {
|
||||
val context = LocalContext.current
|
||||
var showOssDialog by remember { mutableStateOf(false) }
|
||||
|
||||
val versionText = "v${BuildConfig.VERSION_NAME} (${CoreNativeManager.getLibVersion()})"
|
||||
val libVersion = CoreNativeManager.getLibVersion() ?: stringResource(R.string.value_unknown)
|
||||
val versionText = "v${BuildConfig.VERSION_NAME} ($libVersion)"
|
||||
val appIdText = BuildConfig.APPLICATION_ID
|
||||
|
||||
Scaffold(
|
||||
|
||||
@@ -179,7 +179,9 @@ fun ScannerScreen(
|
||||
if (isScanning) R.drawable.ic_stop_24dp
|
||||
else R.drawable.ic_scan_24dp
|
||||
),
|
||||
contentDescription = if (isScanning) "stop scan" else "start scan"
|
||||
contentDescription = stringResource(
|
||||
if (isScanning) R.string.acc_stop_scanner else R.string.acc_start_scanner
|
||||
)
|
||||
)
|
||||
}
|
||||
if (isScanning && hasTorch) {
|
||||
@@ -194,14 +196,17 @@ fun ScannerScreen(
|
||||
if (torchEnabled) R.drawable.ic_flash_on_24dp
|
||||
else R.drawable.ic_flash_off_24dp
|
||||
),
|
||||
contentDescription = "Torch"
|
||||
contentDescription = stringResource(
|
||||
if (torchEnabled) R.string.acc_turn_torch_off
|
||||
else R.string.acc_turn_torch_on
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
IconButton(onClick = onSelectPhoto) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_image_24dp),
|
||||
contentDescription = "select image"
|
||||
contentDescription = stringResource(R.string.acc_select_image)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -245,7 +250,7 @@ private fun ScannerIdlePlaceholder(onStartClick: () -> Unit) {
|
||||
Column(horizontalAlignment = Alignment.CenterHorizontally) {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.ic_scan_24dp),
|
||||
contentDescription = "Start Scanner",
|
||||
contentDescription = stringResource(R.string.acc_start_scanner),
|
||||
modifier = Modifier.size(80.dp),
|
||||
tint = MaterialTheme.colorScheme.primary
|
||||
)
|
||||
|
||||
@@ -151,7 +151,7 @@ fun AppPickerScreen(
|
||||
IconButton(onClick = { showSearch = true }) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_search_24dp),
|
||||
contentDescription = stringResource(R.string.menu_item_search)
|
||||
contentDescription = stringResource(R.string.acc_search)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,7 +59,8 @@ fun CheckUpdateScreen(
|
||||
val showUpdateDialog by viewModel.showUpdateDialog.collectAsStateWithLifecycle()
|
||||
val updateResult by viewModel.updateResult.collectAsStateWithLifecycle()
|
||||
|
||||
val versionText = "v${BuildConfig.VERSION_NAME} (${CoreNativeManager.getLibVersion()})"
|
||||
val libVersion = CoreNativeManager.getLibVersion() ?: stringResource(R.string.value_unknown)
|
||||
val versionText = "v${BuildConfig.VERSION_NAME} ($libVersion)"
|
||||
|
||||
Scaffold(
|
||||
contentWindowInsets = ScaffoldDefaults.contentWindowInsets,
|
||||
|
||||
@@ -45,6 +45,7 @@ import androidx.compose.ui.hapticfeedback.HapticFeedbackType
|
||||
import androidx.compose.ui.layout.ContentScale
|
||||
import androidx.compose.ui.platform.LocalHapticFeedback
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.TextStyle
|
||||
import androidx.compose.ui.text.input.ImeAction
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
@@ -91,7 +92,7 @@ fun AppTopBar(
|
||||
IconButton(onClick = if (isSearchActive) onSearchClose else onBackClick) {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.ic_arrow_back_24dp),
|
||||
contentDescription = "Back"
|
||||
contentDescription = stringResource(R.string.acc_back)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,7 +175,7 @@ fun QRCodeDialog(
|
||||
text = {
|
||||
Image(
|
||||
bitmap = bitmap.asImageBitmap(),
|
||||
contentDescription = stringResource(R.string.title_qr_code),
|
||||
contentDescription = stringResource(R.string.acc_qr_code),
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.aspectRatio(1f)
|
||||
|
||||
@@ -159,20 +159,20 @@ fun LogcatScreen(
|
||||
IconButton(onClick = { showSearch = true }) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_search_24dp),
|
||||
contentDescription = "filter"
|
||||
contentDescription = stringResource(R.string.acc_search)
|
||||
)
|
||||
}
|
||||
}
|
||||
IconButton(onClick = { viewModel.copyLogcat() }) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_copy),
|
||||
contentDescription = stringResource(R.string.logcat_copy)
|
||||
contentDescription = stringResource(R.string.acc_copy_log)
|
||||
)
|
||||
}
|
||||
IconButton(onClick = { onShareLogcat() }) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_share_24dp),
|
||||
contentDescription = stringResource(R.string.logcat_share)
|
||||
contentDescription = stringResource(R.string.acc_share_log)
|
||||
)
|
||||
}
|
||||
IconButton(onClick = {
|
||||
@@ -180,7 +180,7 @@ fun LogcatScreen(
|
||||
}) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_delete_24dp),
|
||||
contentDescription = stringResource(R.string.logcat_clear)
|
||||
contentDescription = stringResource(R.string.acc_clear_log)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -192,7 +192,7 @@ fun LogcatScreen(
|
||||
}) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_restore_24dp),
|
||||
contentDescription = stringResource(R.string.pull_down_to_refresh)
|
||||
contentDescription = stringResource(R.string.acc_refresh)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.v2ray.ang.R
|
||||
import com.v2ray.ang.ui.compose.AppDivider
|
||||
@@ -75,7 +76,9 @@ fun MainBottomBar(
|
||||
Icon(
|
||||
painter = if (isRunning) painterResource(R.drawable.ic_stop_24dp)
|
||||
else painterResource(R.drawable.ic_play_24dp),
|
||||
contentDescription = if (isRunning) "Stop" else "Start",
|
||||
contentDescription = stringResource(
|
||||
if (isRunning) R.string.acc_stop else R.string.acc_start
|
||||
),
|
||||
tint = Color.White,
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
|
||||
@@ -59,23 +59,23 @@ fun MainTopBar(
|
||||
navigationIcon = {
|
||||
if (showSearch) {
|
||||
IconButton(onClick = onSearchClose) {
|
||||
Icon(painterResource(R.drawable.ic_arrow_back_24dp), contentDescription = "Back")
|
||||
Icon(painterResource(R.drawable.ic_arrow_back_24dp), contentDescription = stringResource(R.string.acc_back))
|
||||
}
|
||||
} else {
|
||||
IconButton(onClick = onMenuClick) {
|
||||
Icon(painterResource(R.drawable.ic_menu_24dp), contentDescription = "Menu")
|
||||
Icon(painterResource(R.drawable.ic_menu_24dp), contentDescription = stringResource(R.string.acc_open_menu))
|
||||
}
|
||||
}
|
||||
},
|
||||
actions = {
|
||||
if (!showSearch) {
|
||||
IconButton(onClick = { onSearchToggle(true) }) {
|
||||
Icon(painterResource(R.drawable.ic_search_24dp), contentDescription = "filter")
|
||||
Icon(painterResource(R.drawable.ic_search_24dp), contentDescription = stringResource(R.string.acc_search))
|
||||
}
|
||||
}
|
||||
Box(modifier = Modifier.wrapContentSize(Alignment.TopEnd)) {
|
||||
IconButton(onClick = { showImportMenu = true }) {
|
||||
Icon(painterResource(R.drawable.ic_add_24dp), contentDescription = "Add")
|
||||
Icon(painterResource(R.drawable.ic_add_24dp), contentDescription = stringResource(R.string.acc_add))
|
||||
}
|
||||
DropdownMenu(
|
||||
expanded = showImportMenu,
|
||||
@@ -96,7 +96,7 @@ fun MainTopBar(
|
||||
}
|
||||
Box(modifier = Modifier.wrapContentSize(Alignment.TopEnd)) {
|
||||
IconButton(onClick = { showMenu = true }) {
|
||||
Icon(painterResource(R.drawable.ic_more_vert_24dp), contentDescription = "More")
|
||||
Icon(painterResource(R.drawable.ic_more_vert_24dp), contentDescription = stringResource(R.string.acc_more))
|
||||
}
|
||||
DropdownMenu(
|
||||
expanded = showMenu,
|
||||
|
||||
@@ -160,7 +160,7 @@ fun PerAppProxyScreen(
|
||||
IconButton(onClick = { showSearch = true }) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_search_24dp),
|
||||
contentDescription = stringResource(R.string.menu_item_search)
|
||||
contentDescription = stringResource(R.string.acc_search)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -252,7 +252,7 @@ fun PerAppProxyScreen(
|
||||
IconButton(onClick = onInfoClick) {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.ic_about_24dp),
|
||||
contentDescription = stringResource(R.string.summary_pref_per_app_proxy),
|
||||
contentDescription = stringResource(R.string.acc_per_app_proxy_information),
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
}
|
||||
|
||||
@@ -186,14 +186,14 @@ fun RoutingEditScreen(
|
||||
IconButton(onClick = { showDeleteConfirm = true }) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_delete_24dp),
|
||||
contentDescription = stringResource(R.string.menu_item_del_config)
|
||||
contentDescription = stringResource(R.string.acc_delete)
|
||||
)
|
||||
}
|
||||
}
|
||||
IconButton(onClick = { onSave(buildRuleset()) }) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_fab_check),
|
||||
contentDescription = stringResource(R.string.menu_item_save_config)
|
||||
contentDescription = stringResource(R.string.acc_save)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -225,7 +225,7 @@ fun RoutingSettingScreen(
|
||||
IconButton(onClick = onAddRule) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_add_24dp),
|
||||
contentDescription = stringResource(R.string.routing_settings_add_rule)
|
||||
contentDescription = stringResource(R.string.acc_add_rule)
|
||||
)
|
||||
}
|
||||
Box {
|
||||
@@ -342,7 +342,7 @@ private fun RoutingRulesetItem(
|
||||
Spacer(modifier = Modifier.width(4.dp))
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.ic_lock_24dp),
|
||||
contentDescription = "Locked",
|
||||
contentDescription = stringResource(R.string.acc_locked),
|
||||
modifier = Modifier.size(16.dp),
|
||||
tint = MaterialTheme.colorScheme.onSurfaceVariant
|
||||
)
|
||||
@@ -376,7 +376,7 @@ private fun RoutingRulesetItem(
|
||||
IconButton(onClick = onEdit) {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.ic_edit_24dp),
|
||||
contentDescription = "Edit"
|
||||
contentDescription = stringResource(R.string.acc_edit)
|
||||
)
|
||||
}
|
||||
Spacer(modifier = Modifier.height(4.dp))
|
||||
|
||||
@@ -461,14 +461,14 @@ abstract class BaseServerActivity : BaseComponentActivity() {
|
||||
IconButton(onClick = { showDeleteDialog = true }) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_delete_24dp),
|
||||
stringResource(R.string.menu_item_del_config)
|
||||
stringResource(R.string.acc_delete)
|
||||
)
|
||||
}
|
||||
}
|
||||
IconButton(onClick = onSaveClick) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_fab_check),
|
||||
stringResource(R.string.menu_item_save_config)
|
||||
stringResource(R.string.acc_save)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -347,13 +347,13 @@ fun ServerScreen(
|
||||
actions = {
|
||||
if (guid.isNotEmpty() && !isRunning) {
|
||||
IconButton(onClick = { showDeleteDialog = true }) {
|
||||
Icon(painterResource(R.drawable.ic_delete_24dp), stringResource(R.string.menu_item_del_config))
|
||||
Icon(painterResource(R.drawable.ic_delete_24dp), stringResource(R.string.acc_delete))
|
||||
}
|
||||
}
|
||||
IconButton(onClick = {
|
||||
onSave(buildProfileItem())
|
||||
}) {
|
||||
Icon(painterResource(R.drawable.ic_fab_check), stringResource(R.string.menu_item_save_config))
|
||||
Icon(painterResource(R.drawable.ic_fab_check), stringResource(R.string.acc_save))
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
@@ -120,9 +120,14 @@ class ServerCustomConfigActivity : BaseComponentActivity() {
|
||||
"Failed to parse custom configuration",
|
||||
e
|
||||
)
|
||||
val detail = e.cause?.message?.takeIf { it.isNotBlank() }
|
||||
?: e.message?.takeIf { it.isNotBlank() }
|
||||
toast(
|
||||
"${getString(R.string.toast_malformed_json)} " +
|
||||
"${e.cause?.message.orEmpty()}"
|
||||
if (detail.isNullOrBlank()) {
|
||||
getString(R.string.toast_malformed_json)
|
||||
} else {
|
||||
getString(R.string.toast_malformed_json_detail, detail)
|
||||
}
|
||||
)
|
||||
return false
|
||||
}
|
||||
@@ -315,14 +320,14 @@ fun ServerCustomConfigScreen(
|
||||
IconButton(onClick = { showDeleteConfirm = true }) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_delete_24dp),
|
||||
contentDescription = stringResource(R.string.menu_item_del_config)
|
||||
contentDescription = stringResource(R.string.acc_delete)
|
||||
)
|
||||
}
|
||||
}
|
||||
IconButton(onClick = { onSave(remarks, textFieldState.text.toString()) }) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_fab_check),
|
||||
contentDescription = stringResource(R.string.menu_item_save_config)
|
||||
contentDescription = stringResource(R.string.acc_save)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -245,7 +245,7 @@ fun ServerGroupScreen(
|
||||
actions = {
|
||||
if (showDelete) {
|
||||
IconButton(onClick = { showDeleteConfirm = true }) {
|
||||
Icon(painterResource(R.drawable.ic_delete_24dp), contentDescription = stringResource(R.string.menu_item_del_config))
|
||||
Icon(painterResource(R.drawable.ic_delete_24dp), contentDescription = stringResource(R.string.acc_delete))
|
||||
}
|
||||
}
|
||||
IconButton(onClick = {
|
||||
@@ -253,7 +253,7 @@ fun ServerGroupScreen(
|
||||
val subIdx = subDisplay.indexOf(subValue).coerceAtLeast(0)
|
||||
onSave(remarks, filter, typeIdx, subIdx, testOutbounds, fallbackTag)
|
||||
}) {
|
||||
Icon(painterResource(R.drawable.ic_fab_check), contentDescription = stringResource(R.string.menu_item_save_config))
|
||||
Icon(painterResource(R.drawable.ic_fab_check), contentDescription = stringResource(R.string.acc_save))
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
@@ -228,11 +228,11 @@ fun ProxyChainScreen(
|
||||
actions = {
|
||||
if (showDelete) {
|
||||
IconButton(onClick = { showProfileDeleteConfirm = true }) {
|
||||
Icon(painterResource(R.drawable.ic_delete_24dp), contentDescription = stringResource(R.string.menu_item_del_config))
|
||||
Icon(painterResource(R.drawable.ic_delete_24dp), contentDescription = stringResource(R.string.acc_delete))
|
||||
}
|
||||
}
|
||||
IconButton(onClick = { onSave(remarks, members) }) {
|
||||
Icon(painterResource(R.drawable.ic_fab_check), contentDescription = stringResource(R.string.menu_item_save_config))
|
||||
Icon(painterResource(R.drawable.ic_fab_check), contentDescription = stringResource(R.string.acc_save))
|
||||
}
|
||||
}
|
||||
)
|
||||
@@ -247,7 +247,7 @@ fun ProxyChainScreen(
|
||||
.offset(y = -20.dp)
|
||||
.navigationBarsPadding()
|
||||
) {
|
||||
Icon(painterResource(R.drawable.ic_add_24dp), contentDescription = "Add member")
|
||||
Icon(painterResource(R.drawable.ic_add_24dp), contentDescription = stringResource(R.string.acc_add_member))
|
||||
}
|
||||
}
|
||||
) { innerPadding ->
|
||||
@@ -320,7 +320,7 @@ fun ProxyChainScreen(
|
||||
}) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_delete_24dp),
|
||||
contentDescription = "Remove"
|
||||
contentDescription = stringResource(R.string.acc_remove)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,11 +105,10 @@ class TaskerActivity : BaseComponentActivity() {
|
||||
val intent = Intent()
|
||||
|
||||
val remarks = lstData[position]
|
||||
val blurb = if (switchState.value) {
|
||||
"Start $remarks"
|
||||
} else {
|
||||
"Stop $remarks"
|
||||
}
|
||||
val blurb = getString(
|
||||
if (switchState.value) R.string.tasker_blurb_start else R.string.tasker_blurb_stop,
|
||||
remarks
|
||||
)
|
||||
|
||||
intent.putExtra(AppConfig.TASKER_EXTRA_BUNDLE, extraBundle)
|
||||
intent.putExtra(AppConfig.TASKER_EXTRA_STRING_BLURB, blurb)
|
||||
@@ -135,7 +134,7 @@ fun TaskerScreen(
|
||||
onBackClick = onBackClick,
|
||||
actions = {
|
||||
IconButton(onClick = onSave) {
|
||||
Icon(painterResource(R.drawable.ic_fab_check), contentDescription = stringResource(R.string.menu_item_save_config))
|
||||
Icon(painterResource(R.drawable.ic_fab_check), contentDescription = stringResource(R.string.acc_save))
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
@@ -173,11 +173,11 @@ fun SubEditScreen(
|
||||
IconButton(onClick = {
|
||||
if (confirmRemove) showDeleteConfirm = true else onDelete()
|
||||
}) {
|
||||
Icon(painterResource(R.drawable.ic_delete_24dp), contentDescription = stringResource(R.string.menu_item_del_config))
|
||||
Icon(painterResource(R.drawable.ic_delete_24dp), contentDescription = stringResource(R.string.acc_delete))
|
||||
}
|
||||
}
|
||||
IconButton(onClick = { buildSubItem()?.let { onSave(it) } }) {
|
||||
Icon(painterResource(R.drawable.ic_fab_check), contentDescription = stringResource(R.string.menu_item_save_config))
|
||||
Icon(painterResource(R.drawable.ic_fab_check), contentDescription = stringResource(R.string.acc_save))
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
@@ -135,10 +135,10 @@ fun SubSettingScreen(
|
||||
isLoading = isLoading,
|
||||
actions = {
|
||||
IconButton(onClick = onAddClick) {
|
||||
Icon(painterResource(R.drawable.ic_add_24dp), contentDescription = stringResource(R.string.menu_item_add_config))
|
||||
Icon(painterResource(R.drawable.ic_add_24dp), contentDescription = stringResource(R.string.acc_add_subscription))
|
||||
}
|
||||
IconButton(onClick = { showUpdateDialog = true }) {
|
||||
Icon(painterResource(R.drawable.ic_restore_24dp), contentDescription = stringResource(R.string.title_sub_update))
|
||||
Icon(painterResource(R.drawable.ic_restore_24dp), contentDescription = stringResource(R.string.acc_update_subscriptions))
|
||||
}
|
||||
}
|
||||
)
|
||||
@@ -202,14 +202,14 @@ fun SubSettingScreen(
|
||||
}) {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.ic_share_24dp),
|
||||
contentDescription = "Share"
|
||||
contentDescription = stringResource(R.string.acc_share_subscription)
|
||||
)
|
||||
}
|
||||
}
|
||||
IconButton(onClick = { onEditSub(subCache.guid) }) {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.ic_edit_24dp),
|
||||
contentDescription = "Edit"
|
||||
contentDescription = stringResource(R.string.acc_edit)
|
||||
)
|
||||
}
|
||||
IconButton(onClick = {
|
||||
@@ -218,7 +218,7 @@ fun SubSettingScreen(
|
||||
}) {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.ic_delete_24dp),
|
||||
contentDescription = "Delete"
|
||||
contentDescription = stringResource(R.string.acc_delete)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -280,7 +280,7 @@ fun UserAssetScreen(
|
||||
actions = {
|
||||
Box(modifier = Modifier.wrapContentSize(Alignment.TopEnd)) {
|
||||
IconButton(onClick = { showAddMenu = true }) {
|
||||
Icon(painterResource(R.drawable.ic_add_24dp), contentDescription = stringResource(R.string.menu_item_add_asset))
|
||||
Icon(painterResource(R.drawable.ic_add_24dp), contentDescription = stringResource(R.string.acc_add_asset))
|
||||
}
|
||||
DropdownMenu(
|
||||
expanded = showAddMenu,
|
||||
@@ -300,7 +300,7 @@ fun UserAssetScreen(
|
||||
}
|
||||
}
|
||||
IconButton(onClick = onDownloadClick) {
|
||||
Icon(painterResource(R.drawable.ic_cloud_download_24dp), contentDescription = stringResource(R.string.menu_item_download_file))
|
||||
Icon(painterResource(R.drawable.ic_cloud_download_24dp), contentDescription = stringResource(R.string.acc_download_file))
|
||||
}
|
||||
}
|
||||
)
|
||||
@@ -400,7 +400,7 @@ private fun UserAssetItem(
|
||||
IconButton(onClick = onEdit) {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.ic_edit_24dp),
|
||||
contentDescription = stringResource(R.string.menu_item_edit_config),
|
||||
contentDescription = stringResource(R.string.acc_edit),
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
}
|
||||
@@ -408,7 +408,7 @@ private fun UserAssetItem(
|
||||
IconButton(onClick = onDeleteClick) {
|
||||
Icon(
|
||||
painter = painterResource(R.drawable.ic_delete_24dp),
|
||||
contentDescription = stringResource(R.string.menu_item_del_config),
|
||||
contentDescription = stringResource(R.string.acc_delete),
|
||||
modifier = Modifier.size(24.dp)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -152,14 +152,14 @@ fun UserAssetUrlScreen(
|
||||
IconButton(onClick = { showDeleteConfirm = true }) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_delete_24dp),
|
||||
contentDescription = stringResource(R.string.menu_item_del_config)
|
||||
contentDescription = stringResource(R.string.acc_delete)
|
||||
)
|
||||
}
|
||||
}
|
||||
IconButton(onClick = { onSave(remarks, url) }) {
|
||||
Icon(
|
||||
painterResource(R.drawable.ic_fab_check),
|
||||
contentDescription = stringResource(R.string.menu_item_save_config)
|
||||
contentDescription = stringResource(R.string.acc_save)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -490,4 +490,54 @@
|
||||
<string name="backup_location_local">محلي</string>
|
||||
<string name="backup_location_webdav" translatable="false">WebDAV</string>
|
||||
|
||||
<string name="acc_refresh">تحديث السجل</string>
|
||||
<string name="toast_permission_denied_for">تم رفض إذن %1$s</string>
|
||||
<string name="acc_add_subscription">إضافة اشتراك</string>
|
||||
<string name="toast_malformed_json_detail">تنسيق التكوين غير صالح: %1$s</string>
|
||||
<string name="acc_add_asset">إضافة مصدر موارد</string>
|
||||
<string name="acc_download_file">تنزيل ملفات الموارد</string>
|
||||
<string name="acc_qr_code">رمز QR</string>
|
||||
<string name="acc_copy_log">نسخ السجل</string>
|
||||
<string name="acc_clear_log">مسح السجل</string>
|
||||
<string name="acc_add_rule">إضافة قاعدة توجيه</string>
|
||||
<string name="core_error_no_server_selected">لم يتم تحديد تكوين</string>
|
||||
<string name="core_error_decode_server_config">تعذرت قراءة التكوين المحدد</string>
|
||||
<string name="core_error_build_config_context">تعذر إعداد التكوين المحدد</string>
|
||||
<string name="core_error_get_config">تعذر إنشاء تكوين النواة</string>
|
||||
<string name="core_error_get_config_detail">تعذر إنشاء تكوين النواة: %1$s</string>
|
||||
<string name="core_error_get_speedtest_config_detail">تعذر إنشاء تكوين النواة لاختبار السرعة: %1$s</string>
|
||||
<string name="core_error_custom_config_empty">التكوين المخصص فارغ</string>
|
||||
<string name="core_error_start">تعذر تشغيل النواة</string>
|
||||
<string name="acc_start">بدء الخدمة</string>
|
||||
<string name="acc_stop">إيقاف الخدمة</string>
|
||||
<string name="acc_back">رجوع</string>
|
||||
<string name="acc_search">بحث</string>
|
||||
<string name="acc_add">إضافة تكوين</string>
|
||||
<string name="acc_more">المزيد من الخيارات</string>
|
||||
<string name="acc_share_subscription">مشاركة رابط الاشتراك</string>
|
||||
<string name="acc_share_log">مشاركة السجل</string>
|
||||
<string name="acc_remove">إزالة عضو من سلسلة الوكلاء</string>
|
||||
<string name="acc_add_member">إضافة عضو إلى سلسلة الوكلاء</string>
|
||||
<string name="acc_start_scanner">بدء ماسح رمز QR</string>
|
||||
<string name="acc_stop_scanner">إيقاف ماسح رمز QR</string>
|
||||
<string name="acc_turn_torch_on">تشغيل المصباح</string>
|
||||
<string name="acc_turn_torch_off">إطفاء المصباح</string>
|
||||
<string name="acc_select_image">اختيار صورة لمسحها</string>
|
||||
<string name="acc_locked">يتم الاحتفاظ بالقاعدة عند استيراد الإعدادات المسبقة</string>
|
||||
<string name="acc_open_menu">فتح قائمة التنقل</string>
|
||||
<string name="acc_edit">تعديل</string>
|
||||
<string name="acc_delete">حذف</string>
|
||||
<string name="acc_save">حفظ</string>
|
||||
<string name="acc_update_subscriptions">تحديث الاشتراكات</string>
|
||||
<string name="acc_per_app_proxy_information">معلومات الوكيل لكل تطبيق</string>
|
||||
<string name="permission_camera">الكاميرا</string>
|
||||
<string name="permission_notification">الإشعارات</string>
|
||||
<string name="permission_local_network">الشبكة المحلية</string>
|
||||
<string name="subscription_update_updating">جارٍ تحديث الاشتراك: %1$s</string>
|
||||
<string name="subscription_update_progress">جارٍ اختبار %2$s: %1$s</string>
|
||||
<string name="tasker_blurb_start">تشغيل %1$s</string>
|
||||
<string name="tasker_blurb_stop">إيقاف %1$s</string>
|
||||
<string name="connection_test_empty_message">لا تتوفر تفاصيل</string>
|
||||
<string name="value_unknown">غير معروف</string>
|
||||
|
||||
</resources>
|
||||
@@ -490,4 +490,54 @@
|
||||
<string name="backup_location_local">স্থানীয়</string>
|
||||
<string name="backup_location_webdav" translatable="false">WebDAV</string>
|
||||
|
||||
<string name="acc_refresh">লগ রিফ্রেশ করুন</string>
|
||||
<string name="toast_permission_denied_for">%1$s ব্যবহারের অনুমতি দেওয়া হয়নি</string>
|
||||
<string name="acc_add_subscription">সাবস্ক্রিপশন যোগ করুন</string>
|
||||
<string name="toast_malformed_json_detail">কনফিগারেশন ফরম্যাট সঠিক নয়: %1$s</string>
|
||||
<string name="acc_add_asset">অ্যাসেট উৎস যোগ করুন</string>
|
||||
<string name="acc_download_file">অ্যাসেট ফাইল ডাউনলোড করুন</string>
|
||||
<string name="acc_qr_code">QR কোড</string>
|
||||
<string name="acc_copy_log">লগ কপি করুন</string>
|
||||
<string name="acc_clear_log">লগ মুছুন</string>
|
||||
<string name="acc_add_rule">রাউটিং নিয়ম যোগ করুন</string>
|
||||
<string name="core_error_no_server_selected">কোনো কনফিগারেশন নির্বাচন করা হয়নি</string>
|
||||
<string name="core_error_decode_server_config">নির্বাচিত কনফিগারেশন পড়তে ব্যর্থ</string>
|
||||
<string name="core_error_build_config_context">নির্বাচিত কনফিগারেশন প্রস্তুত করতে ব্যর্থ</string>
|
||||
<string name="core_error_get_config">কোর কনফিগারেশন তৈরি করতে ব্যর্থ</string>
|
||||
<string name="core_error_get_config_detail">কোর কনফিগারেশন তৈরি করতে ব্যর্থ: %1$s</string>
|
||||
<string name="core_error_get_speedtest_config_detail">স্পিড টেস্টের জন্য কোর কনফিগারেশন তৈরি করতে ব্যর্থ: %1$s</string>
|
||||
<string name="core_error_custom_config_empty">কাস্টম কনফিগারেশন খালি</string>
|
||||
<string name="core_error_start">কোর চালু করতে ব্যর্থ</string>
|
||||
<string name="acc_start">সার্ভিস শুরু করুন</string>
|
||||
<string name="acc_stop">সার্ভিস বন্ধ করুন</string>
|
||||
<string name="acc_back">ফিরে যান</string>
|
||||
<string name="acc_search">অনুসন্ধান করুন</string>
|
||||
<string name="acc_add">কনফিগারেশন যোগ করুন</string>
|
||||
<string name="acc_more">আরও বিকল্প</string>
|
||||
<string name="acc_share_subscription">সাবস্ক্রিপশন লিংক শেয়ার করুন</string>
|
||||
<string name="acc_share_log">লগ শেয়ার করুন</string>
|
||||
<string name="acc_remove">প্রক্সি চেইনের সদস্য সরান</string>
|
||||
<string name="acc_add_member">প্রক্সি চেইনে সদস্য যোগ করুন</string>
|
||||
<string name="acc_start_scanner">QR স্ক্যানার চালু করুন</string>
|
||||
<string name="acc_stop_scanner">QR স্ক্যানার বন্ধ করুন</string>
|
||||
<string name="acc_turn_torch_on">ফ্ল্যাশলাইট চালু করুন</string>
|
||||
<string name="acc_turn_torch_off">ফ্ল্যাশলাইট বন্ধ করুন</string>
|
||||
<string name="acc_select_image">স্ক্যান করার জন্য ছবি নির্বাচন করুন</string>
|
||||
<string name="acc_locked">প্রিসেট আমদানি করলে নিয়মটি রাখা হবে</string>
|
||||
<string name="acc_open_menu">নেভিগেশন মেনু খুলুন</string>
|
||||
<string name="acc_edit">সম্পাদনা করুন</string>
|
||||
<string name="acc_delete">মুছুন</string>
|
||||
<string name="acc_save">সংরক্ষণ করুন</string>
|
||||
<string name="acc_update_subscriptions">সাবস্ক্রিপশন আপডেট করুন</string>
|
||||
<string name="acc_per_app_proxy_information">প্রতি-অ্যাপ প্রক্সির তথ্য</string>
|
||||
<string name="permission_camera">ক্যামেরা</string>
|
||||
<string name="permission_notification">বিজ্ঞপ্তি</string>
|
||||
<string name="permission_local_network">স্থানীয় নেটওয়ার্ক</string>
|
||||
<string name="subscription_update_updating">সাবস্ক্রিপশন আপডেট করা হচ্ছে: %1$s</string>
|
||||
<string name="subscription_update_progress">%2$s পরীক্ষা করা হচ্ছে: %1$s</string>
|
||||
<string name="tasker_blurb_start">%1$s চালু করুন</string>
|
||||
<string name="tasker_blurb_stop">%1$s বন্ধ করুন</string>
|
||||
<string name="connection_test_empty_message">কোনো বিবরণ পাওয়া যায়নি</string>
|
||||
<string name="value_unknown">অজানা</string>
|
||||
|
||||
</resources>
|
||||
@@ -3,12 +3,12 @@
|
||||
<string name="app_name" translatable="false">v2rayNG</string>
|
||||
<string name="app_widget_name">آلشت</string>
|
||||
<string name="app_tile_name">آلشت</string>
|
||||
<string name="app_tile_first_use">سی کرت ٱولی و کار بوردن ای ویژیی، ٱول ز من برنومه ی سرور ازاف کۊنین</string>
|
||||
<string name="app_tile_first_use">سی کرت ٱولی و کار بوردن ای ویژیی، ٱول ز من برنومه ی سرور اضاف کۊنین</string>
|
||||
<string name="navigation_drawer_open">گۊشیڌن نومگه کشاری</string>
|
||||
<string name="navigation_drawer_close">بستن نومگه کشاری</string>
|
||||
<string name="migration_success">جاگورویی داده یل وا مووفقیت ٱنجوم وابی!</string>
|
||||
<string name="migration_success">جاگورویی داڌه یل وا مووفقیت ٱنجوم وابی!</string>
|
||||
<string name="action_stop_service">واڌاشتن سرویس</string>
|
||||
<string name="migration_fail">جاگورویی داده یل شکست خرد!</string>
|
||||
<string name="migration_fail">جاگورویی داڌه یل شکست خرد!</string>
|
||||
<string name="pull_down_to_refresh">سی وانۊ کردن، بلگه ن بلم بکشین!</string>
|
||||
|
||||
<!-- Notifications -->
|
||||
@@ -29,7 +29,7 @@
|
||||
<string name="menu_item_del_config">پاک کردن کانفیگ</string>
|
||||
<string name="menu_item_import_config_qrcode">و من ٱووردن کانفیگ ز QRcode</string>
|
||||
<string name="menu_item_import_config_clipboard">و من ٱووردن کانفیگ ز کلیپ بورد</string>
|
||||
<string name="menu_item_import_config_local">و من ٱووردن کانفیگ ز مهلی</string>
|
||||
<string name="menu_item_import_config_local">و من ٱووردن کانفیگ ز محلی</string>
|
||||
<string name="menu_item_import_config_policy_group">ٱووردن [بونکۊ سیاست]</string>
|
||||
<string name="menu_item_import_config_proxy_chain">ٱووردن [زنجیره پروکسی]</string>
|
||||
<string name="menu_item_import_config_manually_vmess">ٱووردن [VMess]</string>
|
||||
@@ -40,16 +40,16 @@
|
||||
<string name="menu_item_import_config_manually_trojan">ٱووردن [Trojan]</string>
|
||||
<string name="menu_item_import_config_manually_wireguard">ٱووردن [Wireguard]</string>
|
||||
<string name="menu_item_import_config_manually_hysteria2">ٱووردن [Hysteria2]</string>
|
||||
<string name="confirm_delete_visible_profiles">آیا مطمئن هستید که میخواهید همه پروفایلهای نمایشدادهشده را حذف کنید؟</string>
|
||||
<string name="confirm_delete_duplicate_profiles">آیا مطمئن هستید که میخواهید همه پروفایلهای تکراری نمایشدادهشده را حذف کنید؟</string>
|
||||
<string name="confirm_delete_invalid_profiles">لطفاً ابتدا پروفایلها را آزمایش کنید. آیا مطمئن هستید که میخواهید همه پروفایلهای نامعتبر نمایشدادهشده را حذف کنید؟</string>
|
||||
<string name="confirm_delete_profile">آیا مطمئن هستید که میخواهید این پروفایل را حذف کنید؟</string>
|
||||
<string name="confirm_delete_policy_group">آیا مطمئن هستید که میخواهید این گروه سیاست را حذف کنید؟</string>
|
||||
<string name="confirm_delete_proxy_chain_member">آیا مطمئن هستید که میخواهید این عضو زنجیره پراکسی را حذف کنید؟</string>
|
||||
<string name="confirm_delete_routing_rule">آیا مطمئن هستید که میخواهید این قانون مسیریابی را حذف کنید؟</string>
|
||||
<string name="confirm_delete_subscription_group">آیا مطمئن هستید که میخواهید این گروه اشتراک را حذف کنید؟</string>
|
||||
<string name="confirm_delete_asset_file">آیا مطمئن هستید که میخواهید فایل دارایی \"%1$s\" را حذف کنید؟</string>
|
||||
<string name="confirm_delete_asset_source">آیا مطمئن هستید که میخواهید این منبع دارایی را حذف کنید؟</string>
|
||||
<string name="confirm_delete_visible_profiles">پوی کانفیگا ک هیم سکو نشووݩ داڌه ابۊن پاک ابۊن، هنی هم اخۊی پاکسووݩ کۊنی؟</string>
|
||||
<string name="confirm_delete_duplicate_profiles">پوی کانفیگا تکراری ک هیم سکو نشووݩ داڌه ابۊن پاک ابۊن، هنی هم اخۊی پاکسووݩ کۊنی؟</string>
|
||||
<string name="confirm_delete_invalid_profiles">ٱول کانفیگا ن آزمایش کۊنین. پوی کانفیگا نا موئتبر ک هیم سکو نشووݩ داڌه ابۊن پاک ابۊن، هنی هم اخۊی پاکسووݩ کۊنی؟</string>
|
||||
<string name="confirm_delete_profile">ای کانفیگ پاک ابۊ، هنی هم اخۊی پاکس کۊنی؟</string>
|
||||
<string name="confirm_delete_policy_group">ای بونکۊ سیاست پاک ابۊ، هنی هم اخۊی پاکس کۊنی؟</string>
|
||||
<string name="confirm_delete_proxy_chain_member">ای عوزو زنجیره پروکسی پاک ابۊ، هنی هم اخۊی پاکس کۊنی؟</string>
|
||||
<string name="confirm_delete_routing_rule">ای قانووݩ تور جوستن پاک ابۊ، هنی هم اخۊی پاکس کۊنی؟</string>
|
||||
<string name="confirm_delete_subscription_group">ای بونکۊ اشتراک پاک ابۊ، هنی هم اخۊی پاکس کۊنی؟</string>
|
||||
<string name="confirm_delete_asset_file">فایل بونچک جغرافیایی «%1$s» پاک ابۊ، هنی هم اخۊی پاکس کۊنی؟</string>
|
||||
<string name="confirm_delete_asset_source">ای بونچک فایلا جغرافیایی پاک ابۊ، هنی هم اخۊی پاکس کۊنی؟</string>
|
||||
<string name="server_lab_remarks">نیشتنا</string>
|
||||
<string name="server_lab_address">نشۊوی</string>
|
||||
<string name="server_lab_port">پورت</string>
|
||||
@@ -59,7 +59,7 @@
|
||||
<string name="server_lab_network">شبکه</string>
|
||||
<string name="server_lab_more_function">جاگورو</string>
|
||||
<string name="server_lab_head_type">نوع هدر</string>
|
||||
<string name="server_lab_mode_type">هالت gRPC</string>
|
||||
<string name="server_lab_mode_type">حالت gRPC</string>
|
||||
<string name="server_lab_request_host">هاست</string>
|
||||
<string name="server_lab_request_host_http">هاست http</string>
|
||||
<string name="server_lab_request_host_ws">هاست ws</string>
|
||||
@@ -73,11 +73,11 @@
|
||||
<string name="server_lab_path_httpupgrade">تور HTTPUpgrade</string>
|
||||
<string name="server_lab_path_xhttp">تور XHTTP</string>
|
||||
<string name="server_lab_path_h2">تور H2</string>
|
||||
<string name="server_lab_path_quic">تور QUIC</string>
|
||||
<string name="server_lab_path_quic">کیلیت QUIC</string>
|
||||
<string name="server_lab_path_kcp">KCP seed</string>
|
||||
<string name="server_lab_path_grpc">نوم سرویس gRPC</string>
|
||||
<string name="server_lab_stream_security" translatable="false">TLS</string>
|
||||
<string name="server_lab_stream_fingerprint">Fingerprint</string>
|
||||
<string name="server_lab_stream_fingerprint">جا کلک</string>
|
||||
<string name="server_lab_stream_alpn" translatable="false">ALPN</string>
|
||||
<string name="server_lab_allow_insecure">تئیڌ گوواهی ن ناڌیڌه بگرین (allowInsecure)</string>
|
||||
<string name="server_lab_sni" translatable="false">SNI</string>
|
||||
@@ -96,33 +96,33 @@
|
||||
<string name="server_lab_mldsa65_verify" translatable="false">mldsa65Verify</string>
|
||||
<string name="server_lab_secret_key">کیلیت سیخومی</string>
|
||||
<string name="server_lab_reserved">Reserved(اختیاری، وا کاما (,) ز یک جوڌا ابۊن)</string>
|
||||
<string name="server_lab_local_address">نشۊوی مهلی (اختیاری IPv4/IPv6، وا کاما (,) ز یک جوڌا ابۊن)</string>
|
||||
<string name="server_lab_local_mtu">Mtu(اختیاری، پؽش فرز 1420)</string>
|
||||
<string name="server_lab_kcp_mtu">mKCP MTU (اختیاری، پؽش فرز هسته 1350)</string>
|
||||
<string name="server_lab_kcp_tti">mKCP TTI (اختیاری، پؽش فرز هسته 50)</string>
|
||||
<string name="server_lab_local_address">نشۊوی محلی (اختیاری IPv4/IPv6، وا کاما (,) ز یک جوڌا ابۊن)</string>
|
||||
<string name="server_lab_local_mtu">MTU(اختیاری، پؽش فرض 1420)</string>
|
||||
<string name="server_lab_kcp_mtu">mKCP MTU (اختیاری، پؽش فرض هسته 1350)</string>
|
||||
<string name="server_lab_kcp_tti">mKCP TTI (اختیاری، پؽش فرض هسته 50)</string>
|
||||
<string name="toast_success">وا مووفقیت ٱنجوم وابی</string>
|
||||
<string name="toast_failure">شکست خرد</string>
|
||||
<string name="toast_none_data">هیچ داده ای وۊجۊڌ نڌاره</string>
|
||||
<string name="toast_none_data">هیچ داڌه ای وۊجۊڌ نڌاره</string>
|
||||
<string name="toast_incorrect_protocol">پوروتوکول نادوروست</string>
|
||||
<string name="toast_decoding_failed">رزم گوشایی ٱنجوم نوابی</string>
|
||||
<string name="title_file_chooser">پسند فایل کانفیگ</string>
|
||||
<string name="toast_require_file_manager">ی برنومه دؽوۉداری فایل بپۊرنین.</string>
|
||||
<string name="server_customize_config">کانفیگ سفارشی</string>
|
||||
<string name="toast_config_file_invalid">کانفیگ نا موئتبر هڌ</string>
|
||||
<string name="server_lab_content">موئتوا</string>
|
||||
<string name="toast_none_data_clipboard">هیچ داده ای من کلیپ بورد وۊجۊڌ نڌاره</string>
|
||||
<string name="server_lab_content">محتوا</string>
|
||||
<string name="toast_none_data_clipboard">هیچ داڌه ای من کلیپ بورد وۊجۊڌ نڌاره</string>
|
||||
<string name="toast_invalid_url">نشۊوی اینترنتی نا موئتبر هڌ</string>
|
||||
<string name="toast_insecure_url_protocol">نشۊوی اشتراک پوروتوکول نا ٱمن HTTP ن و کار مبرین</string>
|
||||
<string name="server_lab_need_inbound">موتمعن بۊین ک پورت وۊرۊڌی وا سامووا ی جۊر هڌ</string>
|
||||
<string name="server_lab_need_inbound">موطمئن بۊین ک پورت وۊرۊڌی وا سامووا ی جۊر هڌ</string>
|
||||
<string name="toast_malformed_json">کانفیگ نا موئتبر هڌ</string>
|
||||
<string name="server_lab_request_host6">هاست(SNI)(اختیاری)</string>
|
||||
<string name="toast_action_not_allowed">ای کار ممنۊع هڌ</string>
|
||||
<string name="server_obfs_password">رزم obfs</string>
|
||||
<string name="server_lab_port_hop">پورت گوم (درگا سرورن ز نۊ هؽل اکونه)</string>
|
||||
<string name="server_lab_port_hop_interval">فاسله پورت گوم (سانیه)</string>
|
||||
<string name="server_lab_port_hop_interval">فاصله پورت گوم (ثانیه)</string>
|
||||
<string name="server_lab_bandwidth_down">ب لم ٱووڌن پئنا باند (واهڌ)</string>
|
||||
<string name="server_lab_bandwidth_up">وا روء رئڌن پئنا باند (واهڌ)</string>
|
||||
<string name="server_lab_xhttp_mode">هالت XHTTP</string>
|
||||
<string name="server_lab_xhttp_mode">حالت XHTTP</string>
|
||||
<string name="server_lab_xhttp_extra">XHTTP Extra خام JSON، قالوو: { XHTTPObject }</string>
|
||||
<string name="server_lab_final_mask">finalMask خام JSON، قالوو: { FinalMaskObject }</string>
|
||||
<string name="server_lab_ech_config_list" translatable="false">echConfigList</string>
|
||||
@@ -143,20 +143,20 @@
|
||||
<string name="menu_item_scan_qrcode">اسکن QRcode</string>
|
||||
<string name="title_url" translatable="false">URL</string>
|
||||
<string name="menu_item_download_file">دانلود فایلا</string>
|
||||
<string name="title_user_asset_add_url">نشۊوی اینترنتی دارایی ن ازاف کۊنین</string>
|
||||
<string name="title_user_asset_add_url">نشۊوی اینترنتی بونچک ن اضاف کۊنین</string>
|
||||
<string name="msg_file_not_found">فایلن نجوست</string>
|
||||
<string name="msg_remark_is_duplicate">ای نوم ز زیتر بیڌس</string>
|
||||
<string name="asset_geo_files_sources">بونچک فایلا جوقرافیایی (اختیاری)</string>
|
||||
<string name="asset_geo_files_sources">بونچک فایلا جغرافیایی (اختیاری)</string>
|
||||
|
||||
<!-- PerAppProxyActivity -->
|
||||
<string name="msg_dialog_progress">هونی بار ونی ابۊ...</string>
|
||||
<string name="menu_item_search">پیتینیڌن</string>
|
||||
<string name="menu_item_select_all">پسند پوی</string>
|
||||
<string name="menu_item_invert_selection">چواسه کردن پسندا</string>
|
||||
<string name="msg_enter_keywords">کلمه یل کلیدی ن بزنین</string>
|
||||
<string name="switch_bypass_apps_mode">هالت دور زیڌن</string>
|
||||
<string name="msg_enter_keywords">کلمه یل کلیڌی ن بزنین</string>
|
||||
<string name="switch_bypass_apps_mode">حالت دور زیڌن</string>
|
||||
<string name="menu_item_select_proxy_app">پسند خوتکار برنومه یلی ک پروکسی اخون</string>
|
||||
<string name="msg_downloading_content">موئتوا هونی دانلود ابۊن...</string>
|
||||
<string name="msg_downloading_content">محتوا هونی دانلود ابۊن...</string>
|
||||
<string name="menu_item_export_proxy_app">و در کشیڌن من کلیپ بورد</string>
|
||||
<string name="menu_item_import_proxy_app">و من ٱووردن ز کلیپ بورد</string>
|
||||
<string name="per_app_proxy_settings">سامووا ب تفکیک برنومه</string>
|
||||
@@ -169,7 +169,7 @@
|
||||
<string name="title_core_settings">سامووا هسته</string>
|
||||
<string name="title_vpn_settings">سامووا VPN</string>
|
||||
<string name="title_pref_per_app_proxy">پروکسی و ری برنومه</string>
|
||||
<string name="summary_pref_per_app_proxy">پوی وولاتی: برنومه پسند وابیڌه وا ی پروکسی منپیز ابۊ، برنومه پسند نوابیڌه موستقیمن منپیز ابۊ.\nهالت دور زیڌن: برنومه پسند وابیڌه موستقیمن منپیز ابۊ، برنومه پسند نوابیڌه وا ی پروکسی منپیز ابۊ.\nپسند خوتکار برنومه یل پروکسی من نومگه امکووݩ پزیر هڌ.</string>
|
||||
<string name="summary_pref_per_app_proxy">پوی وولاتی: برنومه پسند وابیڌه وا ی پروکسی منپیز ابۊ، برنومه پسند نوابیڌه موستقیمن منپیز ابۊ.\nحالت دور زیڌن: برنومه پسند وابیڌه موستقیمن منپیز ابۊ، برنومه پسند نوابیڌه وا ی پروکسی منپیز ابۊ.\nپسند خوتکار برنومه یل پروکسی من نومگه امکووݩ پذیر هڌ.</string>
|
||||
<string name="title_pref_is_booted">منپیز خوتکار مجال ره ونی</string>
|
||||
<string name="summary_pref_is_booted">مجال ره وندن، خوساخوس و سرور پسند بیڌه منپیز ابۊ که گاشڌ نا مووفق بۊ.</string>
|
||||
|
||||
@@ -184,7 +184,7 @@
|
||||
|
||||
<string name="title_mux_settings">سامووا Mux</string>
|
||||
<string name="title_pref_mux_enabled">ره وندن Mux</string>
|
||||
<string name="summary_pref_mux_enabled">زل تر، ٱما گاشڌ منپیز زی قت بۊ\nمخزن ترافیک TCP وا 8 منپیز پؽش فرز، بارت دؽوۉداری UDP وو QUIC ن ای لم سفارشی کۊنین.</string>
|
||||
<string name="summary_pref_mux_enabled">زل تر، ٱما گاشڌ منپیز زی قط بۊ\nدؽوۉداری TCP، UDP وو QUIC ن ای لم سفارشی کۊنین.</string>
|
||||
<string name="title_pref_mux_concurrency">منپیزا TCP (تلایه منجا -1 تا 1024)</string>
|
||||
<string name="title_pref_mux_xudp_concurrency">منپیزا XUDP (تلایه منجا -1 تا 1024)</string>
|
||||
<string name="title_pref_mux_xudp_quic">دؽوۉداری QUIC من تۊنل mux</string>
|
||||
@@ -197,32 +197,32 @@
|
||||
<string name="title_pref_speed_enabled">ره وندن نشووݩ داڌن سورعت</string>
|
||||
<string name="summary_pref_speed_enabled">سورعت هیم سکویی من وارسۊوی نشووݩ داڌه ابۊ.\nنماڌ نشووݩ اڌه ک ترافیک پروکسی یا موستقیم بؽتره.</string>
|
||||
|
||||
<string name="title_pref_sniffing_enabled">ره وندن در کشیڌن نوم دامنه موورد نزر (Sniffing)</string>
|
||||
<string name="summary_pref_sniffing_enabled">قپ ریت سی و در کشیڌن نوم دامنه واقعی ز کتنا (پؽش فرز رۊشن هڌ)</string>
|
||||
<string name="title_pref_sniffing_enabled">ره وندن در کشیڌن نوم دامنه موورد نظر (Sniffing)</string>
|
||||
<string name="summary_pref_sniffing_enabled">قپ ریت سی و در کشیڌن نوم دامنه واقعی ز کتنا (پؽش فرض رۊشن هڌ)</string>
|
||||
<string name="title_pref_route_only_enabled">ره وندن تینا تور جوستن routeOnly</string>
|
||||
<string name="summary_pref_route_only_enabled">نوم دامنه sniffed ن تینا سی تور جوستن و کار بگیرین وو نشۊوی موورد نزرن و عونوان نشۊوی IP ووردارین.</string>
|
||||
<string name="summary_pref_route_only_enabled">نوم دامنه sniffed ن تینا سی تور جوستن و کار بگیرین وو نشۊوی موورد نظرن و عونوان نشۊوی IP ووردارین.</string>
|
||||
|
||||
<string name="title_pref_local_dns_enabled">ره وندن DNS مهلی</string>
|
||||
<string name="summary_pref_local_dns_enabled">درخاستا DNS و هسته و من ایان وو و دست ماژول DNS پردازشت ابۊن (پؽشنهاڌ ابۊ ٱر لنگ تور جوستن سی دور زیڌن نشۊویا LAN وو وولات ٱسلی هڌین ره ونده بۊ)</string>
|
||||
<string name="title_pref_local_dns_enabled">ره وندن DNS محلی</string>
|
||||
<string name="summary_pref_local_dns_enabled">درخواستا DNS و هسته و من ایان وو و دست ماژول DNS پردازشت ابۊن (پؽشنهاڌ ابۊ ٱر لنگ تور جوستن سی دور زیڌن نشۊویا LAN وو وولات ٱسلی هڌین ره ونده بۊ)</string>
|
||||
|
||||
<string name="title_pref_fake_dns_enabled">ره وندن DNS جئلی (FakeDNS)</string>
|
||||
<string name="summary_pref_fake_dns_enabled">دی ان اس مهلی نشۊویا آی پی جئلی ن اوورگنه (زل تر، ٱما گاشڌ من ی قرده ز برنومه یل کار نکونه)</string>
|
||||
<string name="summary_pref_fake_dns_enabled">FakeDNS نشۊویا IP جئلی ن سی نوم دامنه اوورگنه (زل تر، ٱما گاشڌ من ی قرده ز برنومه یل کار نکونه).</string>
|
||||
|
||||
<string name="title_pref_ipv6_enabled">ره وندن IPv6</string>
|
||||
<string name="summary_pref_ipv6_enabled">نشۊویا وو تورا IPv6 ن و رابت VPN ازاف کۊنین</string>
|
||||
<string name="summary_pref_ipv6_enabled">نشۊویا وو تورا IPv6 ن و رابط VPN اضاف کۊنین</string>
|
||||
|
||||
<string name="title_pref_prefer_ipv6">ترجی داڌن IPv6</string>
|
||||
<string name="summary_pref_prefer_ipv6">مجال هل وو فسل نوم دامنه، نشۊویا IPv6 ن ترجی بڌین</string>
|
||||
|
||||
<string name="title_pref_remote_dns">DNS ز ره دیر (اختیاری) (udp/tcp/https/quic) (اختیاری)</string>
|
||||
<string name="title_pref_remote_dns">DNS ز ره دیر (udp/tcp/https/quic، اختیاری)</string>
|
||||
<string name="summary_pref_remote_dns" translatable="false">DNS</string>
|
||||
|
||||
<string name="title_pref_vpn_dns">VPN DNS (تینا IPv4/v6)</string>
|
||||
<string name="title_pref_vpn_bypass_lan">VPN ز شبکه مهلی اگوڌرته؟</string>
|
||||
<string name="title_pref_vpn_bypass_lan">VPN ز شبکه محلی اگوڌرته؟</string>
|
||||
|
||||
<string name="title_pref_vpn_interface_address">نشۊوی رابت VPN</string>
|
||||
<string name="title_pref_vpn_interface_address">نشۊوی رابط VPN</string>
|
||||
|
||||
<string name="title_pref_vpn_mtu">VPN MTU (پؽش فرز 1500)</string>
|
||||
<string name="title_pref_vpn_mtu">VPN MTU (پؽش فرض 1500)</string>
|
||||
|
||||
|
||||
<string name="title_pref_domestic_dns">DNS منی (اختیاری)</string>
|
||||
@@ -233,76 +233,76 @@
|
||||
|
||||
<string name="title_pref_delay_test_url">نشۊوی اینترنتی آزمایش تئخیر واقعی</string>
|
||||
<string name="summary_pref_delay_test_url" translatable="false">URL</string>
|
||||
<string name="title_pref_real_ping_concurrency">تعداد هوم زمووی تست تئخیر واقعی</string>
|
||||
<string name="title_pref_real_ping_concurrency">تعداڌ هوم زمووی تست تئخیر واقعی</string>
|
||||
|
||||
<string name="title_pref_ip_api_url">نشۊوی اینترنتی آزمایش دووسمندیا منپیز هیم سکویی</string>
|
||||
<string name="summary_pref_ip_api_url" translatable="false">URL</string>
|
||||
|
||||
<string name="title_pref_proxy_sharing_enabled">یک رسۊوی پروکسی من شبکه مهلی LAN</string>
|
||||
<string name="summary_pref_proxy_sharing_enabled">پوی دسگایل ترن وا نشۊوی IP ایسا، ز ره socks/http و پروکسی منپیز بۊن، تینا من شبکه قابل ائتماد ره ونده بۊ تا ز منپیز قیر موجاز جلو گری بۊ.</string>
|
||||
<string name="toast_warning_pref_proxysharing_short">یک رسۊوی من شبکه مهلی ره وست؛ موتمعن بۊین ک من ی شبکه ٱمن هڌین.</string>
|
||||
<string name="title_pref_proxy_sharing_enabled">یک رسۊوی پروکسی من شبکه محلی LAN</string>
|
||||
<string name="summary_pref_proxy_sharing_enabled">پوی دسگایل ترن وا نشۊوی IP ایسا، ز ره socks/http و پروکسی منپیز بۊن، تینا من شبکه قابل ائتماڌ ره ونده بۊ تا ز منپیز غیر موجاز جلو گری بۊ.</string>
|
||||
<string name="toast_warning_pref_proxysharing_short">یک رسۊوی من شبکه محلی ره وست؛ موطمئن بۊین ک من ی شبکه ٱمن هڌین.</string>
|
||||
|
||||
<string name="title_pref_socks_port">پورت پروکسی مهلی</string>
|
||||
<string name="title_pref_enable_local_proxy">ره وندن پروکسی مهلی</string>
|
||||
<string name="title_pref_socks_port">پورت پروکسی محلی</string>
|
||||
<string name="title_pref_enable_local_proxy">ره وندن پروکسی محلی</string>
|
||||
<string name="summary_pref_enable_local_proxy">هرسا ره نوسته بۊ، هیچ پروکسی SOCKS من دسرس نؽ، سی دل هیمو کارایی جۊر ورۊ رسۊوی یل اشتراک نترن پروکسی ن و کار گرن.</string>
|
||||
<string name="title_pref_socks_enable_udp" translatable="false">SOCKS5 UDP</string>
|
||||
<string name="summary_pref_socks_enable_udp">ائراز هۊویت socks5 مجال استفاڌه ز UDP کاملن ایمن نؽ</string>
|
||||
<string name="summary_pref_socks_port">پورت پروکسی مهلی</string>
|
||||
<string name="title_pref_dynamic_socks_port">وورکل پورت موتقیر سی پروکسی مهلی</string>
|
||||
<string name="summary_pref_dynamic_socks_port">هر کرت ک و من ٱووڌنی وورکل ابۊ، ی پورت پروکسی مهلی تساڌۊفی وورکل اکونه.</string>
|
||||
<string name="title_pref_socks_username">نوم منتوری پروکسی مهلی (اختیاری)</string>
|
||||
<string name="summary_pref_socks_port">پورت پروکسی محلی</string>
|
||||
<string name="title_pref_dynamic_socks_port">وورکل پورت موتغیر سی پروکسی محلی</string>
|
||||
<string name="summary_pref_dynamic_socks_port">هر کرت ک و من ٱووڌنی وورکل ابۊ، ی پورت پروکسی محلی تساڌۊفی وورکل اکونه.</string>
|
||||
<string name="title_pref_socks_username">نوم منتوری پروکسی محلی (اختیاری)</string>
|
||||
<string name="summary_pref_socks_username">نوم منتوری</string>
|
||||
<string name="title_pref_socks_password">رزم پروکسی مهلی (اختیاری)</string>
|
||||
<string name="title_pref_socks_password">رزم پروکسی محلی (اختیاری)</string>
|
||||
<string name="summary_pref_socks_password">رزم</string>
|
||||
|
||||
<string name="title_pref_local_dns_port">پورت DNS مهلی</string>
|
||||
<string name="summary_pref_local_dns_port">پورت DNS مهلی</string>
|
||||
<string name="title_pref_local_dns_port">پورت DNS محلی</string>
|
||||
<string name="summary_pref_local_dns_port">پورت DNS محلی</string>
|
||||
|
||||
<string name="title_pref_confirm_remove">قوۊل کردن پاک کردن کانفیگ</string>
|
||||
<string name="summary_pref_confirm_remove">سی پاک وابیڌن فایل کانفیگ، لنگ قوۊل کردن دووارته ز سمت منتور هڌ.</string>
|
||||
|
||||
|
||||
<string name="title_pref_append_http_proxy">پروکسی HTTP ن و VPN ازاف کۊنین</string>
|
||||
<string name="summary_pref_append_http_proxy">پروکسی HTTP ن موسقیمن ز (مۊرۊرگر/ی قرد ز برنومه یل لادراری بیڌه)، بؽ استفاڌه ز دسگا NIC مجازی (Android 10+) استفاڌه ابۊ.</string>
|
||||
<string name="title_pref_append_http_proxy">پروکسی HTTP ن و VPN اضاف کۊنین</string>
|
||||
<string name="summary_pref_append_http_proxy">پروکسی HTTP ن موستقیمن ز (مۊرۊرگر/ی قرد ز برنومه یل لادراری بیڌه)، بؽ استفاڌه ز دسگا NIC مجازی (Android 10+) استفاڌه ابۊ.</string>
|
||||
|
||||
<string name="title_pref_double_column_display">ره وندن نشووݩ داڌن دو سۊتۊنی</string>
|
||||
<string name="summary_pref_double_column_display">نومگه کانفیگا من دو ستۊݩ نشووݩ داڌه ابۊ تا مهتووا بؽتری من بلگه جا بگره.</string>
|
||||
<string name="summary_pref_double_column_display">نومگه کانفیگا من دو ستۊݩ نشووݩ داڌه ابۊ تا محتوا بؽتری من بلگه جا بگره.</string>
|
||||
|
||||
<string name="title_pref_group_all_display">نشووݩ داڌن پوی بونکۊ یل ن ره ونین</string>
|
||||
<string name="summary_pref_group_all_display">ی بلگه «پوی بونکۊ یل کانفیگ» ازاف کۊنین</string>
|
||||
<string name="summary_pref_group_all_display">ی بلگه «پوی بونکۊ یل کانفیگ» اضاف کۊنین</string>
|
||||
|
||||
<!-- AboutActivity -->
|
||||
<string name="title_pref_feedback">فشناڌن منشڌ</string>
|
||||
<string name="summary_pref_feedback">فشناڌن منشڌ یا گوزارش موشکلا من Github</string>
|
||||
<string name="summary_pref_tg_group">ٱووڌن من بونکۊ تلگرام</string>
|
||||
<string name="toast_tg_app_not_found">برنومه تلگرامن نجوست</string>
|
||||
<string name="title_privacy_policy">هریم سیخومی</string>
|
||||
<string name="title_privacy_policy">حریم سیخومی</string>
|
||||
<string name="title_qr_code">کود QR</string>
|
||||
<string name="title_about">زبار</string>
|
||||
<string name="title_source_code">کود بونچک</string>
|
||||
<string name="title_oss_license">موجوزا کود بونچک</string>
|
||||
<string name="title_tg_channel">تورگه تلگرام</string>
|
||||
|
||||
<string name="title_pref_promotion">تبلیقات</string>
|
||||
<string name="title_pref_promotion">تبلیغات</string>
|
||||
|
||||
<string name="title_pref_auto_update_subscription">ورۊ کردن خوتکار اشتراکا</string>
|
||||
<string name="summary_pref_auto_update_subscription">اشتراکا خوتووݩ ن و تۉر خوتکار وا فاسله زمۊوی من پس زمینه ورۊ کۊنین. ای ویژیی من پوی دسگایل گاشڌ همیشه کار نکونه</string>
|
||||
<string name="title_pref_auto_update_interval">فاسله ورۊ کردن خوتکار (اقلن وا 15 دؽقه بۊ)</string>
|
||||
<string name="summary_pref_auto_update_subscription">اشتراکا خوتووݩ ن و تۉر خوتکار وا فاصله زمۊوی من پس زمینه ورۊ کۊنین. ای ویژیی من پوی دسگایل گاشڌ همیشه کار نکونه</string>
|
||||
<string name="title_pref_auto_update_interval">فاصله ورۊ کردن خوتکار (اقلن وا 15 دؽقه بۊ)</string>
|
||||
|
||||
<string name="title_core_loglevel">سئت گوزارشا</string>
|
||||
<string name="title_outbound_domain_resolve_method">بارت پؽش هل دامنه دری (outbound)</string>
|
||||
<string name="title_mode">هالت</string>
|
||||
<string name="title_mode">حالت</string>
|
||||
<string name="title_mode_help">سی دووسمندیا وو هیاری قلوه، ری ای هؽل بزݩ</string>
|
||||
<string name="title_language">زووݩ</string>
|
||||
<string name="title_ui_settings">سامووا رابت منتوری</string>
|
||||
<string name="title_pref_ui_mode_night">سامووا هالت رابت منتوری</string>
|
||||
<string name="title_ui_settings">سامووا رابط منتوری</string>
|
||||
<string name="title_pref_ui_mode_night">سامووا حالت رابط منتوری</string>
|
||||
<string name="title_pref_use_hev_tunnel">و کار گرؽڌن ویژیی Hev TUN</string>
|
||||
<string name="summary_pref_use_hev_tunnel">مجالی ک ره ونده بۊ، TUN ایا hev-socks5-tunnel ن و کار اگره؛ ٱر ره نوۊفته بۊ، همو xray-core ن و کار اگره.</string>
|
||||
<string name="title_pref_hev_tunnel_loglevel">Hev Tun سئت گوزارشا</string>
|
||||
<string name="title_pref_hev_tunnel_rw_timeout">زمووݩ مندیر بیڌن خوندن/هؽل کردن Hev Tun (سانیه) (پؽش فرز tcp، udp 300،60)</string>
|
||||
<string name="title_mode_settings">سامووا هالت</string>
|
||||
<string name="title_root_mode_enabled">هالت رۊت ره وست (منتورووݩ رۊت)</string>
|
||||
<string name="summary_root_mode_enabled">ره وستن پروکسی شفاف سئت بلم وا امتیازا ریشه. ای هالت، VPN استاندارد سیستوم ٱندروید ن دور ازنه تا موستقیمن پوی ترافیک شبکه لمی ن وا دست بگره. بئڌ ره وندن، هالت معمۊلی ٱسلی، تور جۊری هر برنومه وو سامووا VPN مربۊته کاملن ناموعتبر ابۊن.</string>
|
||||
<string name="title_pref_hev_tunnel_rw_timeout">زمووݩ مندیر بیڌن خوندن/هؽل کردن Hev Tun (ثانیه) (پؽش فرض tcp، udp 300،60)</string>
|
||||
<string name="title_mode_settings">سامووا حالت</string>
|
||||
<string name="title_root_mode_enabled">حالت رۊت ره وست (منتورووݩ رۊت)</string>
|
||||
<string name="summary_root_mode_enabled">ره وستن پروکسی شفاف سئت بلم وا امتیازا ریشه. ای حالت، VPN استاندارد سیستوم ٱندروید ن دور ازنه تا موستقیمن پوی ترافیک شبکه لمی ن وا دست بگره. بئڌ ره وندن، حالت معمۊلی ٱسلی، تور جۊری هر برنومه وو سامووا VPN مربۊته کاملن نا موئتبر ابۊن.</string>
|
||||
<string name="toast_root_required">دسرسی رۊت سی ای ویژیی لازوم هڌ</string>
|
||||
<string name="title_root_lan_sharing">یک رسۊوی LAN / تترینگ (منتورووݩ رۊت وابیڌه)</string>
|
||||
<string name="summary_root_lan_sharing">ترافیک هاتاسپات وایفای وو دسگا یل منپیز وابیڌه وا USB (تترینگ) ن ز تور VPN بفشنین.</string>
|
||||
@@ -315,24 +315,24 @@
|
||||
<string name="title_del_all_config">پاک کردن پوی کانفیگا بونکۊ سکویی</string>
|
||||
<string name="title_del_duplicate_config">پاک کردن کانفیگا تکراری بونکۊ سکویی</string>
|
||||
<string name="title_del_invalid_config">پاک کردن کانفیگا نا موئتبر بونکۊ سکویی</string>
|
||||
<string name="title_export_all">و در کشیڌن کانفیگا قیر سفارشی بونکۊ سکویی من کلیپ بورد</string>
|
||||
<string name="title_export_all">و در کشیڌن کانفیگا غیر سفارشی بونکۊ سکویی من کلیپ بورد</string>
|
||||
<string name="title_sub_setting">سامووا بونکۊ اشتراک</string>
|
||||
<string name="sub_setting_remarks">نیشتنا</string>
|
||||
<string name="sub_setting_url">نشۊوی اینترنتی اختیاری</string>
|
||||
<string name="sub_setting_user_agent" translatable="false">User Agent</string>
|
||||
<string name="sub_setting_request_headers">سرآیندا درخاست (قالوو JSON)</string>
|
||||
<string name="sub_setting_filter">نوم موستعار فیلتر</string>
|
||||
<string name="sub_setting_request_headers">سرآیندا درخواست (قالوو JSON)</string>
|
||||
<string name="sub_setting_filter">فیلتر نیشتنا وا regex</string>
|
||||
<string name="sub_setting_enable">ره وندن ورۊ کردن</string>
|
||||
<string name="sub_auto_update">ره وندن ورۊ کردن خوتکار</string>
|
||||
<string name="sub_allow_insecure_url">موجاز کردن نشۊوی HTTP نا ٱمن</string>
|
||||
<string name="sub_setting_pre_profile">نوم موستعار پروکسی دیندایی</string>
|
||||
<string name="sub_setting_next_profile">نوم موستعار پروکسی نیایی</string>
|
||||
<string name="sub_setting_pre_profile_tip">موتمعن بۊ ک نوم موستعار هڌس وو جۊرس نی</string>
|
||||
<string name="toast_invalid_update_interval">فاسله ورۊ کردن نا موئتبر هڌ. هدقل مقدار 15 دؽقه هڌ.</string>
|
||||
<string name="sub_setting_pre_profile">نیشتنا کانفیگ پروکسی دیندایی</string>
|
||||
<string name="sub_setting_next_profile">نیشتنا کانفیگ پروکسی نیایی</string>
|
||||
<string name="sub_setting_pre_profile_tip">موطمئن بۊ ک نیشتنا هڌس وو جۊرس نی</string>
|
||||
<string name="toast_invalid_update_interval">فاصله ورۊ کردن نا موئتبر هڌ. حداقل مقدار 15 دؽقه هڌ.</string>
|
||||
<string name="title_sub_update">ورۊ کردن اشتراک بونکۊ سکویی</string>
|
||||
<string name="title_ping_all_server">Tcping کانفیگا بونکۊ سکویی</string>
|
||||
<string name="title_real_ping_all_server">تئخیر واقعی کانفیگا بونکۊ سکویی</string>
|
||||
<string name="title_user_asset_setting">فایلا بونچک جوقرافیایی</string>
|
||||
<string name="title_user_asset_setting">فایلا بونچک جغرافیایی</string>
|
||||
<string name="title_sort_by_test_results">ترتیب و ری نتیجه یل پینگ</string>
|
||||
<string name="title_filter_config">فیلتر کردن کانفیگا</string>
|
||||
<string name="filter_config_all">پوی</string>
|
||||
@@ -378,30 +378,30 @@
|
||||
<string name="connection_test_pending">منپیزن واجۊری کوݩ</string>
|
||||
<string name="connection_test_testing">هونی آزمایش ابۊ…</string>
|
||||
<string name="connection_test_testing_count">%d کانفیگ هونی آزمایش ابۊ...</string>
|
||||
<string name="connection_test_available">مووفق بی: منپیز %dms تۊل کشی</string>
|
||||
<string name="connection_test_available">مووفق بی: منپیز %dms طۊل کشی</string>
|
||||
<string name="connection_test_error">منپیز و اینترنتن نجوست: %s</string>
|
||||
<string name="connection_test_fail">اینترنت من دسرس نؽ</string>
|
||||
<string name="connection_test_error_status_code">کود ختا: #%d</string>
|
||||
<string name="connection_test_error_status_code">کود خطا: #%d</string>
|
||||
<string name="connection_connected">منپیز هڌ، سی واجۊری کیلیک کوݩ</string>
|
||||
<string name="connection_not_connected">منپیز نؽڌ</string>
|
||||
<string name="connection_running_task_left">تعداد وزیفه یل آزمایشی ک ره اۊفتانه: %s</string>
|
||||
<string name="connection_running_task_left">آزمایشا هونی ٱنجوم ابۊن: %s</string>
|
||||
|
||||
<string name="import_subscription_success">اشتراک وا مووفقیت زفت وابی</string>
|
||||
<string name="import_subscription_failure">اشتراک زفت نوابی</string>
|
||||
<string name="title_fragment_settings">سامووا فرگمنت (Fragment)</string>
|
||||
<string name="title_pref_fragment_packets">کتنا فرگمنت</string>
|
||||
<string name="title_pref_fragment_length">تۊل کتنا فرگمنت (هدقل-هدکسر)</string>
|
||||
<string name="title_pref_fragment_interval">فاسله منجا کتنا فرگمنت (هدقل-هدکسر)</string>
|
||||
<string name="title_pref_fragment_length">طۊل کتنا فرگمنت (حداقل-حداکثر)</string>
|
||||
<string name="title_pref_fragment_interval">فاصله منجا کتنا فرگمنت (حداقل-حداکثر)</string>
|
||||
<string name="title_pref_fragment_enabled">ره وندن فرگمنت</string>
|
||||
<string name="title_pref_fragment_maxsplit">هدکسر تقسیم فرگمنت</string>
|
||||
<string name="title_pref_fragment_maxsplit">حداکثر تقسیم فرگمنت</string>
|
||||
<string name="title_observatory_settings">سامووا واجۊری منپیز (Observatory)</string>
|
||||
<string name="title_pref_observatory_least_ping_interval">فاسله leastPing</string>
|
||||
<string name="title_pref_observatory_least_load_interval">فاسله leastLoad</string>
|
||||
<string name="title_pref_observatory_least_ping_interval">فاصله leastPing</string>
|
||||
<string name="title_pref_observatory_least_load_interval">فاصله leastLoad</string>
|
||||
<string name="title_pref_observatory_least_load_method">روش HTTP سی leastLoad</string>
|
||||
<string name="title_pref_observatory_least_load_sampling">نمونه گیری leastLoad</string>
|
||||
<string name="title_pref_observatory_least_load_timeout">مهلت leastLoad</string>
|
||||
<string name="toast_invalid_observatory_duration">زما نادروسته. یه ارزشی وری 3m یا 30s بکار ببرین.</string>
|
||||
<string name="toast_invalid_observatory_sampling">نمونه گیری نادروسته. یه شماره مثبت بکار ببرین.</string>
|
||||
<string name="toast_invalid_observatory_duration">زمووݩ نا موئتبر هڌ. ارزشی وری 3m یا 30s ن و کار بگیرین.</string>
|
||||
<string name="toast_invalid_observatory_sampling">نمونه گیری نا موئتبر هڌ. شوماره ی مثبت ن و کار بگیرین.</string>
|
||||
|
||||
<string name="update_check_for_update">واجۊری سی ورۊ رسۊوی</string>
|
||||
<string name="update_already_latest_version">سکو نوسخه دیندایی پۊرنیڌه هڌ</string>
|
||||
@@ -419,9 +419,9 @@
|
||||
<string name="server_proxy_chain_members">ٱئزا زنجیره پروکسی</string>
|
||||
<string name="server_proxy_chain_pick_members">سی پسند عوزو ایچو بزنین</string>
|
||||
<string name="server_proxy_chain_member_unselected">ی عوزو پسند کۊنین</string>
|
||||
<string name="server_proxy_chain_members_unselected">سی هر ردیف زنجیره remark پسند کۊنین</string>
|
||||
<string name="server_proxy_chain_members_insufficient">تعداد ٱئزا بس نؽ</string>
|
||||
<string name="server_proxy_chain_members_invalid">ٱئزا ناموئتبر زنجیره: %1$s</string>
|
||||
<string name="server_proxy_chain_members_unselected">سی هر ردیف زنجیره ی عوزو پسند کۊنین</string>
|
||||
<string name="server_proxy_chain_members_insufficient">تعداڌ ٱئزا بس نؽ</string>
|
||||
<string name="server_proxy_chain_members_invalid">ٱئزا نا موئتبر زنجیره: %1$s</string>
|
||||
|
||||
<!-- BackupActivity -->
|
||||
<string name="title_configuration_backup_restore">لادراری گرؽڌن & وورگندن</string>
|
||||
@@ -469,7 +469,7 @@
|
||||
<string name="routing_preset_russia_whitelist">نومگه اسبؽڌ رۊسیه</string>
|
||||
|
||||
<string-array name="vpn_bypass_lan">
|
||||
<item>پؽش فرز کانفیگ</item>
|
||||
<item>پؽش فرض کانفیگ</item>
|
||||
<item>دور زیڌه بۊ</item>
|
||||
<item>دور زیڌه نبۊ</item>
|
||||
</string-array>
|
||||
@@ -487,7 +487,57 @@
|
||||
<item>گردشی (roundRobin)</item>
|
||||
</string-array>
|
||||
|
||||
<string name="backup_location_local">مهلی</string>
|
||||
<string name="backup_location_local">محلی</string>
|
||||
<string name="backup_location_webdav" translatable="false">WebDAV</string>
|
||||
|
||||
<string name="acc_refresh">وانۊ کردن گوزارش</string>
|
||||
<string name="toast_permission_denied_for">گرؽڌن موجوز مومکن نؽڌ: %1$s</string>
|
||||
<string name="acc_add_subscription">ٱووردن اشتراک</string>
|
||||
<string name="toast_malformed_json_detail">کانفیگ نا موئتبر هڌ: %1$s</string>
|
||||
<string name="acc_add_asset">ٱووردن بونچک فایلا جغرافیایی</string>
|
||||
<string name="acc_download_file">دانلود فایلا بونچک جغرافیایی</string>
|
||||
<string name="acc_qr_code">کود QR</string>
|
||||
<string name="acc_copy_log">لف گیری گوزارش</string>
|
||||
<string name="acc_clear_log">روفتن گوزارش</string>
|
||||
<string name="acc_add_rule">ٱووردن قانووݩ</string>
|
||||
<string name="core_error_no_server_selected">هیچ کانفیگ پسند وابیڌه نؽ</string>
|
||||
<string name="core_error_decode_server_config">خوندن کانفیگ پسند وابیڌه مووفق نبی</string>
|
||||
<string name="core_error_build_config_context">پردازشت کانفیگ پسند وابیڌه مووفق نبی</string>
|
||||
<string name="core_error_get_config">ساڌن کانفیگ هسته مووفق نبی</string>
|
||||
<string name="core_error_get_config_detail">ساڌن کانفیگ هسته مووفق نبی: %1$s</string>
|
||||
<string name="core_error_get_speedtest_config_detail">ساڌن کانفیگ هسته سی آزمایش سورعت مووفق نبی: %1$s</string>
|
||||
<string name="core_error_custom_config_empty">کانفیگ سفارشی نؽ</string>
|
||||
<string name="core_error_start">ره وستن هسته مووفق نبی</string>
|
||||
<string name="acc_start">ره وستن سرویس</string>
|
||||
<string name="acc_stop">واڌاشتن سرویس</string>
|
||||
<string name="acc_back">برگشت</string>
|
||||
<string name="acc_search">پیتینیڌن</string>
|
||||
<string name="acc_add">ٱووردن کانفیگ</string>
|
||||
<string name="acc_more">امکووݩا بؽتر</string>
|
||||
<string name="acc_share_subscription">یک رسۊوی لینک اشتراک</string>
|
||||
<string name="acc_share_log">یک رسۊوی گوزارش</string>
|
||||
<string name="acc_remove">پاک کردن عوزو زنجیره پروکسی</string>
|
||||
<string name="acc_add_member">ٱووردن عوزو زنجیره پروکسی</string>
|
||||
<string name="acc_start_scanner">ره وستن اسکنر QR</string>
|
||||
<string name="acc_stop_scanner">واڌاشتن اسکنر QR</string>
|
||||
<string name="acc_turn_torch_on">روشن کردن چراغ</string>
|
||||
<string name="acc_turn_torch_off">خاموش کردن چراغ</string>
|
||||
<string name="acc_select_image">پسند ٱکس سی اسکن</string>
|
||||
<string name="acc_locked">ای قانووݩ مجال و من ٱووردن ز پؽش سامووا زفت ابۊ</string>
|
||||
<string name="acc_open_menu">گۊشیڌن نومگه کشاری</string>
|
||||
<string name="acc_edit">آلشتکاری</string>
|
||||
<string name="acc_delete">پاک کردن</string>
|
||||
<string name="acc_save">زفت کردن</string>
|
||||
<string name="acc_update_subscriptions">ورۊ کردن اشتراکا</string>
|
||||
<string name="acc_per_app_proxy_information">دووسمندی پروکسی و ری برنومه</string>
|
||||
<string name="permission_camera">دوربیݩ</string>
|
||||
<string name="permission_notification">وارسۊوی</string>
|
||||
<string name="permission_local_network">شبکه محلی</string>
|
||||
<string name="subscription_update_updating">اشتراک %1$s هونی ورۊ ابۊ</string>
|
||||
<string name="subscription_update_progress">%2$s هونی آزمایش ابۊ: %1$s</string>
|
||||
<string name="tasker_blurb_start">ره وستن %1$s</string>
|
||||
<string name="tasker_blurb_stop">واڌاشتن %1$s</string>
|
||||
<string name="connection_test_empty_message">دووسمندی نؽ</string>
|
||||
<string name="value_unknown">نا مؽخص</string>
|
||||
|
||||
</resources>
|
||||
@@ -490,4 +490,54 @@
|
||||
<string name="backup_location_local">محلی</string>
|
||||
<string name="backup_location_webdav" translatable="false">WebDAV</string>
|
||||
|
||||
<string name="acc_refresh">تازهسازی گزارش</string>
|
||||
<string name="toast_permission_denied_for">مجوز %1$s داده نشد</string>
|
||||
<string name="acc_add_subscription">افزودن اشتراک</string>
|
||||
<string name="toast_malformed_json_detail">قالب پیکربندی نامعتبر است: %1$s</string>
|
||||
<string name="acc_add_asset">افزودن منبع فایلهای جغرافیایی</string>
|
||||
<string name="acc_download_file">دانلود فایلهای منبع</string>
|
||||
<string name="acc_qr_code">کد QR</string>
|
||||
<string name="acc_copy_log">کپی گزارش</string>
|
||||
<string name="acc_clear_log">پاک کردن گزارش</string>
|
||||
<string name="acc_add_rule">افزودن قانون مسیریابی</string>
|
||||
<string name="core_error_no_server_selected">هیچ پیکربندیای انتخاب نشده است</string>
|
||||
<string name="core_error_decode_server_config">خواندن پیکربندی انتخابشده ناموفق بود</string>
|
||||
<string name="core_error_build_config_context">آمادهسازی پیکربندی انتخابشده ناموفق بود</string>
|
||||
<string name="core_error_get_config">ایجاد پیکربندی هسته ناموفق بود</string>
|
||||
<string name="core_error_get_config_detail">ایجاد پیکربندی هسته ناموفق بود: %1$s</string>
|
||||
<string name="core_error_get_speedtest_config_detail">ایجاد پیکربندی هسته برای آزمایش سرعت ناموفق بود: %1$s</string>
|
||||
<string name="core_error_custom_config_empty">پیکربندی سفارشی خالی است</string>
|
||||
<string name="core_error_start">راهاندازی هسته ناموفق بود</string>
|
||||
<string name="acc_start">شروع سرویس</string>
|
||||
<string name="acc_stop">توقف سرویس</string>
|
||||
<string name="acc_back">بازگشت</string>
|
||||
<string name="acc_search">جستجو</string>
|
||||
<string name="acc_add">افزودن کانفیگ</string>
|
||||
<string name="acc_more">گزینههای بیشتر</string>
|
||||
<string name="acc_share_subscription">اشتراکگذاری لینک اشتراک</string>
|
||||
<string name="acc_share_log">اشتراکگذاری گزارش</string>
|
||||
<string name="acc_remove">حذف عضو زنجیره پروکسی</string>
|
||||
<string name="acc_add_member">افزودن عضو زنجیره پروکسی</string>
|
||||
<string name="acc_start_scanner">شروع اسکنر QR</string>
|
||||
<string name="acc_stop_scanner">توقف اسکنر QR</string>
|
||||
<string name="acc_turn_torch_on">روشن کردن چراغقوه</string>
|
||||
<string name="acc_turn_torch_off">خاموش کردن چراغقوه</string>
|
||||
<string name="acc_select_image">انتخاب تصویر برای اسکن</string>
|
||||
<string name="acc_locked">این قانون هنگام وارد کردن تنظیمات از پیش تعیینشده حفظ میشود</string>
|
||||
<string name="acc_open_menu">باز کردن منوی پیمایش</string>
|
||||
<string name="acc_edit">ویرایش</string>
|
||||
<string name="acc_delete">حذف</string>
|
||||
<string name="acc_save">ذخیره</string>
|
||||
<string name="acc_update_subscriptions">بهروزرسانی اشتراکها</string>
|
||||
<string name="acc_per_app_proxy_information">اطلاعات پروکسی به تفکیک برنامه</string>
|
||||
<string name="permission_camera">دوربین</string>
|
||||
<string name="permission_notification">اعلان</string>
|
||||
<string name="permission_local_network">شبکه محلی</string>
|
||||
<string name="subscription_update_updating">در حال بهروزرسانی اشتراک: %1$s</string>
|
||||
<string name="subscription_update_progress">در حال آزمایش %2$s: %1$s</string>
|
||||
<string name="tasker_blurb_start">شروع %1$s</string>
|
||||
<string name="tasker_blurb_stop">توقف %1$s</string>
|
||||
<string name="connection_test_empty_message">جزئیاتی در دسترس نیست</string>
|
||||
<string name="value_unknown">ناشناخته</string>
|
||||
|
||||
</resources>
|
||||
@@ -490,4 +490,54 @@
|
||||
<string name="backup_location_local">Локально</string>
|
||||
<string name="backup_location_webdav" translatable="false">WebDAV</string>
|
||||
|
||||
<string name="acc_refresh">Обновить журнал</string>
|
||||
<string name="toast_permission_denied_for">Нет разрешения: %1$s</string>
|
||||
<string name="acc_add_subscription">Добавить подписку</string>
|
||||
<string name="toast_malformed_json_detail">Некорректная конфигурация: %1$s</string>
|
||||
<string name="acc_add_asset">Добавить источник ресурсов</string>
|
||||
<string name="acc_download_file">Загрузить файлы ресурсов</string>
|
||||
<string name="acc_qr_code">QR-код</string>
|
||||
<string name="acc_copy_log">Копировать журнал</string>
|
||||
<string name="acc_clear_log">Очистить журнал</string>
|
||||
<string name="acc_add_rule">Добавить правило маршрутизации</string>
|
||||
<string name="core_error_no_server_selected">Конфигурация не выбрана</string>
|
||||
<string name="core_error_decode_server_config">Не удалось прочитать выбранную конфигурацию</string>
|
||||
<string name="core_error_build_config_context">Не удалось подготовить выбранную конфигурацию</string>
|
||||
<string name="core_error_get_config">Не удалось создать конфигурацию ядра</string>
|
||||
<string name="core_error_get_config_detail">Не удалось создать конфигурацию ядра: %1$s</string>
|
||||
<string name="core_error_get_speedtest_config_detail">Не удалось создать конфигурацию ядра для теста скорости: %1$s</string>
|
||||
<string name="core_error_custom_config_empty">Пользовательская конфигурация пуста</string>
|
||||
<string name="core_error_start">Не удалось запустить ядро</string>
|
||||
<string name="acc_start">Запустить службу</string>
|
||||
<string name="acc_stop">Остановить службу</string>
|
||||
<string name="acc_back">Назад</string>
|
||||
<string name="acc_search">Поиск</string>
|
||||
<string name="acc_add">Добавить профиль</string>
|
||||
<string name="acc_more">Дополнительные параметры</string>
|
||||
<string name="acc_share_subscription">Поделиться ссылкой на подписку</string>
|
||||
<string name="acc_share_log">Поделиться журналом</string>
|
||||
<string name="acc_remove">Удалить участника цепочки прокси</string>
|
||||
<string name="acc_add_member">Добавить участника цепочки прокси</string>
|
||||
<string name="acc_start_scanner">Запустить сканер QR-кодов</string>
|
||||
<string name="acc_stop_scanner">Остановить сканер QR-кодов</string>
|
||||
<string name="acc_turn_torch_on">Включить фонарик</string>
|
||||
<string name="acc_turn_torch_off">Выключить фонарик</string>
|
||||
<string name="acc_select_image">Выбрать изображение для сканирования</string>
|
||||
<string name="acc_locked">Правило сохраняется при импорте предустановок</string>
|
||||
<string name="acc_open_menu">Открыть меню навигации</string>
|
||||
<string name="acc_edit">Изменить</string>
|
||||
<string name="acc_delete">Удалить</string>
|
||||
<string name="acc_save">Сохранить</string>
|
||||
<string name="acc_update_subscriptions">Обновить подписки</string>
|
||||
<string name="acc_per_app_proxy_information">Сведения о прокси для приложений</string>
|
||||
<string name="permission_camera">Камера</string>
|
||||
<string name="permission_notification">Уведомления</string>
|
||||
<string name="permission_local_network">Локальная сеть</string>
|
||||
<string name="subscription_update_updating">Обновление подписки: %1$s</string>
|
||||
<string name="subscription_update_progress">Тестирование %2$s: %1$s</string>
|
||||
<string name="tasker_blurb_start">Запустить %1$s</string>
|
||||
<string name="tasker_blurb_stop">Остановить %1$s</string>
|
||||
<string name="connection_test_empty_message">подробности отсутствуют</string>
|
||||
<string name="value_unknown">неизвестно</string>
|
||||
|
||||
</resources>
|
||||
@@ -490,4 +490,54 @@
|
||||
<string name="backup_location_local">Cục bộ</string>
|
||||
<string name="backup_location_webdav" translatable="false">WebDAV</string>
|
||||
|
||||
<string name="acc_refresh">Làm mới nhật ký</string>
|
||||
<string name="toast_permission_denied_for">Chưa cấp quyền: %1$s</string>
|
||||
<string name="acc_add_subscription">Thêm gói đăng ký</string>
|
||||
<string name="toast_malformed_json_detail">Cấu hình không hợp lệ: %1$s</string>
|
||||
<string name="acc_add_asset">Thêm nguồn tệp tài nguyên</string>
|
||||
<string name="acc_download_file">Tải xuống tệp tài nguyên</string>
|
||||
<string name="acc_qr_code">Mã QR</string>
|
||||
<string name="acc_copy_log">Sao chép nhật ký</string>
|
||||
<string name="acc_clear_log">Xóa nhật ký</string>
|
||||
<string name="acc_add_rule">Thêm quy tắc định tuyến</string>
|
||||
<string name="core_error_no_server_selected">Chưa chọn cấu hình</string>
|
||||
<string name="core_error_decode_server_config">Không thể đọc cấu hình đã chọn</string>
|
||||
<string name="core_error_build_config_context">Không thể chuẩn bị cấu hình đã chọn</string>
|
||||
<string name="core_error_get_config">Không thể tạo cấu hình lõi</string>
|
||||
<string name="core_error_get_config_detail">Không thể tạo cấu hình lõi: %1$s</string>
|
||||
<string name="core_error_get_speedtest_config_detail">Không thể tạo cấu hình lõi để kiểm tra tốc độ: %1$s</string>
|
||||
<string name="core_error_custom_config_empty">Cấu hình tùy chỉnh đang trống</string>
|
||||
<string name="core_error_start">Không thể khởi động lõi</string>
|
||||
<string name="acc_start">Khởi động dịch vụ</string>
|
||||
<string name="acc_stop">Dừng dịch vụ</string>
|
||||
<string name="acc_back">Quay lại</string>
|
||||
<string name="acc_search">Tìm kiếm</string>
|
||||
<string name="acc_add">Thêm cấu hình</string>
|
||||
<string name="acc_more">Tùy chọn khác</string>
|
||||
<string name="acc_share_subscription">Chia sẻ liên kết đăng ký</string>
|
||||
<string name="acc_share_log">Chia sẻ nhật ký</string>
|
||||
<string name="acc_remove">Xóa thành viên khỏi chuỗi proxy</string>
|
||||
<string name="acc_add_member">Thêm thành viên vào chuỗi proxy</string>
|
||||
<string name="acc_start_scanner">Khởi động trình quét mã QR</string>
|
||||
<string name="acc_stop_scanner">Dừng trình quét mã QR</string>
|
||||
<string name="acc_turn_torch_on">Bật đèn pin</string>
|
||||
<string name="acc_turn_torch_off">Tắt đèn pin</string>
|
||||
<string name="acc_select_image">Chọn ảnh để quét</string>
|
||||
<string name="acc_locked">Giữ quy tắc khi nhập cài đặt sẵn</string>
|
||||
<string name="acc_open_menu">Mở trình đơn điều hướng</string>
|
||||
<string name="acc_edit">Chỉnh sửa</string>
|
||||
<string name="acc_delete">Xóa</string>
|
||||
<string name="acc_save">Lưu</string>
|
||||
<string name="acc_update_subscriptions">Cập nhật các gói đăng ký</string>
|
||||
<string name="acc_per_app_proxy_information">Thông tin proxy theo ứng dụng</string>
|
||||
<string name="permission_camera">Máy ảnh</string>
|
||||
<string name="permission_notification">Thông báo</string>
|
||||
<string name="permission_local_network">Mạng cục bộ</string>
|
||||
<string name="subscription_update_updating">Đang cập nhật gói đăng ký: %1$s</string>
|
||||
<string name="subscription_update_progress">Đang kiểm tra %2$s: %1$s</string>
|
||||
<string name="tasker_blurb_start">Khởi động %1$s</string>
|
||||
<string name="tasker_blurb_stop">Dừng %1$s</string>
|
||||
<string name="connection_test_empty_message">không có thông tin chi tiết</string>
|
||||
<string name="value_unknown">không xác định</string>
|
||||
|
||||
</resources>
|
||||
@@ -490,4 +490,54 @@
|
||||
<string name="backup_location_local">本地</string>
|
||||
<string name="backup_location_webdav" translatable="false">WebDAV</string>
|
||||
|
||||
<string name="acc_refresh">刷新日志</string>
|
||||
<string name="toast_permission_denied_for">%1$s权限被拒绝</string>
|
||||
<string name="acc_add_subscription">添加订阅</string>
|
||||
<string name="toast_malformed_json_detail">配置格式无效:%1$s</string>
|
||||
<string name="acc_add_asset">添加资源来源</string>
|
||||
<string name="acc_download_file">下载资源文件</string>
|
||||
<string name="acc_qr_code">二维码</string>
|
||||
<string name="acc_copy_log">复制日志</string>
|
||||
<string name="acc_clear_log">清除日志</string>
|
||||
<string name="acc_add_rule">添加路由规则</string>
|
||||
<string name="core_error_no_server_selected">未选择配置</string>
|
||||
<string name="core_error_decode_server_config">无法读取所选配置</string>
|
||||
<string name="core_error_build_config_context">无法准备所选配置</string>
|
||||
<string name="core_error_get_config">无法生成核心配置</string>
|
||||
<string name="core_error_get_config_detail">无法生成核心配置:%1$s</string>
|
||||
<string name="core_error_get_speedtest_config_detail">无法生成测速用核心配置:%1$s</string>
|
||||
<string name="core_error_custom_config_empty">自定义配置为空</string>
|
||||
<string name="core_error_start">无法启动核心</string>
|
||||
<string name="acc_start">启动服务</string>
|
||||
<string name="acc_stop">停止服务</string>
|
||||
<string name="acc_back">返回</string>
|
||||
<string name="acc_search">搜索</string>
|
||||
<string name="acc_add">添加配置</string>
|
||||
<string name="acc_more">更多选项</string>
|
||||
<string name="acc_share_subscription">分享订阅链接</string>
|
||||
<string name="acc_share_log">分享日志</string>
|
||||
<string name="acc_remove">移除代理链成员</string>
|
||||
<string name="acc_add_member">添加代理链成员</string>
|
||||
<string name="acc_start_scanner">启动二维码扫描器</string>
|
||||
<string name="acc_stop_scanner">停止二维码扫描器</string>
|
||||
<string name="acc_turn_torch_on">打开手电筒</string>
|
||||
<string name="acc_turn_torch_off">关闭手电筒</string>
|
||||
<string name="acc_select_image">选择要扫描的图片</string>
|
||||
<string name="acc_locked">导入预设时保留此规则</string>
|
||||
<string name="acc_open_menu">打开导航菜单</string>
|
||||
<string name="acc_edit">编辑</string>
|
||||
<string name="acc_delete">删除</string>
|
||||
<string name="acc_save">保存</string>
|
||||
<string name="acc_update_subscriptions">更新订阅</string>
|
||||
<string name="acc_per_app_proxy_information">分应用代理信息</string>
|
||||
<string name="permission_camera">相机</string>
|
||||
<string name="permission_notification">通知</string>
|
||||
<string name="permission_local_network">局域网</string>
|
||||
<string name="subscription_update_updating">正在更新订阅:%1$s</string>
|
||||
<string name="subscription_update_progress">正在测试%2$s:%1$s</string>
|
||||
<string name="tasker_blurb_start">启动 %1$s</string>
|
||||
<string name="tasker_blurb_stop">停止 %1$s</string>
|
||||
<string name="connection_test_empty_message">无详细信息</string>
|
||||
<string name="value_unknown">未知</string>
|
||||
|
||||
</resources>
|
||||
@@ -490,4 +490,54 @@
|
||||
<string name="backup_location_local">本地</string>
|
||||
<string name="backup_location_webdav" translatable="false">WebDAV</string>
|
||||
|
||||
<string name="acc_refresh">重新整理日誌</string>
|
||||
<string name="toast_permission_denied_for">未授予%1$s權限</string>
|
||||
<string name="acc_add_subscription">新增訂閱</string>
|
||||
<string name="toast_malformed_json_detail">設定檔格式不正確:%1$s</string>
|
||||
<string name="acc_add_asset">新增資源來源</string>
|
||||
<string name="acc_download_file">下載資源檔案</string>
|
||||
<string name="acc_qr_code">QR 碼</string>
|
||||
<string name="acc_copy_log">複製日誌</string>
|
||||
<string name="acc_clear_log">清除日誌</string>
|
||||
<string name="acc_add_rule">新增路由規則</string>
|
||||
<string name="core_error_no_server_selected">未選取設定</string>
|
||||
<string name="core_error_decode_server_config">無法讀取所選設定</string>
|
||||
<string name="core_error_build_config_context">無法準備所選設定</string>
|
||||
<string name="core_error_get_config">無法產生核心設定</string>
|
||||
<string name="core_error_get_config_detail">無法產生核心設定:%1$s</string>
|
||||
<string name="core_error_get_speedtest_config_detail">無法產生測速用核心設定:%1$s</string>
|
||||
<string name="core_error_custom_config_empty">自訂設定為空</string>
|
||||
<string name="core_error_start">無法啟動核心</string>
|
||||
<string name="acc_start">啟動服務</string>
|
||||
<string name="acc_stop">停止服務</string>
|
||||
<string name="acc_back">返回</string>
|
||||
<string name="acc_search">搜尋</string>
|
||||
<string name="acc_add">新增設定</string>
|
||||
<string name="acc_more">更多選項</string>
|
||||
<string name="acc_share_subscription">分享訂閱連結</string>
|
||||
<string name="acc_share_log">分享日誌</string>
|
||||
<string name="acc_remove">移除代理鏈成員</string>
|
||||
<string name="acc_add_member">新增代理鏈成員</string>
|
||||
<string name="acc_start_scanner">啟動 QR 碼掃描器</string>
|
||||
<string name="acc_stop_scanner">停止 QR 碼掃描器</string>
|
||||
<string name="acc_turn_torch_on">開啟手電筒</string>
|
||||
<string name="acc_turn_torch_off">關閉手電筒</string>
|
||||
<string name="acc_select_image">選取要掃描的圖片</string>
|
||||
<string name="acc_locked">匯入預設時保留此規則</string>
|
||||
<string name="acc_open_menu">開啟導覽選單</string>
|
||||
<string name="acc_edit">編輯</string>
|
||||
<string name="acc_delete">刪除</string>
|
||||
<string name="acc_save">儲存</string>
|
||||
<string name="acc_update_subscriptions">更新訂閱</string>
|
||||
<string name="acc_per_app_proxy_information">各應用程式的 Proxy 資訊</string>
|
||||
<string name="permission_camera">相機</string>
|
||||
<string name="permission_notification">通知</string>
|
||||
<string name="permission_local_network">區域網路</string>
|
||||
<string name="subscription_update_updating">正在更新訂閱:%1$s</string>
|
||||
<string name="subscription_update_progress">正在測試%2$s:%1$s</string>
|
||||
<string name="tasker_blurb_start">啟動 %1$s</string>
|
||||
<string name="tasker_blurb_stop">停止 %1$s</string>
|
||||
<string name="connection_test_empty_message">沒有詳細資訊</string>
|
||||
<string name="value_unknown">未知</string>
|
||||
|
||||
</resources>
|
||||
@@ -490,4 +490,54 @@
|
||||
<string name="backup_location_local">Local</string>
|
||||
<string name="backup_location_webdav" translatable="false">WebDAV</string>
|
||||
|
||||
<string name="acc_refresh">Refresh log</string>
|
||||
<string name="toast_permission_denied_for">%1$s permission denied</string>
|
||||
<string name="acc_add_subscription">Add subscription</string>
|
||||
<string name="toast_malformed_json_detail">Invalid configuration: %1$s</string>
|
||||
<string name="acc_add_asset">Add asset source</string>
|
||||
<string name="acc_download_file">Download asset files</string>
|
||||
<string name="acc_qr_code">QR code</string>
|
||||
<string name="acc_copy_log">Copy log</string>
|
||||
<string name="acc_clear_log">Clear log</string>
|
||||
<string name="acc_add_rule">Add routing rule</string>
|
||||
<string name="core_error_no_server_selected">No configuration selected</string>
|
||||
<string name="core_error_decode_server_config">Failed to read the selected configuration</string>
|
||||
<string name="core_error_build_config_context">Failed to prepare the selected configuration</string>
|
||||
<string name="core_error_get_config">Failed to generate the core configuration</string>
|
||||
<string name="core_error_get_config_detail">Failed to generate the core configuration: %1$s</string>
|
||||
<string name="core_error_get_speedtest_config_detail">Failed to generate the core configuration for the speed test: %1$s</string>
|
||||
<string name="core_error_custom_config_empty">Custom configuration is empty</string>
|
||||
<string name="core_error_start">Failed to start the core</string>
|
||||
<string name="acc_start">Start service</string>
|
||||
<string name="acc_stop">Stop service</string>
|
||||
<string name="acc_back">Back</string>
|
||||
<string name="acc_search">Search</string>
|
||||
<string name="acc_add">Add configuration</string>
|
||||
<string name="acc_more">More options</string>
|
||||
<string name="acc_share_subscription">Share subscription link</string>
|
||||
<string name="acc_share_log">Share log</string>
|
||||
<string name="acc_remove">Remove proxy chain member</string>
|
||||
<string name="acc_add_member">Add proxy chain member</string>
|
||||
<string name="acc_start_scanner">Start QR scanner</string>
|
||||
<string name="acc_stop_scanner">Stop QR scanner</string>
|
||||
<string name="acc_turn_torch_on">Turn flashlight on</string>
|
||||
<string name="acc_turn_torch_off">Turn flashlight off</string>
|
||||
<string name="acc_select_image">Select image to scan</string>
|
||||
<string name="acc_locked">This rule is kept when importing presets</string>
|
||||
<string name="acc_open_menu">Open navigation menu</string>
|
||||
<string name="acc_edit">Edit</string>
|
||||
<string name="acc_delete">Delete</string>
|
||||
<string name="acc_save">Save</string>
|
||||
<string name="acc_update_subscriptions">Update subscriptions</string>
|
||||
<string name="acc_per_app_proxy_information">Per-app proxy information</string>
|
||||
<string name="permission_camera">Camera</string>
|
||||
<string name="permission_notification">Notification</string>
|
||||
<string name="permission_local_network">Local network</string>
|
||||
<string name="subscription_update_updating">Updating subscription: %1$s</string>
|
||||
<string name="subscription_update_progress">Testing %2$s: %1$s</string>
|
||||
<string name="tasker_blurb_start">Start %1$s</string>
|
||||
<string name="tasker_blurb_stop">Stop %1$s</string>
|
||||
<string name="connection_test_empty_message">no details available</string>
|
||||
<string name="value_unknown">unknown</string>
|
||||
|
||||
</resources>
|
||||
Reference in new issue
Block a user