Compare commits

..

16 Commits

Author SHA1 Message Date
2dust 2128488658 up 1.7.37 (rollback core to 1.7.2) 2023-02-03 12:04:39 +08:00
2dust d9dc8317f5 up 1.7.36 2023-02-03 10:47:28 +08:00
2dust 6eda2180e4 Update strings.xml 2023-02-03 10:42:24 +08:00
2dust 57a2f0bebf share link to add fingerprint 2023-02-03 10:11:40 +08:00
2dust 1fd3ccaa0c Merge pull request #1959 from user09283/patch-2
Update strings.xml
2023-01-29 20:23:23 +08:00
user09283 528597d0c7 Update strings.xml 2023-01-29 16:22:31 +07:00
user09283 37411e3e6b Update strings.xml 2023-01-29 16:13:38 +07:00
2dust 6d681b92aa up 1.7.35 2023-01-28 15:52:25 +08:00
2dust 73fae63905 Merge pull request #1942 from user09283/patch-1
Update strings.xml (vi)
2023-01-28 15:38:04 +08:00
2dust 216710974a Merge pull request #1920 from ysy950803/master
Replace colors hard code with values-night.
2023-01-28 15:37:53 +08:00
user09283 f3bbef7412 Update strings.xml 2023-01-26 14:03:47 +07:00
user09283 fa74d9c598 Update strings.xml 2023-01-24 21:00:51 +07:00
user09283 113364af26 Update strings.xml 2023-01-24 20:51:43 +07:00
Sylvester Yao 2990db305e Replace colors hard code with values-night. 2023-01-13 12:00:59 +08:00
2dust db8942fe5a up 1.7.34 2023-01-12 15:42:47 +08:00
2dust 402d63bd9a . 2023-01-12 14:35:38 +08:00
21 changed files with 380 additions and 150 deletions
+2 -2
View File
@@ -18,8 +18,8 @@ android {
minSdkVersion 21
targetSdkVersion Integer.parseInt("$targetSdkVer")
multiDexEnabled true
versionCode 480
versionName "1.7.23"
versionCode 501
versionName "1.7.37"
}
if (props["sign"]) {
Binary file not shown.
+5 -3
View File
@@ -31,13 +31,15 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppThemeLight"
android:theme="@style/AppThemeDayNight"
android:usesCleartextTraffic="true"
tools:targetApi="m">
<activity
android:exported="true"
android:name=".ui.MainActivity"
android:launchMode="singleTask">
android:exported="true"
android:launchMode="singleTask"
android:theme="@style/AppThemeDayNight.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
@@ -6,7 +6,8 @@ enum class EConfigType(val value: Int, val protocolScheme: String) {
SHADOWSOCKS(3, "ss://"),
SOCKS(4, "socks://"),
VLESS(5, "vless://"),
TROJAN(6, "trojan://");
TROJAN(6, "trojan://"),
WIREGUARD(7, "wireguard://");
companion object {
fun fromInt(value: Int) = values().firstOrNull { it.value == value }
@@ -26,7 +26,7 @@ data class ServerConfig(
vnext = listOf(V2rayConfig.OutboundBean.OutSettingsBean.VnextBean(
users = listOf(V2rayConfig.OutboundBean.OutSettingsBean.VnextBean.UsersBean())))),
streamSettings = V2rayConfig.OutboundBean.StreamSettingsBean()))
EConfigType.CUSTOM ->
EConfigType.CUSTOM, EConfigType.WIREGUARD ->
return ServerConfig(configType = configType)
EConfigType.SHADOWSOCKS, EConfigType.SOCKS, EConfigType.TROJAN ->
return ServerConfig(
@@ -74,14 +74,18 @@ data class V2rayConfig(
var response: Response? = null,
/*DNS*/
val network: String? = null,
val address: String? = null,
val address: Any? = null,
val port: Int? = null,
/*Freedom*/
var domainStrategy: String? = null,
val redirect: String? = null,
val userLevel: Int? = null,
/*Loopback*/
val inboundTag: String? = null) {
val inboundTag: String? = null,
/*Wireguard*/
val secretKey: String? = null,
val peers: List<WireGuardBean>? = null,
) {
data class VnextBean(var address: String = "",
var port: Int = DEFAULT_PORT,
@@ -113,6 +117,9 @@ data class V2rayConfig(
}
data class Response(var type: String)
data class WireGuardBean(var publicKey: String = "",
var endpoint: String = "")
}
data class StreamSettingsBean(var network: String = DEFAULT_NETWORK,
@@ -286,6 +293,8 @@ data class V2rayConfig(
|| protocol.equals(EConfigType.SOCKS.name, true)
|| protocol.equals(EConfigType.TROJAN.name, true)) {
return settings?.servers?.get(0)?.address
} else if (protocol.equals(EConfigType.WIREGUARD.name, true)) {
return settings?.peers?.get(0)?.endpoint?.substringBeforeLast(":")
}
return null
}
@@ -298,6 +307,8 @@ data class V2rayConfig(
|| protocol.equals(EConfigType.SOCKS.name, true)
|| protocol.equals(EConfigType.TROJAN.name, true)) {
return settings?.servers?.get(0)?.port
} else if (protocol.equals(EConfigType.WIREGUARD.name, true)) {
return settings?.peers?.get(0)?.endpoint?.substringAfterLast(":")?.toInt()
}
return null
}
@@ -311,6 +322,8 @@ data class V2rayConfig(
return settings?.servers?.get(0)?.password
} else if (protocol.equals(EConfigType.SOCKS.name, true)) {
return settings?.servers?.get(0)?.users?.get(0)?.pass
} else if (protocol.equals(EConfigType.WIREGUARD.name, true)) {
return settings?.secretKey
}
return null
}
@@ -426,12 +439,10 @@ data class V2rayConfig(
fun getProxyOutbound(): OutboundBean? {
outbounds.forEach { outbound ->
if (outbound.protocol.equals(EConfigType.VMESS.name, true) ||
outbound.protocol.equals(EConfigType.VLESS.name, true) ||
outbound.protocol.equals(EConfigType.SHADOWSOCKS.name, true) ||
outbound.protocol.equals(EConfigType.SOCKS.name, true) ||
outbound.protocol.equals(EConfigType.TROJAN.name, true)) {
return outbound
EConfigType.values().forEach {
if (outbound.protocol.equals(it.name, true)) {
return outbound
}
}
}
return null
@@ -13,4 +13,5 @@ data class VmessQRCode(var v: String = "",
var path: String = "",
var tls: String = "",
var sni: String = "",
var alpn: String = "")
var alpn: String = "",
var fp: String = "")
@@ -36,6 +36,7 @@ class V2RayVpnService : VpnService(), ServiceControl {
private val settingsStorage by lazy { MMKV.mmkvWithID(MmkvManager.ID_SETTING, MMKV.MULTI_PROCESS_MODE) }
private lateinit var mInterface: ParcelFileDescriptor
private var isRunning = false
//val fd: Int get() = mInterface.fd
private lateinit var process: Process
@@ -183,6 +184,7 @@ class V2RayVpnService : VpnService(), ServiceControl {
// Create a new interface using the builder and save the parameters.
try {
mInterface = builder.establish()!!
isRunning = true
runTun2socks()
} catch (e: Exception) {
// non-nullable lateinit var
@@ -219,6 +221,15 @@ class V2RayVpnService : VpnService(), ServiceControl {
process = proBuilder
.directory(applicationContext.filesDir)
.start()
Thread(Runnable {
Log.d(packageName,"$TUN2SOCKS check")
process.waitFor()
Log.d(packageName,"$TUN2SOCKS exited")
if (isRunning) {
Log.d(packageName,"$TUN2SOCKS restart")
runTun2socks()
}
}).start()
Log.d(packageName, process.toString())
sendFd()
@@ -262,6 +273,7 @@ class V2RayVpnService : VpnService(), ServiceControl {
// val emptyInfo = VpnNetworkInfo()
// val info = loadVpnNetworkInfo(configName, emptyInfo)!! + (lastNetworkInfo ?: emptyInfo)
// saveVpnNetworkInfo(configName, info)
isRunning = false;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
try {
connectivity.unregisterNetworkCallback(defaultNetworkCallback)
@@ -2,12 +2,10 @@ package com.v2ray.ang.ui
import android.content.Context
import android.os.Build
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import android.view.MenuItem
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import com.v2ray.ang.util.MyContextWrapper
import com.v2ray.ang.R
import com.v2ray.ang.util.Utils
abstract class BaseActivity : AppCompatActivity() {
@@ -19,27 +17,6 @@ abstract class BaseActivity : AppCompatActivity() {
else -> super.onOptionsItemSelected(item)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
checkDarkMode()
}
private fun checkDarkMode() {
if (Utils.getDarkModeStatus(this)) {
if (this.javaClass.simpleName == "MainActivity") {
setTheme(R.style.AppThemeDark_NoActionBar)
} else {
setTheme(R.style.AppThemeDark)
}
} else {
if (this.javaClass.simpleName == "MainActivity") {
setTheme(R.style.AppThemeLight_NoActionBar)
} else {
setTheme(R.style.AppThemeLight)
}
}
}
@RequiresApi(Build.VERSION_CODES.N)
override fun attachBaseContext(newBase: Context?) {
val context = newBase?.let {
@@ -47,7 +24,4 @@ abstract class BaseActivity : AppCompatActivity() {
}
super.attachBaseContext(context)
}
}
}
@@ -488,7 +488,7 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList
if (!it.second.enabled) {
return@forEach
}
val url = it.second.url
val url = Utils.idnToASCII(it.second.url)
if (!Utils.isValidUrl(url)) {
return@forEach
}
@@ -186,8 +186,6 @@ object AngConfigManager {
config = ServerConfig.create(EConfigType.VMESS)
val streamSetting = config.outboundBean?.streamSettings ?: return -1
var fingerprint = streamSetting.tlsSettings?.fingerprint
if (!tryParseNewVmess(str, config, allowInsecure)) {
if (str.indexOf("?") > 0) {
@@ -221,7 +219,7 @@ object AngConfigManager {
val sni = streamSetting.populateTransportSettings(vmessQRCode.net, vmessQRCode.type, vmessQRCode.host,
vmessQRCode.path, vmessQRCode.path, vmessQRCode.host, vmessQRCode.path, vmessQRCode.type, vmessQRCode.path)
val fingerprint = vmessQRCode.fp ?: streamSetting.tlsSettings?.fingerprint
streamSetting.populateTlsSettings(vmessQRCode.tls, allowInsecure,
if (TextUtils.isEmpty(vmessQRCode.sni)) sni else vmessQRCode.sni, fingerprint, vmessQRCode.alpn)
}
@@ -306,6 +304,7 @@ object AngConfigManager {
val sni = config.outboundBean?.streamSettings?.populateTransportSettings(queryParam["type"] ?: "tcp", queryParam["headerType"],
queryParam["host"], queryParam["path"], queryParam["seed"], queryParam["quicSecurity"], queryParam["key"],
queryParam["mode"], queryParam["serviceName"])
fingerprint = queryParam["fp"] ?: ""
config.outboundBean?.streamSettings?.populateTlsSettings(queryParam["security"] ?: TLS, allowInsecure, queryParam["sni"] ?: sni!!, fingerprint, queryParam["alpn"])
flow = queryParam["flow"] ?: ""
} else {
@@ -339,6 +338,7 @@ object AngConfigManager {
val sni = streamSetting.populateTransportSettings(queryParam["type"] ?: "tcp", queryParam["headerType"],
queryParam["host"], queryParam["path"], queryParam["seed"], queryParam["quicSecurity"], queryParam["key"],
queryParam["mode"], queryParam["serviceName"])
fingerprint = queryParam["fp"] ?: ""
streamSetting.populateTlsSettings(queryParam["security"] ?: "", allowInsecure, queryParam["sni"] ?: sni, fingerprint, queryParam["alpn"])
}
if (config == null){
@@ -478,6 +478,7 @@ object AngConfigManager {
vmessQRCode.tls = streamSetting.security
vmessQRCode.sni = streamSetting.tlsSettings?.serverName.orEmpty()
vmessQRCode.alpn = Utils.removeWhiteSpace(streamSetting.tlsSettings?.alpn?.joinToString()).orEmpty()
vmessQRCode.fp = streamSetting.tlsSettings?.fingerprint.orEmpty()
outbound.getTransportSettingDetails()?.let { transportDetails ->
vmessQRCode.type = transportDetails[0]
vmessQRCode.host = transportDetails[1]
@@ -486,7 +487,7 @@ object AngConfigManager {
val json = Gson().toJson(vmessQRCode)
Utils.encode(json)
}
EConfigType.CUSTOM -> ""
EConfigType.CUSTOM, EConfigType.WIREGUARD -> ""
EConfigType.SHADOWSOCKS -> {
val remark = "#" + Utils.urlEncode(config.remarks)
val pw = Utils.encode("${outbound.getSecurityEncryption()}:${outbound.getPassword()}")
@@ -535,6 +536,9 @@ object AngConfigManager {
if (!tlsSetting.alpn.isNullOrEmpty() && tlsSetting.alpn.isNotEmpty()) {
dicQuery["alpn"] = Utils.removeWhiteSpace(tlsSetting.alpn.joinToString()).orEmpty()
}
if (!TextUtils.isEmpty(tlsSetting.fingerprint)) {
dicQuery["fp"] = tlsSetting.fingerprint!!
}
}
dicQuery["type"] = streamSetting.network.ifEmpty { V2rayConfig.DEFAULT_NETWORK }
@@ -410,6 +410,7 @@ object Utils {
"zh-rTW" -> Locale("zh", "TW")
"vi" -> Locale("vi")
"ru" -> Locale("ru")
"fa" -> Locale("fa")
else -> getSysLocale()
}
@@ -428,5 +429,11 @@ object Utils {
fun removeWhiteSpace(str: String?): String? {
return str?.replace(" ", "")
}
fun idnToASCII(str: String): String {
val url = URL(str)
return URL(url.protocol, IDN.toASCII(url.host, IDN.ALLOW_UNASSIGNED), url.port, url.file)
.toExternalForm()
}
}
@@ -0,0 +1,229 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name" translatable="false">v2rayNG</string>
<string name="app_widget_name">تعویض</string>
<string name="app_tile_name">تعویض</string>
<string name="app_tile_first_use">برای اولین بار از این ویژگی استفاده می‌کنید، لطفا از برنامه برای افزودن سرور استفاده کنید</string>
<string name="navigation_drawer_open">باز کردن منو کشویی</string>
<string name="navigation_drawer_close">بستن منو کشویی</string>
<string name="migration_success">موفقیت در انتقال داده!</string>
<string name="migration_fail">انتقال داده انجام نشد!</string>
<!-- Notifications -->
<string name="notification_action_stop_v2ray">متوقف</string>
<string name="toast_permission_denied">قادر به دریافت مجوز نیست</string>
<string name="notification_action_more">برای اطلاعات بیشتر کلیک کنید</string>
<string name="toast_services_start">شروع خدمات</string>
<string name="toast_services_stop">توقف خدمات</string>
<string name="toast_services_success">خدمات با موفقیت شروع شد</string>
<string name="toast_services_failure">شروع خدمات انجام نشد</string>
<!--ServerActivity-->
<string name="title_server">پرونده پیکربندی</string>
<string name="menu_item_add_config">افزودن پیکربندی</string>
<string name="menu_item_save_config">ذخیره پیکربندی</string>
<string name="menu_item_del_config">حذف پیکربندی</string>
<string name="menu_item_import_config_qrcode">پیکربندی را از QRcode وارد کنید</string>
<string name="menu_item_import_config_clipboard">پیکربندی را از کلیپ‌بورد وارد کنید</string>
<string name="menu_item_import_config_manually_vmess">تایپ دستی[Vmess]</string>
<string name="menu_item_import_config_manually_vless">تایپ دستی[VLESS]</string>
<string name="menu_item_import_config_manually_ss">تایپ دستی[Shadowsocks]</string>
<string name="menu_item_import_config_manually_socks">تایپ دستی[Socks]</string>
<string name="menu_item_import_config_manually_trojan">تایپ دستی[Trojan]</string>
<string name="menu_item_import_config_custom">پیکربندی سفارشی</string>
<string name="menu_item_import_config_custom_clipboard">پیکربندی سفارشی را از کلیپ‌بورد وارد کنید</string>
<string name="menu_item_import_config_custom_local">پیکربندی سفارشی را به صورت محلی وارد کنید</string>
<string name="menu_item_import_config_custom_url">پیکربندی سفارشی را از طریق نشانی اینترنتی وارد کنید</string>
<string name="menu_item_import_config_custom_url_scan">نشانی اینترنتی اسکن پیکربندی سفارشی را وارد کنید</string>
<string name="del_config_comfirm">تایید حذف؟</string>
<string name="server_lab_remarks">ملاحظات</string>
<string name="server_lab_address">نشانی</string>
<string name="server_lab_port">پورت</string>
<string name="server_lab_id">شناسه</string>
<string name="server_lab_alterid">alterId</string>
<string name="server_lab_security">امنیت</string>
<string name="server_lab_network">شبکه</string>
<string name="server_lab_more_function">انتقال</string>
<string name="server_lab_head_type">نوع head</string>
<string name="server_lab_mode_type">حالت gRPC</string>
<string name="server_lab_request_host">درخواست میزبان (میزبان/میزبان ws/ میزبان h2)/امنیت QUIC</string>
<string name="server_lab_path">مسیر (مسیر ws/ مسیر h2) کلید QUIC/دانه kcp/نام‌خدمات gRPC</string>
<string name="server_lab_stream_security">tls</string>
<string name="server_lab_stream_fingerprint" translatable="false">uTLS</string>
<string name="server_lab_stream_alpn" translatable="false">alpn</string>
<string name="server_lab_allow_insecure">allowInsecure</string>
<string name="server_lab_sni">SNI</string>
<string name="server_lab_address3">نشانی</string>
<string name="server_lab_port3">پورت</string>
<string name="server_lab_id3">رمز عبور</string>
<string name="server_lab_security3">امنیت</string>
<string name="server_lab_id4">رمز عبور (اختیاری)</string>
<string name="server_lab_security4">نام‌کاربری (اختیاری)</string>
<string name="server_lab_encryption">رمزگذاری</string>
<string name="server_lab_flow">جریان</string>
<string name="toast_success">موفقیت</string>
<string name="toast_failure">شکست</string>
<string name="toast_none_data">چیزی نیست</string>
<string name="toast_incorrect_protocol">پروتکل نادرست</string>
<string name="toast_decoding_failed">رمزگشایی انجام نشد</string>
<string name="title_file_chooser">انتخاب پرونده پیکربندی</string>
<string name="toast_require_file_manager">لطفا یک مدیر پرونده نصب کنید.</string>
<string name="server_customize_config">سفارشی‌سازی پیکربندی</string>
<string name="toast_config_file_invalid">پیکربندی معتبر نیست</string>
<string name="server_lab_content">محتوا</string>
<string name="toast_none_data_clipboard">هیچ داده‌ای در کلیپ‌بورد وجود ندارد</string>
<string name="toast_invalid_url">نشانی اینترنتی معتبر نیست</string>
<string name="server_lab_need_inbound">اطمینان حاصل کنید که پورت ورودی با تنظیمات مطابقت دارد</string>
<string name="toast_malformed_josn">پیکربندی درست نیست</string>
<string name="server_lab_request_host6">میزبان (SNI) (اختیاری)</string>
<string name="toast_asset_copy_failed">کپی پرونده انجام نشد، لطفا از مدیر پرونده استفاده کنید</string>
<string name="menu_item_add_file">افزودن پرونده‌ها</string>
<string name="menu_item_download_file">دانلود پرونده‌ها</string>
<!-- PerAppProxyActivity -->
<string name="msg_dialog_progress">بارگذاری</string>
<string name="menu_item_search">جستجو</string>
<string name="menu_item_select_all">انتخاب همه</string>
<string name="msg_enter_keywords">کلیدواژه‌ها را وارد کنید</string>
<string name="switch_bypass_apps_mode">حالت Bypass</string>
<string name="menu_item_select_proxy_app">انتخاب خودکار پروکسی برنامه</string>
<string name="msg_downloading_content">در حال دانلود محتوا</string>
<string name="menu_item_export_proxy_app">خروجی گرفتن در کلیپ‌بورد</string>
<string name="menu_item_import_proxy_app">وارد کردن از کلیپ‌بورد</string>
<!-- Preferences -->
<string name="title_settings">تنظیمات</string>
<string name="title_advanced">تنظیمات پیشرفته</string>
<string name="title_vpn_settings">تنظیمات VPN</string>
<string name="title_pref_per_app_proxy">پروکسی هر برنامه</string>
<string name="summary_pref_per_app_proxy">عمومی: برنامه بررسی شده پروکسی است، اتصال مستقیم بدون بررسی است. \nحالت bypass: برنامه بررسی شده مستقیما متصل است، پراکسی بررسی نشده است. \nگزینه‌ای برای انتخاب خودکار پروکسی برنامه در منو است</string>
<string name="title_pref_mux_enabled">فعال کردن Mux</string>
<string name="summary_pref_mux_enabled">فعال کردن شاید سرعت بخشیدن به شبکه و تغییر شبکه شاید فلش، بهبود کند</string>
<string name="title_pref_speed_enabled">فعال کردن نمایش سرعت</string>
<string name="summary_pref_speed_enabled">نمایش سرعت فعلی در قسمت آگاه‌سازی. \nآیکون آگاه‌سازی بر اساس استفاده تغییر می‌کند.</string>
<string name="title_pref_sniffing_enabled">فعال کردن Sniffing</string>
<string name="summary_pref_sniffing_enabled">دامنه sniff را از بسته امتحان کنید (پیش‌فرض روشن)</string>
<string name="title_pref_local_dns_enabled">فعال کردن DNS محلی</string>
<string name="summary_pref_local_dns_enabled">DNS پردازش شده توسط ماژول DNS هسته (توصیه می‌شود، در صورت نیاز به دور زدن LAN و نشانی mainland)</string>
<string name="title_pref_fake_dns_enabled">فعال کردن DNS جعلی</string>
<string name="summary_pref_fake_dns_enabled">DNS محلی آدرس IP جعلی را برمی‌گرداند (سریع‌تر می‌باشد، اما ممکن است برای برخی از برنامه‌ها کار نکند)</string>
<string name="title_pref_prefer_ipv6">IPv6 را ترجیح دهید</string>
<string name="summary_pref_prefer_ipv6">نشانی و مسیرهای IPv6 را ترجیح دهید</string>
<string name="title_pref_routing">مسیریابی</string>
<string name="title_pref_routing_domain_strategy">استراتژی دامنه</string>
<string name="title_pref_routing_mode">قوانین از پیش تعریف شده</string>
<string name="title_pref_routing_custom">قوانین سفارشی</string>
<string name="title_pref_remote_dns">DNS از راه دور (اختیاری)</string>
<string name="summary_pref_remote_dns">DNS</string>
<string name="title_pref_vpn_dns">VPN DNS (فقط IPv4/v6)</string>
<string name="title_pref_domestic_dns">DNS داخلی (اختیاری)</string>
<string name="summary_pref_domestic_dns">DNS</string>
<string name="title_pref_proxy_sharing_enabled">اجازه اتصالات از طریق LAN</string>
<string name="summary_pref_proxy_sharing_enabled">دستگاه‌های دیگر می‌توانند از طریق socks/http به پراکسی توسط نشانی آی‌پی شما متصل شوند، فقط در شبکه مورد اعتماد فعال می‌شوند تا از اتصال غیرمجاز جلوگیری کنند</string>
<string name="toast_warning_pref_proxysharing_short">اتصالات از طریق LAN را مجاز کنید، مطمئن شوید که در یک شبکه قابل اعتماد هستید</string>
<string name="title_pref_allow_insecure">allowInsecure</string>
<string name="summary_pref_allow_insecure">هنگامی که TLS، به طور پیش‌فرض allowInsecure</string>
<string name="title_pref_socks_port">پورت پروکسی SOCKS5</string>
<string name="summary_pref_socks_port">پورت پروکسی SOCKS5</string>
<string name="title_pref_http_port">پورت پروکسی HTTP</string>
<string name="summary_pref_http_port">پورت پروکسی HTTP</string>
<string name="title_pref_local_dns_port">پورت DNS محلی</string>
<string name="summary_pref_local_dns_port">پورت DNS محلی</string>
<string name="title_pref_confirm_remove">تایید حذف پرونده پیکربندی</string>
<string name="summary_pref_confirm_remove">آیا برای حذف پرونده پیکربندی نیاز به تایید دوم توسط کاربر است</string>
<string name="title_pref_feedback">بازخورد</string>
<string name="summary_pref_feedback">بهبودهای بازخورد یا اشکالات در گیت‌هاب</string>
<string name="summary_pref_tg_group">عضویت در گروه تلگرام</string>
<string name="toast_tg_app_not_found">برنامه تلگرام پیدا نشد</string>
<string name="title_pref_promotion">تبلیغات،</string>
<string name="summary_pref_promotion">تبلیغات، برای جزئیات بیشتر کلیک کنید (کمک مالی کنید تا حذف شود)</string>
<string name="title_core_loglevel">سطح گزارشات</string>
<string name="title_mode">حالت</string>
<string name="title_mode_help">برای راهنمایی بیشتر روی این متن، کلیک کنید</string>
<string name="title_language">زبان</string>
<string name="title_logcat">گزارشات</string>
<string name="logcat_copy">کپی</string>
<string name="logcat_clear">پاک کردن</string>
<string name="title_service_restart">راه‌اندازی مجدد خدمات</string>
<string name="title_del_all_config">حذف تمام پیکربندی</string>
<string name="title_del_invalid_config">تنظیمات نامعتبر را حذف کنید (ابتدا آزمایش کنید)</string>
<string name="title_export_all">خروجی گرفتن پیکربندی‌های غیرسفارشی در کلیپ‌بورد</string>
<string name="title_sub_setting">تنظیمات گروه‌ی اشتراک</string>
<string name="sub_setting_remarks">ملاحظات</string>
<string name="sub_setting_url">نشانی اینترنتی اختیاری</string>
<string name="sub_setting_enable">فعال کردن به‌روزرسانی</string>
<string name="title_sub_update">به‌روزرسانی اشتراک</string>
<string name="title_ping_all_server">Tcping همه پیکربندی</string>
<string name="title_real_ping_all_server">تاخیر واقعی همه پیکربندی</string>
<string name="title_user_asset_setting">پرونده‌های دارایی جغرافیا</string>
<string name="title_sort_by_test_results">مرتب‌سازی بر اساس نتایج آزمایش</string>
<string name="title_filter_config">فیلتر پرونده پیکربندی</string>
<string name="filter_config_all">همه گروه‌های اشتراک</string>
<string name="tasker_start_service">شروع خدمات</string>
<string name="tasker_setting_confirm">تایید</string>
<string name="routing_settings_title">تنظیمات مسیریابی</string>
<string name="routing_settings_tips">با کاما (,) از هم جدا شوند، ذخیره کردن هم فراموش نک</string>
<string name="routing_settings_save">ذخیره</string>
<string name="routing_settings_delete">پاک کردن</string>
<string name="routing_settings_scan_replace">اسکن و جایگزین کنید</string>
<string name="routing_settings_scan_append">اسکن و اضافه کنید</string>
<string name="routing_settings_default_rules"> قوانین مسیریابی پیش‌فرض را تنظیم کنید</string>
<string name="connection_test_pending">اتصال را بررسی کنید</string>
<string name="connection_test_testing">در حال آزمایش...</string>
<string name="connection_test_available">موفقیت: اتصال HTTP %dms طول کشید</string>
<string name="connection_test_error">اتصال به اینترنت شناسایی نشد: %s</string>
<string name="connection_test_fail">اینترنت در دسترس نیست</string>
<string name="connection_test_error_status_code">کد خطا: #%d</string>
<string name="connection_connected">متصل است، برای بررسی اتصال ضربه بزنید</string>
<string name="connection_not_connected">متصل نیست</string>
<string-array name="share_method">
<item>QRcode</item>
<item>خروجی گرفتن در کلیپ‌بورد</item>
<item>خروجی گرفتن پیکربندی کامل در کلیپ‌بورد</item>
</string-array>
<string-array name="routing_tag">
<item>نشانی اینترنتی یا آی‌پی پروکسی</item>
<item>نشانی اینترنتی یا آی‌پی مستقیم</item>
<item>نشانی اینترنتی یا آی‌پی مسدود شده</item>
</string-array>
<string-array name="routing_mode">
<item>پروکسی سراسری</item>
<item>دور زدن آدرس LAN و سپس پروکسی</item>
<item>دور زذن آدرس mainland و سپس پروکسی</item>
<item>دور زدن LAN و آدرس mainland و سپس پروکسی</item>
<item>مستقیم سراسری</item>
</string-array>
<string-array name="mode_entries">
<item>VPN</item>
<item>فقط پروکسی</item>
</string-array>
</resources>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorAccent">#12976F</color>
<color name="colorBg">#252525</color>
<color name="colorText">#CCCCCC</color>
</resources>
@@ -50,6 +50,7 @@
<string name="server_lab_path">Путь (WS/H2) / Ключ QUIC / Сид KCP / Сервис gRPC</string>
<string name="server_lab_stream_security">TLS</string>
<string name="server_lab_stream_fingerprint">uTLS</string>
<string name="server_lab_stream_alpn" translatable="false">alpn</string>
<string name="server_lab_allow_insecure">Разрешать небезопасные</string>
<string name="server_lab_sni">SNI</string>
<string name="server_lab_address3">Адрес</string>
@@ -102,7 +103,7 @@
<string name="summary_pref_mux_enabled">Включение может ускорить работу и переключение сети</string>
<string name="title_pref_speed_enabled">Отображение скорости</string>
<string name="summary_pref_speed_enabled">Показывать текущую скорость в уведомлении.\n\nЗначок будет меняться в зависимости от использования.</string>
<string name="summary_pref_speed_enabled">Показывать текущую скорость в уведомлении.\nЗначок будет меняться в зависимости от использования.</string>
<string name="title_pref_sniffing_enabled">Анализ пакетов</string>
<string name="summary_pref_sniffing_enabled">Использовать анализ пакетов (по умолчанию включено)</string>
@@ -166,9 +167,9 @@
<string name="logcat_clear">Очистить</string>
<string name="title_service_restart">Перезапуск службы</string>
<string name="title_del_all_config">Удалить все профили</string>
<string name="title_del_invalid_config">Удалить сбойный профиль (после проверки)</string>
<string name="title_del_invalid_config">Удалить сбойные профили (после проверки)</string>
<string name="title_export_all">Экспорт всех профилей в буфер обмена</string>
<string name="title_sub_setting">Подписки</string>
<string name="title_sub_setting">Группы</string>
<string name="sub_setting_remarks">примечания</string>
<string name="sub_setting_url">URL (необязательно)</string>
<string name="sub_setting_enable">использовать обновление</string>
@@ -178,7 +179,7 @@
<string name="title_user_asset_setting">Файлы георесурсов</string>
<string name="title_sort_by_test_results">Сортировка по результатам теста</string>
<string name="title_filter_config">Фильтр профилей</string>
<string name="filter_config_all">Все профили</string>
<string name="filter_config_all">Все группы</string>
<string name="tasker_start_service">Запуск службы</string>
<string name="tasker_setting_confirm">Подтвердить</string>
+72 -74
View File
@@ -2,78 +2,78 @@
<resources>
<string name="app_widget_name">Kết nối ngay</string>
<string name="app_tile_name">Kết nối ngay</string>
<string name="app_tile_first_use">Vui lòng thêm một cấu hình vào v2rayNG để sử dụng.</string>
<string name="navigation_drawer_open">Mở menu ứng dụng</string>
<string name="navigation_drawer_close">Đóng menu ứng dụng</string>
<string name="app_tile_first_use">Vui lòng thêm một cấu hình vào v2rayNG để sử dụng!</string>
<string name="navigation_drawer_open">Mở Menu ứng dụng</string>
<string name="navigation_drawer_close">Đóng Menu ứng dụng</string>
<string name="migration_success">Đã chuyển dữ liệu!</string>
<string name="migration_fail">Không thể chuyển dữ liệu!</string>
<!-- Notifications -->
<string name="notification_action_stop_v2ray">Ngắt kết nối v2rayNG</string>
<string name="toast_permission_denied">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ớ.</string>
<string name="toast_permission_denied">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ớ?</string>
<string name="notification_action_more">Nhấn để biết thêm</string>
<string name="toast_services_start">Đang bắt đầu dịch vụ v2rayNG.</string>
<string name="toast_services_stop">Đã dừng dịch vụ v2rayNG.</string>
<string name="toast_services_success">Đã bắt đầu dịch vụ v2rayNG.</string>
<string name="toast_services_failure">Không thể bắt đầu dịch vụ, hãy thử kiểm tra lại cấu hình hoặc khởi động lại thiết bị.</string>
<string name="toast_services_start">Đang bắt đầu v2rayNG...</string>
<string name="toast_services_stop">Đã dừng v2rayNG!</string>
<string name="toast_services_success">Đã bắt đầu v2rayNG!</string>
<string name="toast_services_failure">Không thể bắt đầu v2rayNG, kiểm tra lại cấu hình hoặc khởi động lại thiết bị.</string>
<!--ServerActivity-->
<string name="title_server">V2RayNG App :3</string>
<string name="title_server">v2rayNG</string>
<string name="menu_item_add_config">Thêm cấu hình</string>
<string name="menu_item_save_config">Lưu cấu hình</string>
<string name="menu_item_del_config">Xoá cấu hình</string>
<string name="menu_item_import_config_qrcode">Nhập cấu hình từ mã QR</string>
<string name="menu_item_import_config_clipboard">Nhập cấu hình từ bộ nhớ tạm thời</string>
<string name="menu_item_import_config_clipboard">Nhập cấu hình từ Clipboard</string>
<string name="menu_item_import_config_manually_vmess">Nhập thủ công [Vmess]</string>
<string name="menu_item_import_config_manually_vless">Nhập thủ công [VLESS]</string>
<string name="menu_item_import_config_manually_ss">Nhập thủ công [Shadowsocks]</string>
<string name="menu_item_import_config_manually_socks">Nhập thủ công [Socks]</string>
<string name="menu_item_import_config_manually_trojan">Nhập thủ công [Trojan]</string>
<string name="menu_item_import_config_custom">Nâng cao / Cấu hình tùy chỉnh</string>
<string name="menu_item_import_config_custom_clipboard">Nhập cấu hình tùy chỉnh từ bộ nhớ tạm thời</string>
<string name="menu_item_import_config_custom_clipboard">Nhập cấu hình tùy chỉnh từ Clipboard</string>
<string name="menu_item_import_config_custom_local">Nhập cấu hình tùy chỉnh từ Tệp</string>
<string name="menu_item_import_config_custom_url">Nhập cấu hình tùy chỉnh từ URL</string>
<string name="menu_item_import_config_custom_url_scan">Nhập cấu hình tùy chỉnh quét URL</string>
<string name="del_config_comfirm">Bạn có muốn xóa cấu hình ?</string>
<string name="del_config_comfirm">Bạn có muốn xóa cấu hình không?</string>
<string name="server_lab_remarks">Tên cấu hình</string>
<string name="server_lab_address">Địa chỉ</string>
<string name="server_lab_port">Cổng</string>
<string name="server_lab_id">Địa chỉ ID</string>
<string name="server_lab_alterid">alterId</string>
<string name="server_lab_id">ID</string>
<string name="server_lab_alterid">ID thay thế</string>
<string name="server_lab_security">Bảo mật</string>
<string name="server_lab_network">Kiểu kết nối</string>
<string name="server_lab_more_function">Nâng cao</string>
<string name="server_lab_head_type">Kiểu Head</string>
<string name="server_lab_head_type">Loại Head</string>
<string name="server_lab_mode_type">Chế độ gRPC</string>
<string name="server_lab_request_host">Yêu cầu host(host/ws host/h2 host)/Bảo mật QUIC</string>
<string name="server_lab_path">Đường dẫn (ws path/h2 path)/QUIC key/kcp seed/gRPC serviceName</string>
<string name="server_lab_stream_security">tls</string>
<string name="server_lab_allow_insecure">allowInsecure</string>
<string name="server_lab_request_host">Yêu cầu host (Host/WS/H2) / Bảo mật QUIC</string>
<string name="server_lab_path">Đường dẫn (WS/H2) / Khóa QUIC / KCP seed / Dịch vụ gRPC</string>
<string name="server_lab_stream_security">TLS</string>
<string name="server_lab_allow_insecure">Bỏ qua xác minh chứng chỉ</string>
<string name="server_lab_sni">Địa chỉ SNI</string>
<string name="server_lab_address3">Địa chỉ</string>
<string name="server_lab_port3">Cổng</string>
<string name="server_lab_id3">Mật khẩu</string>
<string name="server_lab_security3">Bảo mật</string>
<string name="server_lab_id4">Mật khẩu(Bổ sung)</string>
<string name="server_lab_security4">Tên người dùng(Bổ sung)</string>
<string name="server_lab_id4">Mật khẩu (Bổ sung)</string>
<string name="server_lab_security4">Tên người dùng (Bổ sung)</string>
<string name="server_lab_encryption">Mã hoá</string>
<string name="server_lab_flow">flow</string>
<string name="toast_success">Đã thực hiện thành công thao tác của bạn, Nếu có gì đó không ổn, hãy thao tác lại.</string>
<string name="toast_failure">Đã xảy ra lỗi, hãy thử kiểm tra lại hoặc thử lại.</string>
<string name="server_lab_flow">Kiểm soát lưu lượng</string>
<string name="toast_success">Thành công!</string>
<string name="toast_failure">Đã xảy ra lỗi, vui lòng thử lại!</string>
<string name="toast_none_data">Không có gì ở đây</string>
<string name="toast_incorrect_protocol">Không đúng protocol</string>
<string name="toast_decoding_failed">Không thể decode</string>
<string name="title_file_chooser">Vui lòng chọn tệp cấu hình</string>
<string name="toast_require_file_manager">Vui lòng cài đặt trình quản lý tệp để tiếp tục.</string>
<string name="toast_incorrect_protocol">Không đúng Protocol</string>
<string name="toast_decoding_failed">Không thể giải mã</string>
<string name="title_file_chooser">Vui lòng chọn tệp cấu hình!</string>
<string name="toast_require_file_manager">Vui lòng cài đặt trình quản lý tệp để tiếp tục!</string>
<string name="server_customize_config">Cấu hình tùy chỉnh</string>
<string name="toast_config_file_invalid">Cấu hình không hợp lệ</string>
<string name="toast_config_file_invalid">Cấu hình không hợp lệ!</string>
<string name="server_lab_content">Nội dung</string>
<string name="toast_none_data_clipboard">Không có dữ liệu nào trong bộ nhớ tạm thời</string>
<string name="toast_invalid_url">URL không hợp lệ hoặc không có gì</string>
<string name="server_lab_need_inbound">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. v2rayNG được Dịch Tiếng Việt bởi CuynuTT😘</string>
<string name="toast_malformed_josn">Cấu hình không hợp lệ </string>
<string name="server_lab_request_host6">Host(SNI)(Bổ sung)</string>
<string name="toast_asset_copy_failed">Không thể sao chép tệp tin, hãy dùng trình quản lý tệp</string>
<string name="toast_none_data_clipboard">Không có dữ liệu nào trong Clipboard!</string>
<string name="toast_invalid_url">URL không hợp lệ hoặc trống!</string>
<string name="server_lab_need_inbound">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!</string>
<string name="toast_malformed_josn">Cấu hình không hợp lệ!</string>
<string name="server_lab_request_host6">Host (SNI) (Bổ sung)</string>
<string name="toast_asset_copy_failed">Không thể sao chép tệp tin, hãy dùng trình quản lý tệp!</string>
<string name="menu_item_add_file">Thêm tệp</string>
<string name="menu_item_download_file">Tải xuống tệp tin</string>
@@ -86,15 +86,15 @@
<string name="menu_item_select_proxy_app">Tự động chọn ứng dụng Proxy</string>
<string name="msg_downloading_content">Đang tải xuống nội dung...</string>
<string name="menu_item_export_proxy_app">Xuất và sao chép</string>
<string name="menu_item_import_proxy_app">Nhập từ bộ nhớ tạm thời</string>
<string name="menu_item_import_proxy_app">Nhập từ Clipboard</string>
<!-- Preferences -->
<string name="title_settings">Cài đặt</string>
<string name="title_advanced">Cài đặt nâng cao</string>
<string name="title_vpn_settings">Cài đặt cho VPN</string>
<string name="title_pref_per_app_proxy">Proxy cho ứng dụng</string>
<string name="summary_pref_per_app_proxy">Chung: Ứng dụng đã chọn sẽ kết nối Proxy, Chưa lựa chọn sẽ kết nối trực tiếp; \nBỏ qua kết nối: Ứng dụng được chọn sẽ trực tiếp kết nối, không lựa chọn Proxy. \nLựa chọn để tự động chọn ứng dụng Proxy trong Menu.</string>
<string name="title_vpn_settings">Cài đặt VPN</string>
<string name="title_pref_per_app_proxy">Proxy ứng dụng</string>
<string name="summary_pref_per_app_proxy">- Chung: Ứng dụng đã chọn sẽ kết nối Proxy, chưa lựa chọn sẽ kết nối trực tiếp. \n- Bỏ qua kết nối: Ứng dụng được chọn sẽ trực tiếp kết nối, không lựa chọn sẽ kết nối qua Proxy. \n- Lựa chọn để tự động chọn ứng dụng Proxy trong Menu.</string>
<string name="title_pref_mux_enabled">Cho phép Mux</string>
<string name="summary_pref_mux_enabled">Bật lên có thể làm tăng tốc độ mạng và chuyển mạng nhanh hơn.</string>
@@ -102,16 +102,14 @@
<string name="title_pref_speed_enabled">Cho phép hiển thị tốc độ mạng</string>
<string name="summary_pref_speed_enabled">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.</string>
<string name="title_pref_sniffing_enabled">Cho phép Sniffing</string>
<string name="summary_pref_sniffing_enabled">Thử chuyển kết nối hiện tại của bạn qua trung gian để trung gian xử lý kết nối về lại cho bạn (Mặc định là bật, hãy tắt nó nếu kết nối không ổn định.)</string>
<string name="title_pref_sniffing_enabled">Bật tính năng phát hiện luồng</string>
<string name="summary_pref_sniffing_enabled">Thử chuyển kết nối hiện tại của bạn qua trung gian để trung gian xử lý kết nối về lại cho bạn. (Mặc định là bật, hãy tắt nó nếu kết nối không ổn định)</string>
<string name="title_pref_local_dns_enabled">Cho phép DNS cục bộ</string>
<string name="summary_pref_local_dns_enabled">DNS được xử lý bởi mô đun của lõi DNS.
(Khuyến cáo, nếu cần lộ trình Bẻ khoá LAN và
địa chỉ mainland)</string>
<string name="summary_pref_local_dns_enabled">DNS được xử lý bởi mô đun của lõi DNS. (Khuyến nghị, nếu cần định tuyến Bỏ qua mạng LAN và địa chỉ đất liền)</string>
<string name="title_pref_fake_dns_enabled">Cho phép DNS giả</string>
<string name="summary_pref_fake_dns_enabled">DNS cục bộ trả về địa chỉ IP giả (Nhanh hơn, nhưng có thể không hoạt động với một số ứng dụng)</string>
<string name="summary_pref_fake_dns_enabled">DNS cục bộ trả về địa chỉ IP giả. (Nhanh hơn, nhưng có thể không hoạt động với một số ứng dụng)</string>
<string name="title_pref_prefer_ipv6">Ưu tiên IPv6</string>
<string name="summary_pref_prefer_ipv6">Ưu tiên sử dụng địa chỉ IPv6 cho kết nối và lộ trình.</string>
@@ -124,17 +122,17 @@
<string name="title_pref_remote_dns">Điều khiển DNS (Bổ sung)</string>
<string name="summary_pref_remote_dns">DNS</string>
<string name="title_pref_vpn_dns">VPN DNS (Chỉ IPv4/v6)</string>
<string name="title_pref_vpn_dns">VPN DNS (Chỉ IPv4/IPv6)</string>
<string name="title_pref_domestic_dns">Domestic DNS (Bổ sung)</string>
<string name="title_pref_domestic_dns">DNS trong nước (Bổ sung)</string>
<string name="summary_pref_domestic_dns">DNS</string>
<string name="title_pref_proxy_sharing_enabled">Cho phép kết nối từ mạng LAN</string>
<string name="summary_pref_proxy_sharing_enabled">Các thiết bị khác có thể kết nối đến proxy bởi địa chỉ IP thông qua socks/http, Chỉ bật khi bạn tin tưởng kết nối để tránh kết nối lạ.</string>
<string name="toast_warning_pref_proxysharing_short">Cho phép kết nối từ mạng LAN, Đảm bảo rằng bạn tin tưởng kết nối hiện tại.</string>
<string name="summary_pref_proxy_sharing_enabled">Các thiết bị khác có thể kết nối đến Proxy bởi địa chỉ IP thông qua Socks/HTTP, chỉ bật khi bạn tin tưởng kết nối đó.</string>
<string name="toast_warning_pref_proxysharing_short">Cho phép kết nối từ mạng LAN, đảm bảo rằng bạn tin tưởng kết nối hiện tại!</string>
<string name="title_pref_allow_insecure">Cho phép đặt lại allowInsecure</string>
<string name="summary_pref_allow_insecure">Khi kết nối TLS, đặt cài đặt allowInsecure thành mặc định</string>
<string name="title_pref_allow_insecure">Cho phép đặt lại Bỏ qua xác minh chứng chỉ</string>
<string name="summary_pref_allow_insecure">Khi kết nối TLS, đặt cài đặt Bỏ qua xác minh chứng chỉ thành mặc định.</string>
<string name="title_pref_socks_port">Cổng Proxy SOCKS5</string>
<string name="summary_pref_socks_port">Cổng Proxy SOCKS5</string>
@@ -149,17 +147,17 @@
<string name="summary_pref_confirm_remove">Hiển thị thông báo xác nhận xoá cấu hình khi bạn xoá một cấu hình.</string>
<string name="title_pref_feedback">Phản hồi lỗi</string>
<string name="summary_pref_feedback">Phản hồi cải tiến hoặc bug lên GitHub</string>
<string name="summary_pref_feedback">Phản hồi cải tiến hoặc lỗi lên GitHub</string>
<string name="summary_pref_tg_group">Tham gia nhóm Telegram</string>
<string name="toast_tg_app_not_found">Không tìm thấy ứng dụng Telegram</string>
<string name="title_pref_promotion">Quảng cáo Server</string>
<string name="summary_pref_promotion">Quảng cáo,nhấn để biết thêm(Ủng hộ có thể được gỡ bỏ)</string>
<string name="summary_pref_promotion">Quảng cáo, nhấn để biết thêm (Ủng hộ có thể được gỡ bỏ)</string>
<string name="title_core_loglevel">Mức độ nhật ký</string>
<string name="title_mode">Chế độ kết nối</string>
<string name="title_mode_help">Nhấn vào đây nếu bạn cần trợ giúp</string>
<string name="title_language">Ngôn ngữ ứng dụng</string>
<string name="title_mode_help">Nhấn vào đây nếu bạn cần trợ giúp!</string>
<string name="title_language">Ngôn ngữ</string>
<string name="title_logcat">Nhật ký hoạt động</string>
<string name="logcat_copy">Sao chép nhật ký</string>
@@ -175,30 +173,30 @@
<string name="title_sub_update">Cập nhật các gói đăng ký</string>
<string name="title_ping_all_server">Ping tất cả máy chủ</string>
<string name="title_real_ping_all_server">Kiểm tra máy chủ</string>
<string name="title_user_asset_setting">Tệp Geo assets</string>
<string name="title_user_asset_setting">Tệp Geo asset</string>
<string name="title_sort_by_test_results">Sắp xếp lại theo lần kiểm tra cuối cùng</string>
<string name="title_filter_config">Lọc cấu hình theo các gói đăng ký</string>
<string name="filter_config_all">Hiển thị tất cả các gói đăng ký</string>
<string name="tasker_start_service">Bắt đầu dịch vụ</string>
<string name="tasker_start_service">Bắt đầu v2rayNG</string>
<string name="tasker_setting_confirm">Xác nhận</string>
<string name="routing_settings_title">Cài đặt lộ trình</string>
<string name="routing_settings_tips">Được phân cách bằng dấu chấm phẩy(,),Hãy nhớ nó để lưu lại.</string>
<string name="routing_settings_tips">Được phân cách bằng dấu phẩy (,). Hãy nhớ nó để lưu lại!</string>
<string name="routing_settings_save">Lưu lại</string>
<string name="routing_settings_delete">Xoá</string>
<string name="routing_settings_scan_replace"> và thay thế</string>
<string name="routing_settings_scan_append"> và nối</string>
<string name="routing_settings_default_rules">Đặt luật lệ lộ trình mặc định</string>
<string name="routing_settings_scan_replace">Quét và thay thế</string>
<string name="routing_settings_scan_append">Quét và nối</string>
<string name="routing_settings_default_rules">Đặt luật cho lộ trình mặc định</string>
<string name="connection_test_pending">Kiểm tra kết nối</string>
<string name="connection_test_testing">Đang kiểm tra kết nối mạng</string>
<string name="connection_test_available">Đã kiểm tra kết nối mạng thành công, Ping hiện tại là %d</string>
<string name="connection_test_error">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</string>
<string name="connection_test_fail">Không có kết nối mạng</string>
<string name="connection_test_testing">Đang kiểm tra kết nối mạng...</string>
<string name="connection_test_available">Kiểm tra kết nối mạng thành công! Ping hiện tại là %d</string>
<string name="connection_test_error">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</string>
<string name="connection_test_fail">Không có kết nối mạng!</string>
<string name="connection_test_error_status_code">Mã lỗi: #%d</string>
<string name="connection_connected">Đã kết nối, hãy nhấn vào đây để kiểm tra kết nối mạng.</string>
<string name="connection_not_connected">Chưa kết nối, hãy thêm một cấu hình để kết nối. Đừng để bị lừa đảo bởi cấu hình mất tiền,Dịch TV bởi CuynuTT😘</string>
<string name="connection_connected">Đã kết nối, hãy nhấn vào đây để kiểm tra kết nối mạng!</string>
<string name="connection_not_connected">Chưa kết nối, hãy chọn một cấu hình để kết nối!</string>
<string-array name="share_method">
<item>Xuất ra mã QR (Chụp màn hình để lưu)</item>
@@ -207,17 +205,17 @@
</string-array>
<string-array name="routing_tag">
<item>proxy URL hoặc IP</item>
<item>direct URL hoặc IP</item>
<item>Proxy URL hoặc IP</item>
<item>Direct URL hoặc IP</item>
<item>URL đã chặn hoặc IP</item>
</string-array>
<string-array name="routing_mode">
<item>Proxy Global</item>
<item>Bẻ khoá địa chỉ LAN rồi proxy</item>
<item>Bẻ khoá địa chỉ mainland rồi proxy</item>
<item>Bẻ khoá LAN và địa chỉ mainland rồi proxy</item>
<item>Trực tiếp Global</item>
<item>Proxy toàn cầu</item>
<item>Bỏ qua địa chỉ LAN rồi Proxy</item>
<item>Bỏ qua địa chỉ đất liền rồi Proxy</item>
<item>Bỏ qua LAN và địa chỉ đất liền rồi Proxy</item>
<item>Kết nối trực tiếp toàn cầu</item>
</string-array>
<string-array name="mode_entries">
@@ -10,7 +10,7 @@
<!-- Notifications -->
<string name="notification_action_stop_v2ray">停止</string>
<string name="toast_permission_denied">无法取得权D:\vssHotel\SourceCode\Hotel.root\Hotel\Clubank.Hotel\FrontCounter\CheckoutListForm.cs</string>
<string name="toast_permission_denied">无法取得权限</string>
<string name="notification_action_more">点击了解更多</string>
<string name="toast_services_start">启动服务中</string>
<string name="toast_services_stop">关闭中</string>
@@ -164,6 +164,7 @@
<item>中文繁體</item>
<item>Tiếng Việt</item>
<item>Русский</item>
<item>فارسی</item>
</string-array>
@@ -174,5 +175,6 @@
<item>zh-rTW</item>
<item>vi</item>
<item>ru</item>
<item>fa</item>
</string-array>
</resources>
@@ -15,10 +15,4 @@
<color name="colorAccent">#D81B60</color>
<color name="colorBg">#FFFFFF</color>
<color name="colorText">#000000</color>
<color name="colorPrimaryByDark">#2B2B2B</color>
<color name="colorPrimaryDarkByDark">#161616</color>
<color name="colorAccentByDark">#12976F</color>
<color name="colorBgByDark">#252525</color>
<color name="colorTextByDark">#CCCCCC</color>
</resources>
+1 -1
View File
@@ -30,7 +30,7 @@
<string name="menu_item_import_config_manually_ss">Type manually[Shadowsocks]</string>
<string name="menu_item_import_config_manually_socks">Type manually[Socks]</string>
<string name="menu_item_import_config_manually_trojan">Type manually[Trojan]</string>
<string name="menu_item_import_config_custom">custom config</string>
<string name="menu_item_import_config_custom">Custom config</string>
<string name="menu_item_import_config_custom_clipboard">Import custom config from Clipboard</string>
<string name="menu_item_import_config_custom_local">Import custom config from locally</string>
<string name="menu_item_import_config_custom_url">Import custom config from URL</string>
+3 -15
View File
@@ -1,5 +1,6 @@
<resources>
<style name="AppThemeLight" parent="Theme.AppCompat.DayNight.DarkActionBar">
<style name="AppThemeDayNight" parent="Theme.AppCompat.DayNight.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
@@ -7,20 +8,7 @@
<item name="colorMainText">@color/colorText</item>
</style>
<style name="AppThemeDark" parent="Theme.AppCompat.DayNight.DarkActionBar">
<item name="colorPrimary">@color/colorPrimaryByDark</item>
<item name="colorPrimaryDark">@color/colorPrimaryDarkByDark</item>
<item name="colorAccent">@color/colorAccentByDark</item>
<item name="colorMainBg">@color/colorBgByDark</item>
<item name="colorMainText">@color/colorTextByDark</item>
</style>
<style name="AppThemeLight_NoActionBar" parent="AppThemeLight">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppThemeDark_NoActionBar" parent="AppThemeDark">
<style name="AppThemeDayNight.NoActionBar" parent="AppThemeDayNight">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>