Organize locale (#3716)

* Organize locale

Organize locale

* use enum for locale

use enum for locale
This commit is contained in:
Tamim Hossain
2024-10-21 15:38:41 +06:00
committed by GitHub
parent cbea4bab7c
commit 3de3070ab7
3 changed files with 34 additions and 11 deletions

View File

@@ -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") val DNS_GOOGLE_ADDRESSES = arrayListOf("8.8.8.8", "8.8.4.4", "2001:4860:4860::8888", "2001:4860:4860::8844")
} }

View File

@@ -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
}
}
}

View File

@@ -22,6 +22,7 @@ import com.v2ray.ang.AppConfig.ANG_PACKAGE
import com.v2ray.ang.AppConfig.LOOPBACK import com.v2ray.ang.AppConfig.LOOPBACK
import com.v2ray.ang.BuildConfig import com.v2ray.ang.BuildConfig
import com.v2ray.ang.R import com.v2ray.ang.R
import com.v2ray.ang.dto.Language
import com.v2ray.ang.extension.toast import com.v2ray.ang.extension.toast
import com.v2ray.ang.service.V2RayServiceManager import com.v2ray.ang.service.V2RayServiceManager
import com.v2ray.ang.util.MmkvManager.settingsStorage import com.v2ray.ang.util.MmkvManager.settingsStorage
@@ -405,21 +406,24 @@ object Utils {
} }
fun getLocale(): Locale { fun getLocale(): Locale {
val lang = settingsStorage?.decodeString(AppConfig.PREF_LANGUAGE) ?: "auto" val langCode = settingsStorage?.decodeString(AppConfig.PREF_LANGUAGE) ?: Language.AUTO.code
return when (lang) { val language = Language.fromCode(langCode)
"auto" -> getSysLocale()
"en" -> Locale.ENGLISH return when (language) {
"zh-rCN" -> Locale.CHINA Language.AUTO -> getSysLocale()
"zh-rTW" -> Locale.TRADITIONAL_CHINESE Language.ENGLISH -> Locale.ENGLISH
"vi" -> Locale("vi") Language.CHINA -> Locale.CHINA
"ru" -> Locale("ru") Language.TRADITIONAL_CHINESE -> Locale.TRADITIONAL_CHINESE
"fa" -> Locale("fa") Language.VIETNAMESE -> Locale("vi")
"bn" -> Locale("bn") Language.RUSSIAN -> Locale("ru")
else -> getSysLocale() Language.PERSIAN -> Locale("fa")
Language.BANGLA -> Locale("bn")
} }
} }
private fun getSysLocale(): Locale = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { private fun getSysLocale(): Locale = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
LocaleList.getDefault()[0] LocaleList.getDefault()[0]
} else { } else {