I was trying to change the language of my application (Kotlin & Jetpack Compose) but couldn't get it to work
LocaleHelper.kt
fun setLocale(context: Context, language: String): Context {
persist(context, language)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return updateResources(context, language)
}
return updateResourcesLegacy(context, language)
}
@TargetApi(Build.VERSION_CODES.N)
private fun updateResources(context: Context, language: String): Context {
val locale = Locale(language)
Locale.setDefault(locale)
val configuration = context.resources.configuration
configuration.setLocale(locale)
configuration.setLayoutDirection(locale)
return context.createConfigurationContext(configuration)
}
@Suppress("DEPRECATION")
private fun updateResourcesLegacy(context: Context, language: String): Context {
val locale = Locale(language)
Locale.setDefault(locale)
val resources = context.resources
val configuration = resources.configuration
configuration.locale = locale
configuration.setLayoutDirection(locale)
resources.updateConfiguration(configuration, resources.displayMetrics)
return context
}
HomeViewModel.kt
is VisitorDetailEvent.SelectLanguage->{
_visitorDetailState.value = _visitorDetailState.value.copy(
language = event.language
)
var lang_id = visitorDetailState.value.language?.id
var lang_name = visitorDetailState.value.language?.language
if(lang_id == 1){
LocaleHelper().setLocale(MainActivity.instance.applicationContext, "en")
}else if(lang_id == 2){
LocaleHelper().setLocale(MainActivity.instance.applicationContext, "sw")
}
}
I tried to find the solution and came across https://stackoverflow.com/a/65662661/14915590 and https://www.youtube.com/watch?v=a_ttsk2-wjY but still no result
AnyOne who can assist please, I will appreciate.