From c890cc3400f1d413f2fd5a635c325f26b747beb7 Mon Sep 17 00:00:00 2001 From: tapframe <85391825+tapframe@users.noreply.github.com> Date: Sat, 2 May 2026 13:57:13 +0530 Subject: [PATCH] fix: language selection not working in ios --- .../values-pt/{strings => strings.xml} | 0 .../com/nuvio/app/features/settings/AppLanguage.kt | 5 +++-- .../features/settings/ThemeSettingsRepository.kt | 4 ++-- .../features/settings/ThemeSettingsStorage.ios.kt | 13 ++++++++++++- 4 files changed, 17 insertions(+), 5 deletions(-) rename composeApp/src/commonMain/composeResources/values-pt/{strings => strings.xml} (100%) diff --git a/composeApp/src/commonMain/composeResources/values-pt/strings b/composeApp/src/commonMain/composeResources/values-pt/strings.xml similarity index 100% rename from composeApp/src/commonMain/composeResources/values-pt/strings rename to composeApp/src/commonMain/composeResources/values-pt/strings.xml diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/AppLanguage.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/AppLanguage.kt index 8002195d..f47fb7b8 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/AppLanguage.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/AppLanguage.kt @@ -4,7 +4,7 @@ import nuvio.composeapp.generated.resources.Res import nuvio.composeapp.generated.resources.lang_english import nuvio.composeapp.generated.resources.lang_french import nuvio.composeapp.generated.resources.lang_spanish -import nuvio.composeapp.generated.resources.lang_portuguese +import nuvio.composeapp.generated.resources.lang_portuguese_portugal import nuvio.composeapp.generated.resources.lang_turkish import nuvio.composeapp.generated.resources.lang_italian import nuvio.composeapp.generated.resources.lang_greek @@ -16,8 +16,9 @@ enum class AppLanguage( val labelRes: StringResource, ) { ENGLISH("en", Res.string.lang_english), - FRENCH("fr", Res.string.lang_french), + FRENCH("fr", Res.string.lang_french), SPANISH("es", Res.string.lang_spanish), + PORTUGUESE("pt", Res.string.lang_portuguese_portugal), TURKISH("tr", Res.string.lang_turkish), ITALIAN("it", Res.string.lang_italian), GREEK("el", Res.string.lang_greek), diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/ThemeSettingsRepository.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/ThemeSettingsRepository.kt index 8a2b5241..863dd04f 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/ThemeSettingsRepository.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/ThemeSettingsRepository.kt @@ -48,8 +48,8 @@ object ThemeSettingsRepository { _selectedTheme.value = theme _amoledEnabled.value = ThemeSettingsStorage.loadAmoledEnabled() ?: false val appLanguage = AppLanguage.fromCode(ThemeSettingsStorage.loadSelectedAppLanguage()) - _selectedAppLanguage.value = appLanguage ThemeSettingsStorage.applySelectedAppLanguage(appLanguage.code) + _selectedAppLanguage.value = appLanguage } fun setTheme(theme: AppTheme) { @@ -69,8 +69,8 @@ object ThemeSettingsRepository { fun setAppLanguage(language: AppLanguage) { ensureLoaded() if (_selectedAppLanguage.value == language) return - _selectedAppLanguage.value = language ThemeSettingsStorage.saveSelectedAppLanguage(language.code) ThemeSettingsStorage.applySelectedAppLanguage(language.code) + _selectedAppLanguage.value = language } } diff --git a/composeApp/src/iosMain/kotlin/com/nuvio/app/features/settings/ThemeSettingsStorage.ios.kt b/composeApp/src/iosMain/kotlin/com/nuvio/app/features/settings/ThemeSettingsStorage.ios.kt index f71eaaea..c878b4a8 100644 --- a/composeApp/src/iosMain/kotlin/com/nuvio/app/features/settings/ThemeSettingsStorage.ios.kt +++ b/composeApp/src/iosMain/kotlin/com/nuvio/app/features/settings/ThemeSettingsStorage.ios.kt @@ -50,7 +50,17 @@ actual object ThemeSettingsStorage { NSUserDefaults.standardUserDefaults.setObject(languageCode, forKey = selectedAppLanguageKey) } - actual fun applySelectedAppLanguage(languageCode: String) = Unit + actual fun applySelectedAppLanguage(languageCode: String) { + val normalizedCode = languageCode + .trim() + .takeIf { it.isNotBlank() } + ?: AppLanguage.ENGLISH.code + NSUserDefaults.standardUserDefaults.setObject( + listOf(normalizedCode), + forKey = "AppleLanguages", + ) + NSUserDefaults.standardUserDefaults.synchronize() + } actual fun exportToSyncPayload(): JsonObject = buildJsonObject { loadSelectedTheme()?.let { put(selectedThemeKey, encodeSyncString(it)) } @@ -69,5 +79,6 @@ actual object ThemeSettingsStorage { payload.decodeSyncString(selectedThemeKey)?.let(::saveSelectedTheme) payload.decodeSyncBoolean(amoledEnabledKey)?.let(::saveAmoledEnabled) payload.decodeSyncString(selectedAppLanguageKey)?.let(::saveSelectedAppLanguage) + applySelectedAppLanguage(loadSelectedAppLanguage() ?: AppLanguage.ENGLISH.code) } }