diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 4e6822916f272c5b9ce4d979c116a5a2dc666237..9c88c5c6deaed3f912ac028f76d2a03ffcbc6b60 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -63,7 +63,7 @@ android { signingConfig = signingConfigs.findByName("default") - resConfigs("en", "de", "fr-rCA", "lt", "pt") + //resConfigs("en", "de", "fr-rCA", "lt", "pt") vectorDrawables.useSupportLibrary = true diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt index b77f6ae598acd4703b5765c46a86cfa7dc44a519..e1dd6bcf7a9e075e0d39be1a54a60080790f93f5 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt @@ -588,7 +588,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc outState?.putInt("OPEN_BUFFER", viewModel.buffer.value ?: -1) outState?.putInt("OPEN_BUFFERVIEWCONFIG", viewModel.bufferViewConfigId.value ?: -1) outState?.putLong("CONNECTED_ACCOUNT", connectedAccount) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { outPersistentState?.putInt("OPEN_BUFFER", viewModel.buffer.value ?: -1) outPersistentState?.putInt("OPEN_BUFFERVIEWCONFIG", viewModel.bufferViewConfigId.value ?: -1) outPersistentState?.putLong("CONNECTED_ACCOUNT", connectedAccount) @@ -607,7 +607,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc override fun onRestoreInstanceState(savedInstanceState: Bundle?, persistentState: PersistableBundle?) { super.onRestoreInstanceState(savedInstanceState, persistentState) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { val fallbackBuffer = persistentState?.getInt("OPEN_BUFFER", -1) ?: -1 viewModel.buffer.onNext( savedInstanceState?.getInt("OPEN_BUFFER", fallbackBuffer) diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/LocaleHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/LocaleHelper.kt index cf95a5ebf7a7c50bb21da1e2b1d9d061c022ac8a..cbc2ec606dff9cb1954491d9c88db0e117c7ac39 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/LocaleHelper.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/LocaleHelper.kt @@ -31,8 +31,17 @@ object LocaleHelper { return updateResources(context, Settings.appearance(context).language) } + fun parseLanguageCode(rawLanguage: String): Locale { + val split = rawLanguage.split("-", limit = 3) + return when (split.size) { + 3 -> Locale(split[0], split[2], split[1]) + 2 -> Locale(split[0], split[1], "") + else -> Locale(split[0], "", "") + } + } + private fun updateResources(context: Context, language: String) = if (language.isNotEmpty()) { - val locale = Locale(language) + val locale = parseLanguageCode(language) Locale.setDefault(locale) val config = Configuration(context.resources.configuration) diff --git a/app/src/main/res/values/strings_preferences.xml b/app/src/main/res/values/strings_preferences.xml index 362383ff5586859c6e3a621ee1fd9d4ef4d753cf..b8f0edd6c46deafe4bc4a03d91d5ae495c175e8e 100644 --- a/app/src/main/res/values/strings_preferences.xml +++ b/app/src/main/res/values/strings_preferences.xml @@ -107,11 +107,11 @@ <item>en</item> <item>de</item> <!--<item>fr</item>--> - <item>fr_ca</item> + <item>fr-CA</item> <!--<item>nl</item>--> <item>lt</item> <item>pt</item> - <!--<item>pt_BR</item>--> + <!--<item>pt-BR</item>--> <!--<item>sr</item>--> </string-array> diff --git a/app/src/test/java/de/kuschku/quasseldroid/util/ui/LocaleHelperTest.kt b/app/src/test/java/de/kuschku/quasseldroid/util/ui/LocaleHelperTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..0aa220b828178f52c83c9f2cd08ff6f8adba195f --- /dev/null +++ b/app/src/test/java/de/kuschku/quasseldroid/util/ui/LocaleHelperTest.kt @@ -0,0 +1,25 @@ +package de.kuschku.quasseldroid.util.ui + +import org.junit.Assert.assertEquals +import org.junit.Test + +class LocaleHelperTest { + @Test + fun testParseLanguageCode() { + LocaleHelper.parseLanguageCode("fr-CA").let { + assertEquals("CA", it.country) + assertEquals("", it.variant) + assertEquals("fr", it.language) + } + LocaleHelper.parseLanguageCode("zh-Hant-TW").let { + assertEquals("TW", it.country) + assertEquals("Hant", it.variant) + assertEquals("zh", it.language) + } + LocaleHelper.parseLanguageCode("zh").let { + assertEquals("", it.country) + assertEquals("", it.variant) + assertEquals("zh", it.language) + } + } +}