Я написал приложение для Android на Kotlin, которое должно поддерживать несколько языков.Это работает один конкретный вид деятельности, но я хочу, чтобы он работал во всем приложении.Например, если я пишу код локализации в Настройке активности для изменения языка, он работает только в Настройке активности, а не в других.Помогите мне, чтобы все действия изменили язык.
1) Мой диалог выбора языка:
fun showChangeLangDialog() {
val factory = LayoutInflater.from(this)
val langDialog = factory.inflate(R.layout.select_lang_dialog, null)
selectedLanguage = SettingsHandler(this).getSettings("display_lang")
val langList = resources.getStringArray(R.array.languages)
langList.forEach {
val obj = JSONObject(it)
val rdbtnLang = RadioButton(this)
rdbtnLang.id = obj.getInt("id")
rdbtnLang.text = obj.getString("lang")
rdbtnLang.textSize = resources.getDimension(R.dimen.radio_text_size)
rdbtnLang.setPadding(20, 30, 30, 30)
langDialog.selectLangList.addView(rdbtnLang)
}
AlertDialog.Builder(this)
.setTitle("Select LanguageGlobal")
.setPositiveButton("Ok") { dialog, i ->
if (langDialog.selectLangList.checkedRadioButtonId > 0) {
settingHandler.updateSettingsViaKey("display_lang", langDialog.selectLangList.checkedRadioButtonId.toString())
}
langList.forEach {
val obj = JSONObject(it)
if (langDialog.selectLangList.checkedRadioButtonId == obj.getInt("id")) {
setLocale(obj.getString("code"))
recreate()
}
}
dialog.dismiss()
}
.setNegativeButton("Cancel") { dialog, whichButton ->
dialog.dismiss()
}
.setView(langDialog)
.create()
.show()
}
2) Функция setLocate ():
fun setLocale(lang: String) {
val locale = Locale(lang)
selectedLanguage = SettingsHandler(applicationContext).getSettings("display_lang")
Locale.setDefault(locale)
val config = Configuration()
config.locale = locale
baseContext.resources.updateConfiguration(config, baseContext.resources.displayMetrics)
val editor = getSharedPreferences("settings", Context.MODE_PRIVATE).edit()
editor.putString("My_Lang", lang)
editor.apply()
}