0
0
mirror of https://github.com/ankidroid/Anki-Android.git synced 2024-09-20 03:52:15 +02:00

fix: backend language not being set if changed to "System language"

`Locale.getDefault()` returns the app current language, so `getSystemLocale()` is used instead

Note that probably because of a platform bug, `getSystemLocale()` returns the app language as well on API 33, which *may* be fixed later because we are using an AppCompat alpha version
This commit is contained in:
Brayan Oliveira 2023-05-15 09:58:14 -03:00 committed by Mike Hardy
parent 999aa686cd
commit 461d2390e8

View File

@ -22,6 +22,7 @@ import androidx.annotation.StringRes
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.os.ConfigurationCompat
import androidx.fragment.app.Fragment
import com.ichi2.anki.AnkiDroidApp
import net.ankiweb.rsdroid.BackendFactory
import java.text.DateFormat
import java.util.*
@ -206,13 +207,16 @@ object LanguageUtil {
fun getSystemLocale(): Locale = getLocaleCompat(Resources.getSystem())!!
/** If locale is not provided, the current locale will be used. */
fun setDefaultBackendLanguages(languageTag: String = SYSTEM_LANGUAGE_TAG) {
val locale = if (languageTag == SYSTEM_LANGUAGE_TAG) {
Locale.getDefault()
fun setDefaultBackendLanguages(languageTag: String? = null) {
val langCode = languageTag ?: AnkiDroidApp.getSharedPrefs(AnkiDroidApp.instance)
.getString("language", SYSTEM_LANGUAGE_TAG)!!
val localeLanguage = if (langCode == SYSTEM_LANGUAGE_TAG) {
getSystemLocale().language
} else {
Locale.forLanguageTag(languageTag)
langCode
}
BackendFactory.defaultLanguages = listOf(languageTagToBackendCode(locale.language))
BackendFactory.defaultLanguages = listOf(languageTagToBackendCode(localeLanguage))
}
private fun languageTagToBackendCode(languageTag: String): String {