From 583d0e6224b8233bfb969fb5cddcc9dd22616bb4 Mon Sep 17 00:00:00 2001 From: Alexander Kurnikowski Date: Sat, 24 Jun 2023 20:11:12 +0200 Subject: [PATCH] fix: use forLanguageTag to create new Locale MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit as the public constructor accepts a language ("pl”), not a language tag (“pl-PL”). This fixes an issue where the country is added on every save (”pl-PL-PL-PL”). --- .../localizationsettings/LocalizationSettingsModule.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/android/src/main/java/com/localizationsettings/LocalizationSettingsModule.kt b/android/src/main/java/com/localizationsettings/LocalizationSettingsModule.kt index a9a1f18..60b59ab 100644 --- a/android/src/main/java/com/localizationsettings/LocalizationSettingsModule.kt +++ b/android/src/main/java/com/localizationsettings/LocalizationSettingsModule.kt @@ -23,10 +23,12 @@ class LocalizationSettingsModule internal constructor(context: ReactApplicationC * if country is not available in locale, then use system defaults (even if it's not 100% correct, like "pl-US") **/ private fun getLanguageTag(language: String): String { - // if language have format language_COUNTRY, then return it - if (Locale(language).country != "") return Locale(language).toLanguageTag() + val locale = Locale.forLanguageTag(language); + + // if language has format language-COUNTRY, then return it + if (locale.country != "") return locale.toLanguageTag() // fallback for system country - return "$language-${Locale.getDefault().country}" + return Locale(locale.language, Locale.getDefault().country).toLanguageTag() }