diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreConfigManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreConfigManager.kt index 2d006a8d0b..eecc9858a8 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreConfigManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreConfigManager.kt @@ -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,7 +35,11 @@ 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 = context.getString(R.string.core_error_build_config_context) + ) if (configContext.isCustom) { return buildV2rayCustomConfig(configContext) } @@ -44,7 +49,10 @@ object CoreConfigManager { return ConfigResult( status = false, guid = guid, - errorMessage = "Failed to get V2ray config: ${e.message ?: e.javaClass.simpleName}" + errorMessage = context.getString( + R.string.core_error_get_config_detail, + e.message ?: e.javaClass.simpleName + ) ) } } @@ -57,7 +65,11 @@ 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 = context.getString(R.string.core_error_build_config_context) + ) if (configContext.isCustom) { return buildV2rayCustomConfig(configContext) } @@ -70,7 +82,10 @@ object CoreConfigManager { return ConfigResult( status = false, guid = guid, - errorMessage = "Failed to get V2ray config for speedtest: ${e.message ?: e.javaClass.simpleName}" + errorMessage = context.getString( + R.string.core_error_get_speedtest_config_detail, + e.message ?: e.javaClass.simpleName + ) ) } } @@ -81,7 +96,11 @@ 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 = 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 diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreNativeManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreNativeManager.kt index 663d0629d4..657961202b 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreNativeManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreNativeManager.kt @@ -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 } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreServiceManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreServiceManager.kt index 21319210a3..398eb13c25 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreServiceManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreServiceManager.kt @@ -120,14 +120,16 @@ 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() + ?: error(service.getString(R.string.core_error_no_server_selected)) + val config = MmkvManager.decodeServerConfig(guid) + ?: error(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" }) + error(result.errorMessage.ifBlank { service.getString(R.string.core_error_get_config) }) } currentConfig = config @@ -149,7 +151,7 @@ object CoreServiceManager { coreController.startLoop(result.content, tunFd) if (!isRunning()) { - error("Core failed to start") + error(service.getString(R.string.core_error_start)) } if (browserDialer != null) { @@ -321,14 +323,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) } } @@ -341,7 +345,7 @@ object CoreServiceManager { // Only fetch IP info if the delay test was successful if (time >= 0) { - SpeedtestManager.getRemoteIPInfo()?.let { ip -> + SpeedtestManager.getRemoteIPInfo(service.getString(R.string.value_unknown))?.let { ip -> MessageHelper.sendMsg2UI(service, AppConfig.MSG_MEASURE_DELAY_SUCCESS, "$result\n$ip") } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/core/LauncherManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/core/LauncherManager.kt index ff09b77bdc..111f781821 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/core/LauncherManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/core/LauncherManager.kt @@ -17,20 +17,22 @@ import com.v2ray.ang.service.CoreProxyOnlyService import com.v2ray.ang.service.CoreRootService import com.v2ray.ang.service.CoreVpnService import com.v2ray.ang.util.LogUtil +import com.v2ray.ang.util.MyContextWrapper import com.v2ray.ang.util.Utils object LauncherManager { fun startServiceFromToggle(context: Context): Boolean { + val localizedContext = MyContextWrapper.wrap(context, SettingsManager.getLocale()) if (MmkvManager.getSelectServer().isNullOrEmpty()) { - context.toast(R.string.app_tile_first_use) + localizedContext.toast(R.string.app_tile_first_use) return false } try { - startContextService(context) + startContextService(localizedContext) } catch (e: Exception) { LogUtil.e(AppConfig.TAG, "LauncherManager: ${e.message}", e) - context.toast(e.message ?: e.javaClass.simpleName) + localizedContext.toast(e.message ?: e.javaClass.simpleName) return false } return true @@ -38,16 +40,17 @@ object LauncherManager { fun startService(context: Context, guid: String? = null) { LogUtil.i(AppConfig.TAG, "LauncherManager: startService from ${context::class.java.simpleName}") + val localizedContext = MyContextWrapper.wrap(context, SettingsManager.getLocale()) if (guid != null) { MmkvManager.setSelectServer(guid) } try { - startContextService(context) + startContextService(localizedContext) } catch (e: Exception) { LogUtil.e(AppConfig.TAG, "LauncherManager: ${e.message}", e) - context.toast(e.message ?: e.javaClass.simpleName) + localizedContext.toast(e.message ?: e.javaClass.simpleName) } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/enums/PermissionType.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/enums/PermissionType.kt index ce3a05d005..4e4c065115 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/enums/PermissionType.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/enums/PermissionType.kt @@ -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 } } } \ No newline at end of file diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SpeedtestManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SpeedtestManager.kt index b1e6dda743..cd884afb19 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SpeedtestManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SpeedtestManager.kt @@ -48,7 +48,7 @@ object SpeedtestManager { return -1 } - fun getRemoteIPInfo(): String? { + fun getRemoteIPInfo(unknownLabel: String): String? { val url = MmkvManager.decodeSettingsString(AppConfig.PREF_IP_API_URL) .takeIf { !it.isNullOrBlank() } ?: AppConfig.IP_API_URL @@ -81,6 +81,6 @@ object SpeedtestManager { ipInfo.location?.country_code ).firstOrNull { !it.isNullOrBlank() } - return "(${country ?: "unknown"}) ${ip ?: "unknown"}" + return "(${country ?: unknownLabel}) ${ip ?: unknownLabel}" } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/helper/PermissionHelper.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/helper/PermissionHelper.kt index c7b05bc481..e9736f8260 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/helper/PermissionHelper.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/helper/PermissionHelper.kt @@ -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) } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/service/CoreTestService.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/service/CoreTestService.kt index e300cf362b..e7a58fda6f 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/service/CoreTestService.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/service/CoreTestService.kt @@ -2,6 +2,7 @@ package com.v2ray.ang.service import android.app.PendingIntent import android.app.Service +import android.content.Context import android.content.Intent import android.os.IBinder import androidx.core.app.NotificationCompat @@ -14,13 +15,22 @@ import com.v2ray.ang.enums.NotificationChannelType import com.v2ray.ang.extension.serializable import com.v2ray.ang.handler.AngConfigManager import com.v2ray.ang.handler.MmkvManager +import com.v2ray.ang.handler.SettingsManager import com.v2ray.ang.helper.MessageHelper import com.v2ray.ang.helper.NotificationHelper import com.v2ray.ang.util.LogUtil +import com.v2ray.ang.util.MyContextWrapper import java.util.Collections class CoreTestService : Service() { + override fun attachBaseContext(newBase: Context?) { + val context = newBase?.let { + MyContextWrapper.wrap(it, SettingsManager.getLocale()) + } + super.attachBaseContext(context) + } + // manage active batch workers so each batch is independent and cancellable private val activeWorkers = Collections.synchronizedList(mutableListOf()) private val cancelAction by lazy { @@ -134,7 +144,7 @@ class CoreTestService : Service() { channelType = NotificationChannelType.CORE_TEST, context = this, title = getString(R.string.app_name), - content = getString(R.string.connection_runing_task_left, event.text) + content = getString(R.string.connection_running_task_left, event.text) ) MessageHelper.sendMsg2UI(this, AppConfig.MSG_MEASURE_CONFIG_NOTIFY, event.text) } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/service/SubscriptionUpdateService.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/service/SubscriptionUpdateService.kt index 68df537679..2ab538fe5e 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/service/SubscriptionUpdateService.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/service/SubscriptionUpdateService.kt @@ -14,8 +14,10 @@ import com.v2ray.ang.enums.NotificationChannelType import com.v2ray.ang.extension.serializable import com.v2ray.ang.handler.AngConfigManager import com.v2ray.ang.handler.MmkvManager +import com.v2ray.ang.handler.SettingsManager import com.v2ray.ang.helper.NotificationHelper import com.v2ray.ang.util.LogUtil +import com.v2ray.ang.util.MyContextWrapper import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -38,6 +40,13 @@ class SubscriptionUpdateService : Service() { private val updateSemaphore = Semaphore(2) + override fun attachBaseContext(newBase: Context?) { + val context = newBase?.let { + MyContextWrapper.wrap(it, SettingsManager.getLocale()) + } + super.attachBaseContext(context) + } + override fun onCreate() { super.onCreate() CoreNativeManager.initCoreEnv(this) @@ -118,7 +127,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,7 +193,7 @@ class SubscriptionUpdateService : Service() { private fun handleWorkerEvent(event: RealPingEvent, remarks: String, onWorkerDone: () -> Unit) { when (event) { is RealPingEvent.Progress -> { - val text = "${event.text} in $remarks" + val text = getString(R.string.subscription_update_progress, event.text, remarks) showNotification( context = this, titleResId = R.string.title_real_ping_all_server, diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/AboutActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/AboutActivity.kt index 5bc02b8287..e45e4f7204 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/AboutActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/AboutActivity.kt @@ -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( diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScannerActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScannerActivity.kt index 5ecf4e11f2..816d3607e4 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScannerActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScannerActivity.kt @@ -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 ) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerActivity.kt index c4391af01e..ad1288e167 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerActivity.kt @@ -145,7 +145,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) ) } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerViewModel.kt index c04c836274..34fc25ae96 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerViewModel.kt @@ -43,13 +43,14 @@ class AppPickerViewModel(application: Application) : BaseViewModel(application) if (allApps != null || isAppListLoading) return val applicationContext = context.applicationContext + val unidentifiedAppName = context.getString(R.string.app_picker_unknown_app) isAppListLoading = true launchLoading { try { selectedSnapshot = _selectedPackages.value val apps = withContext(Dispatchers.IO) { val list = AppManagerUtil.loadNetworkAppList(applicationContext) - val special = createSpecialItemUnidentified(applicationContext) + val special = createSpecialItemUnidentified(unidentifiedAppName) sortApps(list + special) } allApps = apps @@ -119,9 +120,9 @@ class AppPickerViewModel(application: Application) : BaseViewModel(application) } } - private fun createSpecialItemUnidentified(context: Context): AppInfo { + private fun createSpecialItemUnidentified(appName: String): AppInfo { return AppInfo( - appName = context.getString(R.string.app_picker_unknown_app), + appName = appName, packageName = AppConfig.UNIDENTIFIED_PACKAGE, isSystemApp = false, isSelected = 0 diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/BaseViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/BaseViewModel.kt index d4c9952aee..664c6fc24c 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/BaseViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/BaseViewModel.kt @@ -1,12 +1,15 @@ package com.v2ray.ang.ui.base import android.app.Application +import android.content.Context import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.viewModelScope import com.v2ray.ang.AngApplication import com.v2ray.ang.extension.toast import com.v2ray.ang.extension.toastError import com.v2ray.ang.extension.toastSuccess +import com.v2ray.ang.handler.SettingsManager +import com.v2ray.ang.util.MyContextWrapper import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.MutableStateFlow @@ -27,6 +30,9 @@ abstract class BaseViewModel(application: Application) : AndroidViewModel(applic application as AngApplication } + private val localizedContext: Context + get() = MyContextWrapper.wrap(app, SettingsManager.getLocale()) + @Suppress("PropertyName") protected val _isLoading = MutableStateFlow(false) val isLoading: StateFlow = _isLoading.asStateFlow() @@ -39,56 +45,56 @@ abstract class BaseViewModel(application: Application) : AndroidViewModel(applic * Send neutral toast event (Resource ID). */ fun toast(resId: Int) { - app.toast(resId) + localizedContext.toast(resId) } /** * Send neutral toast event (String). */ fun toast(message: String) { - app.toast(message) + localizedContext.toast(message) } /** * Send success toast event (Resource ID). */ fun toastSuccess(resId: Int) { - app.toastSuccess(resId) + localizedContext.toastSuccess(resId) } /** * Send success toast event (String). */ fun toastSuccess(message: String) { - app.toastSuccess(message) + localizedContext.toastSuccess(message) } /** * Send error toast event (Resource ID). */ fun toastError(resId: Int) { - app.toastError(resId) + localizedContext.toastError(resId) } /** * Send error toast event (String). */ fun toastError(message: String) { - app.toastError(message) + localizedContext.toastError(message) } /** * Get string from resource ID. */ fun getString(resId: Int): String { - return app.getString(resId) + return localizedContext.getString(resId) } /** * Get formatted string from resource ID. */ fun getString(resId: Int, vararg formatArgs: Any?): String { - return app.getString(resId, *formatArgs) + return localizedContext.getString(resId, *formatArgs) } /** diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/checkupdate/CheckUpdateActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/checkupdate/CheckUpdateActivity.kt index 316b83c388..f0ce3c4b36 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/checkupdate/CheckUpdateActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/checkupdate/CheckUpdateActivity.kt @@ -57,7 +57,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)" LaunchedEffect(Unit) { viewModel.checkForUpdates() diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/Components.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/Components.kt index 95d60e8de7..d3710beade 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/Components.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/Components.kt @@ -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) ) } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/Dialog.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/Dialog.kt index 8c95e95889..6321d00116 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/Dialog.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/Dialog.kt @@ -173,7 +173,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) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/logcat/LogcatActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/logcat/LogcatActivity.kt index 9d3c1a7418..dbf1694821 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/logcat/LogcatActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/logcat/LogcatActivity.kt @@ -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) ) } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainBottomBar.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainBottomBar.kt index 950cf69d89..ce88845557 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainBottomBar.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainBottomBar.kt @@ -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) ) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainRepository.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainRepository.kt index 11359a2d5a..5eb399d941 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainRepository.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainRepository.kt @@ -20,6 +20,7 @@ import com.v2ray.ang.handler.SettingsManager import com.v2ray.ang.handler.SubscriptionUpdater import com.v2ray.ang.helper.MessageHelper import com.v2ray.ang.util.LogUtil +import com.v2ray.ang.util.MyContextWrapper import com.v2ray.ang.util.Utils import kotlinx.coroutines.channels.BufferOverflow import kotlinx.coroutines.flow.MutableSharedFlow @@ -31,6 +32,9 @@ class MainRepository( private val app: AngApplication ) : MainDataSource { + private val localizedContext: Context + get() = MyContextWrapper.wrap(app, SettingsManager.getLocale()) + private val closed = AtomicBoolean(false) private val _mainServiceEvent = MutableSharedFlow( @@ -116,9 +120,10 @@ class MainRepository( override fun isGroupAllDisplayEnabled(): Boolean = MmkvManager.decodeSettingsBool(AppConfig.PREF_GROUP_ALL_DISPLAY) - override fun getString(resId: Int): String = app.getString(resId) + override fun getString(resId: Int): String = localizedContext.getString(resId) - override fun getString(resId: Int, vararg formatArgs: Any): String = app.getString(resId, *formatArgs) + override fun getString(resId: Int, vararg formatArgs: Any): String = + localizedContext.getString(resId, *formatArgs) override fun getSubscriptions(): List { val result = mutableListOf() @@ -126,7 +131,7 @@ class MainRepository( result += SubscriptionCache( guid = "", subscription = SubscriptionItem().apply { - remarks = app.getString(R.string.filter_config_all) + remarks = localizedContext.getString(R.string.filter_config_all) } ) } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainServerPager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainServerPager.kt index dad6ef8364..42e77ea964 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainServerPager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainServerPager.kt @@ -36,6 +36,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.LineBreak import androidx.compose.ui.text.style.TextOverflow @@ -382,6 +383,7 @@ fun ServerListItem( } } +@Composable private fun getProtocolDescription(profile: ProfileItem): String { if (profile.configType.isComplexType()) return profile.configType.name val parts = mutableListOf(profile.configType.name) @@ -391,7 +393,7 @@ private fun getProtocolDescription(profile: ProfileItem): String { profile.security?.let { sec -> if (sec.isNotBlank()) { if (profile.insecure == true && sec.equals("tls", ignoreCase = true)) { - parts.add("$sec insecure") + parts.add(stringResource(R.string.profile_protocol_insecure, sec)) } else { parts.add(sec) } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainTopBar.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainTopBar.kt index 56afcd76b4..4ba444223f 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainTopBar.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainTopBar.kt @@ -63,23 +63,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, @@ -100,7 +100,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, diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainViewModel.kt index b8455afdec..c1114af800 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainViewModel.kt @@ -132,7 +132,7 @@ class MainViewModel( _uiState.update { it.copy( statusText = dataSource.getString( - R.string.connection_runing_task_left, + R.string.connection_running_task_left, event.progress ) ) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/perappproxy/PerAppProxyActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/perappproxy/PerAppProxyActivity.kt index ceb3be5b94..3508cc6ef8 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/perappproxy/PerAppProxyActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/perappproxy/PerAppProxyActivity.kt @@ -151,7 +151,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) ) } } @@ -253,7 +253,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 ) } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/routing/RoutingEditActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/routing/RoutingEditActivity.kt index b38195781d..6a90115229 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/routing/RoutingEditActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/routing/RoutingEditActivity.kt @@ -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) ) } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/routing/RoutingSettingActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/routing/RoutingSettingActivity.kt index 8694e41f3a..9b9d6b0b5c 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/routing/RoutingSettingActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/routing/RoutingSettingActivity.kt @@ -212,7 +212,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 { @@ -335,7 +335,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 ) @@ -369,7 +369,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)) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/BaseServerActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/BaseServerActivity.kt index 4d185c1fc7..72a73037c9 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/BaseServerActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/BaseServerActivity.kt @@ -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) ) } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerActivity.kt index 68ac1d21b1..20247f6a0f 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerActivity.kt @@ -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)) } } ) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerCustomConfigActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerCustomConfigActivity.kt index c5d944be28..1aeaf261c9 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerCustomConfigActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerCustomConfigActivity.kt @@ -120,10 +120,7 @@ class ServerCustomConfigActivity : BaseComponentActivity() { "Failed to parse custom configuration", e ) - toast( - "${getString(R.string.toast_malformed_josn)} " + - "${e.cause?.message.orEmpty()}" - ) + toast(getString(R.string.toast_malformed_json_detail, e.cause?.message.orEmpty())) return false } @@ -315,14 +312,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) ) } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerGroupActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerGroupActivity.kt index 10e4b51dea..9b4dd1d59d 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerGroupActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerGroupActivity.kt @@ -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)) } } ) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerProxyChainActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerProxyChainActivity.kt index 21e1420f48..1a10deaa25 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerProxyChainActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerProxyChainActivity.kt @@ -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) ) } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/settings/SettingsActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/settings/SettingsActivity.kt index d803ea1fc7..12399fb66a 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/settings/SettingsActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/settings/SettingsActivity.kt @@ -453,14 +453,14 @@ fun SettingsScreen( onCheckedChange = { mux = it } ) SettingsEditItem( - title = stringResource(R.string.title_pref_mux_concurency), + title = stringResource(R.string.title_pref_mux_concurrency), value = muxConcurrency, enabled = mux, keyboardNumber = true, onValueChanged = { muxConcurrency = it } ) SettingsEditItem( - title = stringResource(R.string.title_pref_mux_xudp_concurency), + title = stringResource(R.string.title_pref_mux_xudp_concurrency), value = muxXudpConcurrency, enabled = mux, keyboardNumber = true, diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/TaskerActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/TaskerActivity.kt index 34bbd0dc3a..cc11e6baa5 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/TaskerActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/TaskerActivity.kt @@ -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)) } } ) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubEditActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubEditActivity.kt index 2df184bb1e..977b754fea 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubEditActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubEditActivity.kt @@ -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)) } } ) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubSettingActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubSettingActivity.kt index 57e40b37db..8cb58a4c19 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubSettingActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubSettingActivity.kt @@ -133,10 +133,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)) } } ) @@ -200,14 +200,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 = { @@ -216,7 +216,7 @@ fun SubSettingScreen( }) { Icon( painter = painterResource(R.drawable.ic_delete_24dp), - contentDescription = "Delete" + contentDescription = stringResource(R.string.acc_delete) ) } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetActivity.kt index 7ccaf7efae..f3b32cc2d0 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetActivity.kt @@ -275,7 +275,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, @@ -299,7 +299,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)) } } ) @@ -399,7 +399,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) ) } @@ -407,7 +407,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) ) } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetUrlActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetUrlActivity.kt index 11649e0fdd..3bba102122 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetUrlActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetUrlActivity.kt @@ -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) ) } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/util/MyContextWrapper.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/util/MyContextWrapper.kt index 34352f05ba..3ea7c2fa83 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/util/MyContextWrapper.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/util/MyContextWrapper.kt @@ -19,7 +19,7 @@ open class MyContextWrapper(base: Context?) : ContextWrapper(base) { fun wrap(context: Context, newLocale: Locale?): ContextWrapper { var mContext = context val res: Resources = mContext.resources - val configuration: Configuration = res.configuration + val configuration = Configuration(res.configuration) val locale = newLocale ?: Locale.getDefault() configuration.setLocale(locale) diff --git a/V2rayNG/app/src/main/res/values-ar/strings.xml b/V2rayNG/app/src/main/res/values-ar/strings.xml index 9b4fd1ddc8..00d3b4cf5d 100644 --- a/V2rayNG/app/src/main/res/values-ar/strings.xml +++ b/V2rayNG/app/src/main/res/values-ar/strings.xml @@ -1,427 +1,488 @@ - التبديل - التبديل - أول استخدام لهذه الميزة، يرجى استخدام التطبيق لإضافة خادم - فتح درج التنقل - إغلاق درج التنقل - نجحت عملية ترحيل البيانات! - Stop service - فشلت عملية ترحيل البيانات! - Please pull down to refresh! + v2rayNG + التبديل + التبديل + أول استخدام لهذه الميزة، يرجى استخدام التطبيق لإضافة خادم + فتح درج التنقل + إغلاق درج التنقل + نجحت عملية ترحيل البيانات! + Stop service + فشلت عملية ترحيل البيانات! + Refresh - إيقاف - تعذر الحصول على الإذن - Unable to obtain the notification permission - انقر للمزيد - بدء الخدمات - إيقاف الخدمات - نجاح بدء الخدمات - فشل بدء الخدمات + إيقاف + تعذر الحصول على الإذن + Unable to obtain the notification permission + Unable to obtain permission: %1$s + انقر للمزيد + بدء الخدمات + إيقاف الخدمات + نجاح بدء الخدمات + فشل بدء الخدمات - ملف التكوين - إضافة تكوين - حفظ التكوين - Edit configuration - حذف التكوين - استيراد التكوين من رمز الاستجابة السريعة (QRcode) - استيراد التكوين من الحافظة - Import config from locally - Add [Policy group] - Add [Proxy chain] - الكتابة يدويًا [VMess] - الكتابة يدويًا [VLESS] - الكتابة يدويًا [Shadowsocks] - الكتابة يدويًا [SOCKS] - Type manually[HTTP] - الكتابة يدويًا [Trojan] - الكتابة يدويًا [Wireguard] - Type manually[Hysteria2] - هل أنت متأكد من أنك تريد حذف جميع ملفات التعريف المعروضة حاليًا؟ - هل أنت متأكد من أنك تريد حذف جميع ملفات التعريف المكررة المعروضة حاليًا؟ - يرجى اختبار ملفات التعريف أولًا. هل أنت متأكد من أنك تريد حذف جميع ملفات التعريف غير الصالحة المعروضة حاليًا؟ - هل أنت متأكد من أنك تريد حذف ملف التعريف هذا؟ - هل أنت متأكد من أنك تريد حذف مجموعة السياسات هذه؟ - هل أنت متأكد من أنك تريد حذف هذا العضو من سلسلة الوكلاء؟ - هل أنت متأكد من أنك تريد حذف قاعدة التوجيه هذه؟ - هل أنت متأكد من أنك تريد حذف مجموعة الاشتراك هذه؟ - هل أنت متأكد من أنك تريد حذف ملف الأصول \"%1$s\"؟ - هل أنت متأكد من أنك تريد حذف مصدر الأصول هذا؟ - ملاحظات - العنوان - المنفذ - المعرف - AlterId - - الأمان - الشبكة - النقل - نوع الرأس - وضع gRPC - host - http host - ws host - httpupgrade host - xhttp host - h2 host - QUIC security - gRPC Authority - path - ws path - httpupgrade path - xhttp path - h2 path - QUIC key - kcp seed - gRPC serviceName - TLS - البصمة - بروتوكول الطبقة الآخرى التالية (ALPN) - السماح غير الآمن - SNI - العنوان - المنفذ - كلمة المرور - الأمان - كلمة المرور (اختياري) - المستخدم (اختياري) - التشفير - التدفق - المفتاح العام - PreSharedKey(optional) - المعرّف القصير - SpiderX - Mldsa65Verify - المفتاح السري - محجوز (اختياري) - العنوان المحلي (اختياري IPv4/IPv6، مفصولة بفواصل) - Mtu (اختياري، الافتراضي 1420) - mKCP MTU (اختياري، الافتراضي في النواة 1350) - mKCP TTI (اختياري، الافتراضي في النواة 50) - نجاح - فشل - لا يوجد شيء - بروتوكول غير صحيح - فشل فك التشفير - حدد ملف التكوين - يرجى تثبيت مدير الملفات. - تخصيص التكوين - تكوين غير صالح - المحتوى - لا توجد بيانات في الحافظة - رابط URL غير صالح - Please do not use the insecure HTTP protocol subscription address - تأكد من أن منفذ الاتصالات الواردة يتوافق مع الإعدادات - تكوين مشوه - مضيف (SNI) (اختياري) - الإجراء غير مسموح به - Obfs password - Port Hopping - Port Hopping Interval - Bandwidth down (Supported units: k/m/g/t) - Bandwidth up (Supported units: k/m/g/t) - XHTTP Mode - XHTTP Extra raw JSON, format: { XHTTPObject } - finalMask raw JSON, format: { FinalMaskObject } - EchConfigList - Verify Peer Cert By Name - Certificate fingerprint (SHA-256) - Fetch and fill certificate fingerprint - Certificate fingerprint fetched successfully - Failed to fetch certificate fingerprint + ملف التكوين + Add subscription + حفظ التكوين + استيراد التكوين من رمز الاستجابة السريعة (QRcode) + استيراد التكوين من الحافظة + Import config from locally + Add [Policy group] + Add [Proxy chain] + الكتابة يدويًا [VMess] + الكتابة يدويًا [VLESS] + الكتابة يدويًا [Shadowsocks] + الكتابة يدويًا [SOCKS] + Type manually[HTTP] + الكتابة يدويًا [Trojan] + الكتابة يدويًا [Wireguard] + Type manually[Hysteria2] + هل أنت متأكد من أنك تريد حذف جميع ملفات التعريف المعروضة حاليًا؟ + هل أنت متأكد من أنك تريد حذف جميع ملفات التعريف المكررة المعروضة حاليًا؟ + يرجى اختبار ملفات التعريف أولًا. هل أنت متأكد من أنك تريد حذف جميع ملفات التعريف غير الصالحة المعروضة حاليًا؟ + هل أنت متأكد من أنك تريد حذف ملف التعريف هذا؟ + هل أنت متأكد من أنك تريد حذف مجموعة السياسات هذه؟ + هل أنت متأكد من أنك تريد حذف هذا العضو من سلسلة الوكلاء؟ + هل أنت متأكد من أنك تريد حذف قاعدة التوجيه هذه؟ + هل أنت متأكد من أنك تريد حذف مجموعة الاشتراك هذه؟ + هل أنت متأكد من أنك تريد حذف ملف الأصول \"%1$s\"؟ + هل أنت متأكد من أنك تريد حذف مصدر الأصول هذا؟ + ملاحظات + العنوان + المنفذ + المعرف + AlterId + الأمان + الشبكة + النقل + نوع الرأس + وضع gRPC + host + http host + ws host + httpupgrade host + xhttp host + h2 host + QUIC security + gRPC Authority + path + ws path + httpupgrade path + xhttp path + h2 path + QUIC key + kcp seed + gRPC serviceName + TLS + البصمة + بروتوكول الطبقة الآخرى التالية (ALPN) + السماح غير الآمن + SNI + العنوان + المنفذ + كلمة المرور + الأمان + كلمة المرور (اختياري) + المستخدم (اختياري) + التشفير + التدفق + المفتاح العام + PreSharedKey(optional) + المعرّف القصير + SpiderX + Mldsa65Verify + المفتاح السري + محجوز (اختياري) + العنوان المحلي (اختياري IPv4/IPv6، مفصولة بفواصل) + Mtu (اختياري، الافتراضي 1420) + mKCP MTU (اختياري، الافتراضي في النواة 1350) + mKCP TTI (اختياري، الافتراضي في النواة 50) + نجاح + فشل + لا يوجد شيء + بروتوكول غير صحيح + فشل فك التشفير + حدد ملف التكوين + يرجى تثبيت مدير الملفات. + تخصيص التكوين + تكوين غير صالح + المحتوى + لا توجد بيانات في الحافظة + رابط URL غير صالح + Please do not use the insecure HTTP protocol subscription address + تأكد من أن منفذ الاتصالات الواردة يتوافق مع الإعدادات + تكوين مشوه: %1$s + مضيف (SNI) (اختياري) + الإجراء غير مسموح به + Obfs password + Port Hopping + Port Hopping Interval + Bandwidth down (Supported units: k/m/g/t) + Bandwidth up (Supported units: k/m/g/t) + XHTTP Mode + XHTTP Extra raw JSON, format: { XHTTPObject } + finalMask raw JSON, format: { FinalMaskObject } + EchConfigList + Verify Peer Cert By Name + Certificate fingerprint (SHA-256) + Enable Browser Dialer + Only supports xhttp (packet-up) and ws outbound; TLS-related settings may be ignored or conflict + Current node uses an unencrypted connection. Your communication may be directly viewed by network intermediate facilities controlled by authoritarian governments.\nFor security reasons, such nodes cannot be connected via Xray core version 26.2.6+.\nIf it is a self-built node, please enable security encryption such as TLS, or pin the certificate pinnedCA256.\nIf it is a provider node, please contact the service provider to complete the technical upgrade. If the service provider refuses to cooperate, it is recommended to switch to a provider that pays more attention to user security.\nFor more information, please visit https://github.com/2dust/v2rayN/discussions/9460 + Fetch and fill certificate fingerprint + Certificate fingerprint fetched successfully + Failed to fetch certificate fingerprint - فشل نسخ الملف، يرجى استخدام مدير الملفات - إضافة أصل - إضافة ملفات - إضافة URL - مسح رمز الاستجابة السريعة (QRcode) - URL - تنزيل الملفات - إضافة عنوان URL للأصل - الملف غير موجود - الملاحظات موجودة بالفعل - Geo files source (optional) + فشل نسخ الملف، يرجى استخدام مدير الملفات + إضافة أصل + إضافة ملفات + إضافة URL + مسح رمز الاستجابة السريعة (QRcode) + URL + تنزيل الملفات + إضافة عنوان URL للأصل + الملف غير موجود + الملاحظات موجودة بالفعل + Geo files source (optional) - جار التحميل - بحث - تحديد الكل - عكس الاختيار - أدخل الكلمات الرئيسية - وضع التجاوز - تحديد تطبيق الوكيل تلقائيًا - جارٍ تنزيل المحتوى - تصدير إلى الحافظة - استيراد من الحافظة - Per-app settings - Enable per-app - + جار التحميل + بحث + تحديد الكل + عكس الاختيار + أدخل الكلمات الرئيسية + وضع التجاوز + تحديد تطبيق الوكيل تلقائيًا + جارٍ تنزيل المحتوى + تصدير إلى الحافظة + استيراد من الحافظة + Per-app settings + Enable per-app + Unknown app (unidentified UID) - الإعدادات - إعدادات متقدمة - إعدادات النواة - إعدادات VPN - الوكيل لكل تطبيق - عام: التطبيق المحدد هو وكيل، غير المحدد اتصال مباشر؛ \nوضع التجاوز: التطبيق المحدد متصل مباشرة، غير المحدد وكيل. \nخيار تحديد تطبيق الوكيل تلقائيًا في القائمة - Auto connect at startup - Automatically connects to the selected server at startup, which may be unsuccessful - - Auto delete invalid config after testing - Test results may not be accurate; deleted config cannot be recovered. - Auto sort after testing - Test results may not be accurate; - - إعدادات Mux - تمكين Mux - أسرع، لكن قد يتسبب في اتصال غير مستقر\nتخصيص كيفية التعامل مع TCP و UDP و QUIC أدناه - اتصالات TCP(النطاق من -1 إلى 1024) - اتصالات XUDP(النطاق من -1 إلى 1024) - التعامل مع QUIC في نفق mux + الإعدادات + إعدادات متقدمة + إعدادات النواة + إعدادات VPN + الوكيل لكل تطبيق + عام: التطبيق المحدد هو وكيل، غير المحدد اتصال مباشر؛ \nوضع التجاوز: التطبيق المحدد متصل مباشرة، غير المحدد وكيل. \nخيار تحديد تطبيق الوكيل تلقائيًا في القائمة + Auto connect at startup + Automatically connects to the selected server at startup, which may be unsuccessful + + + The task will run in the background, and progress information will be displayed in the notification. + Auto test after updating subscription + Automated testing takes a long time. If enabled, the task will run in the background; otherwise, it will run on the current page. + Auto delete invalid config after testing + Test results may not be accurate; deleted config cannot be recovered. + Auto sort after testing + Test results may not be accurate; + + إعدادات Mux + تمكين Mux + أسرع، لكن قد يتسبب في اتصال غير مستقر\nتخصيص كيفية التعامل مع TCP و UDP و QUIC أدناه + اتصالات TCP(النطاق من -1 إلى 1024) + اتصالات XUDP(النطاق من -1 إلى 1024) + التعامل مع QUIC في نفق mux رفض سماح تخطي - تمكين عرض السرعة - عرض السرعة الحالية في الإشعار.\nستتغير أيقونة الإشعار بناءً على الاستخدام. - تفعيل استخراج الشبكة - محاولة استخراج النطاق من الحزمة (مفعل افتراضيًا) - تفعيل التوجيه فقط - استخدم اسم النطاق الذي تم استخراجه للتوجيه فقط، واحتفظ بعنوان الوجهة كعنوان IP. + تمكين عرض السرعة + عرض السرعة الحالية في الإشعار.\nستتغير أيقونة الإشعار بناءً على الاستخدام. + + تفعيل استخراج الشبكة + محاولة استخراج النطاق من الحزمة (مفعل افتراضيًا) + تفعيل التوجيه فقط + استخدم اسم النطاق الذي تم استخراجه للتوجيه فقط، واحتفظ بعنوان الوجهة كعنوان IP. + + تفعيل DNS المحلي + يتم معالجة DNS بواسطة وحدة DNS الأساسية (موصى به، إذا لزم تجاوز التوجيه لشبكة LAN وعنوان البر الرئيسي) + + تفعيل DNS وهمي + يعيد DNS المحلي عنوان IP وهمي (أسرع، ولكنه قد لا يعمل مع بعض التطبيقات) + + تفعيل IPv6 + إضافة عنوان IPv6 والمسارات إلى واجهة VPN - تفعيل DNS المحلي - يتم معالجة DNS بواسطة وحدة DNS الأساسية (موصى به، إذا لزم تجاوز التوجيه لشبكة LAN وعنوان البر الرئيسي) + تفضيل IPv6 + تفضيل عناوين IPv6 عند حل أسماء النطاقات - تفعيل DNS وهمي - يعيد DNS المحلي عنوان IP وهمي (أسرع، ولكنه قد لا يعمل مع بعض التطبيقات) + DNS البعيد (udp/tcp/https/quic) (اختياري) + DNS - تفعيل IPv6 - إضافة عنوان IPv6 والمسارات إلى واجهة VPN + VPN DNS (IPv4/v6 فقط) + Does VPN bypass LAN - تفضيل IPv6 - تفضيل عناوين IPv6 عند حل أسماء النطاقات + VPN Interface Address - DNS البعيد (udp/tcp/https/quic) (اختياري) - DNS + VPN MTU (default 1500) - VPN DNS (IPv4/v6 فقط) - Does VPN bypass LAN - VPN Interface Address - VPN MTU (default 1500) + DNS المحلي (اختياري) + DNS - DNS المحلي (اختياري) - DNS + DNS hosts (Format: domain:address,…) + domain:address,… - DNS hosts (Format: domain:address,…) - domain:address,… + True delay test url + Url + True delay test concurrency - True delay test url - Url - True delay test concurrency + Current connection info test url + Url - Current connection info test url - Url + السماح بالاتصالات من الشبكة المحلية + يمكن للأجهزة الأخرى الاتصال بالبروكسي بواسطة عنوان IP الخاص بك من خلال socks/http، يتم التمكين فقط في الشبكة الموثوقة لتجنب الاتصال غير المصرح به + السماح بالاتصالات من الشبكة المحلية، تأكد من أنك في شبكة موثوقة - السماح بالاتصالات من الشبكة المحلية - يمكن للأجهزة الأخرى الاتصال بالبروكسي بواسطة عنوان IP الخاص بك من خلال socks/http، يتم التمكين فقط في الشبكة الموثوقة لتجنب الاتصال غير المصرح به - السماح بالاتصالات من الشبكة المحلية، تأكد من أنك في شبكة موثوقة + منفذ بروكسي Local + تفعيل الوكيل المحلي + When disabled, no SOCKS proxy is available, so subscription updates and similar actions cannot use the proxy + SOCKS5 UDP + مصادقة socks5 ليست آمنة تمامًا عند استخدام UDP + منفذ بروكسي Local + Enable dynamic local proxy port + Generate a random local proxy port each time the inbound is created + Local proxy username (optional) + Username + Local proxy password (optional) + Password - منفذ بروكسي Local - تفعيل الوكيل المحلي - When disabled, no SOCKS proxy is available, so subscription updates and similar actions cannot use the proxy - SOCKS5 UDP - مصادقة socks5 ليست آمنة تمامًا عند استخدام UDP - منفذ بروكسي Local - Enable dynamic local proxy port - Generate a random local proxy port each time the inbound is created - Local proxy username (optional) - Username - Local proxy password (optional) - Password + منفذ DNS المحلي + منفذ DNS المحلي - منفذ DNS المحلي - منفذ DNS المحلي + تأكيد حذف ملف التكوين + ما إذا كان حذف ملف التكوين يتطلب تأكيدًا ثانيًا من قبل المستخدم - تأكيد حذف ملف التكوين - ما إذا كان حذف ملف التكوين يتطلب تأكيدًا ثانيًا من قبل المستخدم + Append HTTP Proxy to VPN + HTTP proxy will be used directly from (browser/ some supported apps), without going through the virtual NIC device (Android 10+) - Append HTTP Proxy to VPN - HTTP proxy will be used directly from (browser/ some supported apps), without going through the virtual NIC device (Android 10+) + Enable double column display + The profile list is displayed in double columns, allowing more content to be displayed on the screen. - Enable double column display - The profile list is displayed in double columns, allowing more content to be displayed on the screen. + Enable show all groups + Add an extra "All Tabs" page - Enable show all groups - Add an extra "All Tabs" page - ملاحظات - ملاحظات التحسينات أو الأخطاء إلى GitHub - الانضمام إلى مجموعة Telegram - لم يتم العثور على تطبيق Telegram - سياسة الخصوصية - QR code - حول\nترجمة م. ابراهيم قاسم - الكود المصدري - Open Source licenses - قناة Telegram - - ترويج - - اشتراكات التحديث التلقائي - قم بتحديث اشتراكاتك تلقائيًا بفترة زمنية في الخلفية. اعتمادًا على الجهاز، قد لا تعمل هذه الميزة دائمًا - فاصل التحديث التلقائي (بالدقائق، الحد الأدنى للقيمة 15) - - مستوى السجل - Outbound domain pre-resolve method - الوضع - انقر هنا للحصول على مزيد من المساعدة - اللغة - إعدادات واجهة المستخدم - إعدادات وضع واجهة المستخدم ليلاً - Enable Hev TUN Feature - When enabled, TUN will use hev-socks5-tunnel; otherwise, it will use xray-core. - Hev Tun Log Level - Hev Tun read/write timeout (seconds) (tcp,udp default 300,60) - - Logcat - نسخ - مسح - مشاركة السجل - إعادة تشغيل الخدمة - حذف جميع الإعدادات (قبل أول خطوة) - حذف الإعدادات المكررة (2) - حذف الإعدادات غير الصالحة (بعد الاختبار؛ 4) - تصدير الإعدادات غير المخصصة إلى الحافظة - إعداد مجموعة الاشتراك - ملاحظات - عنوان URL اختياري - User Agent - Remarks regular filter - تفعيل التحديث - تفعيل التحديث التلقائي - Allow insecure HTTP address - Previous proxy configuration remarks - Next proxy configuration remarks - The configuration remarks exists and is unique - فاصل التحديث غير صالح. الحد الأدنى هو 15 دقيقة. - تحديث الاشتراك (أول خطوة) - Tcping لجميع الإعدادات - اختبر جميع الإعدادات (3) - Asset files - الفرز حسب نتائج الاختبار (5) - تصفية ملف التكوين - All - حذف %d من الإعدادات المكررة - Click screen open the camera scan - - Delete %d configurations - Import %d configurations - Export %d configurations - Update %d configurations - Updated %1$d configs (%2$d success, %3$d failed, %4$d skipped) - No subscriptions - Selected server not found in current group - Unable to locate current view - Locate the selected config - - بدء الخدمة - تأكيد + ملاحظات + ملاحظات التحسينات أو الأخطاء إلى GitHub + الانضمام إلى مجموعة Telegram + لم يتم العثور على تطبيق Telegram + سياسة الخصوصية + QR code + حول\nترجمة م. ابراهيم قاسم + الكود المصدري + Open Source licenses + قناة Telegram + + ترويج + + اشتراكات التحديث التلقائي + قم بتحديث اشتراكاتك تلقائيًا بفترة زمنية في الخلفية. اعتمادًا على الجهاز، قد لا تعمل هذه الميزة دائمًا + فاصل التحديث التلقائي (بالدقائق، الحد الأدنى للقيمة 15) + + مستوى السجل + Outbound domain pre-resolve method + الوضع + انقر هنا للحصول على مزيد من المساعدة + اللغة + إعدادات واجهة المستخدم + إعدادات وضع واجهة المستخدم ليلاً + Enable Hev TUN Feature + When enabled, TUN will use hev-socks5-tunnel; otherwise, it will use xray-core. + Hev Tun Log Level + Hev Tun read/write timeout (seconds) (tcp,udp default 300,60) + Mode Settings + Root mode enabled (Root Users) + Enable low-level transparent proxying via root privileges. This mode bypasses the standard Android system VPN to directly take over all underlying network traffic. Once enabled, the original regular mode, per-app routing, and related VPN settings will become completely invalid. + Root access is required for this feature + LAN / tethering sharing (Root Users) + Route Wi-Fi hotspot and USB-tethered devices through the VPN + + Logcat + نسخ + مسح + مشاركة السجل + إعادة تشغيل الخدمة + حذف جميع الإعدادات (قبل أول خطوة) + حذف الإعدادات المكررة (2) + حذف الإعدادات غير الصالحة (بعد الاختبار؛ 4) + تصدير الإعدادات غير المخصصة إلى الحافظة + إعداد مجموعة الاشتراك + ملاحظات + عنوان URL اختياري + User Agent + Request Headers (JSON format) + Remarks regular filter + تفعيل التحديث + تفعيل التحديث التلقائي + Allow insecure HTTP address + Previous proxy configuration remarks + Next proxy configuration remarks + The configuration remarks exists and is unique + فاصل التحديث غير صالح. الحد الأدنى هو 15 دقيقة. + تحديث الاشتراك (أول خطوة) + Tcping لجميع الإعدادات + اختبر جميع الإعدادات (3) + Asset files + الفرز حسب نتائج الاختبار (5) + تصفية ملف التكوين + All + Click screen open the camera scan + حذف %d من الإعدادات المكررة + Delete %d configurations + Import %d configurations + Export %d configurations + Update %d configurations + Updated %1$d configs (%2$d success, %3$d failed, %4$d skipped) + No subscriptions + Selected server not found in current group + Unable to locate current view + Locate the selected config + + بدء الخدمة + تأكيد - استراتيجية النطاق - إعدادات التوجيه - افصل بعلامة الفاصلة (,) واختر أحد: domain أو ip أو process - حفظ - مسح - Routing Rule Settings - Add rule - استيراد مجموعات قواعد محددة مسبقاً - Existing rulesets will be deleted, are you sure to continue? - Import ruleset from clipboard - استيراد مجموعة قواعد من رمز الاستجابة السريعة - Export ruleset to clipboard - Locked, keep this rule when import presets - domain - ip - process (Package Name — only supported when using Xray TUN, routeOnly enabled, and Android 10+) - port - protocol - [http,tls,bittorrent] - network - outboundTag - - التحقق من الاتصال - يجري الاختبار… - Testing %d configurations… - نجاح: استغرق اتصال HTTP %dms - فشل اكتشاف اتصال الإنترنت: %s - الإنترنت غير متاح - رمز الخطأ: #%d - متصل، انقر للتحقق من الاتصال - غير متصل - Number of running test tasks: %s - - تم استيراد الاشتراك بنجاح - فشل استيراد الاشتراك - إعدادات الجزء - حزم الجزء - طول الجزء (الحد الأدنى - الحد الأقصى) - فاصل الجزء (الحد الأدنى - الحد الأقصى) - تفعيل الجزء - ماكس سبليت الجزء - إعدادات مراقبة الاتصال - فاصل leastPing - فاصل leastLoad - طريقة HTTP لـ leastLoad - عينات leastLoad - مهلة leastLoad - مدة غير صالحة. استخدم قيمة مثل 3m أو 30s. - عدد العينات غير صالح. استخدم رقمًا موجبًا. - - Check for update - Already on the latest version - New version found: %s - Update now - Check Pre-release - Checking for update… - - Policy group type - From subscription group - Remarks regular filter - اختبار المخارج - المخرج الاحتياطي (اختياري) - اعضاء سلسلة الوكيل - اضغط هنا لاختيار عضو - اختر عضوا - يرجى اختيار remark لكل صف في السلسلة - عدد الاعضاء غير كاف - اعضاء سلسلة غير صالحين: %1$s + استراتيجية النطاق + إعدادات التوجيه + افصل بعلامة الفاصلة (,) واختر أحد: domain أو ip أو process + حفظ + مسح + Routing Rule Settings + Add rule + استيراد مجموعات قواعد محددة مسبقاً + Existing rulesets will be deleted, are you sure to continue? + Import ruleset from clipboard + استيراد مجموعة قواعد من رمز الاستجابة السريعة + Export ruleset to clipboard + Locked, keep this rule when import presets + domain + ip + process (Package Name — only supported when using Xray TUN, routeOnly enabled, and Android 10+) + Select package name + port + protocol + [http,tls,bittorrent] + network + proxy / direct / block / <remarks> + outboundTag + + التحقق من الاتصال + يجري الاختبار… + Testing %d configurations… + نجاح: استغرق اتصال HTTP %dms + فشل اكتشاف اتصال الإنترنت: %s + الإنترنت غير متاح + رمز الخطأ: #%d + متصل، انقر للتحقق من الاتصال + غير متصل + Number of running test tasks: %s + + تم استيراد الاشتراك بنجاح + فشل استيراد الاشتراك + إعدادات الجزء + حزم الجزء + طول الجزء (الحد الأدنى - الحد الأقصى) + فاصل الجزء (الحد الأدنى - الحد الأقصى) + تفعيل الجزء + ماكس سبليت الجزء + إعدادات مراقبة الاتصال + فاصل leastPing + فاصل leastLoad + طريقة HTTP لـ leastLoad + عينات leastLoad + مهلة leastLoad + مدة غير صالحة. استخدم قيمة مثل 3m أو 30s. + عدد العينات غير صالح. استخدم رقمًا موجبًا. + + Check for update + Already on the latest version + New version found: %s + Update now + Check Pre-release + Checking for update… + + Policy group type + From subscription group + Remarks regular filter + اختبار المخارج + المخرج الاحتياطي (اختياري) + + اعضاء سلسلة الوكيل + اضغط هنا لاختيار عضو + اختر عضوا + يرجى اختيار remark لكل صف في السلسلة + عدد الاعضاء غير كاف + اعضاء سلسلة غير صالحين: %1$s - Backup & Restore - نسخ التكوين احتياطيًا - استعادة التكوين - مشاركة التكوين - WebDAV Settings - Please configure WebDAV first. - WebDAV server URL - Username - Password - Remote directory (optional) - - رمز استجابة سريعة (QRcode) - تصدير إلى الحافظة - تصدير التكوين الكامل إلى الحافظة - تعديل - حذف - إغلاق + Backup & Restore + نسخ التكوين احتياطيًا + استعادة التكوين + مشاركة التكوين + WebDAV Settings + Please configure WebDAV first. + WebDAV server URL + Username + Password + Remote directory (optional) + + رمز استجابة سريعة (QRcode) + تصدير إلى الحافظة + تصدير التكوين الكامل إلى الحافظة + تعديل + حذف + إغلاق + + No server selected + Failed to decode server config + Failed to build config context + Failed to get V2Ray config + Failed to get V2Ray config: %1$s + Failed to get V2Ray config for speed test: %1$s + Custom config is empty + Core failed to start + + Start + Stop + Back + بحث + Add + More + Share subscription + مشاركة السجل + Remove + Add member + Start scanner + Stop scanner + Turn torch on + Turn torch off + Select image + Locked + Open menu + تعديل + حذف + حفظ + Update subscriptions + Per-app proxy information + Camera + Notification + Local network + %1$s insecure + Updating %1$s + %1$s in %2$s + Start %1$s + Stop %1$s + empty message + unknown رمز استجابة سريعة (QRcode) @@ -433,12 +494,26 @@ بروكسي فقط + + Disable + OkHttp + WebView + + اتبع النظام فاتح داكن + + China Whitelist + China Blacklist + Global + Iran Whitelist + Russia Whitelist + + Follow config Bypass @@ -450,6 +525,7 @@ Resolve and add to DNS Hosts Resolve and replace domain + Least Ping Least Load diff --git a/V2rayNG/app/src/main/res/values-bn/strings.xml b/V2rayNG/app/src/main/res/values-bn/strings.xml index 3813b3795b..ca84c8363f 100644 --- a/V2rayNG/app/src/main/res/values-bn/strings.xml +++ b/V2rayNG/app/src/main/res/values-bn/strings.xml @@ -1,426 +1,488 @@ - সুইচ - সুইচ - এই ফিচারটি প্রথম ব্যবহার করা হচ্ছে, সার্ভার যোগ করতে অ্যাপটি ব্যবহার করুন - নেভিগেশন ড্রয়ার খোলুন - নেভিগেশন ড্রয়ার বন্ধ করুন - ডেটা স্থানান্তর সফল! - Stop service - ডেটা স্থানান্তর ব্যর্থ! - Please pull down to refresh! + v2rayNG + সুইচ + সুইচ + এই ফিচারটি প্রথম ব্যবহার করা হচ্ছে, সার্ভার যোগ করতে অ্যাপটি ব্যবহার করুন + নেভিগেশন ড্রয়ার খোলুন + নেভিগেশন ড্রয়ার বন্ধ করুন + ডেটা স্থানান্তর সফল! + Stop service + ডেটা স্থানান্তর ব্যর্থ! + Refresh - বন্ধ করুন - অনুমতি পাওয়া যাচ্ছে না - Unable to obtain the notification permission - আরও দেখতে ক্লিক করুন - সার্ভিস শুরু করুন - সার্ভিস বন্ধ করুন - সার্ভিস সফলভাবে শুরু হয়েছে - সার্ভিস শুরু হতে ব্যর্থ হয়েছে + বন্ধ করুন + অনুমতি পাওয়া যাচ্ছে না + Unable to obtain the notification permission + Unable to obtain permission: %1$s + আরও দেখতে ক্লিক করুন + সার্ভিস শুরু করুন + সার্ভিস বন্ধ করুন + সার্ভিস সফলভাবে শুরু হয়েছে + সার্ভিস শুরু হতে ব্যর্থ হয়েছে - কনফিগারেশন ফাইল - কনফিগারেশন যোগ করুন - কনফিগারেশন সংরক্ষণ করুন - Edit configuration - কনফিগারেশন মুছুন - QR কোড থেকে কনফিগারেশন আমদানি করুন - ক্লিপবোর্ড থেকে কনফিগারেশন আমদানি করুন - Import config from locally - Add [Policy group] - Add [Proxy chain] - ম্যানুয়ালি টাইপ করুন [VMess] - ম্যানুয়ালি টাইপ করুন [VLESS] - ম্যানুয়ালি টাইপ করুন [Shadowsocks] - ম্যানুয়ালি টাইপ করুন [SOCKS] - Type manually[HTTP] - ম্যানুয়ালি টাইপ করুন [Trojan] - ম্যানুয়ালি টাইপ করুন [Wireguard] - Type manually[Hysteria2] - আপনি কি বর্তমানে প্রদর্শিত সব প্রোফাইল মুছে ফেলতে চান? - আপনি কি বর্তমানে প্রদর্শিত সব সদৃশ প্রোফাইল মুছে ফেলতে চান? - প্রথমে প্রোফাইলগুলো পরীক্ষা করুন। আপনি কি বর্তমানে প্রদর্শিত সব অবৈধ প্রোফাইল মুছে ফেলতে চান? - আপনি কি এই প্রোফাইলটি মুছে ফেলতে চান? - আপনি কি এই পলিসি গ্রুপটি মুছে ফেলতে চান? - আপনি কি এই প্রক্সি চেইন সদস্যটিকে মুছে ফেলতে চান? - আপনি কি এই রাউটিং নিয়মটি মুছে ফেলতে চান? - আপনি কি এই সাবস্ক্রিপশন গ্রুপটি মুছে ফেলতে চান? - আপনি কি \"%1$s\" অ্যাসেট ফাইলটি মুছে ফেলতে চান? - আপনি কি এই অ্যাসেট উৎসটি মুছে ফেলতে চান? - মন্তব্য - ঠিকানা - পোর্ট - আইডি - অলটারআইডি - নিরাপত্তা - নেটওয়ার্ক - ট্রান্সপোর্ট - হেড টাইপ - gRPC মোড - হোস্ট - http হোস্ট - ws হোস্ট - httpupgrade হোস্ট - xhttp হোস্ট - h2 হোস্ট - QUIC নিরাপত্তা - gRPC কর্তৃপক্ষ - পথ - ws পথ - httpupgrade পথ - xhttp পথ - h2 পথ - QUIC কী - kcp বীজ - gRPC সেবার নাম - TLS - ফিঙ্গারপ্রিন্ট - Alpn - অনিরাপদ অনুমতি দিন - SNI - ঠিকানা - পোর্ট - পাসওয়ার্ড - নিরাপত্তা - পাসওয়ার্ড (ঐচ্ছিক) - ব্যবহারকারী (ঐচ্ছিক) - এনক্রিপশন - ফ্লো - পাবলিক কী - PreSharedKey(optional) - শর্ট আইডি - SpiderX - Mldsa65Verify - সিক্রেট কী - সংরক্ষিত (ঐচ্ছিক) - স্থানীয় ঠিকানা (ঐচ্ছিক IPv4/IPv6, কমা দ্বারা পৃথক করা) - MTU (ঐচ্ছিক, ডিফল্ট 1420) - mKCP MTU (ঐচ্ছিক, কোর ডিফল্ট 1350) - mKCP TTI (ঐচ্ছিক, কোর ডিফল্ট 50) - সফল - ব্যর্থ - কোনও তথ্য নেই - ভুল প্রোটোকল - ডিকোডিং ব্যর্থ - একটি কনফিগারেশন ফাইল নির্বাচন করুন - অনুগ্রহ করে একটি ফাইল ম্যানেজার ইনস্টল করুন। - কাস্টমাইজ কনফিগারেশন - অবৈধ কনফিগারেশন - কনটেন্ট - ক্লিপবোর্ডে কোনও তথ্য নেই - অবৈধ URL - Please do not use the insecure HTTP protocol subscription address - ইনবাউন্ড পোর্ট নিশ্চিত করুন সেটিংসের সাথে সামঞ্জস্যপূর্ণ - কনফিগারেশন বিকৃত - হোস্ট (SNI) (ঐচ্ছিক) - অ্যাকশন অনুমোদিত নয় - Obfs password - Port Hopping - Port Hopping Interval - Bandwidth down (Supported units: k/m/g/t) - Bandwidth up (Supported units: k/m/g/t) - XHTTP Mode - XHTTP Extra raw JSON, format: { XHTTPObject } - finalMask raw JSON, format: { FinalMaskObject } - EchConfigList - Verify Peer Cert By Name - Certificate fingerprint (SHA-256) - Fetch and fill certificate fingerprint - Certificate fingerprint fetched successfully - Failed to fetch certificate fingerprint + কনফিগারেশন ফাইল + Add subscription + কনফিগারেশন সংরক্ষণ করুন + QR কোড থেকে কনফিগারেশন আমদানি করুন + ক্লিপবোর্ড থেকে কনফিগারেশন আমদানি করুন + Import config from locally + Add [Policy group] + Add [Proxy chain] + ম্যানুয়ালি টাইপ করুন [VMess] + ম্যানুয়ালি টাইপ করুন [VLESS] + ম্যানুয়ালি টাইপ করুন [Shadowsocks] + ম্যানুয়ালি টাইপ করুন [SOCKS] + Type manually[HTTP] + ম্যানুয়ালি টাইপ করুন [Trojan] + ম্যানুয়ালি টাইপ করুন [Wireguard] + Type manually[Hysteria2] + আপনি কি বর্তমানে প্রদর্শিত সব প্রোফাইল মুছে ফেলতে চান? + আপনি কি বর্তমানে প্রদর্শিত সব সদৃশ প্রোফাইল মুছে ফেলতে চান? + প্রথমে প্রোফাইলগুলো পরীক্ষা করুন। আপনি কি বর্তমানে প্রদর্শিত সব অবৈধ প্রোফাইল মুছে ফেলতে চান? + আপনি কি এই প্রোফাইলটি মুছে ফেলতে চান? + আপনি কি এই পলিসি গ্রুপটি মুছে ফেলতে চান? + আপনি কি এই প্রক্সি চেইন সদস্যটিকে মুছে ফেলতে চান? + আপনি কি এই রাউটিং নিয়মটি মুছে ফেলতে চান? + আপনি কি এই সাবস্ক্রিপশন গ্রুপটি মুছে ফেলতে চান? + আপনি কি \"%1$s\" অ্যাসেট ফাইলটি মুছে ফেলতে চান? + আপনি কি এই অ্যাসেট উৎসটি মুছে ফেলতে চান? + মন্তব্য + ঠিকানা + পোর্ট + আইডি + অলটারআইডি + নিরাপত্তা + নেটওয়ার্ক + ট্রান্সপোর্ট + হেড টাইপ + gRPC মোড + হোস্ট + http হোস্ট + ws হোস্ট + httpupgrade হোস্ট + xhttp হোস্ট + h2 হোস্ট + QUIC নিরাপত্তা + gRPC কর্তৃপক্ষ + পথ + ws পথ + httpupgrade পথ + xhttp পথ + h2 পথ + QUIC কী + kcp বীজ + gRPC সেবার নাম + TLS + ফিঙ্গারপ্রিন্ট + Alpn + অনিরাপদ অনুমতি দিন + SNI + ঠিকানা + পোর্ট + পাসওয়ার্ড + নিরাপত্তা + পাসওয়ার্ড (ঐচ্ছিক) + ব্যবহারকারী (ঐচ্ছিক) + এনক্রিপশন + ফ্লো + পাবলিক কী + PreSharedKey(optional) + শর্ট আইডি + SpiderX + Mldsa65Verify + সিক্রেট কী + সংরক্ষিত (ঐচ্ছিক) + স্থানীয় ঠিকানা (ঐচ্ছিক IPv4/IPv6, কমা দ্বারা পৃথক করা) + MTU (ঐচ্ছিক, ডিফল্ট 1420) + mKCP MTU (ঐচ্ছিক, কোর ডিফল্ট 1350) + mKCP TTI (ঐচ্ছিক, কোর ডিফল্ট 50) + সফল + ব্যর্থ + কোনও তথ্য নেই + ভুল প্রোটোকল + ডিকোডিং ব্যর্থ + একটি কনফিগারেশন ফাইল নির্বাচন করুন + অনুগ্রহ করে একটি ফাইল ম্যানেজার ইনস্টল করুন। + কাস্টমাইজ কনফিগারেশন + অবৈধ কনফিগারেশন + কনটেন্ট + ক্লিপবোর্ডে কোনও তথ্য নেই + অবৈধ URL + Please do not use the insecure HTTP protocol subscription address + ইনবাউন্ড পোর্ট নিশ্চিত করুন সেটিংসের সাথে সামঞ্জস্যপূর্ণ + কনফিগারেশন বিকৃত: %1$s + হোস্ট (SNI) (ঐচ্ছিক) + অ্যাকশন অনুমোদিত নয় + Obfs password + Port Hopping + Port Hopping Interval + Bandwidth down (Supported units: k/m/g/t) + Bandwidth up (Supported units: k/m/g/t) + XHTTP Mode + XHTTP Extra raw JSON, format: { XHTTPObject } + finalMask raw JSON, format: { FinalMaskObject } + EchConfigList + Verify Peer Cert By Name + Certificate fingerprint (SHA-256) + Enable Browser Dialer + Only supports xhttp (packet-up) and ws outbound; TLS-related settings may be ignored or conflict + Current node uses an unencrypted connection. Your communication may be directly viewed by network intermediate facilities controlled by authoritarian governments.\nFor security reasons, such nodes cannot be connected via Xray core version 26.2.6+.\nIf it is a self-built node, please enable security encryption such as TLS, or pin the certificate pinnedCA256.\nIf it is a provider node, please contact the service provider to complete the technical upgrade. If the service provider refuses to cooperate, it is recommended to switch to a provider that pays more attention to user security.\nFor more information, please visit https://github.com/2dust/v2rayN/discussions/9460 + Fetch and fill certificate fingerprint + Certificate fingerprint fetched successfully + Failed to fetch certificate fingerprint - ফাইল কপি ব্যর্থ, অনুগ্রহ করে ফাইল ম্যানেজার ব্যবহার করুন - অ্যাসেট যোগ করুন - ফাইল যোগ করুন - URL যোগ করুন - QR কোড স্ক্যান করুন - URL - ফাইল ডাউনলোড করুন - অ্যাসেট URL যোগ করুন - ফাইল খুঁজে পাওয়া যায়নি - মন্তব্য ইতিমধ্যে বিদ্যমান - Geo files source (optional) + ফাইল কপি ব্যর্থ, অনুগ্রহ করে ফাইল ম্যানেজার ব্যবহার করুন + অ্যাসেট যোগ করুন + ফাইল যোগ করুন + URL যোগ করুন + QR কোড স্ক্যান করুন + URL + ফাইল ডাউনলোড করুন + অ্যাসেট URL যোগ করুন + ফাইল খুঁজে পাওয়া যায়নি + মন্তব্য ইতিমধ্যে বিদ্যমান + Geo files source (optional) - লোড হচ্ছে - অনুসন্ধান করুন - সবকিছু নির্বাচন করুন - Invert selection - কিওয়ার্ড লিখুন - বাইপাস মোড - অটো সিলেক্ট প্রক্সি অ্যাপ - বিষয়বস্তু ডাউনলোড হচ্ছে - ক্লিপবোর্ডে রপ্তানি করুন - ক্লিপবোর্ড থেকে আমদানি করুন - Per-app settings - Enable per-app + লোড হচ্ছে + অনুসন্ধান করুন + সবকিছু নির্বাচন করুন + Invert selection + কিওয়ার্ড লিখুন + বাইপাস মোড + অটো সিলেক্ট প্রক্সি অ্যাপ + বিষয়বস্তু ডাউনলোড হচ্ছে + ক্লিপবোর্ডে রপ্তানি করুন + ক্লিপবোর্ড থেকে আমদানি করুন + Per-app settings + Enable per-app + Unknown app (unidentified UID) - সেটিংস - এডভান্সড সেটিংস - কোর সেটিংস - VPN সেটিংস - প্রতি-অ্যাপ প্রক্সি - সাধারণ: চেকড অ্যাপ প্রক্সি, আনচেকড সরাসরি সংযোগ; \nবাইপাস মোড: চেকড অ্যাপ সরাসরি সংযুক্ত, আনচেকড প্রক্সি। \nমেনুতে প্রক্সি অ্যাপ্লিকেশন স্বয়ংক্রিয়ভাবে নির্বাচন করার বিকল্প - Auto connect at startup - Automatically connects to the selected server at startup, which may be unsuccessful - - Auto delete invalid config after testing - Test results may not be accurate; deleted config cannot be recovered. - Auto sort after testing - Test results may not be accurate; - - Mux সেটিংস - Mux সক্রিয় করুন - দ্রুত, তবে এটি অস্থিতিশীল সংযোগ সৃষ্টি করতে পারে\nTCP, UDP এবং QUIC পরিচালনা কাস্টমাইজ করুন - TCP সংযোগ (পরিসর -1 থেকে 1024) - XUDP সংযোগ (পরিসর -1 থেকে 1024) - Mux টানেলে QUIC পরিচালনা + সেটিংস + এডভান্সড সেটিংস + কোর সেটিংস + VPN সেটিংস + প্রতি-অ্যাপ প্রক্সি + সাধারণ: চেকড অ্যাপ প্রক্সি, আনচেকড সরাসরি সংযোগ; \nবাইপাস মোড: চেকড অ্যাপ সরাসরি সংযুক্ত, আনচেকড প্রক্সি। \nমেনুতে প্রক্সি অ্যাপ্লিকেশন স্বয়ংক্রিয়ভাবে নির্বাচন করার বিকল্প + Auto connect at startup + Automatically connects to the selected server at startup, which may be unsuccessful + + + The task will run in the background, and progress information will be displayed in the notification. + Auto test after updating subscription + Automated testing takes a long time. If enabled, the task will run in the background; otherwise, it will run on the current page. + Auto delete invalid config after testing + Test results may not be accurate; deleted config cannot be recovered. + Auto sort after testing + Test results may not be accurate; + + Mux সেটিংস + Mux সক্রিয় করুন + দ্রুত, তবে এটি অস্থিতিশীল সংযোগ সৃষ্টি করতে পারে\nTCP, UDP এবং QUIC পরিচালনা কাস্টমাইজ করুন + TCP সংযোগ (পরিসর -1 থেকে 1024) + XUDP সংযোগ (পরিসর -1 থেকে 1024) + Mux টানেলে QUIC পরিচালনা অস্বীকার করুন অনুমতি দিন এড়িয়ে যান - গতি প্রদর্শন সক্রিয় করুন - বিজ্ঞপ্তিতে বর্তমান গতি প্রদর্শন করুন।\nব্যবহারের উপর ভিত্তি করে বিজ্ঞপ্তি আইকন পরিবর্তিত হবে। + গতি প্রদর্শন সক্রিয় করুন + বিজ্ঞপ্তিতে বর্তমান গতি প্রদর্শন করুন।\nব্যবহারের উপর ভিত্তি করে বিজ্ঞপ্তি আইকন পরিবর্তিত হবে। - স্নিফিং সক্রিয় করুন - প্যাকেট থেকে ডোমেইন স্নিফ করার চেষ্টা করুন (ডিফল্টভাবে চালু) + স্নিফিং সক্রিয় করুন + প্যাকেট থেকে ডোমেইন স্নিফ করার চেষ্টা করুন (ডিফল্টভাবে চালু) + রুটঅনলি সক্রিয় করুন + রুটিংয়ের জন্য শুধুমাত্র স্নিফড ডোমেইন নাম ব্যবহার করুন, এবং লক্ষ্য ঠিকানা হিসেবে আইপি ঠিকানা রাখুন। - রুটঅনলি সক্রিয় করুন - রুটিংয়ের জন্য শুধুমাত্র স্নিফড ডোমেইন নাম ব্যবহার করুন, এবং লক্ষ্য ঠিকানা হিসেবে আইপি ঠিকানা রাখুন। + স্থানীয় DNS সক্রিয় করুন + DNS মূল DNS মডিউল দ্বারা প্রক্রিয়া করা হয় (প্রস্তাবিত, যদি LAN এবং মূলভূমি ঠিকানার বাইপাসিং প্রয়োজন হয়) - স্থানীয় DNS সক্রিয় করুন - DNS মূল DNS মডিউল দ্বারা প্রক্রিয়া করা হয় (প্রস্তাবিত, যদি LAN এবং মূলভূমি ঠিকানার বাইপাসিং প্রয়োজন হয়) + ভুয়া DNS সক্রিয় করুন + স্থানীয় DNS মিথ্যা আইপি ঠিকানা ফেরত দেয় (দ্রুত, তবে এটি কিছু অ্যাপের জন্য কাজ নাও করতে পারে) - ভুয়া DNS সক্রিয় করুন - স্থানীয় DNS মিথ্যা আইপি ঠিকানা ফেরত দেয় (দ্রুত, তবে এটি কিছু অ্যাপের জন্য কাজ নাও করতে পারে) + IPv6 সক্রিয় করুন + VPN ইন্টারফেসে IPv6 ঠিকানা এবং রুট যোগ করুন - IPv6 সক্রিয় করুন - VPN ইন্টারফেসে IPv6 ঠিকানা এবং রুট যোগ করুন + IPv6 অগ্রাধিকার দিন + ডোমেইন নাম রেজোলিউশনে IPv6 ঠিকানাকে অগ্রাধিকার দিন - IPv6 অগ্রাধিকার দিন - ডোমেইন নাম রেজোলিউশনে IPv6 ঠিকানাকে অগ্রাধিকার দিন + রিমোট DNS (udp/tcp/https/quic)(ঐচ্ছিক) + DNS - রিমোট DNS (udp/tcp/https/quic)(ঐচ্ছিক) - DNS + VPN DNS (শুধুমাত্র IPv4/v6) + Does VPN bypass LAN - VPN DNS (শুধুমাত্র IPv4/v6) - Does VPN bypass LAN + VPN Interface Address - VPN Interface Address - VPN MTU (default 1500) + VPN MTU (default 1500) - ঘরোয়া DNS (ঐচ্ছিক) - DNS - DNS hosts (Format: domain:address,…) - domain:address,… + ঘরোয়া DNS (ঐচ্ছিক) + DNS - সঠিক বিলম্ব পরীক্ষা ইউআরএল - ইউআরএল - True delay test concurrency + DNS hosts (Format: domain:address,…) + domain:address,… - Current connection info test url - Url + সঠিক বিলম্ব পরীক্ষা ইউআরএল + ইউআরএল + True delay test concurrency - LAN থেকে সংযোগ অনুমোদন করুন - অন্যান্য ডিভাইসগুলি আপনার আইপি ঠিকানা ব্যবহার করে প্রক্সিতে সংযুক্ত হতে পারে, শুধুমাত্র বিশ্বস্ত নেটওয়ার্কে সক্রিয় করুন যাতে অনুমোদিত সংযোগ এড়ানো যায় - LAN থেকে সংযোগ অনুমোদন করুন, নিশ্চিত করুন যে আপনি একটি বিশ্বস্ত নেটওয়ার্কে আছেন + Current connection info test url + Url - Local প্রক্সি পোর্ট - লোকাল প্রক্সি সক্ষম করুন - When disabled, no SOCKS proxy is available, so subscription updates and similar actions cannot use the proxy - SOCKS5 UDP - UDP ব্যবহার করার সময় socks5 প্রমাণীকরণ সম্পূর্ণরূপে নিরাপদ নয় - Local প্রক্সি পোর্ট - Enable dynamic local proxy port - Generate a random local proxy port each time the inbound is created - Local proxy username (optional) - Username - Local proxy password (optional) - Password + LAN থেকে সংযোগ অনুমোদন করুন + অন্যান্য ডিভাইসগুলি আপনার আইপি ঠিকানা ব্যবহার করে প্রক্সিতে সংযুক্ত হতে পারে, শুধুমাত্র বিশ্বস্ত নেটওয়ার্কে সক্রিয় করুন যাতে অনুমোদিত সংযোগ এড়ানো যায় + LAN থেকে সংযোগ অনুমোদন করুন, নিশ্চিত করুন যে আপনি একটি বিশ্বস্ত নেটওয়ার্কে আছেন - স্থানীয় DNS পোর্ট - স্থানীয় DNS পোর্ট + Local প্রক্সি পোর্ট + লোকাল প্রক্সি সক্ষম করুন + When disabled, no SOCKS proxy is available, so subscription updates and similar actions cannot use the proxy + SOCKS5 UDP + UDP ব্যবহার করার সময় socks5 প্রমাণীকরণ সম্পূর্ণরূপে নিরাপদ নয় + Local প্রক্সি পোর্ট + Enable dynamic local proxy port + Generate a random local proxy port each time the inbound is created + Local proxy username (optional) + Username + Local proxy password (optional) + Password - কনফিগারেশন ফাইল মুছে ফেলার নিশ্চিতকরণ - কনফিগারেশন ফাইল মুছে ফেলার জন্য ব্যবহারকারীর দ্বিতীয় নিশ্চিতকরণের প্রয়োজন + স্থানীয় DNS পোর্ট + স্থানীয় DNS পোর্ট + কনফিগারেশন ফাইল মুছে ফেলার নিশ্চিতকরণ + কনফিগারেশন ফাইল মুছে ফেলার জন্য ব্যবহারকারীর দ্বিতীয় নিশ্চিতকরণের প্রয়োজন - Append HTTP Proxy to VPN - HTTP proxy will be used directly from (browser/ some supported apps), without going through the virtual NIC device (Android 10+) - Enable double column display - The profile list is displayed in double columns, allowing more content to be displayed on the screen. + Append HTTP Proxy to VPN + HTTP proxy will be used directly from (browser/ some supported apps), without going through the virtual NIC device (Android 10+) + + Enable double column display + The profile list is displayed in double columns, allowing more content to be displayed on the screen. + + Enable show all groups + Add an extra "All Tabs" page - Enable show all groups - Add an extra "All Tabs" page - মতামত - মতামত উন্নয়ন বা বাগগুলি GitHub-এ পাঠান - টেলিগ্রাম গ্রুপে যোগদান করুন - টেলিগ্রাম অ্যাপ পাওয়া যায়নি - গোপনীয়তা নীতি - QR code - সম্পর্কিত - সোর্স কোড - Open Source licenses - টেলিগ্রাম চ্যানেল - - প্রচার - - স্বয়ংক্রিয় আপডেট সাবস্ক্রিপশন - পটভূমিতে একটি নির্দিষ্ট সময় পর পর আপনার সাবস্ক্রিপশন স্বয়ংক্রিয়ভাবে আপডেট করুন। ডিভাইসের উপর নির্ভর করে, এই বৈশিষ্ট্যটি সবসময় কাজ নাও করতে পারে - অটো আপডেট ইন্টারভ্যাল (মিনিট, সর্বনিম্ন মান ১৫) - - লগ স্তর - Outbound domain pre-resolve method - মোড - আরো সাহায্যের জন্য ক্লিক করুন - ভাষা - ইউআই সেটিংস - ইউআই মোড সেটিংস - Enable Hev TUN Feature - When enabled, TUN will use hev-socks5-tunnel; otherwise, it will use xray-core. - Hev Tun Log Level - Hev Tun read/write timeout (seconds) (tcp,udp default 300,60) - - লগক্যাট - কপি করুন - স্পষ্ট করুন - লগ শেয়ার করুন - সার্ভিস পুনরায় চালু করুন - সব কনফিগারেশন মুছে ফেলুন - ডুপ্লিকেট কনফিগারেশন মুছে ফেলুন - অবৈধ কনফিগারেশন মুছে ফেলুন (প্রথমে পরীক্ষা করুন) - কাস্টম না করা কনফিগারেশনগুলি ক্লিপবোর্ডে রপ্তানি করুন - সাবস্ক্রিপশন গ্রুপ সেটিং - মন্তব্য - ঐচ্ছিক URL - User Agent - Remarks regular filter - আপডেট সক্রিয় করুন - স্বয়ংক্রিয় আপডেট সক্রিয় করুন - Allow insecure HTTP address - Previous proxy configuration remarks - Next proxy configuration remarks - The configuration remarks exists and is unique - আপডেটের বিরতি সঠিক নয়। সর্বনিম্ন ১৫ মিনিট। - সাবস্ক্রিপশন আপডেট - সব কনফিগারেশন TCPing - সব কনফিগারেশন প্রকৃত বিলম্ব - Asset files - টেস্ট ফলাফল দ্বারা সাজানো - কনফিগারেশন ফাইল ফিল্টার করুন - All - %d ডুপ্লিকেট কনফিগারেশন মুছে ফেলুন - Click screen open the camera scan - Delete %d configurations - Import %d configurations - Export %d configurations - Update %d configurations - Updated %1$d configs (%2$d success, %3$d failed, %4$d skipped) - No subscriptions - Selected server not found in current group - Unable to locate current view - Locate the selected config - - সার্ভিস শুরু করুন - নিশ্চিত করুন + মতামত + মতামত উন্নয়ন বা বাগগুলি GitHub-এ পাঠান + টেলিগ্রাম গ্রুপে যোগদান করুন + টেলিগ্রাম অ্যাপ পাওয়া যায়নি + গোপনীয়তা নীতি + QR code + সম্পর্কিত + সোর্স কোড + Open Source licenses + টেলিগ্রাম চ্যানেল + + প্রচার + + স্বয়ংক্রিয় আপডেট সাবস্ক্রিপশন + পটভূমিতে একটি নির্দিষ্ট সময় পর পর আপনার সাবস্ক্রিপশন স্বয়ংক্রিয়ভাবে আপডেট করুন। ডিভাইসের উপর নির্ভর করে, এই বৈশিষ্ট্যটি সবসময় কাজ নাও করতে পারে + অটো আপডেট ইন্টারভ্যাল (মিনিট, সর্বনিম্ন মান ১৫) + + লগ স্তর + Outbound domain pre-resolve method + মোড + আরো সাহায্যের জন্য ক্লিক করুন + ভাষা + ইউআই সেটিংস + ইউআই মোড সেটিংস + Enable Hev TUN Feature + When enabled, TUN will use hev-socks5-tunnel; otherwise, it will use xray-core. + Hev Tun Log Level + Hev Tun read/write timeout (seconds) (tcp,udp default 300,60) + Mode Settings + Root mode enabled (Root Users) + Enable low-level transparent proxying via root privileges. This mode bypasses the standard Android system VPN to directly take over all underlying network traffic. Once enabled, the original regular mode, per-app routing, and related VPN settings will become completely invalid. + Root access is required for this feature + LAN / tethering sharing (Root Users) + Route Wi-Fi hotspot and USB-tethered devices through the VPN + + লগক্যাট + কপি করুন + স্পষ্ট করুন + লগ শেয়ার করুন + সার্ভিস পুনরায় চালু করুন + সব কনফিগারেশন মুছে ফেলুন + ডুপ্লিকেট কনফিগারেশন মুছে ফেলুন + অবৈধ কনফিগারেশন মুছে ফেলুন (প্রথমে পরীক্ষা করুন) + কাস্টম না করা কনফিগারেশনগুলি ক্লিপবোর্ডে রপ্তানি করুন + সাবস্ক্রিপশন গ্রুপ সেটিং + মন্তব্য + ঐচ্ছিক URL + User Agent + Request Headers (JSON format) + Remarks regular filter + আপডেট সক্রিয় করুন + স্বয়ংক্রিয় আপডেট সক্রিয় করুন + Allow insecure HTTP address + Previous proxy configuration remarks + Next proxy configuration remarks + The configuration remarks exists and is unique + আপডেটের বিরতি সঠিক নয়। সর্বনিম্ন ১৫ মিনিট। + সাবস্ক্রিপশন আপডেট + সব কনফিগারেশন TCPing + সব কনফিগারেশন প্রকৃত বিলম্ব + Asset files + টেস্ট ফলাফল দ্বারা সাজানো + কনফিগারেশন ফাইল ফিল্টার করুন + All + Click screen open the camera scan + %d ডুপ্লিকেট কনফিগারেশন মুছে ফেলুন + Delete %d configurations + Import %d configurations + Export %d configurations + Update %d configurations + Updated %1$d configs (%2$d success, %3$d failed, %4$d skipped) + No subscriptions + Selected server not found in current group + Unable to locate current view + Locate the selected config + + সার্ভিস শুরু করুন + নিশ্চিত করুন - ডোমেইন কৌশল - রাউটিং সেটিংস - কমা (,) দিয়ে আলাদা করুন। domain, ip বা process-এ একটি নির্বাচন করুন - সেভ করুন - মুছে ফেলুন - Routing Rule Settings - Add rule - পূর্বনির্ধারিত নিয়মাবলী আমদানি করুন - Existing rulesets will be deleted, are you sure to continue? - Import ruleset from clipboard - QRcode থেকে রুলসেট আমদানি করুন - Export ruleset to clipboard - Locked, keep this rule when import presets - domain - ip - process (Package Name — only supported when using Xray TUN, routeOnly enabled, and Android 10+) - port - protocol - [http,tls,bittorrent] - network - outboundTag - - সংযোগ পরীক্ষা করুন - পরীক্ষা চলছে… - Testing %d configurations… - সফল: HTTP সংযোগ নিয়েছে %dms - ইন্টারনেট সংযোগ সনাক্ত করতে ব্যর্থ: %s - ইন্টারনেট উপলব্ধ নয় - ত্রুটি কোড: #%d - সংযুক্ত, সংযোগ পরীক্ষা করতে ট্যাপ করুন - সংযুক্ত নয় - Number of running test tasks: %s - - সাবস্ক্রিপশন সফলভাবে আমদানি করা হয়েছে - সাবস্ক্রিপশন আমদানি ব্যর্থ - ফ্র্যাগমেন্ট সেটিংস - ফ্র্যাগমেন্ট প্যাকেটস - ফ্র্যাগমেন্ট দৈর্ঘ্য (ন্যূনতম-সর্বাধিক) - ফ্র্যাগমেন্ট ইন্টারভ্যাল (ন্যূনতম-সর্বাধিক) - ফ্র্যাগমেন্ট সক্রিয় করুন - ফ্র্যাগমেন্ট ম্যাক্স স্প্লিট - সংযোগ পর্যবেক্ষণ সেটিংস - leastPing ইন্টারভ্যাল - leastLoad ইন্টারভ্যাল - leastLoad HTTP পদ্ধতি - leastLoad স্যাম্পলিং - leastLoad টাইমআউট - অবৈধ সময়কাল। 3m বা 30s-এর মতো মান ব্যবহার করুন। - অবৈধ স্যাম্পলিং। একটি ধনাত্মক সংখ্যা ব্যবহার করুন। - - Check for update - Already on the latest version - New version found: %s - Update now - Check Pre-release - Checking for update… - - Policy group type - From subscription group - Remarks regular filter - আউটবাউন্ড পরীক্ষা করুন - ফলব্যাক আউটবাউন্ড (ঐচ্ছিক) - Proxy chain members - Tap here to pick member - Select a member - Please select member for each chain row - Insufficient members - Invalid chain members: %1$s + ডোমেইন কৌশল + রাউটিং সেটিংস + কমা (,) দিয়ে আলাদা করুন। domain, ip বা process-এ একটি নির্বাচন করুন + সেভ করুন + মুছে ফেলুন + Routing Rule Settings + Add rule + পূর্বনির্ধারিত নিয়মাবলী আমদানি করুন + Existing rulesets will be deleted, are you sure to continue? + Import ruleset from clipboard + QRcode থেকে রুলসেট আমদানি করুন + Export ruleset to clipboard + Locked, keep this rule when import presets + domain + ip + process (Package Name — only supported when using Xray TUN, routeOnly enabled, and Android 10+) + Select package name + port + protocol + [http,tls,bittorrent] + network + proxy / direct / block / <remarks> + outboundTag + + সংযোগ পরীক্ষা করুন + পরীক্ষা চলছে… + Testing %d configurations… + সফল: HTTP সংযোগ নিয়েছে %dms + ইন্টারনেট সংযোগ সনাক্ত করতে ব্যর্থ: %s + ইন্টারনেট উপলব্ধ নয় + ত্রুটি কোড: #%d + সংযুক্ত, সংযোগ পরীক্ষা করতে ট্যাপ করুন + সংযুক্ত নয় + Number of running test tasks: %s + + সাবস্ক্রিপশন সফলভাবে আমদানি করা হয়েছে + সাবস্ক্রিপশন আমদানি ব্যর্থ + ফ্র্যাগমেন্ট সেটিংস + ফ্র্যাগমেন্ট প্যাকেটস + ফ্র্যাগমেন্ট দৈর্ঘ্য (ন্যূনতম-সর্বাধিক) + ফ্র্যাগমেন্ট ইন্টারভ্যাল (ন্যূনতম-সর্বাধিক) + ফ্র্যাগমেন্ট সক্রিয় করুন + ফ্র্যাগমেন্ট ম্যাক্স স্প্লিট + সংযোগ পর্যবেক্ষণ সেটিংস + leastPing ইন্টারভ্যাল + leastLoad ইন্টারভ্যাল + leastLoad HTTP পদ্ধতি + leastLoad স্যাম্পলিং + leastLoad টাইমআউট + অবৈধ সময়কাল। 3m বা 30s-এর মতো মান ব্যবহার করুন। + অবৈধ স্যাম্পলিং। একটি ধনাত্মক সংখ্যা ব্যবহার করুন। + + Check for update + Already on the latest version + New version found: %s + Update now + Check Pre-release + Checking for update… + + Policy group type + From subscription group + Remarks regular filter + আউটবাউন্ড পরীক্ষা করুন + ফলব্যাক আউটবাউন্ড (ঐচ্ছিক) + + Proxy chain members + Tap here to pick member + Select a member + Please select member for each chain row + Insufficient members + Invalid chain members: %1$s - Backup & Restore - কনফিগারেশন ব্যাকআপ - কনফিগারেশন পুনরুদ্ধার - কনফিগারেশন শেয়ার করুন - WebDAV Settings - Please configure WebDAV first. - WebDAV server URL - Username - Password - Remote directory (optional) - - QR কোড - ক্লিপবোর্ডে রপ্তানি করুন - পূর্ণ কনফিগারেশন ক্লিপবোর্ডে রপ্তানি করুন - সম্পাদনা - মুছুন - বন্ধ করুন + Backup & Restore + কনফিগারেশন ব্যাকআপ + কনফিগারেশন পুনরুদ্ধার + কনফিগারেশন শেয়ার করুন + WebDAV Settings + Please configure WebDAV first. + WebDAV server URL + Username + Password + Remote directory (optional) + + QR কোড + ক্লিপবোর্ডে রপ্তানি করুন + পূর্ণ কনফিগারেশন ক্লিপবোর্ডে রপ্তানি করুন + সম্পাদনা + মুছুন + বন্ধ করুন + + No server selected + Failed to decode server config + Failed to build config context + Failed to get V2Ray config + Failed to get V2Ray config: %1$s + Failed to get V2Ray config for speed test: %1$s + Custom config is empty + Core failed to start + + Start + Stop + Back + অনুসন্ধান করুন + Add + More + Share subscription + লগ শেয়ার করুন + Remove + Add member + Start scanner + Stop scanner + Turn torch on + Turn torch off + Select image + Locked + Open menu + সম্পাদনা + মুছুন + সেভ করুন + Update subscriptions + Per-app proxy information + Camera + Notification + Local network + %1$s insecure + Updating %1$s + %1$s in %2$s + Start %1$s + Stop %1$s + empty message + unknown QR কোড @@ -432,11 +494,18 @@ শুধুমাত্র প্রোক্সি + + Disable + OkHttp + WebView + + সিস্টেম অনুসরণ করুন লাইট ডার্ক + চায়না হোয়াইটলিস্ট চায়না ব্ল্যাকলিস্ট @@ -456,6 +525,7 @@ Resolve and add to DNS Hosts Resolve and replace domain + Least Ping Least Load diff --git a/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml b/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml index 904e2d2f6b..86d24d77ec 100644 --- a/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml +++ b/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml @@ -1,432 +1,488 @@ - آلشت - آلشت - سی کرت ٱولی و کار بوردن ای ویژیی، ٱول ز من برنومه ی سرور ازاف کۊنین - گۊشیڌن نومگه کشاری - بستن نومگه کشاری - جاگورویی داده یل وا مووفقیت ٱنجوم وابی! - واڌاشتن سرویس - جاگورویی داده یل شکست خرد! - سی وانۊ کردن، بلگه ن بلم بکشین! - - ↓ - واڌاشتن - گرؽڌن موجوز مومکن نؽڌ - گرؽڌن موجوز وارسۊوی مومکن نؽڌ - سی دووسمندیا قلوه کیلیک کوݩ - ره وستن سرویس - واڌاشتن سرویس - ره وستن سرویس وا مووفقیت ٱنجوم وابی - ره وستن سرویس وا مووفقیت ٱنجوم نوابی + v2rayNG + آلشت + آلشت + سی کرت ٱولی و کار بوردن ای ویژیی، ٱول ز من برنومه ی سرور ازاف کۊنین + گۊشیڌن نومگه کشاری + بستن نومگه کشاری + جاگورویی داده یل وا مووفقیت ٱنجوم وابی! + واڌاشتن سرویس + جاگورویی داده یل شکست خرد! + Refresh + + + واڌاشتن + گرؽڌن موجوز مومکن نؽڌ + گرؽڌن موجوز وارسۊوی مومکن نؽڌ + Unable to obtain permission: %1$s + سی دووسمندیا قلوه کیلیک کوݩ + ره وستن سرویس + واڌاشتن سرویس + ره وستن سرویس وا مووفقیت ٱنجوم وابی + ره وستن سرویس وا مووفقیت ٱنجوم نوابی - فایل کانفیگ - ٱووردن کانفیگ - زفت کردن کانفیگ - آلشتکاری کانفیگ - پاک کردن کانفیگ - و من ٱووردن کانفیگ ز QRcode - و من ٱووردن کانفیگ ز کلیپ بورد - و من ٱووردن کانفیگ ز مهلی - ٱووردن [بونکۊ سیاست] - ٱووردن [زنجیره پروکسی] - ٱووردن [VMess] - ٱووردن [VLESS] - ٱووردن [Shadowsocks] - ٱووردن [SOCKS] - ٱووردن [HTTP] - ٱووردن [Trojan] - ٱووردن [Wireguard] - ٱووردن [Hysteria2] - آیا مطمئن هستید که می‌خواهید همه پروفایل‌های نمایش‌داده‌شده را حذف کنید؟ - آیا مطمئن هستید که می‌خواهید همه پروفایل‌های تکراری نمایش‌داده‌شده را حذف کنید؟ - لطفاً ابتدا پروفایل‌ها را آزمایش کنید. آیا مطمئن هستید که می‌خواهید همه پروفایل‌های نامعتبر نمایش‌داده‌شده را حذف کنید؟ - آیا مطمئن هستید که می‌خواهید این پروفایل را حذف کنید؟ - آیا مطمئن هستید که می‌خواهید این گروه سیاست را حذف کنید؟ - آیا مطمئن هستید که می‌خواهید این عضو زنجیره پراکسی را حذف کنید؟ - آیا مطمئن هستید که می‌خواهید این قانون مسیریابی را حذف کنید؟ - آیا مطمئن هستید که می‌خواهید این گروه اشتراک را حذف کنید؟ - آیا مطمئن هستید که می‌خواهید فایل دارایی \"%1$s\" را حذف کنید؟ - آیا مطمئن هستید که می‌خواهید این منبع دارایی را حذف کنید؟ - نیشتنا - نشۊوی - پورت - نوم منتوری - شناسه جایگۊزین - ٱمنیت - شبکه - جاگورو - نوع هدر - هالت gRPC - هاست - هاست http - هاست ws - هاست httpupgrade - هاست xhttp - هاست h2 - ٱمنیت QUIC - Authority gRPC - تور - تور WS - تور HTTPUpgrade - تور XHTTP - تور H2 - تور QUIC - KCP seed - نوم سرویس gRPC - TLS - Fingerprint - Alpn - هشتن SSL نا ٱمن - SNI - نشۊوی - پورت - رزم - ٱمنیت - رزم (اختیاری) - نوم منتوری (اختیاری) - رزم نگاری - جریان - کیلیت پوی وولاتی - کیلیت پؽش اشتراکی (اختیاری) - شناسه کۊتال - SpiderX - تاییدیه Mldsa65Verify - کیلیت سیخومی - Reserved(اختیاری، وا کاما (,) ز یک جوڌا ابۊن) - نشۊوی مهلی (اختیاری IPv4/IPv6، وا کاما (,) ز یک جوڌا ابۊن) - Mtu(اختیاری، پؽش فرز 1420) - mKCP MTU (اختیاری، پؽش فرز هسته 1350) - mKCP TTI (اختیاری، پؽش فرز هسته 50) - وا مووفقیت ٱنجوم وابی - شکست خرد - هیچ داده ای وۊجۊڌ نڌاره - پوروتوکول نادوروست - رزم گوشایی ٱنجوم نوابی - پسند فایل کانفیگ - ی برنومه دؽوۉداری فایل بپۊرنین. - کانفیگ سفارشی - کانفیگ نا موئتبر هڌ - موئتوا - هیچ داده ای من کلیپ بورد وۊجۊڌ نڌاره - نشۊوی اینترنتی نا موئتبر هڌ - نشۊوی اشتراک پوروتوکول نا ٱمن HTTP ن و کار مبرین - موتمعن بۊین ک پورت وۊرۊڌی وا سامووا ی جۊر هڌ - کانفیگ زبال نؽڌ - هاست(SNI)(اختیاری) - ای کار ممنۊع هڌ - رزم obfs - پورت گوم (درگا سرورن ز نۊ هؽل اکونه) - فاسله پورت گوم (سانیه) - ب لم ٱووڌن پئنا باند (واهڌ) - وا روء رئڌن پئنا باند (واهڌ) - هالت XHTTP - XHTTP Extra خام JSON، قالوو: { XHTTPObject } - finalMask خام JSON، قالوو: { FinalMaskObject } - نومگه کانفیگ Ech - تئیڌ گوواهی هومتا و ری نوم - جا کلک گوواهی (SHA-256) - گرؽڌن وو پور کردن جا کلک گوواهی - جا کلک گوواهی وا مووفقیت گرؽڌه وابی - گرؽڌن جا کلک گوواهی مووفق نبی + فایل کانفیگ + Add subscription + زفت کردن کانفیگ + و من ٱووردن کانفیگ ز QRcode + و من ٱووردن کانفیگ ز کلیپ بورد + و من ٱووردن کانفیگ ز مهلی + ٱووردن [بونکۊ سیاست] + ٱووردن [زنجیره پروکسی] + ٱووردن [VMess] + ٱووردن [VLESS] + ٱووردن [Shadowsocks] + ٱووردن [SOCKS] + ٱووردن [HTTP] + ٱووردن [Trojan] + ٱووردن [Wireguard] + ٱووردن [Hysteria2] + آیا مطمئن هستید که می‌خواهید همه پروفایل‌های نمایش‌داده‌شده را حذف کنید؟ + آیا مطمئن هستید که می‌خواهید همه پروفایل‌های تکراری نمایش‌داده‌شده را حذف کنید؟ + لطفاً ابتدا پروفایل‌ها را آزمایش کنید. آیا مطمئن هستید که می‌خواهید همه پروفایل‌های نامعتبر نمایش‌داده‌شده را حذف کنید؟ + آیا مطمئن هستید که می‌خواهید این پروفایل را حذف کنید؟ + آیا مطمئن هستید که می‌خواهید این گروه سیاست را حذف کنید؟ + آیا مطمئن هستید که می‌خواهید این عضو زنجیره پراکسی را حذف کنید؟ + آیا مطمئن هستید که می‌خواهید این قانون مسیریابی را حذف کنید؟ + آیا مطمئن هستید که می‌خواهید این گروه اشتراک را حذف کنید؟ + آیا مطمئن هستید که می‌خواهید فایل دارایی \"%1$s\" را حذف کنید؟ + آیا مطمئن هستید که می‌خواهید این منبع دارایی را حذف کنید؟ + نیشتنا + نشۊوی + پورت + نوم منتوری + شناسه جایگۊزین + ٱمنیت + شبکه + جاگورو + نوع هدر + هالت gRPC + هاست + هاست http + هاست ws + هاست httpupgrade + هاست xhttp + هاست h2 + ٱمنیت QUIC + Authority gRPC + تور + تور WS + تور HTTPUpgrade + تور XHTTP + تور H2 + تور QUIC + KCP seed + نوم سرویس gRPC + TLS + Fingerprint + Alpn + هشتن SSL نا ٱمن + SNI + نشۊوی + پورت + رزم + ٱمنیت + رزم (اختیاری) + نوم منتوری (اختیاری) + رزم نگاری + جریان + کیلیت پوی وولاتی + کیلیت پؽش اشتراکی (اختیاری) + شناسه کۊتال + SpiderX + تاییدیه Mldsa65Verify + کیلیت سیخومی + Reserved(اختیاری، وا کاما (,) ز یک جوڌا ابۊن) + نشۊوی مهلی (اختیاری IPv4/IPv6، وا کاما (,) ز یک جوڌا ابۊن) + Mtu(اختیاری، پؽش فرز 1420) + mKCP MTU (اختیاری، پؽش فرز هسته 1350) + mKCP TTI (اختیاری، پؽش فرز هسته 50) + وا مووفقیت ٱنجوم وابی + شکست خرد + هیچ داده ای وۊجۊڌ نڌاره + پوروتوکول نادوروست + رزم گوشایی ٱنجوم نوابی + پسند فایل کانفیگ + ی برنومه دؽوۉداری فایل بپۊرنین. + کانفیگ سفارشی + کانفیگ نا موئتبر هڌ + موئتوا + هیچ داده ای من کلیپ بورد وۊجۊڌ نڌاره + نشۊوی اینترنتی نا موئتبر هڌ + نشۊوی اشتراک پوروتوکول نا ٱمن HTTP ن و کار مبرین + موتمعن بۊین ک پورت وۊرۊڌی وا سامووا ی جۊر هڌ + کانفیگ زبال نؽڌ: %1$s + هاست(SNI)(اختیاری) + ای کار ممنۊع هڌ + رزم obfs + پورت گوم (درگا سرورن ز نۊ هؽل اکونه) + فاسله پورت گوم (سانیه) + ب لم ٱووڌن پئنا باند (واهڌ) + وا روء رئڌن پئنا باند (واهڌ) + هالت XHTTP + XHTTP Extra خام JSON، قالوو: { XHTTPObject } + finalMask خام JSON، قالوو: { FinalMaskObject } + نومگه کانفیگ Ech + تئیڌ گوواهی هومتا و ری نوم + جا کلک گوواهی (SHA-256) + Enable Browser Dialer + Only supports xhttp (packet-up) and ws outbound; TLS-related settings may be ignored or conflict + Current node uses an unencrypted connection. Your communication may be directly viewed by network intermediate facilities controlled by authoritarian governments.\nFor security reasons, such nodes cannot be connected via Xray core version 26.2.6+.\nIf it is a self-built node, please enable security encryption such as TLS, or pin the certificate pinnedCA256.\nIf it is a provider node, please contact the service provider to complete the technical upgrade. If the service provider refuses to cooperate, it is recommended to switch to a provider that pays more attention to user security.\nFor more information, please visit https://github.com/2dust/v2rayN/discussions/9460 + گرؽڌن وو پور کردن جا کلک گوواهی + جا کلک گوواهی وا مووفقیت گرؽڌه وابی + گرؽڌن جا کلک گوواهی مووفق نبی - لف گیری فایل ٱنجوم نوابی، ز ی برنومه دؽوۉداری فایل هیاری بگرین - ٱووردن دارایی - ٱووردن فایل - ٱووردن لینگ - اسکن QRcode - نشۊوی اینترنتی - دانلود فایلا - نشۊوی اینترنتی دارایی ن ازاف کۊنین - فایلن نجوست - ای نوم ز زیتر بیڌس - بونچک فایلا جوقرافیایی (اختیاری) + لف گیری فایل ٱنجوم نوابی، ز ی برنومه دؽوۉداری فایل هیاری بگرین + ٱووردن دارایی + ٱووردن فایل + ٱووردن لینگ + اسکن QRcode + نشۊوی اینترنتی + دانلود فایلا + نشۊوی اینترنتی دارایی ن ازاف کۊنین + فایلن نجوست + ای نوم ز زیتر بیڌس + بونچک فایلا جوقرافیایی (اختیاری) - هونی بار ونی ابۊ... - پیتینیڌن - پسند پوی - چواسه کردن پسندا - کلمه یل کلیدی ن بزنین - هالت دور زیڌن - پسند خوتکار برنومه یلی ک پروکسی اخون - موئتوا هونی دانلود ابۊن... - و در کشیڌن من کلیپ بورد - و من ٱووردن ز کلیپ بورد - سامووا ب تفکیک برنومه - ره وندن ب تفکیک برنومه - + هونی بار ونی ابۊ... + پیتینیڌن + پسند پوی + چواسه کردن پسندا + کلمه یل کلیدی ن بزنین + هالت دور زیڌن + پسند خوتکار برنومه یلی ک پروکسی اخون + موئتوا هونی دانلود ابۊن... + و در کشیڌن من کلیپ بورد + و من ٱووردن ز کلیپ بورد + سامووا ب تفکیک برنومه + ره وندن ب تفکیک برنومه + Unknown app (unidentified UID) - سامووا - سامووا پؽش رئڌه - سامووا هسته - سامووا VPN - پروکسی و ری برنومه - پوی وولاتی: برنومه پسند وابیڌه وا ی پروکسی منپیز ابۊ، برنومه پسند نوابیڌه موستقیمن منپیز ابۊ.\nهالت دور زیڌن: برنومه پسند وابیڌه موستقیمن منپیز ابۊ، برنومه پسند نوابیڌه وا ی پروکسی منپیز ابۊ.\nپسند خوتکار برنومه یل پروکسی من نومگه امکووݩ پزیر هڌ. - منپیز خوتکار مجال ره ونی - مجال ره وندن، خوساخوس و سرور پسند بیڌه منپیز ابۊ که گاشڌ نا مووفق بۊ. - - پاک کردن خوتکار کانفیگا نا موئتبر بئڌ پینگ - نتیجه یل پینگ گاشڌ دییق نبۊن؛ کانفیگا پاک وابیڌه ن نتری وورگنی. - ترتیب خوتکار بئڌ پینگ گرؽڌن - نتیجه یل پینگ گاشڌ دییق نبۊن. - - سامووا Mux - ره وندن Mux - زل تر، ٱما گاشڌ منپیز زی قت بۊ\nمخزن ترافیک TCP وا 8 منپیز پؽش فرز، بارت دؽوۉداری UDP وو QUIC ن ای لم سفارشی کۊنین. - منپیزا TCP (تلایه منجا 1-1024) - منپیزا XUDP (تلایه منجا 1-1024) - دؽوۉداری QUIC من تۊنل mux + سامووا + سامووا پؽش رئڌه + سامووا هسته + سامووا VPN + پروکسی و ری برنومه + پوی وولاتی: برنومه پسند وابیڌه وا ی پروکسی منپیز ابۊ، برنومه پسند نوابیڌه موستقیمن منپیز ابۊ.\nهالت دور زیڌن: برنومه پسند وابیڌه موستقیمن منپیز ابۊ، برنومه پسند نوابیڌه وا ی پروکسی منپیز ابۊ.\nپسند خوتکار برنومه یل پروکسی من نومگه امکووݩ پزیر هڌ. + منپیز خوتکار مجال ره ونی + مجال ره وندن، خوساخوس و سرور پسند بیڌه منپیز ابۊ که گاشڌ نا مووفق بۊ. + + + The task will run in the background, and progress information will be displayed in the notification. + Auto test after updating subscription + Automated testing takes a long time. If enabled, the task will run in the background; otherwise, it will run on the current page. + پاک کردن خوتکار کانفیگا نا موئتبر بئڌ پینگ + نتیجه یل پینگ گاشڌ دییق نبۊن؛ کانفیگا پاک وابیڌه ن نتری وورگنی. + ترتیب خوتکار بئڌ پینگ گرؽڌن + نتیجه یل پینگ گاشڌ دییق نبۊن. + + سامووا Mux + ره وندن Mux + زل تر، ٱما گاشڌ منپیز زی قت بۊ\nمخزن ترافیک TCP وا 8 منپیز پؽش فرز، بارت دؽوۉداری UDP وو QUIC ن ای لم سفارشی کۊنین. + منپیزا TCP (تلایه منجا 1-1024) + منپیزا XUDP (تلایه منجا 1-1024) + دؽوۉداری QUIC من تۊنل mux رڌ کردن موجاز گوم زیڌن - ره وندن نشووݩ داڌن سورعت - نشووݩ داڌن سورعت هیم سکویی من وارسۊویا.\nنماڌ وارسۊوی و ری و کار گرؽڌن کانفیگ آلشت ابۊ. + ره وندن نشووݩ داڌن سورعت + نشووݩ داڌن سورعت هیم سکویی من وارسۊویا.\nنماڌ وارسۊوی و ری و کار گرؽڌن کانفیگ آلشت ابۊ. + + ره وندن تجزیه وو تئلیل کتنا (Sniffing) + قپ ریت سی و در کشیڌن نوم دامنه واقعی ز کتنا (پؽش فرز رۊشن هڌ) + ره وندن تینا تور جوستن routeOnly + نوم دامنه sniffed ن تینا سی تور جوستن و کار بگیرین وو نشۊوی موورد نزرن و عونوان نشۊوی IP ووردارین. + + ره وندن DNS مهلی + درخاستا DNS و هسته و من ایان وو و دست ماژول DNS پردازشت ابۊن (پؽشنهاڌ ابۊ ٱر لنگ تور جوستن سی دور زیڌن نشۊویا LAN وو وولات ٱسلی هڌین ره ونده بۊ) + + ره وندن DNS جئلی + دی ان اس مهلی نشۊویا آی پی جئلی ن اوورگنه (زل تر، ٱما گاشڌ من ی قرده ز برنومه یل کار نکونه) - ره وندن تجزیه وو تئلیل کتنا (Sniffing) - قپ ریت سی و در کشیڌن نوم دامنه واقعی ز کتنا (پؽش فرز رۊشن هڌ) - ره وندن تینا تور جوستن routeOnly - نوم دامنه sniffed ن تینا سی تور جوستن و کار بگیرین وو نشۊوی موورد نزرن و عونوان نشۊوی IP ووردارین. + ره وندن IPv6 + نشۊویا وو تورا IPv6 ن و رابت VPN ازاف کۊنین - ره وندن DNS مهلی - درخاستا DNS و هسته و من ایان وو و دست ماژول DNS پردازشت ابۊن (پؽشنهاڌ ابۊ ٱر لنگ تور جوستن سی دور زیڌن نشۊویا LAN وو وولات ٱسلی هڌین ره ونده بۊ) + ترجی داڌن IPv6 + مجال هل وو فسل نوم دامنه، نشۊویا IPv6 ن ترجی بڌین - ره وندن DNS جئلی - دی ان اس مهلی نشۊویا آی پی جئلی ن اوورگنه (زل تر، ٱما گاشڌ من ی قرده ز برنومه یل کار نکونه) + DNS ز ره دیر (اختیاری) (udp/tcp/https/quic) (اختیاری) + DNS - ره وندن IPv6 - نشۊویا وو تورا IPv6 ن و رابت VPN ازاف کۊنین + VPN DNS (تینا IPv4/v6) + VPN ز شبکه مهلی اگوڌرته؟ - ترجی داڌن IPv6 - مجال هل وو فسل نوم دامنه، نشۊویا IPv6 ن ترجی بڌین + نشۊوی رابت VPN - DNS ز ره دیر (اختیاری) (udp/tcp/https/quic) (اختیاری) - DNS + VPN MTU (پؽش فرز 1500) - VPN DNS (تینا IPv4/v6) - VPN ز شبکه مهلی اگوڌرته؟ - نشۊوی رابت VPN - VPN MTU (پؽش فرز 1500) + DNS منی (اختیاری) + DNS - DNS منی (اختیاری) - DNS + DNS هاست موستقیم (قالوو: دامنه: نشۊوی،...) + دامنه:نشۊوی،... - DNS هاست موستقیم (قالوو: دامنه: نشۊوی،...) - دامنه:نشۊوی،... + نشۊوی اینترنتی آزمایش تئخیر واقعی + نشۊوی اینترنتی + تعداد هوم زمووی تست تئخیر واقعی - نشۊوی اینترنتی آزمایش تئخیر واقعی - نشۊوی اینترنتی - تعداد هوم زمووی تست تئخیر واقعی + نشۊوی اینترنتی آزمایش دووسمندیا منپیز هیم سکویی + نشۊوی اینترنتی - نشۊوی اینترنتی آزمایش دووسمندیا منپیز هیم سکویی - نشۊوی اینترنتی + یک رسۊوی پروکسی من شبکه مهلی LAN + پوی دسگایل ترن وا نشۊوی IP ایسا، ز ره socks/http و پروکسی منپیز بۊن، تینا من شبکه قابل ائتماد ره ونده بۊ تا ز منپیز قیر موجاز جلو گری بۊ. + یک رسۊوی من شبکه مهلی ره وست؛ موتمعن بۊین ک من ی شبکه ٱمن هڌین. - یک رسۊوی پروکسی من شبکه مهلی LAN - پوی دسگایل ترن وا نشۊوی IP ایسا، ز ره socks/http و پروکسی منپیز بۊن، تینا من شبکه قابل ائتماد ره ونده بۊ تا ز منپیز قیر موجاز جلو گری بۊ. - یک رسۊوی من شبکه مهلی ره وست؛ موتمعن بۊین ک من ی شبکه ٱمن هڌین. + پورت پروکسی مهلی + ره وندن پروکسی مهلی + هرسا ره نوسته بۊ، هیچ پروکسی SOCKS من دسرس نؽ، سی دل هیمو کارایی جۊر ورۊ رسۊوی یل اشتراک نترن پروکسی ن و کار گرن. + SOCKS5 UDP + ائراز هۊویت socks5 مجال استفاڌه ز UDP کاملن ایمن نؽ + پورت پروکسی مهلی + وورکل پورت موتقیر سی پروکسی مهلی + هر کرت ک و من ٱووڌنی وورکل ابۊ، ی پورت پروکسی مهلی تساڌۊفی وورکل اکونه. + نوم منتوری پروکسی مهلی (اختیاری) + نوم منتوری + رزم پروکسی مهلی (اختیاری) + رزم - پورت پروکسی مهلی - ره وندن پروکسی مهلی - هرسا ره نوسته بۊ، هیچ پروکسی SOCKS من دسرس نؽ، سی دل هیمو کارایی جۊر ورۊ رسۊوی یل اشتراک نترن پروکسی ن و کار گرن. - SOCKS5 UDP - ائراز هۊویت socks5 مجال استفاڌه ز UDP کاملن ایمن نؽ - پورت پروکسی مهلی - وورکل پورت موتقیر سی پروکسی مهلی - هر کرت ک و من ٱووڌنی وورکل ابۊ، ی پورت پروکسی مهلی تساڌۊفی وورکل اکونه. - نوم منتوری پروکسی مهلی (اختیاری) - نوم منتوری - رزم پروکسی مهلی (اختیاری) - رزم + پورت DNS مهلی + پورت DNS مهلی - پورت DNS مهلی - پورت DNS مهلی + قوۊل کردن پاک کردن کانفیگ + سی پاک وابیڌن فایل کانفیگ، لنگ قوۊل کردن دووارته ز سمت منتور هڌ. - قوۊل کردن پاک کردن کانفیگ - سی پاک وابیڌن فایل کانفیگ، لنگ قوۊل کردن دووارته ز سمت منتور هڌ. + پروکسی HTTP ن و VPN ازاف کۊنین + پروکسی HTTP ن موسقیمن ز (مۊرۊرگر/ی قرد ز برنومه یل لادراری بیڌه)، بؽ استفاڌه ز دسگا NIC مجازی (Android 10+) استفاڌه ابۊ. - پروکسی HTTP ن و VPN ازاف کۊنین - پروکسی HTTP ن موسقیمن ز (مۊرۊرگر/ی قرد ز برنومه یل لادراری بیڌه)، بؽ استفاڌه ز دسگا NIC مجازی (Android 10+) استفاڌه ابۊ. + ره وندن نشووݩ داڌن دو سۊتۊنی + The profile list is displayed in double columns, allowing more content to be displayed on the screen. - ره وندن نشووݩ داڌن دو سۊتۊنی - The profile list is displayed in double columns, allowing more content to be displayed on the screen. + نشووݩ داڌن پوی بونکۊ یل ن ره ونین + ی بلگه «پوی بونکۊ یل کانفیگ» ازاف کۊنین - نشووݩ داڌن پوی بونکۊ یل ن ره ونین - ی بلگه «پوی بونکۊ یل کانفیگ» ازاف کۊنین - فشناڌن منشڌ - فشناڌن منشڌ یا گوزارش موشکلا من Github - ٱووڌن من بونکۊ تلگرام - برنومه تلگرامن نجوست - هریم سیخومی - QR code - زبار - کود بونچک - موجوزا کود بونچک - تورگه تلگرام - - تبلیقات - - ورۊ کردن خوتکار اشتراکا - اشتراکا خوتووݩ ن و تۉر خوتکار وا فاسله زمۊوی من پس زمینه ورۊ کۊنین. ای ویژیی من پوی دسگایل گاشڌ همیشه کار نکونه - فاسله ورۊ کردن خوتکار (اقلن وا 15 دؽقه بۊ) - - سئت گوزارشا - بارت پؽش هل دامنه دری - هالت - سی دووسمندیا وو هیاری قلوه، ری ای هؽل بزݩ - زووݩ - سامووا رابت منتوری - سامووا هالت رابت منتوری - و کار گرؽڌن ویژیی Hev TUN - مجالی ک ره ونده بۊ، TUN ایا hev-socks5-tunnel ن و کار اگره؛ ٱر ره نوۊفته بۊ، همو xray-core ن و کار اگره. - Hev Tun سئت گوزارشا - زمووݩ مندیر بیڌن خوندن/هؽل کردن Hev Tun (سانیه) (پؽش فرز tcp، udp 300،60) - سامووا هالت - هالت رۊت ره وست (منتورووݩ رۊت) - ره وستن پروکسی شفاف سئت بلم وا امتیازا ریشه. ای هالت، VPN استاندارد سیستوم ٱندروید ن دور ازنه تا موستقیمن پوی ترافیک شبکه لمی ن وا دست بگره. بئڌ ره وندن، هالت معمۊلی ٱسلی، تور جۊری هر برنومه وو سامووا VPN مربۊته کاملن ناموعتبر ابۊن. - دسرسی رۊت سی ای ویژیی لازوم هڌ - یک رسۊوی LAN / تترینگ (منتورووݩ رۊت وابیڌه) - ترافیک هات‌اسپات وای‌فای وو دسگا یل منپیز وابیڌه وا USB (تترینگ) ن ز تور VPN بفشنین. - - گوزارشا - لف گیری - روفتن - یک رسۊوی گوزارش - ره وندن دووارته سرویس - پاک کردن پوی کانفیگا بونکۊ سکویی - پاک کردن کانفیگا تکراری بونکۊ سکویی - پاک کردن کانفیگا نا موئتبر بونکۊ سکویی - و در کشیڌن کانفیگا قیر سفارشی بونکۊ سکویی من کلیپ بورد - سامووا بونکۊ اشتراک - نیشتنا - نشۊوی اینترنتی اختیاری - User Agent - نوم موستعار فیلتر - ره وندن ورۊ کردن - ره وندن ورۊ کردن خوتکار - موجاز کردن نشۊوی HTTP نا ٱمن - نوم موستعار پروکسی دیندایی - نوم موستعار پروکسی نیایی - موتمعن بۊ ک نوم موستعار هڌس وو جۊرس نی - فاسله ورۊ کردن نا موئتبر هڌ. هدقل مقدار 15 دؽقه هڌ. - ورۊ کردن اشتراک بونکۊ سکویی - Tcping کانفیگا بونکۊ سکویی - تئخیر واقعی کانفیگا بونکۊ سکویی - فایلا بونچک جوقرافیایی - ترتیب و ری نتیجه یل پینگ - فیلتر کردن کانفیگا - پوی - پاک کردن %d کانفیگ تکراری - Click screen open the camera scan - - پاک کردن %d کانفیگ - و من ٱووردن %d کانفیگ - و در کشیڌن %d کانفیگ - ورۊ کردن %d کانفیگ - %1$d کانفیگ ورۊ وابی (مووفق: %2$d، شکست خرده: %3$d، رڌ وابیڌه: %4$d) - بؽ اشتراک - سرور پسند وابیڌه من بونکۊ سکویی نجۊرست - نتره نما سکویی ن بجۊره - کانفیگ پسند وابیڌه ن بجۊرین - - ره وندن سرویس - قوۊل + فشناڌن منشڌ + فشناڌن منشڌ یا گوزارش موشکلا من Github + ٱووڌن من بونکۊ تلگرام + برنومه تلگرامن نجوست + هریم سیخومی + QR code + زبار + کود بونچک + موجوزا کود بونچک + تورگه تلگرام + + تبلیقات + + ورۊ کردن خوتکار اشتراکا + اشتراکا خوتووݩ ن و تۉر خوتکار وا فاسله زمۊوی من پس زمینه ورۊ کۊنین. ای ویژیی من پوی دسگایل گاشڌ همیشه کار نکونه + فاسله ورۊ کردن خوتکار (اقلن وا 15 دؽقه بۊ) + + سئت گوزارشا + بارت پؽش هل دامنه دری + هالت + سی دووسمندیا وو هیاری قلوه، ری ای هؽل بزݩ + زووݩ + سامووا رابت منتوری + سامووا هالت رابت منتوری + و کار گرؽڌن ویژیی Hev TUN + مجالی ک ره ونده بۊ، TUN ایا hev-socks5-tunnel ن و کار اگره؛ ٱر ره نوۊفته بۊ، همو xray-core ن و کار اگره. + Hev Tun سئت گوزارشا + زمووݩ مندیر بیڌن خوندن/هؽل کردن Hev Tun (سانیه) (پؽش فرز tcp، udp 300،60) + سامووا هالت + هالت رۊت ره وست (منتورووݩ رۊت) + ره وستن پروکسی شفاف سئت بلم وا امتیازا ریشه. ای هالت، VPN استاندارد سیستوم ٱندروید ن دور ازنه تا موستقیمن پوی ترافیک شبکه لمی ن وا دست بگره. بئڌ ره وندن، هالت معمۊلی ٱسلی، تور جۊری هر برنومه وو سامووا VPN مربۊته کاملن ناموعتبر ابۊن. + دسرسی رۊت سی ای ویژیی لازوم هڌ + یک رسۊوی LAN / تترینگ (منتورووݩ رۊت وابیڌه) + ترافیک هات‌اسپات وای‌فای وو دسگا یل منپیز وابیڌه وا USB (تترینگ) ن ز تور VPN بفشنین. + + گوزارشا + لف گیری + روفتن + یک رسۊوی گوزارش + ره وندن دووارته سرویس + پاک کردن پوی کانفیگا بونکۊ سکویی + پاک کردن کانفیگا تکراری بونکۊ سکویی + پاک کردن کانفیگا نا موئتبر بونکۊ سکویی + و در کشیڌن کانفیگا قیر سفارشی بونکۊ سکویی من کلیپ بورد + سامووا بونکۊ اشتراک + نیشتنا + نشۊوی اینترنتی اختیاری + User Agent + Request Headers (JSON format) + نوم موستعار فیلتر + ره وندن ورۊ کردن + ره وندن ورۊ کردن خوتکار + موجاز کردن نشۊوی HTTP نا ٱمن + نوم موستعار پروکسی دیندایی + نوم موستعار پروکسی نیایی + موتمعن بۊ ک نوم موستعار هڌس وو جۊرس نی + فاسله ورۊ کردن نا موئتبر هڌ. هدقل مقدار 15 دؽقه هڌ. + ورۊ کردن اشتراک بونکۊ سکویی + Tcping کانفیگا بونکۊ سکویی + تئخیر واقعی کانفیگا بونکۊ سکویی + فایلا بونچک جوقرافیایی + ترتیب و ری نتیجه یل پینگ + فیلتر کردن کانفیگا + پوی + Click screen open the camera scan + پاک کردن %d کانفیگ تکراری + پاک کردن %d کانفیگ + و من ٱووردن %d کانفیگ + و در کشیڌن %d کانفیگ + ورۊ کردن %d کانفیگ + %1$d کانفیگ ورۊ وابی (مووفق: %2$d، شکست خرده: %3$d، رڌ وابیڌه: %4$d) + بؽ اشتراک + سرور پسند وابیڌه من بونکۊ سکویی نجۊرست + نتره نما سکویی ن بجۊره + کانفیگ پسند وابیڌه ن بجۊرین + + ره وندن سرویس + قوۊل - نشقه دامنه - سامووا تور جوستن - وا کاما (,) ز یک جوڌا ابۊن؛ یکی ن بزنین: domain، ip یا process - زفت کردن - روفتن - سامووا قانووݩ تور جوستن - ٱووردن قانووݩ - و من ٱووردن قانووا - قانووایی ک هیم سکو هڌسووݩ پاک ابۊن، هنی هم اخۊی پاکسووݩ کۊنی؟ - و من ٱووردن قانووا ز کلیپ بورد - و من ٱووردن قانووا ز QRcode - و در کشیڌن قانووا وو زفت من کلیپ بورد - چفت هڌ، ای قانووݩ ن مجال و من ٱووردن ز پؽش سامووا زفت کۊنین - domain - ip - port - protocol - [http,tls,bittorrent] - network"[udp|tcp]" - outboundTag - - منپیزن واجۊری کوݩ - هونی آزمایش ابۊ… - %d کانفیگ هونی آزمایش ابۊ... - مووفق بی: منپیز %dms تۊل کشی - منپیز و اینترنتن نجوست: %s - اینترنت من دسرس نؽ - کود ختا: #%d - منپیز هڌ، سی واجۊری کیلیک کوݩ - منپیز نؽڌ - تعداد وزیفه یل آزمایشی ک ره اۊفتانه: %s - - اشتراک وا مووفقیت زفت وابی - اشتراک زفت نوابی - سامووا فرگمنت - کتنا فرگمنت - تۊل کتنا فرگمنت (هدقل-هدکسر) - فاسله منجا کتنا فرگمنت (هدقل-هدکسر) - ره وندن فرگمنت - هدکسر تقسیم فرگمنت - سامووا واجۊری منپیز - فاسله leastPing - فاسله leastLoad - روش HTTP سی leastLoad - نمونه گیری leastLoad - مهلت leastLoad - زما نادروسته. یه ارزشی وری 3m یا 30s بکار ببرین. - نمونه گیری نادروسته. یه شماره مثبت بکار ببرین. - - واجۊری سی ورۊ رسۊوی - سکو نوسخه دیندایی پۊرنیڌه هڌ - نوسخه نۊ ن جوست: %s - سکو ورۊ رسۊوی کۊنین - واجۊری نوسخه یل پؽش ز تیجنیڌن - ورۊ رسۊوی ن هونی واجۊری اکونه... - - نوع بونکۊ سیاست - ز بونکۊ اشتراک - توزیهات فیلتر معمۊلی - آزمایش بارتا - بارت جایگزین (اختیاری) - ٱئزا زنجیره پروکسی - سی پسند عوزو ایچو بزنین - ی عوزو پسند کۊنین - سی هر ردیف زنجیره remark پسند کۊنین - تعداد ٱئزا بس نؽ - ٱئزا ناموئتبر زنجیره: %1$s + نشقه دامنه + سامووا تور جوستن + وا کاما (,) ز یک جوڌا ابۊن؛ یکی ن بزنین: domain، ip یا process + زفت کردن + روفتن + سامووا قانووݩ تور جوستن + ٱووردن قانووݩ + و من ٱووردن قانووا + قانووایی ک هیم سکو هڌسووݩ پاک ابۊن، هنی هم اخۊی پاکسووݩ کۊنی؟ + و من ٱووردن قانووا ز کلیپ بورد + و من ٱووردن قانووا ز QRcode + و در کشیڌن قانووا وو زفت من کلیپ بورد + چفت هڌ، ای قانووݩ ن مجال و من ٱووردن ز پؽش سامووا زفت کۊنین + domain + ip + process (Package Name — only supported when using Xray TUN, routeOnly enabled, and Android 10+) + Select package name + port + protocol + [http,tls,bittorrent] + network + proxy / direct / block / <remarks> + outboundTag + + منپیزن واجۊری کوݩ + هونی آزمایش ابۊ… + %d کانفیگ هونی آزمایش ابۊ... + مووفق بی: منپیز %dms تۊل کشی + منپیز و اینترنتن نجوست: %s + اینترنت من دسرس نؽ + کود ختا: #%d + منپیز هڌ، سی واجۊری کیلیک کوݩ + منپیز نؽڌ + تعداد وزیفه یل آزمایشی ک ره اۊفتانه: %s + + اشتراک وا مووفقیت زفت وابی + اشتراک زفت نوابی + سامووا فرگمنت + کتنا فرگمنت + تۊل کتنا فرگمنت (هدقل-هدکسر) + فاسله منجا کتنا فرگمنت (هدقل-هدکسر) + ره وندن فرگمنت + هدکسر تقسیم فرگمنت + سامووا واجۊری منپیز + فاسله leastPing + فاسله leastLoad + روش HTTP سی leastLoad + نمونه گیری leastLoad + مهلت leastLoad + زما نادروسته. یه ارزشی وری 3m یا 30s بکار ببرین. + نمونه گیری نادروسته. یه شماره مثبت بکار ببرین. + + واجۊری سی ورۊ رسۊوی + سکو نوسخه دیندایی پۊرنیڌه هڌ + نوسخه نۊ ن جوست: %s + سکو ورۊ رسۊوی کۊنین + واجۊری نوسخه یل پؽش ز تیجنیڌن + ورۊ رسۊوی ن هونی واجۊری اکونه... + + نوع بونکۊ سیاست + ز بونکۊ اشتراک + توزیهات فیلتر معمۊلی + آزمایش بارتا + بارت جایگزین (اختیاری) + + ٱئزا زنجیره پروکسی + سی پسند عوزو ایچو بزنین + ی عوزو پسند کۊنین + سی هر ردیف زنجیره remark پسند کۊنین + تعداد ٱئزا بس نؽ + ٱئزا ناموئتبر زنجیره: %1$s - لادراری گرؽڌن & وورگندن - لادراری گرؽڌن ز کانفیگ - وورگندن کانفیگ - یک رسۊوی کانفیگ - WebDAV سامووا - ٱول WebDAV ن کانفیگ کۊنین - WebDAV نشۊوی اینترنتی سرور - نوم منتوری - رزم - دایرکتوری ره دیر (اختیاری) - - QRcode - و در کشیڌن من کلیپ بورد - و در کشیڌن پوی کانفیگ من کلیپ بورد - آلشتکاری - پاک کردن - بستن + لادراری گرؽڌن & وورگندن + لادراری گرؽڌن ز کانفیگ + وورگندن کانفیگ + یک رسۊوی کانفیگ + WebDAV سامووا + ٱول WebDAV ن کانفیگ کۊنین + WebDAV نشۊوی اینترنتی سرور + نوم منتوری + رزم + دایرکتوری ره دیر (اختیاری) + + QRcode + و در کشیڌن من کلیپ بورد + و در کشیڌن پوی کانفیگ من کلیپ بورد + آلشتکاری + پاک کردن + بستن + + No server selected + Failed to decode server config + Failed to build config context + Failed to get V2Ray config + Failed to get V2Ray config: %1$s + Failed to get V2Ray config for speed test: %1$s + Custom config is empty + Core failed to start + + Start + Stop + Back + پیتینیڌن + Add + More + Share subscription + یک رسۊوی گوزارش + Remove + Add member + Start scanner + Stop scanner + Turn torch on + Turn torch off + Select image + Locked + Open menu + آلشتکاری + پاک کردن + زفت کردن + Update subscriptions + Per-app proxy information + Camera + Notification + Local network + %1$s insecure + Updating %1$s + %1$s in %2$s + Start %1$s + Stop %1$s + empty message + unknown QRcode @@ -438,6 +494,12 @@ تینا پروکسی + + Disable + OkHttp + WebView + + و دین کردن سیستوم رۊشنا @@ -463,6 +525,7 @@ هل وو ٱووردن و میزبووݩ یل دامنه DNS هل وو جایونی دامنه + کم ترین پینگ کم ترین بار (لود) diff --git a/V2rayNG/app/src/main/res/values-fa/strings.xml b/V2rayNG/app/src/main/res/values-fa/strings.xml index 868580fe62..aba90593e1 100644 --- a/V2rayNG/app/src/main/res/values-fa/strings.xml +++ b/V2rayNG/app/src/main/res/values-fa/strings.xml @@ -1,423 +1,488 @@ - تعویض - تعویض - برای اولین استفاده از این قابلیت، لطفاً ابتدا از داخل برنامه یک سرور اضافه کنید - باز کردن منو کشویی - بستن منو کشویی - انتقال داده‌ها با موفقیت انجام شد! - توقف سرویس - انتقال داده‌ها با شکست مواجه شد! - برای بروزرسانی، صفحه را به پایین بکشید! + v2rayNG + تعویض + تعویض + برای اولین استفاده از این قابلیت، لطفاً ابتدا از داخل برنامه یک سرور اضافه کنید + باز کردن منو کشویی + بستن منو کشویی + انتقال داده‌ها با موفقیت انجام شد! + توقف سرویس + انتقال داده‌ها با شکست مواجه شد! + Refresh - توقف - امکان دریافت مجوز وجود ندارد - امکان دریافت مجوز ارسال اعلان وجود ندارد - برای اطلاعات بیشتر کلیک کنید - شروع خدمات - توقف سرویس - سرویس با موفقیت شروع شد - شروع سرویس با شکست مواجه شد + توقف + امکان دریافت مجوز وجود ندارد + امکان دریافت مجوز ارسال اعلان وجود ندارد + Unable to obtain permission: %1$s + برای اطلاعات بیشتر کلیک کنید + شروع خدمات + توقف سرویس + سرویس با موفقیت شروع شد + شروع سرویس با شکست مواجه شد - فایل کانفیگ - افزودن کانفیگ - ذخیره کانفیگ - ویرایش کردن کانفیگ - حذف کانفیگ - کانفیگ را از QRcode وارد کنید - کانفیگ را از کلیپ ‌بورد وارد کنید - کانفیگ را از محلی وارد کنید -افزودن [گروه خط‌‌ مشی] - افزودن [زنجیره پروکسی] - افزودن [VMess] - افزودن [VLESS] - افزودن [Shadowsocks] - افزودن [SOCKS] - افزودن [HTTP] - افزودن [Trojan] - افزودن [Wireguard] - افزودن [Hysteria2] - آیا مطمئن هستید که می‌خواهید همه پروفایل‌های نمایش‌داده‌شده را حذف کنید؟ - آیا مطمئن هستید که می‌خواهید همه پروفایل‌های تکراری نمایش‌داده‌شده را حذف کنید؟ - لطفاً ابتدا پروفایل‌ها را آزمایش کنید. آیا مطمئن هستید که می‌خواهید همه پروفایل‌های نامعتبر نمایش‌داده‌شده را حذف کنید؟ - آیا مطمئن هستید که می‌خواهید این پروفایل را حذف کنید؟ - آیا مطمئن هستید که می‌خواهید این گروه سیاست را حذف کنید؟ - آیا مطمئن هستید که می‌خواهید این عضو زنجیره پراکسی را حذف کنید؟ - آیا مطمئن هستید که می‌خواهید این قانون مسیریابی را حذف کنید؟ - آیا مطمئن هستید که می‌خواهید این گروه اشتراک را حذف کنید؟ - آیا مطمئن هستید که می‌خواهید فایل دارایی \"%1$s\" را حذف کنید؟ - آیا مطمئن هستید که می‌خواهید این منبع دارایی را حذف کنید؟ - ملاحظات - نشانی - پورت - شناسه - شناسه جایگزین - امنیت - شبکه - انتقال - نوع هدر - حالت gRPC - هاست - هاست HTTP - هاست WS - هاست HTTPUpgrade - هاست XHTTP - هاست H2 - QUIC امنیت - gRPC Authority - مسیر - مسیر WS - مسیر HTTPUpgrade - مسیر XHTTP - مسیر H2 - مسیر QUIC - KCP سید - gRPC نام سرویس - TLS - اثرانگشت - Alpn - مجوز SSL ناامن - SNI - نشانی - پورت - رمز عبور - امنیت - رمز عبور (اختیاری) - نام‌ کاربری (اختیاری) - رمزنگاری - جریان - کلید عمومی - کلید پیش‌اشتراکی (اختیاری) - شناسه کوتاه - SpiderX - تاییدیه Mldsa65Verify - کلید خصوصی - Reserved (اختیاری، جدا شده با کاما) - آدرس محلی (IPv4/IPv6 اختیاری، جدا شده با کاما) - MTU (اختیاری، پیش‌فرض 1420) - mKCP MTU (اختیاری، پیش‌فرض هسته 1350) - mKCP TTI (اختیاری، پیش‌فرض هسته 50) - موفقیت‌آمیز - شکست! - داده‌ای یافت نشد - پروتکل نادرست - رمزگشایی انجام نشد - انتخاب فایل کانفیگ - لطفا یک برنامه مدیریت فایل نصب کنید. - کانفیگ سفارشی - کانفیگ معتبر نیست - محتوا - داده‌ای در کلیپ‌بورد وجود ندارد - نشانی اینترنتی نامعتبر است - لطفاً از آدرس های اشتراک پروتکل HTTP ناامن استفاده نکنید - اطمینان حاصل کنید که پورت ورودی با تنظیمات مطابقت دارد - کانفیگ درست نیست - هاست (SNI) (اختیاری) - این عمل ممنوع است - رمز عبور obfs - پورت پرش (درگاه سرور را بازنویسی می کند) - فاصله پورت پرش (ثانیه) - کاهش پهنای باند (واحد) - افزایش پهنای باند (واحد) - حالت XHTTP - خام JSON XHTTP Extra، قالب: { XHTTPObject } - finalMask raw JSON, format: { FinalMaskObject } - لیست کانفیگ Ech - Verify Peer Cert By Name - Certificate fingerprint (SHA-256) - Fetch and fill certificate fingerprint - Certificate fingerprint fetched successfully - Failed to fetch certificate fingerprint + فایل کانفیگ + Add subscription + ذخیره کانفیگ + کانفیگ را از QRcode وارد کنید + کانفیگ را از کلیپ ‌بورد وارد کنید + کانفیگ را از محلی وارد کنید + افزودن [گروه خط‌‌ مشی] + افزودن [زنجیره پروکسی] + افزودن [VMess] + افزودن [VLESS] + افزودن [Shadowsocks] + افزودن [SOCKS] + افزودن [HTTP] + افزودن [Trojan] + افزودن [Wireguard] + افزودن [Hysteria2] + آیا مطمئن هستید که می‌خواهید همه پروفایل‌های نمایش‌داده‌شده را حذف کنید؟ + آیا مطمئن هستید که می‌خواهید همه پروفایل‌های تکراری نمایش‌داده‌شده را حذف کنید؟ + لطفاً ابتدا پروفایل‌ها را آزمایش کنید. آیا مطمئن هستید که می‌خواهید همه پروفایل‌های نامعتبر نمایش‌داده‌شده را حذف کنید؟ + آیا مطمئن هستید که می‌خواهید این پروفایل را حذف کنید؟ + آیا مطمئن هستید که می‌خواهید این گروه سیاست را حذف کنید؟ + آیا مطمئن هستید که می‌خواهید این عضو زنجیره پراکسی را حذف کنید؟ + آیا مطمئن هستید که می‌خواهید این قانون مسیریابی را حذف کنید؟ + آیا مطمئن هستید که می‌خواهید این گروه اشتراک را حذف کنید؟ + آیا مطمئن هستید که می‌خواهید فایل دارایی \"%1$s\" را حذف کنید؟ + آیا مطمئن هستید که می‌خواهید این منبع دارایی را حذف کنید؟ + ملاحظات + نشانی + پورت + شناسه + شناسه جایگزین + امنیت + شبکه + انتقال + نوع هدر + حالت gRPC + هاست + هاست HTTP + هاست WS + هاست HTTPUpgrade + هاست XHTTP + هاست H2 + QUIC امنیت + gRPC Authority + مسیر + مسیر WS + مسیر HTTPUpgrade + مسیر XHTTP + مسیر H2 + مسیر QUIC + KCP سید + gRPC نام سرویس + TLS + اثرانگشت + Alpn + مجوز SSL ناامن + SNI + نشانی + پورت + رمز عبور + امنیت + رمز عبور (اختیاری) + نام‌ کاربری (اختیاری) + رمزنگاری + جریان + کلید عمومی + کلید پیش‌اشتراکی (اختیاری) + شناسه کوتاه + SpiderX + تاییدیه Mldsa65Verify + کلید خصوصی + Reserved (اختیاری، جدا شده با کاما) + آدرس محلی (IPv4/IPv6 اختیاری، جدا شده با کاما) + MTU (اختیاری، پیش‌فرض 1420) + mKCP MTU (اختیاری، پیش‌فرض هسته 1350) + mKCP TTI (اختیاری، پیش‌فرض هسته 50) + موفقیت‌آمیز + شکست! + داده‌ای یافت نشد + پروتکل نادرست + رمزگشایی انجام نشد + انتخاب فایل کانفیگ + لطفا یک برنامه مدیریت فایل نصب کنید. + کانفیگ سفارشی + کانفیگ معتبر نیست + محتوا + داده‌ای در کلیپ‌بورد وجود ندارد + نشانی اینترنتی نامعتبر است + لطفاً از آدرس های اشتراک پروتکل HTTP ناامن استفاده نکنید + اطمینان حاصل کنید که پورت ورودی با تنظیمات مطابقت دارد + کانفیگ درست نیست: %1$s + هاست (SNI) (اختیاری) + این عمل ممنوع است + رمز عبور obfs + پورت پرش (درگاه سرور را بازنویسی می کند) + فاصله پورت پرش (ثانیه) + کاهش پهنای باند (واحد) + افزایش پهنای باند (واحد) + حالت XHTTP + خام JSON XHTTP Extra، قالب: { XHTTPObject } + finalMask raw JSON, format: { FinalMaskObject } + لیست کانفیگ Ech + Verify Peer Cert By Name + Certificate fingerprint (SHA-256) + Enable Browser Dialer + Only supports xhttp (packet-up) and ws outbound; TLS-related settings may be ignored or conflict + Current node uses an unencrypted connection. Your communication may be directly viewed by network intermediate facilities controlled by authoritarian governments.\nFor security reasons, such nodes cannot be connected via Xray core version 26.2.6+.\nIf it is a self-built node, please enable security encryption such as TLS, or pin the certificate pinnedCA256.\nIf it is a provider node, please contact the service provider to complete the technical upgrade. If the service provider refuses to cooperate, it is recommended to switch to a provider that pays more attention to user security.\nFor more information, please visit https://github.com/2dust/v2rayN/discussions/9460 + Fetch and fill certificate fingerprint + Certificate fingerprint fetched successfully + Failed to fetch certificate fingerprint - کپی فایل شکست خورد، لطفا از برنامه مدیریت فایل استفاده کنید - افزودن فایل ‌ها - اسکن QRcode - URL - دانلود فایل‌ ها - آدرس اینترنتی را اضافه کنید - فایل پیدا نشد - این نام از قبل وجود دارد - منبع فایل های جغرافیایی (اختیاری) + کپی فایل شکست خورد، لطفا از برنامه مدیریت فایل استفاده کنید + افزودن منبع + افزودن فایل ‌ها + افزودن لینک + اسکن QRcode + URL + دانلود فایل‌ ها + آدرس اینترنتی را اضافه کنید + فایل پیدا نشد + این نام از قبل وجود دارد + منبع فایل های جغرافیایی (اختیاری) - در حال بارگذاری... - جستجو - انتخاب همه - معکوس کردن انتخاب‌ها - کلمات کلیدی را وارد کنید - حالت دور زدن - انتخاب خودکار برنامه‌های نیازمند پروکسی - در حال دانلود محتوا... - خروجی گرفتن در کلیپ‌ بورد - وارد کردن از کلیپ‌ بورد - تنظیمات به تفکیک برنامه - فعال‌سازی به تفکیک برنامه + در حال بارگذاری... + جستجو + انتخاب همه + معکوس کردن انتخاب‌ها + کلمات کلیدی را وارد کنید + حالت دور زدن + انتخاب خودکار برنامه‌های نیازمند پروکسی + در حال دانلود محتوا... + خروجی گرفتن در کلیپ‌ بورد + وارد کردن از کلیپ‌ بورد + تنظیمات به تفکیک برنامه + فعال‌سازی به تفکیک برنامه + Unknown app (unidentified UID) - تنظیمات - تنظیمات پیشرفته - تنظیمات هسته - تنظیمات VPN - پروکسی به تفکیک برنامه - عمومی: برنامه انتخاب شده از طریق یک پروکسی متصل می شود، برنامه انتخاب نشده مستقیماً متصل می شود. \nحالت دور زدن: برنامه انتخاب شده مستقیماً متصل می شود، برنامه انتخاب نشده از طریق یک پروکسی متصل می شود. \nانتخاب خودکار برنامه های پراکسی در منو امکان پذیر است. - اتصال خودکار هنگام راه اندازی - هنگام راه اندازی به طور خودکار به سرور انتخابی متصل می شود که ممکن است ناموفق باشد. - - حذف خودکار کانفیگ‌های نامعتبر بعد از پینگ - نتایج پینگ ممکن است همیشه دقیق نباشند؛ کانفیگ‌های حذف‌شده قابل بازیابی نیستند. - مرتب‌سازی خودکار بعد از پینگ گرفتن - نتایج آزمایش ممکن است کاملاً دقیق نباشند. - - تنظیمات MUX - فعال کردن MUX - سریعتر است، اما ممکن است باعث اتصال ناپایدار شود\nمخزن ترافیک TCP با 8 اتصال پیش‌فرض، نحوه مدیریت UDP و QUIC را در زیر سفارشی کنید. - اتصالات TCP (محدوده -1 تا 1024) - اتصالات XUDP (محدوده -1 تا 1024) - مدیریت QUIC در تونل MUX + تنظیمات + تنظیمات پیشرفته + تنظیمات هسته + تنظیمات VPN + پروکسی به تفکیک برنامه + عمومی: برنامه انتخاب شده از طریق یک پروکسی متصل می شود، برنامه انتخاب نشده مستقیماً متصل می شود. \nحالت دور زدن: برنامه انتخاب شده مستقیماً متصل می شود، برنامه انتخاب نشده از طریق یک پروکسی متصل می شود. \nانتخاب خودکار برنامه های پراکسی در منو امکان پذیر است. + اتصال خودکار هنگام راه اندازی + هنگام راه اندازی به طور خودکار به سرور انتخابی متصل می شود که ممکن است ناموفق باشد. + + + The task will run in the background, and progress information will be displayed in the notification. + Auto test after updating subscription + Automated testing takes a long time. If enabled, the task will run in the background; otherwise, it will run on the current page. + حذف خودکار کانفیگ‌های نامعتبر بعد از پینگ + نتایج پینگ ممکن است همیشه دقیق نباشند؛ کانفیگ‌های حذف‌شده قابل بازیابی نیستند. + مرتب‌سازی خودکار بعد از پینگ گرفتن + نتایج آزمایش ممکن است کاملاً دقیق نباشند. + + تنظیمات MUX + فعال کردن MUX + سریعتر است، اما ممکن است باعث اتصال ناپایدار شود\nمخزن ترافیک TCP با 8 اتصال پیش‌فرض، نحوه مدیریت UDP و QUIC را در زیر سفارشی کنید. + اتصالات TCP (محدوده -1 تا 1024) + اتصالات XUDP (محدوده -1 تا 1024) + مدیریت QUIC در تونل MUX رد کردن مجاز پریدن - فعال کردن نمایش سرعت - نمایش سرعت فعلی در قسمت اعلان. \nآیکون اعلان بر اساس استفاده تغییر می‌کند. + فعال کردن نمایش سرعت + نمایش سرعت فعلی در قسمت اعلان. \nآیکون اعلان بر اساس استفاده تغییر می‌کند. - فعال کردن تجزیه و تحلیل بسته ها (Sniffing) - تلاش برای استخراج نام دامنه واقعی از بسته‌های ترافیک (به‌طور پیش‌فرض روشن است) - فعال‌سازی فقط مسیر یابی (RouteOnly) - از نام دامنه (Snnifed) فقط برای مسیریابی استفاده کنید و آدرس مقصد را به عنوان IP ذخیره کنید. + فعال کردن تجزیه و تحلیل بسته ها (Sniffing) + تلاش برای استخراج نام دامنه واقعی از بسته‌های ترافیک (به‌طور پیش‌فرض روشن است) + فعال‌سازی فقط مسیر یابی (RouteOnly) + از نام دامنه (Snnifed) فقط برای مسیریابی استفاده کنید و آدرس مقصد را به عنوان IP ذخیره کنید. + فعال کردن DNS محلی + درخواست های DNS به هسته وارد شده و توسط ماژول DNS پردازش می شوند (توصیه می شود در صورت نیاز به مسیریابی برای دور زدن آدرس های LAN و سرزمین اصلی فعال شود) - فعال کردن DNS محلی - درخواست های DNS به هسته وارد شده و توسط ماژول DNS پردازش می شوند (توصیه می شود در صورت نیاز به مسیریابی برای دور زدن آدرس های LAN و سرزمین اصلی فعال شود) + فعال کردن DNS جعلی + دی ان اس محلی آدرس های آیپی جعلی را بر می گرداند (سریع تر می باشد و تاخیر را کاهش می دهد اما ممکن است برای برخی از برنامه ها کار نکند) - فعال کردن DNS جعلی - دی ان اس محلی آدرس های آیپی جعلی را بر می گرداند (سریع تر می باشد و تاخیر را کاهش می دهد اما ممکن است برای برخی از برنامه ها کار نکند) + فعال کردن IPv6 + آدرس و مسیرهای IPv6 را به رابط VPN اضافه کنید - فعال کردن IPv6 - آدرس و مسیرهای IPv6 را به رابط VPN اضافه کنید + ترجیح دادن IPV6 + هنگام بازیابی نام دامنه، آدرس‌های IPv6 را ترجیح دهید - ترجیح دادن IPV6 - هنگام بازیابی نام دامنه، آدرس‌های IPv6 را ترجیح دهید + DNS از راه دور (اختیاری) (udp/tcp/https/quic) + DNS - DNS از راه دور (اختیاری) (udp/tcp/https/quic) - DNS + VPN DNS (فقط IPv4/v6) + آیا VPN از شبکه محلی عبور می کند؟ - VPN DNS (فقط IPv4/v6) - آیا VPN از شبکه محلی عبور می کند؟ + آدرس واسط VPN - آدرس واسط VPN - VPN MTU (default 1500) + VPN MTU (default 1500) - DNS داخلی (اختیاری) - DNS - DNS مستقیم هاست (فرمت: دامنه:آدرس،…) - دامنه:آدرس،… + DNS داخلی (اختیاری) + DNS - آدرس اینترنتی آزمایش تاخیر واقعی کانفیگ ها - URL - تعداد همزمانی تست تأخیر واقعی + DNS مستقیم هاست (فرمت: دامنه:آدرس،…) + دامنه:آدرس،… - تست اطلاعات اتصال فعلی url - Url + آدرس اینترنتی آزمایش تاخیر واقعی کانفیگ ها + URL + تعداد همزمانی تست تأخیر واقعی - اشتراک‌گذاری پروکسی در شبکه محلی (LAN) - دستگاه‌های دیگر می‌توانند با وارد کردن IP شما، از پروکسی‌تان استفاده کنند. برای جلوگیری از سوءاستفاده، فقط در شبکه‌های امن و قابل اعتماد این گزینه را روشن کنید. - اشتراک‌گذاری در شبکه محلی فعال شد؛ مطمئن شوید در یک شبکه امن هستید. + تست اطلاعات اتصال فعلی url + Url - پورت پروکسی محلی - فعال‌سازی پروکسی محلی - اگر غیرفعال باشد، هیچ پروکسی SOCKS در دسترس نخواهد بود و کارهایی مثل آپدیت اشتراک‌ها نمی‌توانند از پروکسی استفاده کنند. - SOCKS5 UDP - احراز هویت socks5 هنگام استفاده از UDP کاملاً ایمن نیست - پورت پروکسی محلی - تولید پورت متغیر برای پروکسی محلی - با هر بار ایجاد یک کانکشن ورودی، یک پورت تصادفی تولید می‌کند. - نام کاربری پروکسی محلی (اختیاری) - نام کاربری - رمز عبور پروکسی محلی (اختیاری) - رمز عبور + اشتراک‌گذاری پروکسی در شبکه محلی (LAN) + دستگاه‌های دیگر می‌توانند با وارد کردن IP شما، از پروکسی‌تان استفاده کنند. برای جلوگیری از سوءاستفاده، فقط در شبکه‌های امن و قابل اعتماد این گزینه را روشن کنید. + اشتراک‌گذاری در شبکه محلی فعال شد؛ مطمئن شوید در یک شبکه امن هستید. - پورت DNS محلی - پورت DNS محلی + پورت پروکسی محلی + فعال‌سازی پروکسی محلی + اگر غیرفعال باشد، هیچ پروکسی SOCKS در دسترس نخواهد بود و کارهایی مثل آپدیت اشتراک‌ها نمی‌توانند از پروکسی استفاده کنند. + SOCKS5 UDP + احراز هویت socks5 هنگام استفاده از UDP کاملاً ایمن نیست + پورت پروکسی محلی + تولید پورت متغیر برای پروکسی محلی + با هر بار ایجاد یک کانکشن ورودی، یک پورت تصادفی تولید می‌کند. + نام کاربری پروکسی محلی (اختیاری) + نام کاربری + رمز عبور پروکسی محلی (اختیاری) + رمز عبور - تایید حذف کانفیگ - آیا برای حذف کانفیگ نیاز به تایید دوم توسط کاربر است + پورت DNS محلی + پورت DNS محلی + تایید حذف کانفیگ + آیا برای حذف کانفیگ نیاز به تایید دوم توسط کاربر است - پروکسی HTTP را به VPN اضافه کنید - پروکسی HTTP مستقیماً از (مرورگر/برخی برنامه‌های پشتیبانی‌شده)، بدون استفاده از دستگاه NIC مجازی (Android 10+) استفاده می‌شود. - فعال کردن نمایش دو ستون - The profile list is displayed in double columns, allowing more content to be displayed on the screen. + پروکسی HTTP را به VPN اضافه کنید + پروکسی HTTP مستقیماً از (مرورگر/برخی برنامه‌های پشتیبانی‌شده)، بدون استفاده از دستگاه NIC مجازی (Android 10+) استفاده می‌شود. + + فعال کردن نمایش دو ستون + The profile list is displayed in double columns, allowing more content to be displayed on the screen. + + Enable show all groups + Add an extra "All Tabs" page - Enable show all groups - Add an extra "All Tabs" page - بازخورد - بازخورد یا گزارش اشکالات در گیت‌ هاب - عضویت در گروه تلگرام - برنامه تلگرام پیدا نشد - - حریم خصوصی - QR code - درباره - کد منبع - مجوز های منبع باز - کانال تلگرام - تبلیغات - - به‌ روزرسانی خودکار اشتراک ها - اشتراک های خود را به طور خودکار با فاصله زمانی در پس زمینه به روز کنید. بسته به دستگاه، این ویژگی ممکن است همیشه کار نکند. - فاصله به‌ روزرسانی خودکار ( حداقل مقدار ، 15 دقیقه ) - سطح گزارشات - Outbound domain pre-resolve method - حالت - برای اطلاعات و راهنمایی بیشتر، روی این متن کلیک کنید - زبان - تنظیمات رابط کاربری - تنظیمات حالت رابط کاربری - استفاده از قابلیت Hev TUN - اگر فعال باشد، تونل VPN از hev-socks5-tunnel استفاده می‌کند؛ در غیر این صورت از xray-core استفاده خواهد شد. - سطح گزارشات Hev Tun - زمان انتظار خواندن/نوشتن Hev Tun (ثانیه) (پیش‌فرض tcp,udp 300،60) - - گزارشات - کپی - پاک کردن - اشتراک‌گذاری گزارش - راه‌اندازی مجدد خدمات - حذف تمام کانفیگ های گروه فعلی - حذف کانفیگ های تکراری گروه فعلی - حذف کانفیگ های نامعتبر گروه فعلی (ابتدا آزمایش کنید) - خروجی گرفتن کانفیگ های غیرسفارشی گروه فعلی در کلیپ ‌بورد - تنظیمات گروه‌ اشتراک - ملاحظات - نشانی اینترنتی اختیاری - User Agent - نام مستعار فیلتر - فعال کردن به‌روزرسانی - فعال سازی به‌روزرسانی خودکار - مجاز کردن آدرس HTTP ناامن - نام مستعار پروکسی قبلی - نام مستعار پروکسی بعدی - لطفاً مطمئن شوید که نام مستعار وجود دارد و منحصر به فرد است - بازه بروزرسانی نامعتبر است. حداقل مقدار 15 دقیقه است. - به‌روزرسانی گروه فعلی اشتراک - TCPING کانفیگ های گروه فعلی - تاخیر واقعی کانفیگ های گروه فعلی - فایل های منبع جغرافیایی - مرتب‌ سازی بر اساس نتایج آزمایش - فیلتر کردن کانفیگ‌ها - همه - حذف %d کانفیگ تکراری - Click screen open the camera scan - - حذف %d کانفیگ - وارد کردن %d کانفیگ - صادر کردن %d کانفیگ - آپدیت کردن %d کانفیگ - بروزرسانی %1$d کانفیگ انجام شد (%2$d موفق، %3$d شکست خورده، %4$d نادیده گرفته شده) - هیچ اشتراکی وجود ندارد - سرور انتخاب‌شده در گروه فعلی پیدا نشد - موقعیت صفحه فعلی پیدا نشد - پیدا کردن کانفیگ متصل‌شده در لیست - - شروع خدمات - تایید + بازخورد + بازخورد یا گزارش اشکالات در گیت‌ هاب + عضویت در گروه تلگرام + برنامه تلگرام پیدا نشد + حریم خصوصی + QR code + درباره + کد منبع + مجوز های منبع باز + کانال تلگرام + + تبلیغات + + به‌ روزرسانی خودکار اشتراک ها + اشتراک های خود را به طور خودکار با فاصله زمانی در پس زمینه به روز کنید. بسته به دستگاه، این ویژگی ممکن است همیشه کار نکند. + فاصله به‌ روزرسانی خودکار ( حداقل مقدار ، 15 دقیقه ) + + سطح گزارشات + Outbound domain pre-resolve method + حالت + برای اطلاعات و راهنمایی بیشتر، روی این متن کلیک کنید + زبان + تنظیمات رابط کاربری + تنظیمات حالت رابط کاربری + استفاده از قابلیت Hev TUN + اگر فعال باشد، تونل VPN از hev-socks5-tunnel استفاده می‌کند؛ در غیر این صورت از xray-core استفاده خواهد شد. + سطح گزارشات Hev Tun + زمان انتظار خواندن/نوشتن Hev Tun (ثانیه) (پیش‌فرض tcp,udp 300،60) + Mode Settings + Root mode enabled (Root Users) + Enable low-level transparent proxying via root privileges. This mode bypasses the standard Android system VPN to directly take over all underlying network traffic. Once enabled, the original regular mode, per-app routing, and related VPN settings will become completely invalid. + Root access is required for this feature + LAN / tethering sharing (Root Users) + Route Wi-Fi hotspot and USB-tethered devices through the VPN + + گزارشات + کپی + پاک کردن + اشتراک‌گذاری گزارش + راه‌اندازی مجدد خدمات + حذف تمام کانفیگ های گروه فعلی + حذف کانفیگ های تکراری گروه فعلی + حذف کانفیگ های نامعتبر گروه فعلی (ابتدا آزمایش کنید) + خروجی گرفتن کانفیگ های غیرسفارشی گروه فعلی در کلیپ ‌بورد + تنظیمات گروه‌ اشتراک + ملاحظات + نشانی اینترنتی اختیاری + User Agent + Request Headers (JSON format) + نام مستعار فیلتر + فعال کردن به‌روزرسانی + فعال سازی به‌روزرسانی خودکار + مجاز کردن آدرس HTTP ناامن + نام مستعار پروکسی قبلی + نام مستعار پروکسی بعدی + لطفاً مطمئن شوید که نام مستعار وجود دارد و منحصر به فرد است + بازه بروزرسانی نامعتبر است. حداقل مقدار 15 دقیقه است. + به‌روزرسانی گروه فعلی اشتراک + TCPING کانفیگ های گروه فعلی + تاخیر واقعی کانفیگ های گروه فعلی + فایل های منبع جغرافیایی + مرتب‌ سازی بر اساس نتایج آزمایش + فیلتر کردن کانفیگ‌ها + همه + Click screen open the camera scan + حذف %d کانفیگ تکراری + حذف %d کانفیگ + وارد کردن %d کانفیگ + صادر کردن %d کانفیگ + آپدیت کردن %d کانفیگ + بروزرسانی %1$d کانفیگ انجام شد (%2$d موفق، %3$d شکست خورده، %4$d نادیده گرفته شده) + هیچ اشتراکی وجود ندارد + سرور انتخاب‌شده در گروه فعلی پیدا نشد + موقعیت صفحه فعلی پیدا نشد + پیدا کردن کانفیگ متصل‌شده در لیست + + شروع خدمات + تایید - استراتژی دامنه - تنظیمات مسیریابی - با کاما (,) جدا کنید. یکی از موارد domain، ip یا process را وارد کنید - ذخیره - حذف - تنظیمات قانون مسیریابی - اضافه کردن قانون - وارد کردن مجموعه قوانین از پیش تعریف شده - مجموعه قوانین موجود حذف خواهند شد، آیا مطمئن هستید که ادامه می دهید؟ - وارد کردن مجموعه قوانین از کلیپ بورد - وارد کردن مجموعه قوانین از QRcode - صادر کردن مجموعه قوانین به کلیپ بورد - قفل است، این قانون را هنگام وارد کردن از پیش تنظیم‌ ها حفظ کنید - دامنه - آیپی - پورت - پورتکل - [http,tls,bittorrent] - شبکه - برچسب خروجی - - اتصال را بررسی کنید - در حال آزمایش... - تست کردن %d کانفیگ… - موفقیت: اتصال %dms طول کشید - اتصال به اینترنت شناسایی نشد: %s - اینترنت در دسترس نیست - کد خطا: #%d - متصل است، برای بررسی اتصال ضربه بزنید - متصل نیست - تعداد وظایف آزمایشی در حال اجرا: %s - - اشتراک با موفقیت ذخیره شد - ذخیره اشتراک ناموفق بود - تنظیمات فرگمنت - بسته های فرگمنت - طول بسته های فرگمنت (حداقل-حداکثر) - فاصله بین بسته های فرگمنت (حداقل-حداکثر) - فعال کردن فرگمنت - حداکثر تقسیم فرگمنت - تنظیمات پایش اتصال - فاصله leastPing - فاصله leastLoad - روش HTTP برای leastLoad - نمونه‌برداری leastLoad - مهلت زمانی leastLoad - مدت زمان نامعتبر است. از مقداری مانند 3m یا 30s استفاده کنید. - مقدار نمونه‌برداری نامعتبر است. از یک عدد مثبت استفاده کنید. - - بررسی به روز رسانی - در حال حاضر آخرین نسخه نصب شده است - نسخه جدید پیدا شد: %s - اکنون به روز رسانی کنید - بررسی نسخه پیش از انتشار - در حال بررسی برای به‌روزرسانی… - - نوع گروه خط مشی - از گروه اشتراک - توضیحات فیلتر معمولی - آزمایش خروجی‌ها - خروجی جایگزین (اختیاری) - اعضای زنجیره پروکسی - برای انتخاب عضو اینجا بزنید - یک عضو را انتخاب کنید - لطفا برای هر ردیف زنجیره remark انتخاب کنید - تعداد اعضا کافی نیست - اعضای نامعتبر زنجیره: %1$s + استراتژی دامنه + تنظیمات مسیریابی + با کاما (,) جدا کنید. یکی از موارد domain، ip یا process را وارد کنید + ذخیره + حذف + تنظیمات قانون مسیریابی + اضافه کردن قانون + وارد کردن مجموعه قوانین از پیش تعریف شده + مجموعه قوانین موجود حذف خواهند شد، آیا مطمئن هستید که ادامه می دهید؟ + وارد کردن مجموعه قوانین از کلیپ بورد + وارد کردن مجموعه قوانین از QRcode + صادر کردن مجموعه قوانین به کلیپ بورد + قفل است، این قانون را هنگام وارد کردن از پیش تنظیم‌ ها حفظ کنید + دامنه + آیپی + process (Package Name — only supported when using Xray TUN, routeOnly enabled, and Android 10+) + Select package name + پورت + پورتکل + [http,tls,bittorrent] + شبکه + proxy / direct / block / <remarks> + برچسب خروجی + + اتصال را بررسی کنید + در حال آزمایش... + تست کردن %d کانفیگ… + موفقیت: اتصال %dms طول کشید + اتصال به اینترنت شناسایی نشد: %s + اینترنت در دسترس نیست + کد خطا: #%d + متصل است، برای بررسی اتصال ضربه بزنید + متصل نیست + تعداد وظایف آزمایشی در حال اجرا: %s + + اشتراک با موفقیت ذخیره شد + ذخیره اشتراک ناموفق بود + تنظیمات فرگمنت + بسته های فرگمنت + طول بسته های فرگمنت (حداقل-حداکثر) + فاصله بین بسته های فرگمنت (حداقل-حداکثر) + فعال کردن فرگمنت + حداکثر تقسیم فرگمنت + تنظیمات پایش اتصال + فاصله leastPing + فاصله leastLoad + روش HTTP برای leastLoad + نمونه‌برداری leastLoad + مهلت زمانی leastLoad + مدت زمان نامعتبر است. از مقداری مانند 3m یا 30s استفاده کنید. + مقدار نمونه‌برداری نامعتبر است. از یک عدد مثبت استفاده کنید. + + بررسی به روز رسانی + در حال حاضر آخرین نسخه نصب شده است + نسخه جدید پیدا شد: %s + اکنون به روز رسانی کنید + بررسی نسخه پیش از انتشار + در حال بررسی برای به‌روزرسانی… + + نوع گروه خط مشی + از گروه اشتراک + توضیحات فیلتر معمولی + آزمایش خروجی‌ها + خروجی جایگزین (اختیاری) + + اعضای زنجیره پروکسی + برای انتخاب عضو اینجا بزنید + یک عضو را انتخاب کنید + لطفا برای هر ردیف زنجیره remark انتخاب کنید + تعداد اعضا کافی نیست + اعضای نامعتبر زنجیره: %1$s - پشتیبان‌گیری و بازیابی - پشتیبان گیری از پیکربندی - بازیابی پیکربندی - اشتراک گذاری پیکربندی - تنظیمات WebDAV - لطفا ابتدا WebDAV را پیکربندی کنید. - لینک سرور WebDAV - یوزرنیم - پسورد - دایرکتوری راه دور (اختیاری) - - QRcode - خروجی گرفتن در کلیپ‌ بورد - خروجی گرفتن کانفیگ کامل در کلیپ بورد - ویرایش - حذف - بستن + پشتیبان‌گیری و بازیابی + پشتیبان گیری از پیکربندی + بازیابی پیکربندی + اشتراک گذاری پیکربندی + تنظیمات WebDAV + لطفا ابتدا WebDAV را پیکربندی کنید. + لینک سرور WebDAV + یوزرنیم + پسورد + دایرکتوری راه دور (اختیاری) + + QRcode + خروجی گرفتن در کلیپ‌ بورد + خروجی گرفتن کانفیگ کامل در کلیپ بورد + ویرایش + حذف + بستن + + No server selected + Failed to decode server config + Failed to build config context + Failed to get V2Ray config + Failed to get V2Ray config: %1$s + Failed to get V2Ray config for speed test: %1$s + Custom config is empty + Core failed to start + + Start + Stop + Back + جستجو + Add + More + Share subscription + اشتراک‌گذاری گزارش + Remove + Add member + Start scanner + Stop scanner + Turn torch on + Turn torch off + Select image + Locked + Open menu + ویرایش + حذف + ذخیره + Update subscriptions + Per-app proxy information + Camera + Notification + Local network + %1$s insecure + Updating %1$s + %1$s in %2$s + Start %1$s + Stop %1$s + empty message + unknown QRcode @@ -428,8 +493,12 @@ VPN فقط پروکسی - افزودن منبع - افزودن لینک + + + Disable + OkHttp + WebView + پیش فرض سیستم @@ -456,6 +525,7 @@ Resolve and add to DNS Hosts Resolve and replace domain + کمترین پینگ کمترین بار(لود) diff --git a/V2rayNG/app/src/main/res/values-ru/strings.xml b/V2rayNG/app/src/main/res/values-ru/strings.xml index 87e3e716b5..f5145c048b 100644 --- a/V2rayNG/app/src/main/res/values-ru/strings.xml +++ b/V2rayNG/app/src/main/res/values-ru/strings.xml @@ -1,445 +1,488 @@ - v2rayNG - v2rayNG - Первое использование этой функции, пожалуйста, используйте приложение, чтобы добавить профиль - Открыть панель навигации - Закрыть панель навигации - Успешный перенос данных! - Остановить службу - Перенос данных не выполнен! - Потяните вниз для обновления! + v2rayNG + v2rayNG + v2rayNG + Первое использование этой функции, пожалуйста, используйте приложение, чтобы добавить профиль + Открыть панель навигации + Закрыть панель навигации + Успешный перенос данных! + Остановить службу + Перенос данных не выполнен! + Refresh - Остановить - Разрешение не получено - Разрешение на отображение уведомлений не получено - Ещё… - Запуск служб - Остановка служб - Службы успешно запущены - Сбой при запуске служб + Остановить + Разрешение не получено + Разрешение на отображение уведомлений не получено + Unable to obtain permission: %1$s + Ещё… + Запуск служб + Остановка служб + Службы успешно запущены + Сбой при запуске служб - Профиль - Добавить профиль - Сохранить профиль - Изменить профиль - Удалить профиль - Импорт из QR-кода - Импорт из буфера обмена - Импорт из файла - Добавить политику группы - Добавить цепочку прокси - Добавить VMess - Добавить VLESS - Добавить Shadowsocks - Добавить SOCKS - Добавить HTTP - Добавить Trojan - Добавить WireGuard - Добавить Hysteria2 - Удалить все отображаемые профили? - Удалить все отображаемые дубликаты профилей? - Выполните проверку перед удалением! Удалить все отображаемые нерабочие профили? - Удалить этот профиль? - Удалить эту политику группы? - Удалить этого участника цепочки прокси? - Удалить это правило маршрутизации? - Удалить эту подписку? - Удалить файл ресурсов «%1$s»? - Удалить этот источник ресурсов? - Название - Адрес - Порт - ID - Альтернативный ID - Безопасность - Сеть - Транспорт - Тип заголовка - Режим gRPC - Узел - Узел HTTP - Узел WS - Узел HTTPUpgrade - Узел XHTTP - Узел H2 - Шифрование QUIC - Полномочия gRPC - Путь - Путь WS - Путь HTTPUpgrade - Путь XHTTP - Путь H2 - Ключ QUIC - Сид KCP - Служба gRPC - TLS - Отпечаток - ALPN - Разрешать небезопасные соединения - SNI - Адрес - Порт - Пароль - Безопасность - Пароль (необязательно) - Пользователь (необязательно) - Шифрование - Поток - Открытый ключ - Дополнительный ключ шифрования (необязательно) - ShortID - SpiderX - mldsa65Verify - Закрытый ключ - Reserved (необязательно, через запятую) - Локальный адрес (необязательно, IPv4/IPv6 через запятую) - MTU (необязательно, по умолчанию 1420) - mKCP MTU (необязательно, по умолчанию 1350) - mKCP TTI (необязательно, по умолчанию 50) - Успешно - Ошибка - Ничего нет - Неправильный протокол - Невозможно декодировать - Выберите профиль - Установите файловый менеджер - Изменить профиль - Неправильный профиль - Данные - В буфере обмена нет данных - Неправильный URL - Не используйте небезопасный HTTP-протокол в адресе подписки - Убедитесь, что входящий порт соответствует настройкам - Профиль повреждён - Узел (SNI) (необязательно) - Это действие запрещено - Пароль obfs - Смена портов (переопределяет порт) - Интервал смены портов - Входящая пропускная способность (допускаются: k/m/g/t) - Исходящая пропускная способность (допускаются: k/m/g/t) - Режим XHTTP - Необработанный JSON XHTTP Extra, формат: { XHTTPObject } - Необработанный JSON FinalMask, формат: { FinalMaskObject } - ECHConfigList - Проверять сертификат узла по имени - Отпечаток сертификата (SHA-256) - Использовать переадресацию браузера - Поддерживаются только исходящие соединения XHTTP (packet-up) и WS; настройки, связанные с TLS, могут быть проигнорированы или конфликтовать - Этот узел использует незашифрованное соединение. Ваши данные могут быть перехвачены и просмотрены государственными структурами через промежуточное сетевое оборудование.\nВ целях безопасности такие узлы больше не поддерживаются ядром Xray версии 26.2.6+.\nДля исправления: включите TLS (или другое шифрование) на своём сервере или используйте отпечаток сертификата (pinnedCA256).\nЕсли вы используете платный сервис, обратитесь в поддержку для обновления. Если провайдер отказывается, рекомендуется сменить его на более безопасный.\nПодробнее: https://github.com/2dust/v2rayN/discussions/9460 - Получить и заполнить отпечаток сертификата - Отпечаток сертификата успешно получен - Отпечаток сертификата не получен + Профиль + Add subscription + Сохранить профиль + Импорт из QR-кода + Импорт из буфера обмена + Импорт из файла + Добавить политику группы + Добавить цепочку прокси + Добавить VMess + Добавить VLESS + Добавить Shadowsocks + Добавить SOCKS + Добавить HTTP + Добавить Trojan + Добавить WireGuard + Добавить Hysteria2 + Удалить все отображаемые профили? + Удалить все отображаемые дубликаты профилей? + Выполните проверку перед удалением! Удалить все отображаемые нерабочие профили? + Удалить этот профиль? + Удалить эту политику группы? + Удалить этого участника цепочки прокси? + Удалить это правило маршрутизации? + Удалить эту подписку? + Удалить файл ресурсов «%1$s»? + Удалить этот источник ресурсов? + Название + Адрес + Порт + ID + Альтернативный ID + Безопасность + Сеть + Транспорт + Тип заголовка + Режим gRPC + Узел + Узел HTTP + Узел WS + Узел HTTPUpgrade + Узел XHTTP + Узел H2 + Шифрование QUIC + Полномочия gRPC + Путь + Путь WS + Путь HTTPUpgrade + Путь XHTTP + Путь H2 + Ключ QUIC + Сид KCP + Служба gRPC + TLS + Отпечаток + ALPN + Разрешать небезопасные соединения + SNI + Адрес + Порт + Пароль + Безопасность + Пароль (необязательно) + Пользователь (необязательно) + Шифрование + Поток + Открытый ключ + Дополнительный ключ шифрования (необязательно) + ShortID + SpiderX + mldsa65Verify + Закрытый ключ + Reserved (необязательно, через запятую) + Локальный адрес (необязательно, IPv4/IPv6 через запятую) + MTU (необязательно, по умолчанию 1420) + mKCP MTU (необязательно, по умолчанию 1350) + mKCP TTI (необязательно, по умолчанию 50) + Успешно + Ошибка + Ничего нет + Неправильный протокол + Невозможно декодировать + Выберите профиль + Установите файловый менеджер + Изменить профиль + Неправильный профиль + Данные + В буфере обмена нет данных + Неправильный URL + Не используйте небезопасный HTTP-протокол в адресе подписки + Убедитесь, что входящий порт соответствует настройкам + Профиль повреждён: %1$s + Узел (SNI) (необязательно) + Это действие запрещено + Пароль obfs + Смена портов (переопределяет порт) + Интервал смены портов + Входящая пропускная способность (допускаются: k/m/g/t) + Исходящая пропускная способность (допускаются: k/m/g/t) + Режим XHTTP + Необработанный JSON XHTTP Extra, формат: { XHTTPObject } + Необработанный JSON FinalMask, формат: { FinalMaskObject } + ECHConfigList + Проверять сертификат узла по имени + Отпечаток сертификата (SHA-256) + Использовать переадресацию браузера + Поддерживаются только исходящие соединения XHTTP (packet-up) и WS; настройки, связанные с TLS, могут быть проигнорированы или конфликтовать + Этот узел использует незашифрованное соединение. Ваши данные могут быть перехвачены и просмотрены государственными структурами через промежуточное сетевое оборудование.\nВ целях безопасности такие узлы больше не поддерживаются ядром Xray версии 26.2.6+.\nДля исправления: включите TLS (или другое шифрование) на своём сервере или используйте отпечаток сертификата (pinnedCA256).\nЕсли вы используете платный сервис, обратитесь в поддержку для обновления. Если провайдер отказывается, рекомендуется сменить его на более безопасный.\nПодробнее: https://github.com/2dust/v2rayN/discussions/9460 + Получить и заполнить отпечаток сертификата + Отпечаток сертификата успешно получен + Отпечаток сертификата не получен - Невозможно скопировать файл, используйте файловый менеджер - Добавить ресурс - Добавить файлы - Добавить URL - Сканировать QR-код - URL - Загрузить файлы - Добавить URL ресурса - Файл не найден - Название уже существует - Источник геофайлов (необязательно) + Невозможно скопировать файл, используйте файловый менеджер + Добавить ресурс + Добавить файлы + Добавить URL + Сканировать QR-код + URL + Загрузить файлы + Добавить URL ресурса + Файл не найден + Название уже существует + Источник геофайлов (необязательно) - Загрузка… - Поиск - Выбрать все - Инвертировать выбор - Введите ключевое слово - Режим обхода - Автовыбор приложений - Загрузка данных - Экспорт в буфер обмена - Импорт из буфера обмена - Выбор приложений - Использовать выбор приложений - Неизвестное приложение (неопознанный UID) + Загрузка… + Поиск + Выбрать все + Инвертировать выбор + Введите ключевое слово + Режим обхода + Автовыбор приложений + Загрузка данных + Экспорт в буфер обмена + Импорт из буфера обмена + Выбор приложений + Использовать выбор приложений + Неизвестное приложение (неопознанный UID) - Настройки - Расширенные настройки - Настройки ядра - Настройки VPN - Прокси для выбранных приложений - Основной: выбранное приложение соединяется через прокси, не выбранное — напрямую;\nРежим обхода: выбранное приложение соединяется напрямую, не выбранное — через прокси.\nЕсть возможность автоматического выбора проксируемых приложений в меню. - Автоподключение при запуске - Автоматически подключаться к выбранному серверу при запуске приложения (может оказаться неудачным) - - - Задача будет выполняться в фоновом режиме, информация о ходе выполнения будет отображаться в уведомлении. - Автопроверка после обновления подписки - Автоматическая проверка занимает значительное время - Автоудаление нерабочих профилей после проверки - Результаты проверки могут быть неточными, восстановление удалённых профилей невозможно - Автосортировка профилей - Автоматическая сортировка профилей после проверки (результаты проверки могут быть неточными) - - Настройки мультиплексирования - Использовать мультиплексирование - Быстрее, но это может привести к нестабильному соединению.\nНиже можно настроить обработку TCP, UDP и QUIC. - TCP-соединения (диапазон от 1 до 1024) - XUDP-соединения (диапазон от 1 до 1024) - Обработка QUIC в мультиплексном туннеле + Настройки + Расширенные настройки + Настройки ядра + Настройки VPN + Прокси для выбранных приложений + Основной: выбранное приложение соединяется через прокси, не выбранное — напрямую;\nРежим обхода: выбранное приложение соединяется напрямую, не выбранное — через прокси.\nЕсть возможность автоматического выбора проксируемых приложений в меню. + Автоподключение при запуске + Автоматически подключаться к выбранному серверу при запуске приложения (может оказаться неудачным) + + + Задача будет выполняться в фоновом режиме, информация о ходе выполнения будет отображаться в уведомлении. + Автопроверка после обновления подписки + Автоматическая проверка занимает значительное время + Автоудаление нерабочих профилей после проверки + Результаты проверки могут быть неточными, восстановление удалённых профилей невозможно + Автосортировка профилей + Автоматическая сортировка профилей после проверки (результаты проверки могут быть неточными) + + Настройки мультиплексирования + Использовать мультиплексирование + Быстрее, но это может привести к нестабильному соединению.\nНиже можно настроить обработку TCP, UDP и QUIC. + TCP-соединения (диапазон от 1 до 1024) + XUDP-соединения (диапазон от 1 до 1024) + Обработка QUIC в мультиплексном туннеле Отклонять Разрешать Пропускать - Показывать скорость - Показывать текущую скорость в уведомлении.\nЗначок будет меняться в зависимости от использования. + Показывать скорость + Показывать текущую скорость в уведомлении.\nЗначок будет меняться в зависимости от использования. - Анализировать пакеты - Пытаться определять доменные имена в пакетах (по умолчанию включено) - Домен только для маршрутизации - Использовать доменное имя только для маршрутизации и сохранять целевой адрес в виде IP. + Анализировать пакеты + Пытаться определять доменные имена в пакетах (по умолчанию включено) + Домен только для маршрутизации + Использовать доменное имя только для маршрутизации и сохранять целевой адрес в виде IP. - Использовать локальную DNS - Обслуживание выполняется DNS-модулем ядра (в настройках маршрутизации рекомендуется выбрать режим «Все, кроме LAN и Китая») + Использовать локальную DNS + Обслуживание выполняется DNS-модулем ядра (в настройках маршрутизации рекомендуется выбрать режим «Все, кроме LAN и Китая») - Использовать поддельную DNS - Локальная DNS возвращает поддельные IP-адреса (быстрее, но может не работать с некоторыми приложениями) + Использовать поддельную DNS + Локальная DNS возвращает поддельные IP-адреса (быстрее, но может не работать с некоторыми приложениями) - Включить IPv6 - Добавить IPv6-адрес и маршруты в VPN-интерфейс + Включить IPv6 + Добавить IPv6-адрес и маршруты в VPN-интерфейс - Предпочитать IPv6 - Предпочитать IPv6-адреса при определении доменных имён + Предпочитать IPv6 + Предпочитать IPv6-адреса при определении доменных имён - Удалённая DNS (UDP/TCP/HTTPS/QUIC) (необязательно) - DNS + Удалённая DNS (UDP/TCP/HTTPS/QUIC) (необязательно) + DNS - VPN DNS (только IPv4/v6) - VPN обходит LAN + VPN DNS (только IPv4/v6) + VPN обходит LAN - Адрес интерфейса VPN + Адрес интерфейса VPN - VPN MTU (по умолчанию 1500) + VPN MTU (по умолчанию 1500) - Внутренняя DNS (необязательно) - DNS + Внутренняя DNS (необязательно) + DNS - Узлы DNS (формат: домен:адрес,…) - домен:адрес,… + Узлы DNS (формат: домен:адрес,…) + домен:адрес,… - Сервис проверки задержки - URL - Параллельная проверка задержки + Сервис проверки задержки + URL + Параллельная проверка задержки - Сервис проверки текущего соединения - URL + Сервис проверки текущего соединения + URL - Разрешать соединения из LAN - Другие устройства могут подключаться, используя ваш IP-адрес, чтобы использовать локальный прокси. Используйте только в доверенной сети, чтобы избежать несанкционированного подключения. - Доступ из LAN разрешён, убедитесь, что вы находитесь в доверенной сети + Разрешать соединения из LAN + Другие устройства могут подключаться, используя ваш IP-адрес, чтобы использовать локальный прокси. Используйте только в доверенной сети, чтобы избежать несанкционированного подключения. + Доступ из LAN разрешён, убедитесь, что вы находитесь в доверенной сети - Порт локального прокси - Использовать локальный прокси - Если отключено, SOCKS-прокси недоступен, поэтому обновления подписки и подобные действия не смогут использовать прокси - SOCKS5 UDP - Аутентификация SOCKS5 не полностью безопасна при использовании UDP - Порт локального прокси - Динамически менять порт локального прокси - Использовать случайный порт локального прокси при каждом создании соединения - Пользователь локального прокси (необязательно) - Имя пользователя - Пароль локального прокси (необязательно) - Пароль + Порт локального прокси + Использовать локальный прокси + Если отключено, SOCKS-прокси недоступен, поэтому обновления подписки и подобные действия не смогут использовать прокси + SOCKS5 UDP + Аутентификация SOCKS5 не полностью безопасна при использовании UDP + Порт локального прокси + Динамически менять порт локального прокси + Использовать случайный порт локального прокси при каждом создании соединения + Пользователь локального прокси (необязательно) + Имя пользователя + Пароль локального прокси (необязательно) + Пароль - Порт локальной DNS - Порт локальной DNS + Порт локальной DNS + Порт локальной DNS - Подтверждать удаление профиля - Обязательное подтверждение удаления профиля + Подтверждать удаление профиля + Обязательное подтверждение удаления профиля - Дополнительный HTTP-прокси - HTTP-прокси будет использоваться напрямую (из браузера и других поддерживающих приложений), минуя виртуальный сетевой адаптер (Android 10+) + Дополнительный HTTP-прокси + HTTP-прокси будет использоваться напрямую (из браузера и других поддерживающих приложений), минуя виртуальный сетевой адаптер (Android 10+) - Профили в два столбца - Список профилей отображается двумя столбцами, что позволяет показать больше информации на экране. + Профили в два столбца + Список профилей отображается двумя столбцами, что позволяет показать больше информации на экране. - Общая вкладка групп - Показывать дополнительную вкладку со всеми профилями групп + Общая вкладка групп + Показывать дополнительную вкладку со всеми профилями групп - Обратная связь - Предложить улучшение или сообщить об ошибке на GitHub - Присоединиться к группе в Telegram - Приложение Telegram не найдено - Политика конфиденциальности - QR-код - О приложении - Исходный код - Лицензии открытого исходного кода - Telegram-канал - - Содействие - - Автоматически обновлять подписки - Автоматическое обновление подписок в фоновом режиме с указанным интервалом. В зависимости от устройства эта функция может работать не всегда. - Интервал автообновления (минут, не менее 15) - - Подробность ведения журнала - Предопределение исходящего домена - Режим - Нажмите для получения дополнительной информации - Язык - Настройки интерфейса - Тема интерфейса - Использовать Hev TUN - Если включено, TUN будет использовать hev-socks5-tunnel; иначе будет использован xray-core - Подробность журнала HevTun - Ожидание чтения/записи HevTun (секунд, по умолчанию TCP,UDP 300,60) - Настройки режима - Использовать root-режим - Низкоуровневое прозрачное проксирование с помощью привилегий root. Этот режим обходит стандартный VPN системы Android, чтобы напрямую управлять всем сетевым трафиком. После включения первоначальный обычный режим, маршрутизация отдельных приложений и связанные с ними настройки VPN станут полностью недействительными. - Для этой функции требуется доступ с правами root - Совместное использование LAN/точки доступа (root) - Маршрутизация точек доступа Wi-Fi и устройств, подключённых к USB, через VPN - - Журнал - Копировать - Очистить - Поделиться журналом - Перезапуск службы - Удалить профили - Удалить дубликаты профилей - Удалить нерабочие профили - Экспорт профилей в буфер обмена - Группы - Название - URL (необязательно) - User Agent - Заголовки запроса (формат JSON) - Название фильтра - Использовать обновление - Использовать автообновление - Разрешать незащищённые HTTP-адреса - Предыдущий профиль прокси - Следующий профиль прокси - Профиль должен быть уникальным - Неправильный интервал обновления. Минимум 15 минут. - Обновить подписку - Проверить профили - Проверить задержку профилей - Файлы ресурсов - Сортировать по результатам теста - Фильтр профилей - Все - Нажмите на экран, чтобы открыть камеру для сканирования - Удалено дубликатов профилей: %d - Удалено профилей: %d - Импортировано профилей: %d - Экспортировано профилей: %d - Обновлено профилей: %d - Обновлено профилей: %1$d (успешно: %2$d, ошибки: %3$d, пропущено: %4$d) - Нет подписок - Выбранный профиль не найден в текущей группе - Фрагмент недоступен - Найти выбранный профиль - - Запуск службы - Подтвердить + Обратная связь + Предложить улучшение или сообщить об ошибке на GitHub + Присоединиться к группе в Telegram + Приложение Telegram не найдено + Политика конфиденциальности + QR-код + О приложении + Исходный код + Лицензии открытого исходного кода + Telegram-канал + + Содействие + + Автоматически обновлять подписки + Автоматическое обновление подписок в фоновом режиме с указанным интервалом. В зависимости от устройства эта функция может работать не всегда. + Интервал автообновления (минут, не менее 15) + + Подробность ведения журнала + Предопределение исходящего домена + Режим + Нажмите для получения дополнительной информации + Язык + Настройки интерфейса + Тема интерфейса + Использовать Hev TUN + Если включено, TUN будет использовать hev-socks5-tunnel; иначе будет использован xray-core + Подробность журнала HevTun + Ожидание чтения/записи HevTun (секунд, по умолчанию TCP,UDP 300,60) + Настройки режима + Использовать root-режим + Низкоуровневое прозрачное проксирование с помощью привилегий root. Этот режим обходит стандартный VPN системы Android, чтобы напрямую управлять всем сетевым трафиком. После включения первоначальный обычный режим, маршрутизация отдельных приложений и связанные с ними настройки VPN станут полностью недействительными. + Для этой функции требуется доступ с правами root + Совместное использование LAN/точки доступа (root) + Маршрутизация точек доступа Wi-Fi и устройств, подключённых к USB, через VPN + + Журнал + Копировать + Очистить + Поделиться журналом + Перезапуск службы + Удалить профили + Удалить дубликаты профилей + Удалить нерабочие профили + Экспорт профилей в буфер обмена + Группы + Название + URL (необязательно) + User Agent + Заголовки запроса (формат JSON) + Название фильтра + Использовать обновление + Использовать автообновление + Разрешать незащищённые HTTP-адреса + Предыдущий профиль прокси + Следующий профиль прокси + Профиль должен быть уникальным + Неправильный интервал обновления. Минимум 15 минут. + Обновить подписку + Проверить профили + Проверить задержку профилей + Файлы ресурсов + Сортировать по результатам теста + Фильтр профилей + Все + Нажмите на экран, чтобы открыть камеру для сканирования + Удалено дубликатов профилей: %d + Удалено профилей: %d + Импортировано профилей: %d + Экспортировано профилей: %d + Обновлено профилей: %d + Обновлено профилей: %1$d (успешно: %2$d, ошибки: %3$d, пропущено: %4$d) + Нет подписок + Выбранный профиль не найден в текущей группе + Фрагмент недоступен + Найти выбранный профиль + + Запуск службы + Подтвердить - Доменная стратегия - Маршрутизация - Через запятую (,)\nЧто-то одно: домен, IP или процесс - Сохранить - Очистить - Настройка правил маршрутизации - Добавить правило - Импорт набора правил - Существующие правила будут удалены. Продолжить? - Импорт правил из буфера обмена - Импорт правил из QR-кода - Экспорт правил в буфер обмена - Постоянное (сохранится при импорте правил) - Домен - IP - Процесс (название пакета; поддерживается только при использовании Xray TUN, включённой функции «Домен только для маршрутизации» и ОС Android 10+) - Выбор названия пакета - Порт - Протокол - [http,tls,bittorrent] - Сеть - Исходящее соединение - - Проверить соединение - Проверка… - Проверка профилей (%d)… - Успешно: соединение заняло %d мс - Сбой проверки интернет-соединения: %s - Интернет недоступен - Код ошибки: #%d - Соединено, нажмите для проверки - Нет соединения - Запущено проверок: %s - - Подписка импортирована - Невозможно импортировать подписку - Настройки фрагментирования - Фрагментирование пакетов - Длина фрагмента (от — до) - Интервал фрагментов (от — до) - Использовать фрагментирование - Максимальное число фрагментов - Настройки наблюдения соединений - Интервал leastPing - Интервал leastLoad - HTTP-метод leastLoad - Выборка leastLoad - Время ожидания leastLoad - Неправильное время. Используйте значение вроде 3m или 30s. - Неправильная выборка. Используйте положительное число. - - Проверить обновление - Установлена последняя версия - Найдена новая версия: %s - Обновить - Искать предварительный выпуск - Проверка обновления… - - Тип политики группы - Из группы подписки - Название фильтра - Проверять исходящие соединения - Резервное исходящее соединение (необязательно) - - Участники цепочки прокси - Нажмите здесь, чтобы выбрать участника - Выбор участника - Выберите участника для каждого звена цепочки - Недостаточно участников - Недопустимые участники цепочки: %1$s + Доменная стратегия + Маршрутизация + Через запятую (,)\nЧто-то одно: домен, IP или процесс + Сохранить + Очистить + Настройка правил маршрутизации + Добавить правило + Импорт набора правил + Существующие правила будут удалены. Продолжить? + Импорт правил из буфера обмена + Импорт правил из QR-кода + Экспорт правил в буфер обмена + Постоянное (сохранится при импорте правил) + Домен + IP + Процесс (название пакета; поддерживается только при использовании Xray TUN, включённой функции «Домен только для маршрутизации» и ОС Android 10+) + Выбор названия пакета + Порт + Протокол + [http,tls,bittorrent] + Сеть + proxy / direct / block / <remarks> + Исходящее соединение + + Проверить соединение + Проверка… + Проверка профилей (%d)… + Успешно: соединение заняло %d мс + Сбой проверки интернет-соединения: %s + Интернет недоступен + Код ошибки: #%d + Соединено, нажмите для проверки + Нет соединения + Запущено проверок: %s + + Подписка импортирована + Невозможно импортировать подписку + Настройки фрагментирования + Фрагментирование пакетов + Длина фрагмента (от — до) + Интервал фрагментов (от — до) + Использовать фрагментирование + Максимальное число фрагментов + Настройки наблюдения соединений + Интервал leastPing + Интервал leastLoad + HTTP-метод leastLoad + Выборка leastLoad + Время ожидания leastLoad + Неправильное время. Используйте значение вроде 3m или 30s. + Неправильная выборка. Используйте положительное число. + + Проверить обновление + Установлена последняя версия + Найдена новая версия: %s + Обновить + Искать предварительный выпуск + Проверка обновления… + + Тип политики группы + Из группы подписки + Название фильтра + Проверять исходящие соединения + Резервное исходящее соединение (необязательно) + + Участники цепочки прокси + Нажмите здесь, чтобы выбрать участника + Выбор участника + Выберите участника для каждого звена цепочки + Недостаточно участников + Недопустимые участники цепочки: %1$s - Резервное копирование - Резервирование конфигурации - Восстановление конфигурации - Поделиться конфигурацией - Настройки WebDAV - Необходимо настроить WebDAV - URL сервера - Пользователь - Пароль - Удалённый путь (необязательно) - - QR-код - Экспорт в буфер обмена - Экспорт конфигурации в буфер обмена - Изменить - Удалить - Закрыть + Резервное копирование + Резервирование конфигурации + Восстановление конфигурации + Поделиться конфигурацией + Настройки WebDAV + Необходимо настроить WebDAV + URL сервера + Пользователь + Пароль + Удалённый путь (необязательно) + + QR-код + Экспорт в буфер обмена + Экспорт конфигурации в буфер обмена + Изменить + Удалить + Закрыть + + No server selected + Failed to decode server config + Failed to build config context + Failed to get V2Ray config + Failed to get V2Ray config: %1$s + Failed to get V2Ray config for speed test: %1$s + Custom config is empty + Core failed to start + + Start + Stop + Back + Поиск + Add + More + Share subscription + Поделиться журналом + Remove + Add member + Start scanner + Stop scanner + Turn torch on + Turn torch off + Select image + Locked + Open menu + Изменить + Удалить + Сохранить + Update subscriptions + Per-app proxy information + Camera + Notification + Local network + %1$s insecure + Updating %1$s + %1$s in %2$s + Start %1$s + Stop %1$s + empty message + unknown QR-код diff --git a/V2rayNG/app/src/main/res/values-vi/strings.xml b/V2rayNG/app/src/main/res/values-vi/strings.xml index 8861112178..852993ba34 100644 --- a/V2rayNG/app/src/main/res/values-vi/strings.xml +++ b/V2rayNG/app/src/main/res/values-vi/strings.xml @@ -1,428 +1,488 @@ - Kết nối ngay - Kết nối ngay - Vui lòng thêm một cấu hình vào v2rayNG để sử dụng! - Mở Menu ứng dụng - Đóng Menu ứng dụng - Đã chuyển dữ liệu! - Stop service - Không thể chuyển dữ liệu! - Please pull down to refresh! + v2rayNG + Kết nối ngay + Kết nối ngay + Vui lòng thêm một cấu hình vào v2rayNG để sử dụng! + Mở Menu ứng dụng + Đóng Menu ứng dụng + Đã chuyển dữ liệu! + Stop service + Không thể chuyển dữ liệu! + Refresh - Ngắt kết nối v2rayNG - Vui lòng cấp quyền cần thiết cho v2rayNG! Bạn đã từ chối các quyền cần thiết như Camera hay Bộ nhớ? - Unable to obtain the notification permission - Nhấn để biết thêm... - Đang khởi động v2rayNG... - Đã dừng v2rayNG! - Đã khởi động v2rayNG! - Không thể khởi động v2rayNG, kiểm tra lại cấu hình! + Ngắt kết nối v2rayNG + Vui lòng cấp quyền cần thiết cho v2rayNG! Bạn đã từ chối các quyền cần thiết như Camera hay Bộ nhớ? + Unable to obtain the notification permission + Unable to obtain permission: %1$s + Nhấn để biết thêm... + Đang khởi động v2rayNG... + Đã dừng v2rayNG! + Đã khởi động v2rayNG! + Không thể khởi động v2rayNG, kiểm tra lại cấu hình! - v2rayNG - Thêm cấu hình - Lưu cấu hình - Edit configuration - Xoá cấu hình - Nhập cấu hình từ mã QR - Nhập cấu hình từ Clipboard - Import config from locally - Add [Policy group] - Add [Proxy chain] - Nhập thủ công [VMess] - Nhập thủ công [VLESS] - Nhập thủ công [ShadowSocks] - Nhập thủ công [SOCKS] - Type manually[HTTP] - Nhập thủ công [Trojan] - Nhập thủ công [WireGuard] - Type manually[Hysteria2] - Bạn có chắc muốn xóa tất cả cấu hình đang hiển thị không? - Bạn có chắc muốn xóa tất cả cấu hình trùng lặp đang hiển thị không? - Vui lòng kiểm tra các cấu hình trước. Bạn có chắc muốn xóa tất cả cấu hình không hợp lệ đang hiển thị không? - Bạn có chắc muốn xóa cấu hình này không? - Bạn có chắc muốn xóa nhóm chính sách này không? - Bạn có chắc muốn xóa thành viên này khỏi chuỗi proxy không? - Bạn có chắc muốn xóa quy tắc định tuyến này không? - Bạn có chắc muốn xóa nhóm đăng ký này không? - Bạn có chắc muốn xóa tệp tài nguyên \"%1$s\" không? - Bạn có chắc muốn xóa nguồn tài nguyên này không? - Tên cấu hình - Địa chỉ - Cổng - ID - ID bổ sung (AlterID) - Thuật toán mã hóa - Giao thức truyền tải (Network) - Nâng cao - Kiểu ngụy trang (Type) - Chế độ gRPC - host - http host - ws host - httpupgrade host - xhttp host - h2 host - QUIC security - gRPC Authority - path - ws path - httpupgrade path - xhttp path - h2 path - QUIC key - kcp seed - gRPC serviceName - TLS - Fingerprint - Alpn - Bỏ qua xác minh chứng chỉ - SNI - Địa chỉ - Cổng - Mật khẩu - Thuật toán mã hóa - Mật khẩu (Không bắt buộc) - Tên người dùng (Không bắt buộc) - Mã hóa - Kiểm soát lưu lượng (Flow) - PublicKey - PreSharedKey(optional) - ShortId - SpiderX - Mldsa65Verify - SecretKey - Reserved (Không bắt buộc) - Địa chỉ cục bộ (IPv4 / IPv6, phân cách bằng dấu phẩy) - MTU (Không bắt buộc, mặc định là 1420) - mKCP MTU (Không bắt buộc, mặc định core là 1350) - mKCP TTI (Không bắt buộc, mặc định core là 50) - Thành công! - Đã xảy ra lỗi, vui lòng thử lại! - Không có gì ở đây! - Protocol không đúng! - Không thể giải mã! - Vui lòng chọn tệp cấu hình! - Vui lòng cài đặt trình quản lý tệp để tiếp tục! - Cấu hình tùy chỉnh - Cấu hình không hợp lệ! - Nội dung - Không có dữ liệu nào trong Clipboard! - URL không hợp lệ hoặc trống! - Please do not use the insecure HTTP protocol subscription address - Vui lòng đảm bảo cấu hình tùy chỉnh này không bị lỗi trước khi sử dụng! - Cấu hình không hợp lệ! - Host (SNI) (Không bắt buộc) - Hành động này bị cấm! - Obfs password - Port Hopping - Port Hopping Interval - Bandwidth down (Supported units: k/m/g/t) - Bandwidth up (Supported units: k/m/g/t) - XHTTP Mode - XHTTP Extra raw JSON, format: { XHTTPObject } - finalMask raw JSON, format: { FinalMaskObject } - EchConfigList - Verify Peer Cert By Name - Certificate fingerprint (SHA-256) - Fetch and fill certificate fingerprint - Certificate fingerprint fetched successfully - Failed to fetch certificate fingerprint + v2rayNG + Add subscription + Lưu cấu hình + Nhập cấu hình từ mã QR + Nhập cấu hình từ Clipboard + Import config from locally + Add [Policy group] + Add [Proxy chain] + Nhập thủ công [VMess] + Nhập thủ công [VLESS] + Nhập thủ công [ShadowSocks] + Nhập thủ công [SOCKS] + Type manually[HTTP] + Nhập thủ công [Trojan] + Nhập thủ công [WireGuard] + Type manually[Hysteria2] + Bạn có chắc muốn xóa tất cả cấu hình đang hiển thị không? + Bạn có chắc muốn xóa tất cả cấu hình trùng lặp đang hiển thị không? + Vui lòng kiểm tra các cấu hình trước. Bạn có chắc muốn xóa tất cả cấu hình không hợp lệ đang hiển thị không? + Bạn có chắc muốn xóa cấu hình này không? + Bạn có chắc muốn xóa nhóm chính sách này không? + Bạn có chắc muốn xóa thành viên này khỏi chuỗi proxy không? + Bạn có chắc muốn xóa quy tắc định tuyến này không? + Bạn có chắc muốn xóa nhóm đăng ký này không? + Bạn có chắc muốn xóa tệp tài nguyên \"%1$s\" không? + Bạn có chắc muốn xóa nguồn tài nguyên này không? + Tên cấu hình + Địa chỉ + Cổng + ID + ID bổ sung (AlterID) + Thuật toán mã hóa + Giao thức truyền tải (Network) + Nâng cao + Kiểu ngụy trang (Type) + Chế độ gRPC + host + http host + ws host + httpupgrade host + xhttp host + h2 host + QUIC security + gRPC Authority + path + ws path + httpupgrade path + xhttp path + h2 path + QUIC key + kcp seed + gRPC serviceName + TLS + Fingerprint + Alpn + Bỏ qua xác minh chứng chỉ + SNI + Địa chỉ + Cổng + Mật khẩu + Thuật toán mã hóa + Mật khẩu (Không bắt buộc) + Tên người dùng (Không bắt buộc) + Mã hóa + Kiểm soát lưu lượng (Flow) + PublicKey + PreSharedKey(optional) + ShortId + SpiderX + Mldsa65Verify + SecretKey + Reserved (Không bắt buộc) + Địa chỉ cục bộ (IPv4 / IPv6, phân cách bằng dấu phẩy) + MTU (Không bắt buộc, mặc định là 1420) + mKCP MTU (Không bắt buộc, mặc định core là 1350) + mKCP TTI (Không bắt buộc, mặc định core là 50) + Thành công! + Đã xảy ra lỗi, vui lòng thử lại! + Không có gì ở đây! + Protocol không đúng! + Không thể giải mã! + Vui lòng chọn tệp cấu hình! + Vui lòng cài đặt trình quản lý tệp để tiếp tục! + Cấu hình tùy chỉnh + Cấu hình không hợp lệ! + Nội dung + Không có dữ liệu nào trong Clipboard! + URL không hợp lệ hoặc trống! + Please do not use the insecure HTTP protocol subscription address + Vui lòng đảm bảo cấu hình tùy chỉnh này không bị lỗi trước khi sử dụng! + Cấu hình không hợp lệ!: %1$s + Host (SNI) (Không bắt buộc) + Hành động này bị cấm! + Obfs password + Port Hopping + Port Hopping Interval + Bandwidth down (Supported units: k/m/g/t) + Bandwidth up (Supported units: k/m/g/t) + XHTTP Mode + XHTTP Extra raw JSON, format: { XHTTPObject } + finalMask raw JSON, format: { FinalMaskObject } + EchConfigList + Verify Peer Cert By Name + Certificate fingerprint (SHA-256) + Enable Browser Dialer + Only supports xhttp (packet-up) and ws outbound; TLS-related settings may be ignored or conflict + Current node uses an unencrypted connection. Your communication may be directly viewed by network intermediate facilities controlled by authoritarian governments.\nFor security reasons, such nodes cannot be connected via Xray core version 26.2.6+.\nIf it is a self-built node, please enable security encryption such as TLS, or pin the certificate pinnedCA256.\nIf it is a provider node, please contact the service provider to complete the technical upgrade. If the service provider refuses to cooperate, it is recommended to switch to a provider that pays more attention to user security.\nFor more information, please visit https://github.com/2dust/v2rayN/discussions/9460 + Fetch and fill certificate fingerprint + Certificate fingerprint fetched successfully + Failed to fetch certificate fingerprint - Không thể sao chép tệp tin, hãy dùng trình quản lý tệp! - Thêm tệp - Quét mã QR - URL - Tải xuống tệp tin - Thêm URL nội dung - Không tìm thấy tập tin! - Nhận xét đã tồn tại! - Geo files source (optional) + Không thể sao chép tệp tin, hãy dùng trình quản lý tệp! + Thêm vào + Thêm tệp + Thêm liên kết + Quét mã QR + URL + Tải xuống tệp tin + Thêm URL nội dung + Không tìm thấy tập tin! + Nhận xét đã tồn tại! + Geo files source (optional) - Đang tải... - Tìm kiếm - Chọn tất cả - Đảo chọn - Nhập từ khoá - Chế độ Bypass - Tự động chọn ứng dụng Proxy - Đang tải xuống nội dung... - Xuất và Sao chép - Nhập từ Clipboard - Per-app settings - Enable per-app - + Đang tải... + Tìm kiếm + Chọn tất cả + Đảo chọn + Nhập từ khoá + Chế độ Bypass + Tự động chọn ứng dụng Proxy + Đang tải xuống nội dung... + Xuất và Sao chép + Nhập từ Clipboard + Per-app settings + Enable per-app + Unknown app (unidentified UID) - Cài đặt - Cài đặt nâng cao - Cài đặt lõi - Cài đặt VPN - Proxy theo Ứng dụng - - Bình thường: Ứng dụng đã chọn sẽ kết nối thông qua Proxy, chưa chọn sẽ kết nối trực tiếp. \n- Chế độ Bypass: Ứng dụng đã chọn sẽ kết nối trực tiếp, chưa chọn sẽ kết nối qua Proxy. \n- Nếu bạn đang ở Trung Quốc thì vào Menu, chọn Tự động chọn ứng dụng Proxy. - Auto connect at startup - Automatically connects to the selected server at startup, which may be unsuccessful - - Auto delete invalid config after testing - Test results may not be accurate; deleted config cannot be recovered. - Auto sort after testing - Test results may not be accurate; - - Cài đặt Mux - Bật Mux - Giảm độ trễ nhưng có thể làm gián đoạn luồng, vì vậy không nên kích hoạt nó. \nCác phương pháp xử lý lưu lượng truy cập TCP, UDP và QUIC có sẵn bên dưới. - Số lượng liên kết con tái sử dụng TCP (-1 đến 1024) - Số lượng liên kết con tái sử dụng XUDP (-1 đến 1024) - Phương pháp xử lý lưu lượng QUIC + Cài đặt + Cài đặt nâng cao + Cài đặt lõi + Cài đặt VPN + Proxy theo Ứng dụng + - Bình thường: Ứng dụng đã chọn sẽ kết nối thông qua Proxy, chưa chọn sẽ kết nối trực tiếp. \n- Chế độ Bypass: Ứng dụng đã chọn sẽ kết nối trực tiếp, chưa chọn sẽ kết nối qua Proxy. \n- Nếu bạn đang ở Trung Quốc thì vào Menu, chọn Tự động chọn ứng dụng Proxy. + Auto connect at startup + Automatically connects to the selected server at startup, which may be unsuccessful + + + The task will run in the background, and progress information will be displayed in the notification. + Auto test after updating subscription + Automated testing takes a long time. If enabled, the task will run in the background; otherwise, it will run on the current page. + Auto delete invalid config after testing + Test results may not be accurate; deleted config cannot be recovered. + Auto sort after testing + Test results may not be accurate; + + Cài đặt Mux + Bật Mux + Giảm độ trễ nhưng có thể làm gián đoạn luồng, vì vậy không nên kích hoạt nó. \nCác phương pháp xử lý lưu lượng truy cập TCP, UDP và QUIC có sẵn bên dưới. + Số lượng liên kết con tái sử dụng TCP (-1 đến 1024) + Số lượng liên kết con tái sử dụng XUDP (-1 đến 1024) + Phương pháp xử lý lưu lượng QUIC Từ chối Cho phép Bỏ qua + Hiển thị tốc độ mạng + Hiển thị tốc độ mạng hiện tại trên thanh thông báo. \nBiểu tượng trên thanh trạng thái có thể thay đổi tùy vào mức sử dụng. + + Bật Sniffing + Phát hiện tên miền từ lưu lượng truy cập (Được bật theo mặc định). \nỞ Việt Nam: tắt để sử dụng Zalo. + Bật RouteOnly + Chỉ sử dụng tên miền được đánh dấu để định tuyến và giữ địa chỉ đích làm địa chỉ IP. - Hiển thị tốc độ mạng - Hiển thị tốc độ mạng hiện tại trên thanh thông báo. \nBiểu tượng trên thanh trạng thái có thể thay đổi tùy vào mức sử dụng. + Bật Local DNS + DNS được xử lý bởi module DNS của Xray-Core (Dùng nếu cần định tuyến Bypass cho mạng LAN và Địa chỉ nội địa). - Bật Sniffing - Phát hiện tên miền từ lưu lượng truy cập (Được bật theo mặc định). \nỞ Việt Nam: tắt để sử dụng Zalo. - Bật RouteOnly - Chỉ sử dụng tên miền được đánh dấu để định tuyến và giữ địa chỉ đích làm địa chỉ IP. + Bật FakeDNS + FakeDNS lấy tên miền mục tiêu bằng cách giả mạo DNS (Nhanh hơn, nhưng có thể không hoạt động cho một số ứng dụng). + Bật IPv6 + Thêm địa chỉ và tuyến IPv6 vào giao diện VPN - Bật Local DNS - DNS được xử lý bởi module DNS của Xray-Core (Dùng nếu cần định tuyến Bypass cho mạng LAN và Địa chỉ nội địa). + Ưu tiên IPv6 + Ưu tiên địa chỉ IPv6 khi phân giải tên miền - Bật FakeDNS - FakeDNS lấy tên miền mục tiêu bằng cách giả mạo DNS (Nhanh hơn, nhưng có thể không hoạt động cho một số ứng dụng). + DNS ngoại quốc (UDP / TCP / HTTPS / QUIC) (Không bắt buộc) + DNS - Bật IPv6 - Thêm địa chỉ và tuyến IPv6 vào giao diện VPN + VPN DNS (Chỉ IPv4 / IPv6) + Does VPN bypass LAN - Ưu tiên IPv6 - Ưu tiên địa chỉ IPv6 khi phân giải tên miền + VPN Interface Address - DNS ngoại quốc (UDP / TCP / HTTPS / QUIC) (Không bắt buộc) - DNS + VPN MTU (default 1500) - VPN DNS (Chỉ IPv4 / IPv6) - Does VPN bypass LAN - VPN Interface Address - VPN MTU (default 1500) + DNS nội địa (Không bắt buộc) + DNS - DNS nội địa (Không bắt buộc) - DNS + DNS hosts (Format: domain:address,…) + domain:address,… - DNS hosts (Format: domain:address,…) - domain:address,… + URL kiểm tra độ trễ thực + URL + Số luồng kiểm tra độ trễ thực - URL kiểm tra độ trễ thực - URL - Số luồng kiểm tra độ trễ thực + Current connection info test url + Url - Current connection info test url - Url + Cho phép kết nối từ mạng LAN + Các thiết bị khác trong cùng mạng LAN có thể kết nối đến SOCKS / HTTP proxy trên thiết bị của bạn. \nChỉ bật tính năng này trong các mạng đáng tin cậy để tránh kết nối trái phép. + Đang bật cho phép kết nối từ mạng LAN - Cho phép kết nối từ mạng LAN - Các thiết bị khác trong cùng mạng LAN có thể kết nối đến SOCKS / HTTP proxy trên thiết bị của bạn. \nChỉ bật tính năng này trong các mạng đáng tin cậy để tránh kết nối trái phép. - Đang bật cho phép kết nối từ mạng LAN + Cổng Proxy Local + Bật proxy cục bộ + When disabled, no SOCKS proxy is available, so subscription updates and similar actions cannot use the proxy + SOCKS5 UDP + Xác thực socks5 không hoàn toàn an toàn khi sử dụng UDP + Cổng Proxy Local + Enable dynamic local proxy port + Generate a random local proxy port each time the inbound is created + Tên người dùng Proxy Local (Không bắt buộc) + Tên người dùng + Mật khẩu Proxy Local (Không bắt buộc) + Mật khẩu - Cổng Proxy Local - Bật proxy cục bộ - When disabled, no SOCKS proxy is available, so subscription updates and similar actions cannot use the proxy - SOCKS5 UDP - Xác thực socks5 không hoàn toàn an toàn khi sử dụng UDP - Cổng Proxy Local - Enable dynamic local proxy port - Generate a random local proxy port each time the inbound is created - Tên người dùng Proxy Local (Không bắt buộc) - Tên người dùng - Mật khẩu Proxy Local (Không bắt buộc) - Mật khẩu + Cổng Local DNS + Cổng Local DNS - Cổng Local DNS - Cổng Local DNS + Xác nhận xóa tệp cấu hình + Yêu cầu xác nhận từ người dùng khi thực hiện xóa tệp cấu hình. - Xác nhận xóa tệp cấu hình - Yêu cầu xác nhận từ người dùng khi thực hiện xóa tệp cấu hình. + Append HTTP Proxy to VPN + HTTP proxy will be used directly from (browser/ some supported apps), without going through the virtual NIC device (Android 10+) - Append HTTP Proxy to VPN - HTTP proxy will be used directly from (browser/ some supported apps), without going through the virtual NIC device (Android 10+) + Enable double column display + The profile list is displayed in double columns, allowing more content to be displayed on the screen. - Enable double column display - The profile list is displayed in double columns, allowing more content to be displayed on the screen. + Enable show all groups + Add an extra "All Tabs" page - Enable show all groups - Add an extra "All Tabs" page - Phản hồi lỗi - Phản hồi cải tiến hoặc lỗi lên GitHub - Tham gia nhóm Telegram - Không tìm thấy ứng dụng Telegram! - - Chính sách bảo mật - Mã QR - Giới thiệu - Mã nguồn - Open Source licenses - Kênh Telegram - Quảng bá server - - Tự động cập nhật các gói đăng ký - Tự động cập nhật các gói đăng ký của bạn ở trong nền với khoảng thời gian cố định. Tùy thiết bị, tính năng này có thể không luôn hoạt động đúng như mong đợi. - Thời gian cập nhật tự động (Phút, giá trị tối thiểu là 15) - - Cấp độ nhật ký - Outbound domain pre-resolve method - Chế độ kết nối - Nhấn vào đây nếu bạn cần trợ giúp! - Ngôn ngữ - Cài đặt UI - Cài đặt chế độ UI - Enable Hev TUN Feature - When enabled, TUN will use hev-socks5-tunnel; otherwise, it will use xray-core. - Hev Tun Log Level - Hev Tun read/write timeout (seconds) (tcp,udp default 300,60) - - Logcat - Sao chép - Xoá - Chia sẻ nhật ký - Khởi động lại dịch vụ lõi - Xoá tất cả cấu hình - Xoá cấu hình trùng lặp - Xoá cấu hình lỗi - Xuất và Sao chép tất cả cấu hình - Các gói đăng ký - Tên gói đăng ký - URL gói đăng ký - User Agent - Remarks regular filter - Sử dụng gói đăng ký này - Bật tự động cập nhật - Allow insecure HTTP address - Previous proxy configuration remarks - Next proxy configuration remarks - The configuration remarks exists and is unique - Khoảng thời gian cập nhật không hợp lệ. Giá trị tối thiểu là 15 phút. - Cập nhật các gói đăng ký - Ping tất cả máy chủ - Kiểm tra HTTP tất cả máy chủ - Asset files - Sắp xếp lại theo lần kiểm tra cuối cùng - Lọc cấu hình theo các gói đăng ký - All - Xoá %d cấu hình trùng lặp - Click screen open the camera scan - - Delete %d configurations - Import %d configurations - Export %d configurations - Update %d configurations - Updated %1$d configs (%2$d success, %3$d failed, %4$d skipped) - No subscriptions - Selected server not found in current group - Unable to locate current view - Locate the selected config - - Khởi động v2rayNG - Xác nhận + Phản hồi lỗi + Phản hồi cải tiến hoặc lỗi lên GitHub + Tham gia nhóm Telegram + Không tìm thấy ứng dụng Telegram! + Chính sách bảo mật + Mã QR + Giới thiệu + Mã nguồn + Open Source licenses + Kênh Telegram + + Quảng bá server + + Tự động cập nhật các gói đăng ký + Tự động cập nhật các gói đăng ký của bạn ở trong nền với khoảng thời gian cố định. Tùy thiết bị, tính năng này có thể không luôn hoạt động đúng như mong đợi. + Thời gian cập nhật tự động (Phút, giá trị tối thiểu là 15) + + Cấp độ nhật ký + Outbound domain pre-resolve method + Chế độ kết nối + Nhấn vào đây nếu bạn cần trợ giúp! + Ngôn ngữ + Cài đặt UI + Cài đặt chế độ UI + Enable Hev TUN Feature + When enabled, TUN will use hev-socks5-tunnel; otherwise, it will use xray-core. + Hev Tun Log Level + Hev Tun read/write timeout (seconds) (tcp,udp default 300,60) + Mode Settings + Root mode enabled (Root Users) + Enable low-level transparent proxying via root privileges. This mode bypasses the standard Android system VPN to directly take over all underlying network traffic. Once enabled, the original regular mode, per-app routing, and related VPN settings will become completely invalid. + Root access is required for this feature + LAN / tethering sharing (Root Users) + Route Wi-Fi hotspot and USB-tethered devices through the VPN + + Logcat + Sao chép + Xoá + Chia sẻ nhật ký + Khởi động lại dịch vụ lõi + Xoá tất cả cấu hình + Xoá cấu hình trùng lặp + Xoá cấu hình lỗi + Xuất và Sao chép tất cả cấu hình + Các gói đăng ký + Tên gói đăng ký + URL gói đăng ký + User Agent + Request Headers (JSON format) + Remarks regular filter + Sử dụng gói đăng ký này + Bật tự động cập nhật + Allow insecure HTTP address + Previous proxy configuration remarks + Next proxy configuration remarks + The configuration remarks exists and is unique + Khoảng thời gian cập nhật không hợp lệ. Giá trị tối thiểu là 15 phút. + Cập nhật các gói đăng ký + Ping tất cả máy chủ + Kiểm tra HTTP tất cả máy chủ + Asset files + Sắp xếp lại theo lần kiểm tra cuối cùng + Lọc cấu hình theo các gói đăng ký + All + Click screen open the camera scan + Xoá %d cấu hình trùng lặp + Delete %d configurations + Import %d configurations + Export %d configurations + Update %d configurations + Updated %1$d configs (%2$d success, %3$d failed, %4$d skipped) + No subscriptions + Selected server not found in current group + Unable to locate current view + Locate the selected config + + Khởi động v2rayNG + Xác nhận - Chiến lược tên miền (DomainStrategy) - Cài đặt định tuyến - Phân cách bằng dấu phẩy (,). Chọn một trong: domain, ip hoặc process - Lưu lại - Xoá - Routing Rule Settings - Add rule - Nhập các bộ quy tắc được xác định trước - Existing rulesets will be deleted, are you sure to continue? - Import ruleset from clipboard - Nhập bộ quy tắc từ QRcode - Export ruleset to clipboard - Locked, keep this rule when import presets - domain - ip - process (Package Name — only supported when using Xray TUN, routeOnly enabled, and Android 10+) - port - protocol - [http,tls,bittorrent] - network - outboundTag - - Kiểm tra kết nối - Đang kiểm tra kết nối mạng... - Testing %d configurations… - Kiểm tra thành công: thời gian truy cập Google là %d ms - Lỗi kết nối mạng, hãy thử đổi cấu hình hoặc kiểm tra lại! Mã lỗi: %s - Không có kết nối mạng! - Mã lỗi: #%d - Đã kết nối, nhấn để kiểm tra kết nối mạng! - Chưa kết nối - Number of running test tasks: %s - - Nhập gói đăng ký thành công! - Nhập gói đăng ký không thành công! - - Fragment Settings - Fragment Packets - Fragment Length (min-max) - Fragment Interval (min-max) - Enable Fragment - Fragment Max Split - Cài đặt giám sát kết nối - Khoảng thời gian leastPing - Khoảng thời gian leastLoad - Phương thức HTTP leastLoad - Lấy mẫu leastLoad - Thời gian chờ leastLoad - Khoảng thời gian không hợp lệ. Dùng giá trị như 3m hoặc 30s. - Lấy mẫu không hợp lệ. Dùng một số dương. - - Check for update - Already on the latest version - New version found: %s - Update now - Check Pre-release - Checking for update… - - Policy group type - From subscription group - Remarks regular filter - Kiểm tra outbound - Outbound dự phòng (tùy chọn) - Proxy chain members - Tap here to pick member - Select a member - Please select member for each chain row - Insufficient members - Invalid chain members: %1$s + Chiến lược tên miền (DomainStrategy) + Cài đặt định tuyến + Phân cách bằng dấu phẩy (,). Chọn một trong: domain, ip hoặc process + Lưu lại + Xoá + Routing Rule Settings + Add rule + Nhập các bộ quy tắc được xác định trước + Existing rulesets will be deleted, are you sure to continue? + Import ruleset from clipboard + Nhập bộ quy tắc từ QRcode + Export ruleset to clipboard + Locked, keep this rule when import presets + domain + ip + process (Package Name — only supported when using Xray TUN, routeOnly enabled, and Android 10+) + Select package name + port + protocol + [http,tls,bittorrent] + network + proxy / direct / block / <remarks> + outboundTag + + Kiểm tra kết nối + Đang kiểm tra kết nối mạng... + Testing %d configurations… + Kiểm tra thành công: thời gian truy cập Google là %d ms + Lỗi kết nối mạng, hãy thử đổi cấu hình hoặc kiểm tra lại! Mã lỗi: %s + Không có kết nối mạng! + Mã lỗi: #%d + Đã kết nối, nhấn để kiểm tra kết nối mạng! + Chưa kết nối + Number of running test tasks: %s + + Nhập gói đăng ký thành công! + Nhập gói đăng ký không thành công! + Fragment Settings + Fragment Packets + Fragment Length (min-max) + Fragment Interval (min-max) + Enable Fragment + Fragment Max Split + Cài đặt giám sát kết nối + Khoảng thời gian leastPing + Khoảng thời gian leastLoad + Phương thức HTTP leastLoad + Lấy mẫu leastLoad + Thời gian chờ leastLoad + Khoảng thời gian không hợp lệ. Dùng giá trị như 3m hoặc 30s. + Lấy mẫu không hợp lệ. Dùng một số dương. + + Check for update + Already on the latest version + New version found: %s + Update now + Check Pre-release + Checking for update… + + Policy group type + From subscription group + Remarks regular filter + Kiểm tra outbound + Outbound dự phòng (tùy chọn) + + Proxy chain members + Tap here to pick member + Select a member + Please select member for each chain row + Insufficient members + Invalid chain members: %1$s - Backup & Restore - Sao lưu cấu hình - Khôi phục cấu hình - Chia sẻ cấu hình - WebDAV Settings - Please configure WebDAV first. - WebDAV server URL - Username - Password - Remote directory (optional) - - Xuất ra mã QR (Chụp màn hình để lưu) - Sao chép vào Clipboard - Sao chép thành cấu hình tùy chỉnh - Chỉnh sửa - Xoá - Đóng + Backup & Restore + Sao lưu cấu hình + Khôi phục cấu hình + Chia sẻ cấu hình + WebDAV Settings + Please configure WebDAV first. + WebDAV server URL + Username + Password + Remote directory (optional) + + Xuất ra mã QR (Chụp màn hình để lưu) + Sao chép vào Clipboard + Sao chép thành cấu hình tùy chỉnh + Chỉnh sửa + Xoá + Đóng + + No server selected + Failed to decode server config + Failed to build config context + Failed to get V2Ray config + Failed to get V2Ray config: %1$s + Failed to get V2Ray config for speed test: %1$s + Custom config is empty + Core failed to start + + Start + Stop + Back + Tìm kiếm + Add + More + Share subscription + Chia sẻ nhật ký + Remove + Add member + Start scanner + Stop scanner + Turn torch on + Turn torch off + Select image + Locked + Open menu + Chỉnh sửa + Xoá + Lưu lại + Update subscriptions + Per-app proxy information + Camera + Notification + Local network + %1$s insecure + Updating %1$s + %1$s in %2$s + Start %1$s + Stop %1$s + empty message + unknown Xuất gói ra mã QR (Chụp màn hình để lưu) @@ -433,14 +493,27 @@ Chế độ VPN Chế độ Proxy - Thêm vào - Thêm liên kết + + + Disable + OkHttp + WebView + Theo hệ thống Sáng Tối + + + China Whitelist + China Blacklist + Global + Iran Whitelist + Russia Whitelist + + Follow config Bypass @@ -452,6 +525,7 @@ Resolve and add to DNS Hosts Resolve and replace domain + Least Ping Least Load diff --git a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml index 94a96249c1..fa8d421bd3 100644 --- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml @@ -1,442 +1,488 @@ - 开关 - 开关 - 初次使用此功能请先用 APP 添加配置 - 打开导航栏 - 关闭导航栏 - 数据迁移成功! - 停止服务 - 数据迁移失败啦! - 请下拉刷新! + v2rayNG + 开关 + 开关 + 初次使用此功能请先用 APP 添加配置 + 打开导航栏 + 关闭导航栏 + 数据迁移成功! + 停止服务 + 数据迁移失败啦! + Refresh - 停止 - 无法取得权限 - 无法取得通知权限 - 点击了解更多 - 启动服务 - 关闭服务 - 启动服务成功 - 启动服务失败 + 停止 + 无法取得权限 + 无法取得通知权限 + Unable to obtain permission: %1$s + 点击了解更多 + 启动服务 + 关闭服务 + 启动服务成功 + 启动服务失败 - 配置项 - 添加配置 - 保存配置 - 编辑配置 - 删除配置 - 扫描二维码 - 从剪贴板导入 - 从本地导入 - 添加 [策略组] - 添加 [链式代理] - 添加 [VMess] - 添加 [VLESS] - 添加 [Shadowsocks] - 添加 [SOCKS] - 添加 [HTTP] - 添加 [Trojan] - 添加 [Wireguard] - 添加 [Hysteria2] - 确定要删除当前显示的所有配置吗? - 确定要删除当前显示的所有重复配置吗? - 请先测试配置。确定要删除当前显示的所有无效配置吗? - 确定要删除此配置吗? - 确定要删除此策略组吗? - 确定要删除此代理链成员吗? - 确定要删除此路由规则吗? - 确定要删除此订阅组吗? - 确定要删除资源文件“%1$s”吗? - 确定要删除此资源来源吗? - 别名 (remarks) - 地址 (address) - 端口 (port) - 用户 ID (id) - 额外 ID (alterId) - 加密方式 (security) - 传输协议 (network) - 底层传输方式 (transport) - 伪装类型 (type) - gRPC 传输模式 (mode) - 伪装域名 (host) - http host - ws host - httpupgrade host - xhttp host - h2 host - QUIC 加密方式 - gRPC Authority - path - ws path - httpupgrade path - xhttp path - h2 path - QUIC 加密密钥 - kcp seed - gRPC serviceName - 传输层安全 (TLS) - Fingerprint - Alpn - 跳过证书验证 (allowInsecure) - SNI - 服务器地址 - 服务器端口 - 密码 - 加密方式 - 密码 (可选) - 用户名 (可选) - 加密方式 (encryption) - 流控 (flow) - PublicKey - PreSharedKey (optional) - ShortId - SpiderX - Mldsa65Verify - SecretKey - Reserved (可选,逗号隔开) - 本地地址 (可选 IPv4/IPv6,逗号隔开) - Mtu (可选, 默认 1420) - mKCP MTU (可选, 默认 1350) - mKCP TTI (可选, 默认 50) - 成功 - 失败 - 没有数据 - 不正确的协议 - 解码失败 - 选择一个配置 - 请安装一个文件管理器 - 自定义配置 - 无效的配置 - 内容 - 剪贴板中没有数据 - 无效的网址 - 请不要使用不安全的 HTTP 协议订阅地址 - 确保 inbounds port 和设置中的一致 - 配置格式错误 - Host (SNI) (可选) - 禁止此项操作 - 混淆密码 - 跳跃端口 (会覆盖服务器端口) - 端口跳跃间隔 (秒) - 带宽下行 (支持的单位 k/m/g/t) - 带宽上行 (支持的单位 k/m/g/t) - XHTTP 模式 - XHTTP Extra 原始 JSON,格式: { XHTTPObject } - FinalMask 原始 JSON 格式: { FinalMaskObject } - EchConfigList - Verify Peer Cert By Name - 证书指纹 (SHA-256) - 启用浏览器转发 - 仅支持 xhttp (packet-up) 和 ws。与优选域名冲突,utls, alpn, ech 等 TLS 设置将被忽略 - 当前节点使用未加密连接,您的通信可能会被威权政府掌控的网络中间设施直接查看\n为了安全,此类节点无法通过 26.2.6+ 版本的 Xray 核心连接\n如果是自建节点请启用 TLS 等安全加密,或固定证书 pinnedCA256\n如果机场节点请联系服务商完成技术升级,如服务商拒绝配合,建议更换更重视用户安全的服务商\n更多的信息,请访问 https://github.com/2dust/v2rayN/discussions/9460 - 获取并填充指纹证书 - 获取指纹证书完成 - 获取证书指纹失败 + 配置项 + Add subscription + 保存配置 + 扫描二维码 + 从剪贴板导入 + 从本地导入 + 添加 [策略组] + 添加 [链式代理] + 添加 [VMess] + 添加 [VLESS] + 添加 [Shadowsocks] + 添加 [SOCKS] + 添加 [HTTP] + 添加 [Trojan] + 添加 [Wireguard] + 添加 [Hysteria2] + 确定要删除当前显示的所有配置吗? + 确定要删除当前显示的所有重复配置吗? + 请先测试配置。确定要删除当前显示的所有无效配置吗? + 确定要删除此配置吗? + 确定要删除此策略组吗? + 确定要删除此代理链成员吗? + 确定要删除此路由规则吗? + 确定要删除此订阅组吗? + 确定要删除资源文件“%1$s”吗? + 确定要删除此资源来源吗? + 别名 (remarks) + 地址 (address) + 端口 (port) + 用户 ID (id) + 额外 ID (alterId) + 加密方式 (security) + 传输协议 (network) + 底层传输方式 (transport) + 伪装类型 (type) + gRPC 传输模式 (mode) + 伪装域名 (host) + http host + ws host + httpupgrade host + xhttp host + h2 host + QUIC 加密方式 + gRPC Authority + path + ws path + httpupgrade path + xhttp path + h2 path + QUIC 加密密钥 + kcp seed + gRPC serviceName + 传输层安全 (TLS) + Fingerprint + Alpn + 跳过证书验证 (allowInsecure) + SNI + 服务器地址 + 服务器端口 + 密码 + 加密方式 + 密码 (可选) + 用户名 (可选) + 加密方式 (encryption) + 流控 (flow) + PublicKey + PreSharedKey (optional) + ShortId + SpiderX + Mldsa65Verify + SecretKey + Reserved (可选,逗号隔开) + 本地地址 (可选 IPv4/IPv6,逗号隔开) + Mtu (可选, 默认 1420) + mKCP MTU (可选, 默认 1350) + mKCP TTI (可选, 默认 50) + 成功 + 失败 + 没有数据 + 不正确的协议 + 解码失败 + 选择一个配置 + 请安装一个文件管理器 + 自定义配置 + 无效的配置 + 内容 + 剪贴板中没有数据 + 无效的网址 + 请不要使用不安全的 HTTP 协议订阅地址 + 确保 inbounds port 和设置中的一致 + 配置格式错误: %1$s + Host (SNI) (可选) + 禁止此项操作 + 混淆密码 + 跳跃端口 (会覆盖服务器端口) + 端口跳跃间隔 (秒) + 带宽下行 (支持的单位 k/m/g/t) + 带宽上行 (支持的单位 k/m/g/t) + XHTTP 模式 + XHTTP Extra 原始 JSON,格式: { XHTTPObject } + FinalMask 原始 JSON 格式: { FinalMaskObject } + EchConfigList + Verify Peer Cert By Name + 证书指纹 (SHA-256) + 启用浏览器转发 + 仅支持 xhttp (packet-up) 和 ws。与优选域名冲突,utls, alpn, ech 等 TLS 设置将被忽略 + 当前节点使用未加密连接,您的通信可能会被威权政府掌控的网络中间设施直接查看\n为了安全,此类节点无法通过 26.2.6+ 版本的 Xray 核心连接\n如果是自建节点请启用 TLS 等安全加密,或固定证书 pinnedCA256\n如果机场节点请联系服务商完成技术升级,如服务商拒绝配合,建议更换更重视用户安全的服务商\n更多的信息,请访问 https://github.com/2dust/v2rayN/discussions/9460 + 获取并填充指纹证书 + 获取指纹证书完成 + 获取证书指纹失败 - 失败, 请使用文件管理器 - 添加文件 - 扫描 QRcode - URL - 下载文件 - 添加资产网址 - 文件未找到 - 备注已经存在 - Geo 文件来源 (可选) + 失败, 请使用文件管理器 + 添加 + 添加文件 + 添加链接 + 扫描 QRcode + URL + 下载文件 + 添加资产网址 + 文件未找到 + 备注已经存在 + Geo 文件来源 (可选) - 正在加载 - 搜索 - 全选 - 反选 - 输入关键字 - 绕行模式 - 自动选中需代理应用 - 正在下载内容 - 导出至剪贴板 - 从剪贴板导入 - 分应用设置 - 启用分应用 + 正在加载 + 搜索 + 全选 + 反选 + 输入关键字 + 绕行模式 + 自动选中需代理应用 + 正在下载内容 + 导出至剪贴板 + 从剪贴板导入 + 分应用设置 + 启用分应用 + Unknown app (unidentified UID) - 设置 - 进阶设置 - 核心设置 - VPN 设置 - 分应用 - 常规: 勾选的 App 被代理, 未勾选的直连;\n绕行模式: 勾选的 App 直连, 未勾选的被代理.\n不明白者在菜单中选择自动选中需代理应用 - 开机时自动连接 - 开机时自动连接选择的服务器,可能会不成功 - - 任务将在后台运行,在通知中会显示进度信息 - 更新订阅后自动测试 - 自动测试需要比较长的时间,开启后任务将在后台运行;不开启则在当前页面运行 - 测试后自动删除无效配置 - 测试结果可能不准确且已删除的配置无法恢复 - 测试后自动排序 - 测试结果可能不准确 - - Mux 多路复用 设置 - 启用 Mux 多路复用 - 减低延时,但可能会断流,建议不要启用。\nTCP,UDP 及 QUIC 流量处理方式下方可选。 - TCP 复用子链接数(可填 -1 至 1024) - XUDP 复用子链接数(可填 -1 至 1024) - QUIC 流量处理方式 + 设置 + 进阶设置 + 核心设置 + VPN 设置 + 分应用 + 常规: 勾选的 App 被代理, 未勾选的直连;\n绕行模式: 勾选的 App 直连, 未勾选的被代理.\n不明白者在菜单中选择自动选中需代理应用 + 开机时自动连接 + 开机时自动连接选择的服务器,可能会不成功 + + + 任务将在后台运行,在通知中会显示进度信息 + 更新订阅后自动测试 + 自动测试需要比较长的时间,开启后任务将在后台运行;不开启则在当前页面运行 + 测试后自动删除无效配置 + 测试结果可能不准确且已删除的配置无法恢复 + 测试后自动排序 + 测试结果可能不准确 + + Mux 多路复用 设置 + 启用 Mux 多路复用 + 减低延时,但可能会断流,建议不要启用。\nTCP,UDP 及 QUIC 流量处理方式下方可选。 + TCP 复用子链接数(可填 -1 至 1024) + XUDP 复用子链接数(可填 -1 至 1024) + QUIC 流量处理方式 不代理 多路复用 原生 - + + + 启用速度显示 + 在通知中显示当前速度\n小图标显示流量的路由情况 - 启用速度显示 - 在通知中显示当前速度\n小图标显示流量的路由情况 + 启用流量探测 + 从流量中探测域名 (默认启用) + 启用 routeOnly + 将嗅探得到的域名仅用于路由,代理目标地址仍为 IP - 启用流量探测 - 从流量中探测域名 (默认启用) - 启用 routeOnly - 将嗅探得到的域名仅用于路由,代理目标地址仍为 IP + 启用本地 DNS + DNS 请求导入 core 由 DNS 模块处理(推荐启用 如果需要路由绕过局域网及大陆地址) - 启用本地 DNS - DNS 请求导入 core 由 DNS 模块处理(推荐启用 如果需要路由绕过局域网及大陆地址) + 启用虚拟 DNS + 本地返回虚构解析结果 (减低延时 但个别应用可能无法使用) - 启用虚拟 DNS - 本地返回虚构解析结果 (减低延时 但个别应用可能无法使用) + 启用 IPv6 + 为 VPN 接口添加 IPv6 地址和路由 - 启用 IPv6 - 为 VPN 接口添加 IPv6 地址和路由 + IPv6 优先 + 解析域名时优先使用 IPv6 地址 - IPv6 优先 - 解析域名时优先使用 IPv6 地址 + 远程 DNS (udp/tcp/https/quic)(可选) + DNS - 远程 DNS (udp/tcp/https/quic)(可选) - DNS + VPN DNS (仅支持 IPv4/v6) + VPN 是否绕过局域网 - VPN DNS (仅支持 IPv4/v6) - VPN 是否绕过局域网 + VPN 接口地址 - VPN 接口地址 - VPN MTU (默认 1500) + VPN MTU (默认 1500) - 境内 DNS (可选) - DNS - DNS hosts (格式: 域名: 地址,…) - domain: address,… + 境内 DNS (可选) + DNS - 真连接延迟测试网址 - Url - 真连接延迟测试并发数量 + DNS hosts (格式: 域名: 地址,…) + domain: address,… - 当前连接信息测试网址 - URL + 真连接延迟测试网址 + Url + 真连接延迟测试并发数量 - 允许来自局域网的连接 - 其他设备可以使用 socks/http 协议通过您的 IP 地址连接到代理, 仅在受信任的网络中启用以避免未经授权的连接 - 允许来自局域网的连接,请确保处于受信网络 + 当前连接信息测试网址 + URL - 本地代理端口 - 启用本地代理 - 不开启时没有 socks 代理,无法通过代理更新订阅等 - SOCKS5 UDP - 使用 UDP 时,socks5 认证并不完全安全 - 本地代理端口 - 启用动态本地代理端口 - 每次生成 inbound 时随机生成一个本地代理端口 - 本地代理用户名 (可选) - 用户名 - 本地代理密码 (可选) - 密码 + 允许来自局域网的连接 + 其他设备可以使用 socks/http 协议通过您的 IP 地址连接到代理, 仅在受信任的网络中启用以避免未经授权的连接 + 允许来自局域网的连接,请确保处于受信网络 - 本地 DNS 端口 - 本地 DNS 端口 + 本地代理端口 + 启用本地代理 + 不开启时没有 socks 代理,无法通过代理更新订阅等 + SOCKS5 UDP + 使用 UDP 时,socks5 认证并不完全安全 + 本地代理端口 + 启用动态本地代理端口 + 每次生成 inbound 时随机生成一个本地代理端口 + 本地代理用户名 (可选) + 用户名 + 本地代理密码 (可选) + 密码 - 删除配置确认 - 删除配置是否需要用户二次确认 + 本地 DNS 端口 + 本地 DNS 端口 + 删除配置确认 + 删除配置是否需要用户二次确认 - 追加 HTTP 代理至 VPN - 浏览器 / 一些支持的应用 将直接使用 HTTP 代理, 而不经过虚拟网卡设备 (Android 10+) - 启用双列显示 - 配置列表以双列显示,允许在屏幕上显示更多内容。 + 追加 HTTP 代理至 VPN + 浏览器 / 一些支持的应用 将直接使用 HTTP 代理, 而不经过虚拟网卡设备 (Android 10+) - 启用显示所有组 - 添加一个额外的“所有选项卡”页面 + 启用双列显示 + 配置列表以双列显示,允许在屏幕上显示更多内容。 + + 启用显示所有组 + 添加一个额外的“所有选项卡”页面 - 反馈 - 反馈改进或漏洞至 GitHub - 加入 Telegram Group - 未找到 Telegram app - 隐私权政策 - 二维码 - 关于 - 源代码 - Open Source licenses - Telegram 频道 - - 推广 - - 自动更新订阅 - 在后台按一定时间间隔自动更新您的订阅。受设备影响,此功能不一定总是有效 - 自动更新间隔(分钟,最小值 15) - - 日志级别 - Outbound 域名预解析方式 - 模式 - 点此查看更多帮助 - 语言 - 用户界面设置 - 深色模式 - 启用 Hev TUN 功能 - 选择启用后 TUN 将使用 hev-socks5-tunnel 否则使用 xray-core - HevTun 日志级别 - HevTun 读写超时(秒) (tcp,udp 默认 300,60) - 模式设置 - 启用 Root 模式 (仅限 Root 用户) - 通过 Root 权限启用底层透明代理。此模式将不再通过 Android 常规系统 VPN 建立连接,而是直接接管系统底层所有网络流量。开启后,原有的常规模式、应用分流及相关 VPN 设置将直接失效。 - 此功能需要 Root 权限 - 局域网 / 热点网络共享 (仅限 Root 用户) - 允许通过 Wi-Fi 热点和 USB 共享网络连接的设备走 VPN 代理流量 - - - Logcat - 复制 - 清除 - 分享日志 - 服务重启 - 删除配置 - 删除重复配置 - 删除无效配置 - 导出配置至剪贴板 - 订阅分组设置 - 备注 - 可选地址 (url) - User Agent - 请求头(JSON 格式) - 别名正则过滤 - 启用更新 - 启用自动更新 - 允许不安全的 HTTP 地址 - 前置代理配置别名 - 落地代理配置別名 - 请确保配置别名存在并唯一 - 更新间隔无效,最小值为 15 分钟。 - 更新订阅 - 测试配置 Tcping - 测试配置真连接 - 资源文件 - 按测试结果排序 - 过滤配置 - 所有 - 删除 %d 个重复配置 - 点击屏幕打开相机扫描 - - 删除 %d 个配置 - 导入 %d 个配置 - 导出 %d 个配置 - 更新 %d 个配置 - 更新了 %1$d 个配置(%2$d 个成功,%3$d 个失败,%4$d 个跳过) - 无订阅 - 当前分组中未找到选中的服务器 - 无法定位当前视图 - 定位所选配置 - - 启动服务 - 确定 + 反馈 + 反馈改进或漏洞至 GitHub + 加入 Telegram Group + 未找到 Telegram app + 隐私权政策 + 二维码 + 关于 + 源代码 + Open Source licenses + Telegram 频道 + + 推广 + + 自动更新订阅 + 在后台按一定时间间隔自动更新您的订阅。受设备影响,此功能不一定总是有效 + 自动更新间隔(分钟,最小值 15) + + 日志级别 + Outbound 域名预解析方式 + 模式 + 点此查看更多帮助 + 语言 + 用户界面设置 + 深色模式 + 启用 Hev TUN 功能 + 选择启用后 TUN 将使用 hev-socks5-tunnel 否则使用 xray-core + HevTun 日志级别 + HevTun 读写超时(秒) (tcp,udp 默认 300,60) + 模式设置 + 启用 Root 模式 (仅限 Root 用户) + 通过 Root 权限启用底层透明代理。此模式将不再通过 Android 常规系统 VPN 建立连接,而是直接接管系统底层所有网络流量。开启后,原有的常规模式、应用分流及相关 VPN 设置将直接失效。 + 此功能需要 Root 权限 + 局域网 / 热点网络共享 (仅限 Root 用户) + 允许通过 Wi-Fi 热点和 USB 共享网络连接的设备走 VPN 代理流量 + + Logcat + 复制 + 清除 + 分享日志 + 服务重启 + 删除配置 + 删除重复配置 + 删除无效配置 + 导出配置至剪贴板 + 订阅分组设置 + 备注 + 可选地址 (url) + User Agent + 请求头(JSON 格式) + 别名正则过滤 + 启用更新 + 启用自动更新 + 允许不安全的 HTTP 地址 + 前置代理配置别名 + 落地代理配置別名 + 请确保配置别名存在并唯一 + 更新间隔无效,最小值为 15 分钟。 + 更新订阅 + 测试配置 Tcping + 测试配置真连接 + 资源文件 + 按测试结果排序 + 过滤配置 + 所有 + 点击屏幕打开相机扫描 + 删除 %d 个重复配置 + 删除 %d 个配置 + 导入 %d 个配置 + 导出 %d 个配置 + 更新 %d 个配置 + 更新了 %1$d 个配置(%2$d 个成功,%3$d 个失败,%4$d 个跳过) + 无订阅 + 当前分组中未找到选中的服务器 + 无法定位当前视图 + 定位所选配置 + + 启动服务 + 确定 - 域名策略 - 路由设置 - 用逗号(,)分隔,选择填写 domain、ip 或 process 中的一项 - 保存 - 清空 - 路由规则设置 - 添加规则 - 导入预定义规则集 - 将删除现有的规则集,是否确定继续? - 从剪贴板导入规则集 - 从 QRcode 导入规则集 - 导出规则集至剪贴板 - 锁定中,导入预设时不删除此规则 - domain - ip - process (包名 — 仅在使用 Xray 的 TUN、开启 routeOnly 且 Android 10+ 时可用) - 选择包名 - port - protocol - [http,tls,bittorrent] - network - outboundTag - - "检查网络连接" - "测试中…" - 测试 %d 个配置中… - "连接成功:延时 %d 毫秒" - "失败:%s" - "无互联网连接" - "状态码无效(#%d)" - "已连接,点击测试连接" - "未连接" - 运行中的测试任务数:%s - - 订阅导入成功 - 导入订阅失败 - 添加 - 添加链接 - 分片(Fragment)设置 - 分片方式 - 分片包长(最小 - 最大) - 分片间隔(最小 - 最大) - 启用分片(Fragment) - 分片最大分割数 - 连接观测设置 - leastPing 探测间隔 - leastLoad 探测间隔 - leastLoad HTTP 方法 - leastLoad 采样数量 - leastLoad 探测超时 - 时间格式无效。请使用类似 3m 或 30s 的值。 - 采样数量无效。请使用正数。 - - 检查更新 - 目前已是最新版本 - 发现新版本: %s - 立即更新 - 检查 Pre-release - 正在检查更新中… - - 策略组类型 - 来自订阅分组 - 别名正则过滤 - 测试出站 - 备用出站(可选) - 代理链成员 - 点此选择成员 - 请选择成员 - 请为链路中的每一行选择成员 - 成员数量不足 - 无效的链路成员: %1$s + 域名策略 + 路由设置 + 用逗号(,)分隔,选择填写 domain、ip 或 process 中的一项 + 保存 + 清空 + 路由规则设置 + 添加规则 + 导入预定义规则集 + 将删除现有的规则集,是否确定继续? + 从剪贴板导入规则集 + 从 QRcode 导入规则集 + 导出规则集至剪贴板 + 锁定中,导入预设时不删除此规则 + domain + ip + process (包名 — 仅在使用 Xray 的 TUN、开启 routeOnly 且 Android 10+ 时可用) + 选择包名 + port + protocol + [http,tls,bittorrent] + network + proxy / direct / block / <remarks> + outboundTag + + "检查网络连接" + "测试中…" + 测试 %d 个配置中… + "连接成功:延时 %d 毫秒" + "失败:%s" + "无互联网连接" + "状态码无效(#%d)" + "已连接,点击测试连接" + "未连接" + 运行中的测试任务数:%s + + 订阅导入成功 + 导入订阅失败 + 分片(Fragment)设置 + 分片方式 + 分片包长(最小 - 最大) + 分片间隔(最小 - 最大) + 启用分片(Fragment) + 分片最大分割数 + 连接观测设置 + leastPing 探测间隔 + leastLoad 探测间隔 + leastLoad HTTP 方法 + leastLoad 采样数量 + leastLoad 探测超时 + 时间格式无效。请使用类似 3m 或 30s 的值。 + 采样数量无效。请使用正数。 + + 检查更新 + 目前已是最新版本 + 发现新版本: %s + 立即更新 + 检查 Pre-release + 正在检查更新中… + + 策略组类型 + 来自订阅分组 + 别名正则过滤 + 测试出站 + 备用出站(可选) + + 代理链成员 + 点此选择成员 + 请选择成员 + 请为链路中的每一行选择成员 + 成员数量不足 + 无效的链路成员: %1$s - 备份 & 还原 - 备份配置 - 还原配置 - 分享配置 - WebDAV 设置 - 请先设置 WebDAV - WebDAV 服务器地址WebDAV server address - 用户名 - 密码 - 远程文件夹名(可选) - - 二维码 - 导出至剪贴板 - 导出完整配置至剪贴板 - 编辑 - 删除 - 关闭 + 备份 & 还原 + 备份配置 + 还原配置 + 分享配置 + WebDAV 设置 + 请先设置 WebDAV + WebDAV 服务器地址 + 用户名 + 密码 + 远程文件夹名(可选) + + 二维码 + 导出至剪贴板 + 导出完整配置至剪贴板 + 编辑 + 删除 + 关闭 + + No server selected + Failed to decode server config + Failed to build config context + Failed to get V2Ray config + Failed to get V2Ray config: %1$s + Failed to get V2Ray config for speed test: %1$s + Custom config is empty + Core failed to start + + Start + Stop + Back + 搜索 + Add + More + Share subscription + 分享日志 + Remove + Add member + Start scanner + Stop scanner + Turn torch on + Turn torch off + Select image + Locked + Open menu + 编辑 + 删除 + 保存 + Update subscriptions + Per-app proxy information + Camera + Notification + Local network + %1$s insecure + Updating %1$s + %1$s in %2$s + Start %1$s + Stop %1$s + empty message + unknown 二维码 @@ -448,6 +494,12 @@ 仅代理 + + Disable + OkHttp + WebView + + 跟随系统 浅色 @@ -473,12 +525,13 @@ 解析后添加至 DNS Hosts 解析后替换原域名 + 最低延迟 最稳定 随机选择 轮询 - + 本地 diff --git a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml index 783d6b52b6..5305895d84 100644 --- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml @@ -1,440 +1,488 @@ - 開關 - 開關 - 首次使用此功能,請使用此應用程式新增伺服器 - 開啟導覽匣 - 關閉導覽匣 - 資料遷移成功! - Stop service - 資料遷移失敗! - 請下拉刷新! + v2rayNG + 開關 + 開關 + 首次使用此功能,請使用此應用程式新增伺服器 + 開啟導覽匣 + 關閉導覽匣 + 資料遷移成功! + Stop service + 資料遷移失敗! + Refresh - 停止 - 無法取得此權限 - 無法取得此通知權限 - 瞭解更多 - 啟動服務 - 停止服務 - 啟動服務成功 - 啟動服務失敗 - - - 設定檔 - 新增設定 - 儲存設定 - Edit configuration - 刪除設定 - 從 QR Code 匯入設定 - 從剪貼簿匯入設定 - 從本地匯入 - 新增 [策略組] - 新增 [鍊式代理] - 新增 [VMess] - 新增 [VLESS] - 新增 [Shadowsocks] - 新增 [SOCKS] - 新增 [HTTP] - 新增 [Trojan] - 新增 [Wireguard] - 新增 [Hysteria2] - 確定要刪除目前顯示的所有設定檔嗎? - 確定要刪除目前顯示的所有重複設定檔嗎? - 請先測試設定檔。確定要刪除目前顯示的所有無效設定檔嗎? - 確定要刪除此設定檔嗎? - 確定要刪除此策略組嗎? - 確定要刪除此代理鏈成員嗎? - 確定要刪除此路由規則嗎? - 確定要刪除此訂閱群組嗎? - 確定要刪除資源檔案「%1$s」嗎? - 確定要刪除此資源來源嗎? - 備註 - 位址 - - 使用者 ID - alterId - 安全性 - 網路 - 底層傳輸方式 (transport) - 標頭類型 - gRPC 傳輸模式 (mode) - 要求主機 (host) - http host - ws host - httpupgrade host - xhttp host - h2 host - QUIC 加密方式 - gRPC Authority - path - ws path - httpupgrade path - xhttp path - h2 path - QUIC 加密金鑰 - kcp seed - gRPC serviceName - 傳輸層安全 (TLS) - Fingerprint - Alpn - 跳過憑證驗證 (allowInsecure) - SNI - 伺服器位址 - 伺服器埠 - 密碼 - 加密方式 - 密碼 (可選) - 使用者名稱 (可選) - 加密 (encryption) - 流程 (flow) - PublicKey - PreSharedKey (optional) - ShortId - SpiderX - Mldsa65Verify - SecretKey - Reserved (可選,逗號隔開) - 本機位址 (可選 IPv4/IPv6,逗號隔開) - MTU (可選, 預設 1420) - mKCP MTU (可選, 預設 1350) - mKCP TTI (可選, 預設 50) - 成功 - 失敗 - 無資料 - 通訊協定不正確 - 解碼失敗 - 選取一個設定檔 - 請安裝檔案總管。 - 自訂設定 - 無效設定 - 內容 - 剪貼簿內無資料 - URL 無效 - 請不要使用不安全的 HTTP 協定訂閱位址 - ​​確保 inbounds port 和設定中的一致 - 設定格式不正確 - Host (SNI) (可選) - 禁止此項操作 - 混淆密碼 - 跳躍連接埠 (會覆蓋伺服器連接埠) - 連接埠跳躍間隔 (秒) - 頻寬下行 (支持的單位 k/m/g/t) - 頻寬上行 (支持的單位 k/m/g/t) - XHTTP 模式 - XHTTP Extra 原始 JSON,格式: { XHTTPObject } - FinalMask 原始 JSON 格式: { FinalMaskObject } - EchConfigList - Verify Peer Cert By Name - 證書指紋 (SHA-256) - 目前節點使用未加密連線,您的通訊可能會被威權政府掌控的網路中間設施直接查看\n為了安全,此類節點無法通過 26.2.6+ 版本的 Xray 核心連線\n如果是自建節點請啟用 TLS 等安全加密,或固定憑證 pinnedCA256\n如果機場節點請聯繫服務商完成技術升級,如服務商拒絕配合,建議更換更重視用戶安全的服務商\n更多的資訊,請訪問 https://github.com/2dust/v2rayN/discussions/9460 - 獲取並填充指紋證書 - 獲取指紋證書完成 - 獲取證書指紋失敗 + 停止 + 無法取得此權限 + 無法取得此通知權限 + Unable to obtain permission: %1$s + 瞭解更多 + 啟動服務 + 停止服務 + 啟動服務成功 + 啟動服務失敗 + + + 設定檔 + Add subscription + 儲存設定 + 從 QR Code 匯入設定 + 從剪貼簿匯入設定 + 從本地匯入 + 新增 [策略組] + 新增 [鍊式代理] + 新增 [VMess] + 新增 [VLESS] + 新增 [Shadowsocks] + 新增 [SOCKS] + 新增 [HTTP] + 新增 [Trojan] + 新增 [Wireguard] + 新增 [Hysteria2] + 確定要刪除目前顯示的所有設定檔嗎? + 確定要刪除目前顯示的所有重複設定檔嗎? + 請先測試設定檔。確定要刪除目前顯示的所有無效設定檔嗎? + 確定要刪除此設定檔嗎? + 確定要刪除此策略組嗎? + 確定要刪除此代理鏈成員嗎? + 確定要刪除此路由規則嗎? + 確定要刪除此訂閱群組嗎? + 確定要刪除資源檔案「%1$s」嗎? + 確定要刪除此資源來源嗎? + 備註 + 位址 + + 使用者 ID + alterId + 安全性 + 網路 + 底層傳輸方式 (transport) + 標頭類型 + gRPC 傳輸模式 (mode) + 要求主機 (host) + http host + ws host + httpupgrade host + xhttp host + h2 host + QUIC 加密方式 + gRPC Authority + path + ws path + httpupgrade path + xhttp path + h2 path + QUIC 加密金鑰 + kcp seed + gRPC serviceName + 傳輸層安全 (TLS) + Fingerprint + Alpn + 跳過憑證驗證 (allowInsecure) + SNI + 伺服器位址 + 伺服器埠 + 密碼 + 加密方式 + 密碼 (可選) + 使用者名稱 (可選) + 加密 (encryption) + 流程 (flow) + PublicKey + PreSharedKey (optional) + ShortId + SpiderX + Mldsa65Verify + SecretKey + Reserved (可選,逗號隔開) + 本機位址 (可選 IPv4/IPv6,逗號隔開) + MTU (可選, 預設 1420) + mKCP MTU (可選, 預設 1350) + mKCP TTI (可選, 預設 50) + 成功 + 失敗 + 無資料 + 通訊協定不正確 + 解碼失敗 + 選取一個設定檔 + 請安裝檔案總管。 + 自訂設定 + 無效設定 + 內容 + 剪貼簿內無資料 + URL 無效 + 請不要使用不安全的 HTTP 協定訂閱位址 + ​​確保 inbounds port 和設定中的一致 + 設定格式不正確: %1$s + Host (SNI) (可選) + 禁止此項操作 + 混淆密碼 + 跳躍連接埠 (會覆蓋伺服器連接埠) + 連接埠跳躍間隔 (秒) + 頻寬下行 (支持的單位 k/m/g/t) + 頻寬上行 (支持的單位 k/m/g/t) + XHTTP 模式 + XHTTP Extra 原始 JSON,格式: { XHTTPObject } + FinalMask 原始 JSON 格式: { FinalMaskObject } + EchConfigList + Verify Peer Cert By Name + 證書指紋 (SHA-256) + Enable Browser Dialer + Only supports xhttp (packet-up) and ws outbound; TLS-related settings may be ignored or conflict + 目前節點使用未加密連線,您的通訊可能會被威權政府掌控的網路中間設施直接查看\n為了安全,此類節點無法通過 26.2.6+ 版本的 Xray 核心連線\n如果是自建節點請啟用 TLS 等安全加密,或固定憑證 pinnedCA256\n如果機場節點請聯繫服務商完成技術升級,如服務商拒絕配合,建議更換更重視用戶安全的服務商\n更多的資訊,請訪問 https://github.com/2dust/v2rayN/discussions/9460 + 獲取並填充指紋證書 + 獲取指紋證書完成 + 獲取證書指紋失敗 - 失敗,請使用檔案總管 - 新增檔案 - 掃描二維碼 - URL - 下載檔案 - 新增資產網址 - 文件未找到 - 備註已經存在 - Geo 檔案來源 (可選) + 失敗,請使用檔案總管 + 新增資源 + 新增檔案 + 新增連結 + 掃描二維碼 + URL + 下載檔案 + 新增資產網址 + 文件未找到 + 備註已經存在 + Geo 檔案來源 (可選) - 載入 - 搜尋 - 全選 - 反選 - 輸入關鍵字 - 略過模式 - 自動選中需代理的應用 - 正在下載內容 - 匯出至剪貼簿 - 從剪貼簿匯入 - 分應用設置 - 根據應用分流 - + 載入 + 搜尋 + 全選 + 反選 + 輸入關鍵字 + 略過模式 + 自動選中需代理的應用 + 正在下載內容 + 匯出至剪貼簿 + 從剪貼簿匯入 + 分應用設置 + 根據應用分流 + Unknown app (unidentified UID) - 設定 - 進階 - 核心設定 - VPN 設定 - Proxy 個別應用程式 - 常規:勾選的 App 啟用 Proxy,未勾選的直接連線;\n繞行模式:勾選的 App 直接連線,未勾選的啟用 Proxy。\n可在選單中選擇自動選中需 Proxy 應用 - 開機時自動連線 - 開機時自動連線選擇的伺服器,可能會不成功 - - 任務將在背景運行,在通知中會顯示進度資訊 - 更新訂閱後自動測試 - 自動測試需要較長的時間,開啟後任務將在後台運行;不開啟則在目前頁面運行 - 測試後自動刪除無效配置 - 測試結果可能不準確且已刪除的配置無法復原 - 測試後自動排序 - 測試結果可能不準確 - - Mux 設定 - 啟用 Mux 多路復用 - 減低延時 但可能會斷流\nTCP,UDP 及 QUIC 流量處理方式下方可選 - TCP 復用子鏈接數(可填 -1 至 1024) - XUDP 復用子鏈接數(可填 -1 至 1024) - QUIC 流量處理方式 + 設定 + 進階 + 核心設定 + VPN 設定 + Proxy 個別應用程式 + 常規:勾選的 App 啟用 Proxy,未勾選的直接連線;\n繞行模式:勾選的 App 直接連線,未勾選的啟用 Proxy。\n可在選單中選擇自動選中需 Proxy 應用 + 開機時自動連線 + 開機時自動連線選擇的伺服器,可能會不成功 + + + 任務將在背景運行,在通知中會顯示進度資訊 + 更新訂閱後自動測試 + 自動測試需要較長的時間,開啟後任務將在後台運行;不開啟則在目前頁面運行 + 測試後自動刪除無效配置 + 測試結果可能不準確且已刪除的配置無法復原 + 測試後自動排序 + 測試結果可能不準確 + + Mux 設定 + 啟用 Mux 多路復用 + 減低延時 但可能會斷流\nTCP,UDP 及 QUIC 流量處理方式下方可選 + TCP 復用子鏈接數(可填 -1 至 1024) + XUDP 復用子鏈接數(可填 -1 至 1024) + QUIC 流量處理方式 不代理 多路復用 原生 - + + + 啟用速度顯示 + 在通知中顯示當前速度\n小圖示顯示流量的轉送狀況 + + 啟用流量監聽 + 從流量中監聽網域 (預設啟用) + 啟用 routeOnly + 將嗅探得到的網域只用於路由,代理目標位址仍為 IP - 啟用速度顯示 - 在通知中顯示當前速度\n小圖示顯示流量的轉送狀況 + 啟用本機 DNS + DNS 請求匯入 core 由 DNS 模組處理 (建議啟用,如果需要轉送略過區域網路及中國大陸) - 啟用流量監聽 - 從流量中監聽網域 (預設啟用) - 啟用 routeOnly - 將嗅探得到的網域只用於路由,代理目標位址仍為 IP + 啟用假 DNS + 本機退回假解析結果 (減低延時,但個別應用可能無法使用) + 啟用 IPv6 + 為 VPN 介面新增 IPv6 位址和路由 - 啟用本機 DNS - DNS 請求匯入 core 由 DNS 模組處理 (建議啟用,如果需要轉送略過區域網路及中國大陸) + IPv6 偏好 + 解析網域名稱時優先使用 IPv6 位址 - 啟用假 DNS - 本機退回假解析結果 (減低延時,但個別應用可能無法使用) + 遠端 DNS (udp/tcp/https/quic)(可選) + DNS - 啟用 IPv6 - 為 VPN 介面新增 IPv6 位址和路由 + VPN DNS (僅支援 IPv4/v6) + VPN 是否繞過區域網 - IPv6 偏好 - 解析網域名稱時優先使用 IPv6 位址 + VPN 介面位址 - 遠端 DNS (udp/tcp/https/quic)(可選) - DNS + VPN MTU (預設 1500) - VPN DNS (僅支援 IPv4/v6) - VPN 是否繞過區域網 - VPN 介面位址 - VPN MTU (預設 1500) + 境内 DNS (可选) + DNS - DNS - 境内 DNS (可选) - DNS hosts (格式: 網域:位址,…) - domain:address,… + DNS hosts (格式: 網域:位址,…) + domain:address,… - 真連線延遲測試網址 - Url - 真連線延遲測試並發數量 + 真連線延遲測試網址 + Url + 真連線延遲測試並發數量 - 目前連線資訊測試網址 - URL + 目前連線資訊測試網址 + URL - 允許來自區域網路的連線 - 其他裝置可以使用 socks/http 協定透過您的 IP 位址連線到 Proxy,僅在受信任的網路中啟用以避免未經授權的連線 - 允許來自區域網路的連線,請確保處於受信網路 + 允許來自區域網路的連線 + 其他裝置可以使用 socks/http 協定透過您的 IP 位址連線到 Proxy,僅在受信任的網路中啟用以避免未經授權的連線 + 允許來自區域網路的連線,請確保處於受信網路 - 本地代理埠 - 啟用本地代理 - 未開啟時沒有 socks 代理,無法透過代理更新訂閱等 - SOCKS5 UDP - 使用 UDP 時,socks5 認證並不完全安全 - 本地代理埠 - 啟用動態本地代理埠 - 每次產生 inbound 時隨機產生一個本地代理埠 - 本地代理使用者名稱 (選擇) - 使用者名稱 - 本地代理密碼 (選擇) - 密碼 + 本地代理埠 + 啟用本地代理 + 未開啟時沒有 socks 代理,無法透過代理更新訂閱等 + SOCKS5 UDP + 使用 UDP 時,socks5 認證並不完全安全 + 本地代理埠 + 啟用動態本地代理埠 + 每次產生 inbound 時隨機產生一個本地代理埠 + 本地代理使用者名稱 (選擇) + 使用者名稱 + 本地代理密碼 (選擇) + 密碼 - 本機 DNS 埠 - 本機 DNS 埠 + 本機 DNS 埠 + 本機 DNS 埠 - 刪除設定檔確認 - 刪除設定檔是否需要用戶二次確認 + 刪除設定檔確認 + 刪除設定檔是否需要用戶二次確認 - 追加 HTTP 代理至 VPN - 瀏覽器 / 一些支援的應用 將直接使用 HTTP 代理, 而不經過虛擬網卡設備 (Android 10+) + 追加 HTTP 代理至 VPN + 瀏覽器 / 一些支援的應用 將直接使用 HTTP 代理, 而不經過虛擬網卡設備 (Android 10+) - 啟用雙列顯示 - 設定檔清單以雙列顯示,允許在螢幕上顯示更多內容。 + 啟用雙列顯示 + 設定檔清單以雙列顯示,允許在螢幕上顯示更多內容。 - 啟用顯示所有群組 - 新增一個額外的「所有選項卡」頁面 + 啟用顯示所有群組 + 新增一個額外的「所有選項卡」頁面 - 意見回饋 - 前往 GitHub 回報錯誤 - 加入 Telegram 群組 - 未找到 Telegram 應用程式 - 隱私權政策 - QR 碼 - 關於 - 原始碼 - Open Source licenses - Telegram 頻道 - - 推廣 - - 自動更新訂閱 - 在後台以一定時間間隔自動更新您的訂閱。受設備影響,此功能不一定總是有效 - 自動更新間隔(分鐘,最小值 15) - - 記錄層級 - 出口網域預解析方式 - 模式 - 輕觸以檢視說明 - 語言 - 介面顯示設定 - 深色模式 - 啟用 Hev TUN 功能 - 選擇啟用後 TUN 將使用 hev-socks5-tunnel 否則使用 xray-core - HevTun 日誌級別 - HevTun 讀寫逾時(秒) (tcp,udp 預設 300,60) - 模式設定 - 啟用 Root 模式 (僅限 Root 使用者) - 透過 Root 權限啟用底層透明代理。此模式將不再透過 Android 常規系統 VPN 建立連線,而是直接接管系統底層所有網路流量。開啟後,原有的常规模式、應用分流及相關 VPN 設定將直接失效。 - 此功能需要 Root 權限 - 區域網路 / 熱點網路共享 (僅限 Root 使用者) - 允許透過 Wi-Fi 熱點和 USB 共享網路連線的裝置走 VPN 代理流量 - - - Logcat - 複製 - 清除 - 分享日誌 - 重啟服務 - 刪除設定 - 刪除重複設定 - 刪除無效設定 - 匯出設定至剪貼簿 - 訂閱分組設定 - 備註 - 可選位址(url) - User Agent - 請求頭(JSON 格式) - 別名正規過濾 - 啟用更新 - 啟用自動更新 - 允許不安全的 HTTP 位址 - 前置代理設定檔别名 - 落地代理設定檔別名 - 请确保設定檔别名存在并唯一 - 更新間隔無效,最小值為 15 分鐘。 - 更新訂閱 - 偵測設定 Tcping - 偵測設定真延遲 - 資源檔案 - 依偵測結果排序 - 過濾設定 - 所有 - 點擊熒幕打開相機掃描 - 刪除 %d 個重複配置 - 刪除 %d 個配置 - 匯入 %d 個配置 - 匯出 %d 個配置 - 更新 %d 個配置 - 更新了 %1$d 個配置(%2$d 個成功,%3$d 個失敗,%4$d 個跳過) - 無訂閱 - 當前分組中未找到選中的伺服器 - 無法定位當前視圖 - 定位所選配置 - - 啟動服務 - 確定 + 意見回饋 + 前往 GitHub 回報錯誤 + 加入 Telegram 群組 + 未找到 Telegram 應用程式 + 隱私權政策 + QR 碼 + 關於 + 原始碼 + Open Source licenses + Telegram 頻道 + + 推廣 + + 自動更新訂閱 + 在後台以一定時間間隔自動更新您的訂閱。受設備影響,此功能不一定總是有效 + 自動更新間隔(分鐘,最小值 15) + + 記錄層級 + 出口網域預解析方式 + 模式 + 輕觸以檢視說明 + 語言 + 介面顯示設定 + 深色模式 + 啟用 Hev TUN 功能 + 選擇啟用後 TUN 將使用 hev-socks5-tunnel 否則使用 xray-core + HevTun 日誌級別 + HevTun 讀寫逾時(秒) (tcp,udp 預設 300,60) + 模式設定 + 啟用 Root 模式 (僅限 Root 使用者) + 透過 Root 權限啟用底層透明代理。此模式將不再透過 Android 常規系統 VPN 建立連線,而是直接接管系統底層所有網路流量。開啟後,原有的常规模式、應用分流及相關 VPN 設定將直接失效。 + 此功能需要 Root 權限 + 區域網路 / 熱點網路共享 (僅限 Root 使用者) + 允許透過 Wi-Fi 熱點和 USB 共享網路連線的裝置走 VPN 代理流量 + + Logcat + 複製 + 清除 + 分享日誌 + 重啟服務 + 刪除設定 + 刪除重複設定 + 刪除無效設定 + 匯出設定至剪貼簿 + 訂閱分組設定 + 備註 + 可選位址(url) + User Agent + 請求頭(JSON 格式) + 別名正規過濾 + 啟用更新 + 啟用自動更新 + 允許不安全的 HTTP 位址 + 前置代理設定檔别名 + 落地代理設定檔別名 + 请确保設定檔别名存在并唯一 + 更新間隔無效,最小值為 15 分鐘。 + 更新訂閱 + 偵測設定 Tcping + 偵測設定真延遲 + 資源檔案 + 依偵測結果排序 + 過濾設定 + 所有 + 點擊熒幕打開相機掃描 + 刪除 %d 個重複配置 + 刪除 %d 個配置 + 匯入 %d 個配置 + 匯出 %d 個配置 + 更新 %d 個配置 + 更新了 %1$d 個配置(%2$d 個成功,%3$d 個失敗,%4$d 個跳過) + 無訂閱 + 當前分組中未找到選中的伺服器 + 無法定位當前視圖 + 定位所選配置 + + 啟動服務 + 確定 - 網域策略 - 轉送設定 - 用逗號(,)分隔,選擇填寫 domain、ip 或 process 中的一項 - 儲存 - 清除 - 路由規則設定 - 新增規則 - 匯入預先定義的規則集 - 將刪除現有的規則集,是否確定繼續? - 從剪貼簿匯入規則集 - 從二維碼匯入規則集 - 匯出規則集至剪貼簿 - 鎖定中,匯入預設時不刪除此規則 - domain - ip - process (套件名稱 — 僅在使用 Xray 的 TUN、開啟 routeOnly 且 Android 10+ 時可用) - 選擇包名 - port - protocol - [http,tls,bittorrent] - network - outboundTag - - "測試連線能力" - "測試中……" - 測試 %d 個配置中… - "成功:%d ms延遲" - "測試網際網路連線失敗:%s" - "無法使用網際網路" - "錯誤碼:(#%d)" - "已連線,輕觸以檢查連線能力" - "未連線" - 運行中的測試任務數:%s - - 匯入訂閱成功 - 匯入訂閱失敗 - 新增資源 - 新增連結 - 分片(Fragment) 設定 - 分片方式 - 分片包長(最小-最大) - 分片間隔(最小-最大) - 啟用分片(Fragment) - 分片最大分割數 - 連線觀測設定 - leastPing 探測間隔 - leastLoad 探測間隔 - leastLoad HTTP 方法 - leastLoad 取樣數量 - leastLoad 探測逾時 - 時間格式無效。請使用類似 3m 或 30s 的值。 - 取樣數量無效。請使用正數。 - - 檢查更新 - 当前已是最新版本 - 發現新版本: %s - 立即更新 - 檢查 Pre-release - 正在檢查更新中… - - 策略群組類型 - 來自訂閱分組 - 別名正規過濾 - 測試出口 - 備用出口(選填) - 代理鏈成員 - 點此選擇成員 - 請選擇成員 - 請為鏈路中的每一列選擇成員 - 成員數量不足 - 無效的鏈路成員: %1$s + 網域策略 + 轉送設定 + 用逗號(,)分隔,選擇填寫 domain、ip 或 process 中的一項 + 儲存 + 清除 + 路由規則設定 + 新增規則 + 匯入預先定義的規則集 + 將刪除現有的規則集,是否確定繼續? + 從剪貼簿匯入規則集 + 從二維碼匯入規則集 + 匯出規則集至剪貼簿 + 鎖定中,匯入預設時不刪除此規則 + domain + ip + process (套件名稱 — 僅在使用 Xray 的 TUN、開啟 routeOnly 且 Android 10+ 時可用) + 選擇包名 + port + protocol + [http,tls,bittorrent] + network + proxy / direct / block / <remarks> + outboundTag + + "測試連線能力" + "測試中……" + 測試 %d 個配置中… + "成功:%d ms延遲" + "測試網際網路連線失敗:%s" + "無法使用網際網路" + "錯誤碼:(#%d)" + "已連線,輕觸以檢查連線能力" + "未連線" + 運行中的測試任務數:%s + + 匯入訂閱成功 + 匯入訂閱失敗 + 分片(Fragment) 設定 + 分片方式 + 分片包長(最小-最大) + 分片間隔(最小-最大) + 啟用分片(Fragment) + 分片最大分割數 + 連線觀測設定 + leastPing 探測間隔 + leastLoad 探測間隔 + leastLoad HTTP 方法 + leastLoad 取樣數量 + leastLoad 探測逾時 + 時間格式無效。請使用類似 3m 或 30s 的值。 + 取樣數量無效。請使用正數。 + + 檢查更新 + 当前已是最新版本 + 發現新版本: %s + 立即更新 + 檢查 Pre-release + 正在檢查更新中… + + 策略群組類型 + 來自訂閱分組 + 別名正規過濾 + 測試出口 + 備用出口(選填) + + 代理鏈成員 + 點此選擇成員 + 請選擇成員 + 請為鏈路中的每一列選擇成員 + 成員數量不足 + 無效的鏈路成員: %1$s - 備份與恢復 - 備份設定 - 還原設定 - 分享設定 - WebDAV 設定 - 請先設定 WebDAV - WebDAV 伺服器位址 - 使用者名稱 - 密碼 - 遠端目錄(可選) - - 二維碼 - 匯出至剪貼簿 - 匯出完整設定至剪貼簿 - 編輯 - 刪除 - 關閉 + 備份與恢復 + 備份設定 + 還原設定 + 分享設定 + WebDAV 設定 + 請先設定 WebDAV + WebDAV 伺服器位址 + 使用者名稱 + 密碼 + 遠端目錄(可選) + + 二維碼 + 匯出至剪貼簿 + 匯出完整設定至剪貼簿 + 編輯 + 刪除 + 關閉 + + No server selected + Failed to decode server config + Failed to build config context + Failed to get V2Ray config + Failed to get V2Ray config: %1$s + Failed to get V2Ray config for speed test: %1$s + Custom config is empty + Core failed to start + + Start + Stop + Back + 搜尋 + Add + More + Share subscription + 分享日誌 + Remove + Add member + Start scanner + Stop scanner + Turn torch on + Turn torch off + Select image + Locked + Open menu + 編輯 + 刪除 + 儲存 + Update subscriptions + Per-app proxy information + Camera + Notification + Local network + %1$s insecure + Updating %1$s + %1$s in %2$s + Start %1$s + Stop %1$s + empty message + unknown 二維碼 @@ -446,6 +494,12 @@ 僅代理 + + Disable + OkHttp + WebView + + 跟隨系統 淺色 @@ -471,12 +525,13 @@ 解析後加入 DNS Hosts 解析後替換原網域名稱 + 最低延遲 最少卡頓 隨機選擇 輪詢 - + 本地 diff --git a/V2rayNG/app/src/main/res/values/arrays.xml b/V2rayNG/app/src/main/res/values/arrays.xml index 9260f10b78..4c761affa4 100644 --- a/V2rayNG/app/src/main/res/values/arrays.xml +++ b/V2rayNG/app/src/main/res/values/arrays.xml @@ -205,7 +205,7 @@ 6 - + 10.10.14.x 10.1.0.x 10.0.0.x diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml index 3c184a68c3..f0ca43a47f 100644 --- a/V2rayNG/app/src/main/res/values/strings.xml +++ b/V2rayNG/app/src/main/res/values/strings.xml @@ -1,448 +1,488 @@ - v2rayNG - Switch - Switch - First use of this feature, please use the app to add server - Open navigation drawer - Close navigation drawer - Data migration success! - Stop service - Data migration failed! - Please pull down to refresh! + v2rayNG + Switch + Switch + First use of this feature, please use the app to add server + Open navigation drawer + Close navigation drawer + Data migration success! + Stop service + Data migration failed! + Refresh - Stop - Unable to obtain the permission - Unable to obtain the notification permission - Click for more - Start Services - Stop Services - Start Services Success - Start Services Failure + Stop + Unable to obtain the permission + Unable to obtain the notification permission + Unable to obtain permission: %1$s + Click for more + Start Services + Stop Services + Start Services Success + Start Services Failure - Config - Add config - Save config - Edit config - Delete config - Import from QRcode - Import from Clipboard - Import from locally - Add [Policy group] - Add [Proxy chain] - Add [VMess] - Add [VLESS] - Add [Shadowsocks] - Add [SOCKS] - Add [HTTP] - Add [Trojan] - Add [Wireguard] - Add [Hysteria2] - Are you sure you want to delete all profiles currently shown? - Are you sure you want to delete all duplicate profiles currently shown? - Please test the profiles first. Are you sure you want to delete all invalid profiles currently shown? - Are you sure you want to delete this profile? - Are you sure you want to delete this policy group? - Are you sure you want to delete this chain member? - Are you sure you want to delete this routing rule? - Are you sure you want to delete this subscription group? - Are you sure you want to delete the asset file \"%1$s\"? - Are you sure you want to delete this asset source? - remarks - address - port - id - alterId - security - Network - Transport - head type - gRPC mode - host - http host - ws host - httpupgrade host - xhttp host - h2 host - QUIC security - gRPC Authority - path - ws path - httpupgrade path - xhttp path - h2 path - QUIC key - kcp seed - gRPC serviceName - TLS - Fingerprint - Alpn - allowInsecure - SNI - address - port - password - security - Password(Optional) - User(Optional) - encryption - flow - PublicKey - PreSharedKey(optional) - ShortId - SpiderX - Mldsa65Verify - SecretKey - Reserved(Optional, separated by commas) - Local address (optional IPv4/IPv6, separated by commas) - Mtu(optional, default 1420) - mKCP MTU (Optional, core default 1350) - mKCP TTI (Optional, core default 50) - Success - Failure - There is nothing - Incorrect protocol - Decoding failed - Select a config - Please install a File Manager. - Customize config - Invalid config - Content - There is no data in the clipboard - Invalid URL - Please do not use the insecure HTTP protocol subscription address - Ensure inbounds port is consistent with the settings - Config malformed - Host(SNI)(Optional) - Action not allowed - Obfs password - Port Hopping(will override the port) - Port Hopping Interval - Bandwidth down (Supported units: k/m/g/t) - Bandwidth up (Supported units: k/m/g/t) - XHTTP Mode - XHTTP Extra raw JSON, format: { XHTTPObject } - finalMask raw JSON, format: { FinalMaskObject } - EchConfigList - Verify Peer Cert By Name - Certificate fingerprint (SHA-256) - Enable Browser Dialer - Only supports xhttp (packet-up) and ws outbound; TLS-related settings may be ignored or conflict - Current node uses an unencrypted connection. Your communication may be directly viewed by network intermediate facilities controlled by authoritarian governments.\nFor security reasons, such nodes cannot be connected via Xray core version 26.2.6+.\nIf it is a self-built node, please enable security encryption such as TLS, or pin the certificate pinnedCA256.\nIf it is a provider node, please contact the service provider to complete the technical upgrade. If the service provider refuses to cooperate, it is recommended to switch to a provider that pays more attention to user security.\nFor more information, please visit https://github.com/2dust/v2rayN/discussions/9460 - Fetch and fill certificate fingerprint - Certificate fingerprint fetched successfully - Failed to fetch certificate fingerprint + Config + Add subscription + Save config + Import from QRcode + Import from Clipboard + Import from locally + Add [Policy group] + Add [Proxy chain] + Add [VMess] + Add [VLESS] + Add [Shadowsocks] + Add [SOCKS] + Add [HTTP] + Add [Trojan] + Add [Wireguard] + Add [Hysteria2] + Are you sure you want to delete all profiles currently shown? + Are you sure you want to delete all duplicate profiles currently shown? + Please test the profiles first. Are you sure you want to delete all invalid profiles currently shown? + Are you sure you want to delete this profile? + Are you sure you want to delete this policy group? + Are you sure you want to delete this chain member? + Are you sure you want to delete this routing rule? + Are you sure you want to delete this subscription group? + Are you sure you want to delete the asset file \"%1$s\"? + Are you sure you want to delete this asset source? + remarks + address + port + id + alterId + security + Network + Transport + head type + gRPC mode + host + http host + ws host + httpupgrade host + xhttp host + h2 host + QUIC security + gRPC Authority + path + ws path + httpupgrade path + xhttp path + h2 path + QUIC key + kcp seed + gRPC serviceName + TLS + Fingerprint + Alpn + allowInsecure + SNI + address + port + password + security + Password(Optional) + User(Optional) + encryption + flow + PublicKey + PreSharedKey(optional) + ShortId + SpiderX + Mldsa65Verify + SecretKey + Reserved(Optional, separated by commas) + Local address (optional IPv4/IPv6, separated by commas) + Mtu(optional, default 1420) + mKCP MTU (Optional, core default 1350) + mKCP TTI (Optional, core default 50) + Success + Failure + There is nothing + Incorrect protocol + Decoding failed + Select a config + Please install a File Manager. + Customize config + Invalid config + Content + There is no data in the clipboard + Invalid URL + Please do not use the insecure HTTP protocol subscription address + Ensure inbounds port is consistent with the settings + Config malformed: %1$s + Host(SNI)(Optional) + Action not allowed + Obfs password + Port Hopping(will override the port) + Port Hopping Interval + Bandwidth down (Supported units: k/m/g/t) + Bandwidth up (Supported units: k/m/g/t) + XHTTP Mode + XHTTP Extra raw JSON, format: { XHTTPObject } + finalMask raw JSON, format: { FinalMaskObject } + EchConfigList + Verify Peer Cert By Name + Certificate fingerprint (SHA-256) + Enable Browser Dialer + Only supports xhttp (packet-up) and ws outbound; TLS-related settings may be ignored or conflict + Current node uses an unencrypted connection. Your communication may be directly viewed by network intermediate facilities controlled by authoritarian governments.\nFor security reasons, such nodes cannot be connected via Xray core version 26.2.6+.\nIf it is a self-built node, please enable security encryption such as TLS, or pin the certificate pinnedCA256.\nIf it is a provider node, please contact the service provider to complete the technical upgrade. If the service provider refuses to cooperate, it is recommended to switch to a provider that pays more attention to user security.\nFor more information, please visit https://github.com/2dust/v2rayN/discussions/9460 + Fetch and fill certificate fingerprint + Certificate fingerprint fetched successfully + Failed to fetch certificate fingerprint - File copy failed, please use File Manager - Add asset - Add files - Add URL - Scan QRcode - URL - Download files - Add asset URL - File not found - The remarks already exists - Geo files source (optional) + File copy failed, please use File Manager + Add asset + Add files + Add URL + Scan QRcode + URL + Download files + Add asset URL + File not found + The remarks already exists + Geo files source (optional) - Loading - Search - Select all - Invert selection - Enter keywords - Bypass Mode - Auto select proxy app - Downloading content - Export to Clipboard - Import from Clipboard - Per-app settings - Enable per-app - Unknown app (unidentified UID) + Loading + Search + Select all + Invert selection + Enter keywords + Bypass Mode + Auto select proxy app + Downloading content + Export to Clipboard + Import from Clipboard + Per-app settings + Enable per-app + Unknown app (unidentified UID) - Settings - Advanced Settings - Core Settings - VPN Settings - Per-app proxy - General: Checked apps use proxy, unchecked apps connect directly; \nBypass mode: checked apps connect directly, unchecked apps use proxy. \nThe option to automatically select proxy applications is in the menu - Auto connect at startup - Automatically connects to the selected server at startup, which may be unsuccessful - - - The task will run in the background, and progress information will be displayed in the notification. - Auto test after updating subscription - Automated testing takes a long time. If enabled, the task will run in the background; otherwise, it will run on the current page. - Auto delete invalid config after testing - Test results may not be accurate; deleted config cannot be recovered. - Auto sort after testing - Test results may not be accurate; - - Mux Settings - Enable Mux - Faster, but it may cause unstable connectivity\nCustomize how to handle TCP, UDP and QUIC below - TCP connections(range -1 to 1024) - XUDP connections(range -1 to 1024) - Handling of QUIC in mux tunnel + Settings + Advanced Settings + Core Settings + VPN Settings + Per-app proxy + General: Checked apps use proxy, unchecked apps connect directly; \nBypass mode: checked apps connect directly, unchecked apps use proxy. \nThe option to automatically select proxy applications is in the menu + Auto connect at startup + Automatically connects to the selected server at startup, which may be unsuccessful + + + The task will run in the background, and progress information will be displayed in the notification. + Auto test after updating subscription + Automated testing takes a long time. If enabled, the task will run in the background; otherwise, it will run on the current page. + Auto delete invalid config after testing + Test results may not be accurate; deleted config cannot be recovered. + Auto sort after testing + Test results may not be accurate; + + Mux Settings + Enable Mux + Faster, but it may cause unstable connectivity\nCustomize how to handle TCP, UDP and QUIC below + TCP connections(range -1 to 1024) + XUDP connections(range -1 to 1024) + Handling of QUIC in mux tunnel reject allow skip - Enable speed display - Display current speed in the notification.\nNotification icon would change based on - usage. + Enable speed display + Display current speed in the notification.\nNotification icon would change based on usage. - Enable Sniffing - Try sniff domain from the packet (default on) - Enable routeOnly - Use the sniffed domain name for routing only, and keep the target address as the IP address. + Enable Sniffing + Try sniff domain from the packet (default on) + Enable routeOnly + Use the sniffed domain name for routing only, and keep the target address as the IP address. - Enable local DNS - DNS processed by core‘s DNS module (Recommended if you need routing bypassing LAN and mainland addresses) + Enable local DNS + DNS processed by core‘s DNS module (Recommended if you need routing bypassing LAN and mainland addresses) - Enable fake DNS - Local DNS returns fake IP addresses (faster, but it may not work for some apps) + Enable fake DNS + Local DNS returns fake IP addresses (faster, but it may not work for some apps) - Enable IPv6 - Add IPv6 address and routes to the VPN interface + Enable IPv6 + Add IPv6 address and routes to the VPN interface - Prefer IPv6 - Prefer IPv6 addresses when resolving domain names + Prefer IPv6 + Prefer IPv6 addresses when resolving domain names - Remote DNS (udp/tcp/https/quic)(Optional) - DNS + Remote DNS (udp/tcp/https/quic)(Optional) + DNS - VPN DNS (only IPv4/v6) - Does VPN bypass LAN + VPN DNS (only IPv4/v6) + Does VPN bypass LAN - VPN Interface Address + VPN Interface Address - VPN MTU (default 1500) + VPN MTU (default 1500) - Domestic DNS (Optional) - DNS + Domestic DNS (Optional) + DNS - DNS hosts (Format: domain:address,…) - domain:address,… + DNS hosts (Format: domain:address,…) + domain:address,… - True delay test url - Url - True delay test concurrency + True delay test url + Url + True delay test concurrency - Current connection info test url - Url + Current connection info test url + Url - Allow connections from the LAN - Other devices can connect to proxy by your IP address through local proxy. Only enable in trusted networks to avoid unauthorized connections - Allow connections from the LAN. Make sure you are in a trusted network + Allow connections from the LAN + Other devices can connect to proxy by your IP address through local proxy. Only enable in trusted networks to avoid unauthorized connections + Allow connections from the LAN. Make sure you are in a trusted network - Local proxy port - Enable local proxy - When disabled, no SOCKS proxy is available, so subscription updates and similar actions cannot use the proxy - SOCKS5 UDP - SOCKS5 authentication is not fully secure when using UDP. - Local proxy port - Enable dynamic local proxy port - Generate a random local proxy port each time the inbound is created - Local proxy username (optional) - Username - Local proxy password (optional) - Password + Local proxy port + Enable local proxy + When disabled, no SOCKS proxy is available, so subscription updates and similar actions cannot use the proxy + SOCKS5 UDP + SOCKS5 authentication is not fully secure when using UDP. + Local proxy port + Enable dynamic local proxy port + Generate a random local proxy port each time the inbound is created + Local proxy username (optional) + Username + Local proxy password (optional) + Password - Local DNS port - Local DNS port + Local DNS port + Local DNS port - Delete config confirmation - Whether deleting a config requires a second confirmation by the user + Delete config confirmation + Whether deleting a config requires a second confirmation by the user - Append HTTP Proxy to VPN - HTTP proxy will be used directly from (browser/ some supported apps), without going through the virtual NIC device (Android 10+) + Append HTTP Proxy to VPN + HTTP proxy will be used directly from (browser/ some supported apps), without going through the virtual NIC device (Android 10+) - Enable double column display - The profile list is displayed in double columns, allowing more content to be displayed on the screen. + Enable double column display + The profile list is displayed in double columns, allowing more content to be displayed on the screen. - Enable show all groups - Add an extra "All Tabs" page + Enable show all groups + Add an extra "All Tabs" page - Feedback - Feedback enhancements or bugs to GitHub - Join Telegram Group - Telegram app not found - Privacy policy - QR code - About - Source code - Open Source licenses - Telegram channel - - Promotion - - Automatic update subscriptions - Update your subscriptions automatically at set intervals in the background. Depending on the device, this feature may not always work - Auto Update Interval (Minutes, Min value 15) - - Log Level - Outbound domain pre-resolve method - Mode - Click me for more help - Language - UI settings - UI mode settings - Enable Hev TUN Feature - When enabled, TUN will use hev-socks5-tunnel; otherwise, it will use xray-core. - Hev Tun Log Level - Hev Tun read/write timeout (seconds) (tcp,udp default 300,60) - Mode Settings - Root mode enabled (Root Users) - Enable low-level transparent proxying via root privileges. This mode bypasses the standard Android system VPN to directly take over all underlying network traffic. Once enabled, the original regular mode, per-app routing, and related VPN settings will become completely invalid. - Root access is required for this feature - LAN / tethering sharing (Root Users) - Route Wi-Fi hotspot and USB-tethered devices through the VPN - - Logcat - Copy - Clear - Share log - Service restart - Delete config - Delete duplicate config - Delete invalid config - Export configs to clipboard - Subscription group setting - remarks - Optional URL - User Agent - Request Headers (JSON format) - Remarks regular filter - Enable update - Enable automatic update - Allow insecure HTTP address - Previous proxy config remarks - Next proxy config remarks - The config remarks exist and are unique - Invalid update interval. Minimum is 15 minutes. - Update subscription - Tcping config - Real delay config - Asset files - Sorting by test results - Filter config - All - Click screen open the camera scan - Delete %d duplicate configs - Delete %d configs - Import %d configs - Export %d configs - Update %d configs - Updated %1$d configs (%2$d success, %3$d failed, %4$d skipped) - No subscriptions - Selected server not found in current group - Unable to locate current view - Locate the selected config - - Start Service - Confirm + Feedback + Feedback enhancements or bugs to GitHub + Join Telegram Group + Telegram app not found + Privacy policy + QR code + About + Source code + Open Source licenses + Telegram channel + + Promotion + + Automatic update subscriptions + Update your subscriptions automatically at set intervals in the background. Depending on the device, this feature may not always work + Auto Update Interval (Minutes, Min value 15) + + Log Level + Outbound domain pre-resolve method + Mode + Click me for more help + Language + UI settings + UI mode settings + Enable Hev TUN Feature + When enabled, TUN will use hev-socks5-tunnel; otherwise, it will use xray-core. + Hev Tun Log Level + Hev Tun read/write timeout (seconds) (tcp,udp default 300,60) + Mode Settings + Root mode enabled (Root Users) + Enable low-level transparent proxying via root privileges. This mode bypasses the standard Android system VPN to directly take over all underlying network traffic. Once enabled, the original regular mode, per-app routing, and related VPN settings will become completely invalid. + Root access is required for this feature + LAN / tethering sharing (Root Users) + Route Wi-Fi hotspot and USB-tethered devices through the VPN + + Logcat + Copy + Clear + Share log + Service restart + Delete config + Delete duplicate config + Delete invalid config + Export configs to clipboard + Subscription group setting + remarks + Optional URL + User Agent + Request Headers (JSON format) + Remarks regular filter + Enable update + Enable automatic update + Allow insecure HTTP address + Previous proxy config remarks + Next proxy config remarks + The config remarks exist and are unique + Invalid update interval. Minimum is 15 minutes. + Update subscription + Tcping config + Real delay config + Asset files + Sorting by test results + Filter config + All + Click screen open the camera scan + Delete %d duplicate configs + Delete %d configs + Import %d configs + Export %d configs + Update %d configs + Updated %1$d configs (%2$d success, %3$d failed, %4$d skipped) + No subscriptions + Selected server not found in current group + Unable to locate current view + Locate the selected config + + Start Service + Confirm - Domain strategy - Routing Settings - Separated by commas(,), \nchoose domain or ip or process - Save - Clear - Routing Rule Settings - Add rule - Import predefined rulesets - Existing rulesets will be deleted, are you sure to continue? - Import ruleset from clipboard - Import ruleset from QRcode - Export ruleset to clipboard - Locked, keep this rule when import presets - domain - ip - process (Package Name — only supported when using Xray TUN, routeOnly enabled, and Android 10+) - Select package name - port - protocol - [http,tls,bittorrent] - network - proxy / direct / block / <remarks> - outboundTag - - Check Connectivity - Testing… - Testing %d configs… - Success: Connection took %dms - Fail to detect internet connection: %s - Internet Unavailable - Error code: #%d - Connected, tap to check connection - Not connected - Number of running test tasks: %s - - Subscription imported Successfully - Import subscription failed - Fragment Settings - Fragment Packets - Fragment Length (min-max) - Fragment Interval (min-max) - Enable Fragment - Fragment Max Split - Observatory Settings - leastPing Interval - leastLoad Interval - leastLoad Mode - leastLoad Sampling - leastLoad Timeout - Invalid duration. Use a value like 3m or 30s. - Invalid sampling. Use a positive number. - - Check for update - Already on the latest version - New version found: %s - Update now - Check Pre-release - Checking for update… - - Policy group type - From subscription group - Remarks regular filter - Test outbounds - Fallback outbound (optional) - - Proxy chain members - Tap here to pick member - Select a member - Please select member for each chain row - Insufficient members - Invalid chain members: %1$s + Domain strategy + Routing Settings + Separated by commas(,), \nchoose domain or ip or process + Save + Clear + Routing Rule Settings + Add rule + Import predefined rulesets + Existing rulesets will be deleted, are you sure to continue? + Import ruleset from clipboard + Import ruleset from QRcode + Export ruleset to clipboard + Locked, keep this rule when import presets + domain + ip + process (Package Name — only supported when using Xray TUN, routeOnly enabled, and Android 10+) + Select package name + port + protocol + [http,tls,bittorrent] + network + proxy / direct / block / <remarks> + outboundTag + + Check Connectivity + Testing… + Testing %d configs… + Success: Connection took %dms + Fail to detect internet connection: %s + Internet Unavailable + Error code: #%d + Connected, tap to check connection + Not connected + Number of running test tasks: %s + + Subscription imported Successfully + Import subscription failed + Fragment Settings + Fragment Packets + Fragment Length (min-max) + Fragment Interval (min-max) + Enable Fragment + Fragment Max Split + Observatory Settings + leastPing Interval + leastLoad Interval + leastLoad Mode + leastLoad Sampling + leastLoad Timeout + Invalid duration. Use a value like 3m or 30s. + Invalid sampling. Use a positive number. + + Check for update + Already on the latest version + New version found: %s + Update now + Check Pre-release + Checking for update… + + Policy group type + From subscription group + Remarks regular filter + Test outbounds + Fallback outbound (optional) + + Proxy chain members + Tap here to pick member + Select a member + Please select member for each chain row + Insufficient members + Invalid chain members: %1$s - Backup & Restore - Backup config - Restore config - Share config - WebDAV Settings - Please configure WebDAV first. - WebDAV server URL - Username - Password - Remote directory (optional) - - QRcode - Export to clipboard - Export full config to clipboard - Edit - Delete - Close + Backup & Restore + Backup config + Restore config + Share config + WebDAV Settings + Please configure WebDAV first. + WebDAV server URL + Username + Password + Remote directory (optional) + + QRcode + Export to clipboard + Export full config to clipboard + Edit + Delete + Close + + No server selected + Failed to decode server config + Failed to build config context + Failed to get V2Ray config + Failed to get V2Ray config: %1$s + Failed to get V2Ray config for speed test: %1$s + Custom config is empty + Core failed to start + + Start + Stop + Back + Search + Add + More + Share subscription + Share log + Remove + Add member + Start scanner + Stop scanner + Turn torch on + Turn torch off + Select image + Locked + Open menu + Edit + Delete + Save + Update subscriptions + Per-app proxy information + Camera + Notification + Local network + %1$s insecure + Updating %1$s + %1$s in %2$s + Start %1$s + Stop %1$s + empty message + unknown QRcode