diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt index 69250932c..62adf79f1 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt @@ -171,4 +171,5 @@ object AppConfig { val DNS_GOOGLE_ADDRESSES = arrayListOf("8.8.8.8", "8.8.4.4", "2001:4860:4860::8888", "2001:4860:4860::8844") + } diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/Language.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/Language.kt new file mode 100644 index 000000000..c517bc75c --- /dev/null +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/Language.kt @@ -0,0 +1,18 @@ +package com.v2ray.ang.dto + +enum class Language(val code: String) { + AUTO("auto"), + ENGLISH("en"), + CHINA("zh-rCN"), + TRADITIONAL_CHINESE("zh-rTW"), + VIETNAMESE("vi"), + RUSSIAN("ru"), + PERSIAN("fa"), + BANGLA("bn"); + + companion object { + fun fromCode(code: String): Language { + return entries.find { it.code == code } ?: AUTO + } + } +} 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 4a30a474b..bb559aaf7 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 @@ -22,6 +22,7 @@ import com.v2ray.ang.AppConfig.ANG_PACKAGE import com.v2ray.ang.AppConfig.LOOPBACK import com.v2ray.ang.BuildConfig import com.v2ray.ang.R +import com.v2ray.ang.dto.Language import com.v2ray.ang.extension.toast import com.v2ray.ang.service.V2RayServiceManager import com.v2ray.ang.util.MmkvManager.settingsStorage @@ -405,21 +406,24 @@ object Utils { } fun getLocale(): Locale { - val lang = settingsStorage?.decodeString(AppConfig.PREF_LANGUAGE) ?: "auto" - return when (lang) { - "auto" -> getSysLocale() - "en" -> Locale.ENGLISH - "zh-rCN" -> Locale.CHINA - "zh-rTW" -> Locale.TRADITIONAL_CHINESE - "vi" -> Locale("vi") - "ru" -> Locale("ru") - "fa" -> Locale("fa") - "bn" -> Locale("bn") - else -> getSysLocale() + val langCode = settingsStorage?.decodeString(AppConfig.PREF_LANGUAGE) ?: Language.AUTO.code + val language = Language.fromCode(langCode) + + return when (language) { + Language.AUTO -> getSysLocale() + Language.ENGLISH -> Locale.ENGLISH + Language.CHINA -> Locale.CHINA + Language.TRADITIONAL_CHINESE -> Locale.TRADITIONAL_CHINESE + Language.VIETNAMESE -> Locale("vi") + Language.RUSSIAN -> Locale("ru") + Language.PERSIAN -> Locale("fa") + Language.BANGLA -> Locale("bn") } } + + private fun getSysLocale(): Locale = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { LocaleList.getDefault()[0] } else {