From 3de3070ab76152d52be8761565dbe34bd7846611 Mon Sep 17 00:00:00 2001 From: Tamim Hossain <132823494+CodeWithTamim@users.noreply.github.com> Date: Mon, 21 Oct 2024 15:38:41 +0600 Subject: [PATCH] Organize locale (#3716) * Organize locale Organize locale * use enum for locale use enum for locale --- .../main/kotlin/com/v2ray/ang/AppConfig.kt | 1 + .../main/kotlin/com/v2ray/ang/dto/Language.kt | 18 +++++++++++++ .../main/kotlin/com/v2ray/ang/util/Utils.kt | 26 +++++++++++-------- 3 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/Language.kt 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 69250932..62adf79f 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 00000000..c517bc75 --- /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 4a30a474..bb559aaf 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 {