应用重启后本地化不起作用
Localization not working after app restart
我包括本地化以翻译我的应用程序介绍三种不同的语言,在设置每种语言的翻译字符串后,我转到首选项设置并选中一个复选框并且翻译工作正常,问题是当我重新启动应用程序时,本地化即使我已将所选语言保存在 sharedpreference 中并在 mainactivity
中检索它
*这就是我设置语言的方式
var sharedPreferences = requireContext().getSharedPreferences("prefs",
Context.MODE_PRIVATE)
var editor = sharedPreferences.edit()
spanishCheckBox.setOnPreferenceChangeListener(object : Preference.OnPreferenceChangeListener{
override fun onPreferenceChange(preference: Preference?, newValue: Any?): Boolean {
var isSpanishChecked = newValue as Boolean
if(isSpanishChecked){
var Lang = "es"
editor.putString("key",Lang)
editor.apply()
var local = Locale(Lang)
var configuration = Configuration()
configuration.locale = local
resources.updateConfiguration(configuration,resources.displayMetrics)
englishCheckBox.isChecked = false
frenchCheckBox.isChecked = false
Intent(requireContext(),MainActivity::class.java).also {
it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
startActivity(it)
}
}
return true
}
})
- 这就是我在 mainactivity 中检索数据的方式
fun LoadLanguageConfiguration(){
var sharedpreferences = getSharedPreferences("prefs", Context.MODE_PRIVATE)
var langCode = sharedpreferences.getString("key","")
var local = Locale(langCode)
var configuration = Configuration()
configuration.locale = local
baseContext.createConfigurationContext(configuration)
}
只有当我在应用程序中设置语言时翻译才有效,但当我重新启动应用程序时,它会返回默认语言,即英语。
问题是我没有在一开始就开始我的语言加载方法,所以我把它作为第一个方法放在我的 oncreate 中,一切都按预期工作。
我包括本地化以翻译我的应用程序介绍三种不同的语言,在设置每种语言的翻译字符串后,我转到首选项设置并选中一个复选框并且翻译工作正常,问题是当我重新启动应用程序时,本地化即使我已将所选语言保存在 sharedpreference 中并在 mainactivity
中检索它*这就是我设置语言的方式
var sharedPreferences = requireContext().getSharedPreferences("prefs",
Context.MODE_PRIVATE)
var editor = sharedPreferences.edit()
spanishCheckBox.setOnPreferenceChangeListener(object : Preference.OnPreferenceChangeListener{
override fun onPreferenceChange(preference: Preference?, newValue: Any?): Boolean {
var isSpanishChecked = newValue as Boolean
if(isSpanishChecked){
var Lang = "es"
editor.putString("key",Lang)
editor.apply()
var local = Locale(Lang)
var configuration = Configuration()
configuration.locale = local
resources.updateConfiguration(configuration,resources.displayMetrics)
englishCheckBox.isChecked = false
frenchCheckBox.isChecked = false
Intent(requireContext(),MainActivity::class.java).also {
it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
startActivity(it)
}
}
return true
}
})
- 这就是我在 mainactivity 中检索数据的方式
fun LoadLanguageConfiguration(){
var sharedpreferences = getSharedPreferences("prefs", Context.MODE_PRIVATE)
var langCode = sharedpreferences.getString("key","")
var local = Locale(langCode)
var configuration = Configuration()
configuration.locale = local
baseContext.createConfigurationContext(configuration)
}
只有当我在应用程序中设置语言时翻译才有效,但当我重新启动应用程序时,它会返回默认语言,即英语。
问题是我没有在一开始就开始我的语言加载方法,所以我把它作为第一个方法放在我的 oncreate 中,一切都按预期工作。