fix: language selection not working in ios

This commit is contained in:
tapframe 2026-05-02 13:57:13 +05:30
parent 370303f20e
commit c890cc3400
4 changed files with 17 additions and 5 deletions

View file

@ -4,7 +4,7 @@ import nuvio.composeapp.generated.resources.Res
import nuvio.composeapp.generated.resources.lang_english import nuvio.composeapp.generated.resources.lang_english
import nuvio.composeapp.generated.resources.lang_french import nuvio.composeapp.generated.resources.lang_french
import nuvio.composeapp.generated.resources.lang_spanish 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_turkish
import nuvio.composeapp.generated.resources.lang_italian import nuvio.composeapp.generated.resources.lang_italian
import nuvio.composeapp.generated.resources.lang_greek import nuvio.composeapp.generated.resources.lang_greek
@ -16,8 +16,9 @@ enum class AppLanguage(
val labelRes: StringResource, val labelRes: StringResource,
) { ) {
ENGLISH("en", Res.string.lang_english), ENGLISH("en", Res.string.lang_english),
FRENCH("fr", Res.string.lang_french), FRENCH("fr", Res.string.lang_french),
SPANISH("es", Res.string.lang_spanish), SPANISH("es", Res.string.lang_spanish),
PORTUGUESE("pt", Res.string.lang_portuguese_portugal),
TURKISH("tr", Res.string.lang_turkish), TURKISH("tr", Res.string.lang_turkish),
ITALIAN("it", Res.string.lang_italian), ITALIAN("it", Res.string.lang_italian),
GREEK("el", Res.string.lang_greek), GREEK("el", Res.string.lang_greek),

View file

@ -48,8 +48,8 @@ object ThemeSettingsRepository {
_selectedTheme.value = theme _selectedTheme.value = theme
_amoledEnabled.value = ThemeSettingsStorage.loadAmoledEnabled() ?: false _amoledEnabled.value = ThemeSettingsStorage.loadAmoledEnabled() ?: false
val appLanguage = AppLanguage.fromCode(ThemeSettingsStorage.loadSelectedAppLanguage()) val appLanguage = AppLanguage.fromCode(ThemeSettingsStorage.loadSelectedAppLanguage())
_selectedAppLanguage.value = appLanguage
ThemeSettingsStorage.applySelectedAppLanguage(appLanguage.code) ThemeSettingsStorage.applySelectedAppLanguage(appLanguage.code)
_selectedAppLanguage.value = appLanguage
} }
fun setTheme(theme: AppTheme) { fun setTheme(theme: AppTheme) {
@ -69,8 +69,8 @@ object ThemeSettingsRepository {
fun setAppLanguage(language: AppLanguage) { fun setAppLanguage(language: AppLanguage) {
ensureLoaded() ensureLoaded()
if (_selectedAppLanguage.value == language) return if (_selectedAppLanguage.value == language) return
_selectedAppLanguage.value = language
ThemeSettingsStorage.saveSelectedAppLanguage(language.code) ThemeSettingsStorage.saveSelectedAppLanguage(language.code)
ThemeSettingsStorage.applySelectedAppLanguage(language.code) ThemeSettingsStorage.applySelectedAppLanguage(language.code)
_selectedAppLanguage.value = language
} }
} }

View file

@ -50,7 +50,17 @@ actual object ThemeSettingsStorage {
NSUserDefaults.standardUserDefaults.setObject(languageCode, forKey = selectedAppLanguageKey) 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 { actual fun exportToSyncPayload(): JsonObject = buildJsonObject {
loadSelectedTheme()?.let { put(selectedThemeKey, encodeSyncString(it)) } loadSelectedTheme()?.let { put(selectedThemeKey, encodeSyncString(it)) }
@ -69,5 +79,6 @@ actual object ThemeSettingsStorage {
payload.decodeSyncString(selectedThemeKey)?.let(::saveSelectedTheme) payload.decodeSyncString(selectedThemeKey)?.let(::saveSelectedTheme)
payload.decodeSyncBoolean(amoledEnabledKey)?.let(::saveAmoledEnabled) payload.decodeSyncBoolean(amoledEnabledKey)?.let(::saveAmoledEnabled)
payload.decodeSyncString(selectedAppLanguageKey)?.let(::saveSelectedAppLanguage) payload.decodeSyncString(selectedAppLanguageKey)?.let(::saveSelectedAppLanguage)
applySelectedAppLanguage(loadSelectedAppLanguage() ?: AppLanguage.ENGLISH.code)
} }
} }