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