diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayProxyOnlyService.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayProxyOnlyService.kt
index 3403af61..d3f6a296 100644
--- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayProxyOnlyService.kt
+++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayProxyOnlyService.kt
@@ -49,7 +49,7 @@ class V2RayProxyOnlyService : Service(), ServiceControl {
@RequiresApi(Build.VERSION_CODES.N)
override fun attachBaseContext(newBase: Context?) {
val context = newBase?.let {
- MyContextWrapper.wrap(newBase, Utils.getLocale(newBase))
+ MyContextWrapper.wrap(newBase, Utils.getLocale())
}
super.attachBaseContext(context)
}
diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayVpnService.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayVpnService.kt
index 803c6b7c..1f97c2ac 100644
--- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayVpnService.kt
+++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayVpnService.kt
@@ -327,7 +327,7 @@ class V2RayVpnService : VpnService(), ServiceControl {
@RequiresApi(Build.VERSION_CODES.N)
override fun attachBaseContext(newBase: Context?) {
val context = newBase?.let {
- MyContextWrapper.wrap(newBase, Utils.getLocale(newBase))
+ MyContextWrapper.wrap(newBase, Utils.getLocale())
}
super.attachBaseContext(context)
}
diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/BaseActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/BaseActivity.kt
index e865c31b..db9e1d3f 100644
--- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/BaseActivity.kt
+++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/BaseActivity.kt
@@ -34,7 +34,7 @@ abstract class BaseActivity : AppCompatActivity() {
@RequiresApi(Build.VERSION_CODES.N)
override fun attachBaseContext(newBase: Context?) {
val context = newBase?.let {
- MyContextWrapper.wrap(newBase, Utils.getLocale(newBase))
+ MyContextWrapper.wrap(newBase, Utils.getLocale())
}
super.attachBaseContext(context)
}
diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt
index 6d580a48..98120004 100644
--- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt
+++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt
@@ -412,7 +412,7 @@ object Utils {
}
}
- fun getLocale(context: Context): Locale =
+ fun getLocale(): Locale =
when (settingsStorage?.decodeString(AppConfig.PREF_LANGUAGE) ?: "auto") {
"auto" -> getSysLocale()
"en" -> Locale("en")
@@ -421,6 +421,7 @@ object Utils {
"vi" -> Locale("vi")
"ru" -> Locale("ru")
"fa" -> Locale("fa")
+ "bn" -> Locale("bn")
else -> getSysLocale()
}
diff --git a/V2rayNG/app/src/main/res/values-bn/strings.xml b/V2rayNG/app/src/main/res/values-bn/strings.xml
new file mode 100644
index 00000000..6accba40
--- /dev/null
+++ b/V2rayNG/app/src/main/res/values-bn/strings.xml
@@ -0,0 +1,306 @@
+
+
+ v2rayNG
+ সুইচ
+ সুইচ
+ এই ফিচারটি প্রথম ব্যবহার করা হচ্ছে, সার্ভার যোগ করতে অ্যাপটি ব্যবহার করুন
+ নেভিগেশন ড্রয়ার খোলুন
+ নেভিগেশন ড্রয়ার বন্ধ করুন
+ ডেটা স্থানান্তর সফল!
+ ডেটা স্থানান্তর ব্যর্থ!
+
+
+ বন্ধ করুন
+ অনুমতি পাওয়া যাচ্ছে না
+ আরও দেখতে ক্লিক করুন
+ সার্ভিস শুরু করুন
+ সার্ভিস বন্ধ করুন
+ সার্ভিস সফলভাবে শুরু হয়েছে
+ সার্ভিস শুরু হতে ব্যর্থ হয়েছে
+
+
+ কনফিগারেশন ফাইল
+ কনফিগারেশন যোগ করুন
+ কনফিগারেশন সংরক্ষণ করুন
+ কনফিগারেশন মুছুন
+ QR কোড থেকে কনফিগারেশন আমদানি করুন
+ ক্লিপবোর্ড থেকে কনফিগারেশন আমদানি করুন
+ ম্যানুয়ালি টাইপ করুন [Vmess]
+ ম্যানুয়ালি টাইপ করুন [VLESS]
+ ম্যানুয়ালি টাইপ করুন [Shadowsocks]
+ ম্যানুয়ালি টাইপ করুন [Socks]
+ ম্যানুয়ালি টাইপ করুন [Trojan]
+ ম্যানুয়ালি টাইপ করুন [Wireguard]
+ কাস্টম কনফিগারেশন
+ ক্লিপবোর্ড থেকে কাস্টম কনফিগারেশন আমদানি করুন
+ স্থানীয়ভাবে কাস্টম কনফিগারেশন আমদানি করুন
+ URL থেকে কাস্টম কনফিগারেশন আমদানি করুন
+ কাস্টম কনফিগারেশন স্ক্যান URL আমদানি করুন
+ মুছে ফেলুন নিশ্চিত করুন?
+ মন্তব্য
+ ঠিকানা
+ পোর্ট
+ আইডি
+ অলটারআইডি
+ নিরাপত্তা
+ নেটওয়ার্ক
+ ট্রান্সপোর্ট
+ হেড টাইপ
+ gRPC মোড
+ হোস্ট
+ http হোস্ট
+ ws হোস্ট
+ httpupgrade হোস্ট
+ splithttp হোস্ট
+ h2 হোস্ট
+ QUIC নিরাপত্তা
+ gRPC কর্তৃপক্ষ
+ পথ
+ ws পথ
+ httpupgrade পথ
+ splithttp পথ
+ h2 পথ
+ QUIC কী
+ kcp বীজ
+ gRPC সেবার নাম
+ TLS
+ ফিঙ্গারপ্রিন্ট
+ Alpn
+ অনিরাপদ অনুমতি দিন
+ SNI
+ ঠিকানা
+ পোর্ট
+ পাসওয়ার্ড
+ নিরাপত্তা
+ পাসওয়ার্ড (ঐচ্ছিক)
+ ব্যবহারকারী (ঐচ্ছিক)
+ এনক্রিপশন
+ ফ্লো
+ পাবলিক কী
+ শর্ট আইডি
+ SpiderX
+ সিক্রেট কী
+ সংরক্ষিত (ঐচ্ছিক)
+ স্থানীয় ঠিকানা (ঐচ্ছিক IPv4/IPv6, কমা দ্বারা পৃথক করা)
+ MTU (ঐচ্ছিক, ডিফল্ট 1420)
+ সফল
+ ব্যর্থ
+ কোনও তথ্য নেই
+ ভুল প্রোটোকল
+ ডিকোডিং ব্যর্থ
+ একটি কনফিগারেশন ফাইল নির্বাচন করুন
+ অনুগ্রহ করে একটি ফাইল ম্যানেজার ইনস্টল করুন।
+ কাস্টমাইজ কনফিগারেশন
+ অবৈধ কনফিগারেশন
+ কনটেন্ট
+ ক্লিপবোর্ডে কোনও তথ্য নেই
+ অবৈধ URL
+ ইনবাউন্ড পোর্ট নিশ্চিত করুন সেটিংসের সাথে সামঞ্জস্যপূর্ণ
+ কনফিগারেশন বিকৃত
+ হোস্ট (SNI) (ঐচ্ছিক)
+ ফাইল কপি ব্যর্থ, অনুগ্রহ করে ফাইল ম্যানেজার ব্যবহার করুন
+ অ্যাসেট যোগ করুন
+ ফাইল যোগ করুন
+ URL যোগ করুন
+ URL
+ ফাইল ডাউনলোড করুন
+ অ্যাসেট URL যোগ করুন
+ ফাইল খুঁজে পাওয়া যায়নি
+ মন্তব্য ইতিমধ্যে বিদ্যমান
+ অ্যাকশন অনুমোদিত নয়
+
+ লোড হচ্ছে
+ অনুসন্ধান করুন
+ সবকিছু নির্বাচন করুন
+ কীওয়ার্ড লিখুন
+ বাইপাস মোড
+ অটো সিলেক্ট প্রক্সি অ্যাপ
+ বিষয়বস্তু ডাউনলোড হচ্ছে
+ ক্লিপবোর্ডে রপ্তানি করুন
+ ক্লিপবোর্ড থেকে আমদানি করুন
+
+
+ সেটিংস
+ এডভান্সড সেটিংস
+ VPN সেটিংস
+ প্রতি-অ্যাপ প্রক্সি
+ সাধারণ: চেকড অ্যাপ প্রক্সি, আনচেকড সরাসরি সংযোগ; \nবাইপাস মোড: চেকড অ্যাপ সরাসরি সংযুক্ত, আনচেকড প্রক্সি। \nমেনুতে প্রক্সি অ্যাপ্লিকেশন স্বয়ংক্রিয়ভাবে নির্বাচন করার বিকল্প
+
+ Mux সেটিংস
+ Mux সক্রিয় করুন
+ দ্রুত, তবে এটি অস্থিতিশীল সংযোগ সৃষ্টি করতে পারে\nTCP, UDP এবং QUIC পরিচালনা কাস্টমাইজ করুন
+ TCP সংযোগ (পরিসর -1 থেকে 1024)
+ XUDP সংযোগ (পরিসর -1 থেকে 1024)
+ Mux টানেলে QUIC পরিচালনা
+
+ - অস্বীকার করুন
+ - অনুমতি দিন
+ - এড়িয়ে যান
+
+
+ গতি প্রদর্শন সক্রিয় করুন
+ বিজ্ঞপ্তিতে বর্তমান গতি প্রদর্শন করুন।\nব্যবহারের উপর ভিত্তি করে বিজ্ঞপ্তি আইকন পরিবর্তিত হবে।
+
+ স্নিফিং সক্রিয় করুন
+ প্যাকেট থেকে ডোমেইন স্নিফ করার চেষ্টা করুন (ডিফল্টভাবে চালু)
+
+ রুটঅনলি সক্রিয় করুন
+ রুটিংয়ের জন্য শুধুমাত্র স্নিফড ডোমেইন নাম ব্যবহার করুন, এবং লক্ষ্য ঠিকানা হিসেবে আইপি ঠিকানা রাখুন।
+
+ স্থানীয় DNS সক্রিয় করুন
+ DNS মূল DNS মডিউল দ্বারা প্রক্রিয়া করা হয় (প্রস্তাবিত, যদি LAN এবং মূলভূমি ঠিকানার বাইপাসিং প্রয়োজন হয়)
+
+ ভুয়া DNS সক্রিয় করুন
+ স্থানীয় DNS মিথ্যা আইপি ঠিকানা ফেরত দেয় (দ্রুত, তবে এটি কিছু অ্যাপের জন্য কাজ নাও করতে পারে)
+
+ IPv6 অগ্রাধিকার দিন
+ IPv6 ঠিকানা এবং রুটকে অগ্রাধিকার দিন
+
+ রাউটিং
+ ডোমেইন কৌশল
+ পূর্বনির্ধারিত নিয়ম
+ কাস্টম নিয়ম
+
+ রিমোট DNS (udp/tcp/https/quic)(ঐচ্ছিক)
+ DNS
+
+ VPN DNS (শুধুমাত্র IPv4/v6)
+
+ ঘরোয়া DNS (ঐচ্ছিক)
+ DNS
+
+ সঠিক বিলম্ব পরীক্ষা ইউআরএল (http/https)
+ ইউআরএল
+
+ LAN থেকে সংযোগ অনুমোদন করুন
+ অন্যান্য ডিভাইসগুলি আপনার আইপি ঠিকানা ব্যবহার করে প্রক্সিতে সংযুক্ত হতে পারে, শুধুমাত্র বিশ্বস্ত নেটওয়ার্কে সক্রিয় করুন যাতে অনুমোদিত সংযোগ এড়ানো যায়
+ LAN থেকে সংযোগ অনুমোদন করুন, নিশ্চিত করুন যে আপনি একটি বিশ্বস্ত নেটওয়ার্কে আছেন
+
+ allowInsecure
+ যখন TLS, ডিফল্টভাবে allowInsecure
+
+ SOCKS5 প্রক্সি পোর্ট
+ SOCKS5 প্রক্সি পোর্ট
+
+ HTTP প্রক্সি পোর্ট
+ HTTP প্রক্সি পোর্ট
+
+ স্থানীয় DNS পোর্ট
+ স্থানীয় DNS পোর্ট
+
+ কনফিগারেশন ফাইল মুছে ফেলার নিশ্চিতকরণ
+ কনফিগারেশন ফাইল মুছে ফেলার জন্য ব্যবহারকারীর দ্বিতীয় নিশ্চিতকরণের প্রয়োজন
+
+ তাত্ক্ষণিক স্ক্যান শুরু করুন
+ শুরুতে তাত্ক্ষণিকভাবে স্ক্যান করতে ক্যামেরা খুলুন, অন্যথায় আপনি কোড স্ক্যান বা টুলবারে একটি ছবি নির্বাচন করতে পারেন
+ মতামত
+ মতামত উন্নয়ন বা বাগগুলি GitHub-এ পাঠান
+ টেলিগ্রাম গ্রুপে যোগদান করুন
+ টেলিগ্রাম অ্যাপ পাওয়া যায়নি
+ গোপনীয়তা নীতি
+ সম্পর্কিত
+ সোর্স কোড
+ টেলিগ্রাম চ্যানেল
+ কনফিগারেশন ব্যাকআপ
+ স্টোরেজ অবস্থান: [%s], অ্যাপ আনইনস্টল বা স্টোরেজ ক্লিয়ার করার পরে ব্যাকআপ মুছে যাবে
+ কনফিগারেশন পুনরুদ্ধার
+ কনফিগারেশন শেয়ার করুন
+
+ প্রচার
+ প্রচার, বিস্তারিত জানার জন্য ক্লিক করুন (ডোনেশন মুছে ফেলা যেতে পারে)
+
+ স্বয়ংক্রিয় আপডেট সাবস্ক্রিপশন
+ পটভূমিতে একটি নির্দিষ্ট সময় পর পর আপনার সাবস্ক্রিপশন স্বয়ংক্রিয়ভাবে আপডেট করুন। ডিভাইসের উপর নির্ভর করে, এই বৈশিষ্ট্যটি সবসময় কাজ নাও করতে পারে
+ অটো আপডেট ইন্টারভ্যাল (মিনিট, সর্বনিম্ন মান ১৫)
+
+ লগ স্তর
+ মোড
+ আরো সাহায্যের জন্য ক্লিক করুন
+ ভাষা
+ ইউআই সেটিংস
+ ইউআই মোড সেটিংস
+
+ লগক্যাট
+ কপি করুন
+ স্পষ্ট করুন
+ সার্ভিস পুনরায় চালু করুন
+ সব কনফিগারেশন মুছে ফেলুন
+ ডুপ্লিকেট কনফিগারেশন মুছে ফেলুন
+ অবৈধ কনফিগারেশন মুছে ফেলুন (প্রথমে পরীক্ষা করুন)
+ কাস্টম না করা কনফিগারেশনগুলি ক্লিপবোর্ডে রপ্তানি করুন
+ সাবস্ক্রিপশন গ্রুপ সেটিং
+ মন্তব্য
+ ঐচ্ছিক URL
+ আপডেট সক্রিয় করুন
+ স্বয়ংক্রিয় আপডেট সক্রিয় করুন
+ সাবস্ক্রিপশন আপডেট
+ সব কনফিগারেশন TCPing
+ সব কনফিগারেশন প্রকৃত বিলম্ব
+ জিও অ্যাসেট ফাইলগুলি
+ টেস্ট ফলাফল দ্বারা সাজানো
+ কনফিগারেশন ফাইল ফিল্টার করুন
+ সব সাবস্ক্রিপশন গ্রুপ
+ %d ডুপ্লিকেট কনফিগারেশন মুছে ফেলুন
+ সার্ভিস শুরু করুন
+ নিশ্চিত করুন
+
+ রাউটিং সেটিংস
+ কমা (,) দ্বারা আলাদা করুন, মনে রাখবেন সেভ করতে
+ সেভ করুন
+ মুছে ফেলুন
+ স্ক্যান করুন এবং প্রতিস্থাপন করুন
+ স্ক্যান করুন এবং যোগ করুন
+ ডিফল্ট রাউটিং নিয়ম সেট করুন
+
+ সংযোগ পরীক্ষা করুন
+ পরীক্ষা চলছে…
+ সফল: HTTP সংযোগ নিয়েছে %dms
+ ইন্টারনেট সংযোগ সনাক্ত করতে ব্যর্থ: %s
+ ইন্টারনেট উপলব্ধ নয়
+ ত্রুটি কোড: #%d
+ সংযুক্ত, সংযোগ পরীক্ষা করতে ট্যাপ করুন
+ সংযুক্ত নয়
+
+ সাবস্ক্রিপশন সফলভাবে আমদানি করা হয়েছে
+ সাবস্ক্রিপশন আমদানি ব্যর্থ
+ ফ্র্যাগমেন্ট সেটিংস
+ ফ্র্যাগমেন্ট প্যাকেটস
+ ফ্র্যাগমেন্ট দৈর্ঘ্য (ন্যূনতম-সর্বাধিক)
+ ফ্র্যাগমেন্ট ইন্টারভ্যাল (ন্যূনতম-সর্বাধিক)
+ ফ্র্যাগমেন্ট সক্রিয় করুন
+
+ - QR কোড
+ - ক্লিপবোর্ডে রপ্তানি করুন
+ - পূর্ণ কনফিগারেশন ক্লিপবোর্ডে রপ্তানি করুন
+
+
+
+ - QR কোড
+ - ক্লিপবোর্ডে রপ্তানি করুন
+
+
+
+ - প্রক্সি URL বা IP
+ - ডাইরেক্ট URL বা IP
+ - ব্লকড URL বা IP
+
+
+
+ - গ্লোবাল প্রোক্সি
+ - LAN ঠিকানা বাইপাস করে তারপর প্রোক্সি
+ - মেইনল্যান্ড ঠিকানা বাইপাস করে তারপর প্রোক্সি
+ - LAN এবং মেইনল্যান্ড ঠিকানা বাইপাস করে তারপর প্রোক্সি
+ - গ্লোবাল ডাইরেক্ট
+
+
+
+ - VPN
+ - শুধুমাত্র প্রোক্সি
+
+
+
+ - সিস্টেম অনুসরণ করুন
+ - লাইট
+ - ডার্ক
+
+
\ No newline at end of file
diff --git a/V2rayNG/app/src/main/res/values/arrays.xml b/V2rayNG/app/src/main/res/values/arrays.xml
index 2adc0c35..684c44a5 100644
--- a/V2rayNG/app/src/main/res/values/arrays.xml
+++ b/V2rayNG/app/src/main/res/values/arrays.xml
@@ -178,6 +178,7 @@
- Русский
- فارسی
- عربي
+ - বাংলা
@@ -190,6 +191,7 @@
- ru
- fa
- ar
+ - bn