我有两个字符串文件“en”和“tr”。当我改变我的电话的语言字符串文件自动改变(我没有写额外的代码,这个结果,我不知道这是怎么发生的)。我想改变字符串文件与编程。我用了这个代码。我收到吐司消息,但语言没有改变。为什么?我以前在另一个应用程序中使用过这些代码,我用java而不是Kotlin编写,这些代码工作得很好。请不要说重复,因为我读了很多问题。我尝试了很多事情,直到现在4小时。
override fun onResume() {
buttonDate()
changeLanguage()
super.onResume()
}
fun changeLanguage(){
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(applicationContext)
val language = sharedPreferences.getString("language","bak")
Toast.makeText(applicationContext,language,Toast.LENGTH_SHORT).show()
if(language=="English"){
Toast.makeText(applicationContext,"English",Toast.LENGTH_SHORT).show()
language("")
}else if(language=="Turkish"){
Toast.makeText(applicationContext,"Turkish",Toast.LENGTH_SHORT).show()
language("tr")
}
}
fun language(language: String){
val locale = Locale(language)
Locale.setDefault(locale)
val resources = getResources()
val configuration = resources.getConfiguration()
configuration.locale = locale
resources.updateConfiguration(configuration, resources.getDisplayMetrics())
}
字符串
2条答案
按热度按时间irtuqstp1#
您甚至需要在调用onCreate之前更新配置。为此,创建一个BaseActivity类,如下所示
字符串
扩展你的课堂活动。
在App类中设置dLocale,如下所示:
型
您还需要在manifest文件中设置App class,如下所示:
型
注意:我们应该只在
App
onCreate
中设置dLocale,以确保所有Activity都具有相同的语言。kknvjkwl2#
另外,请确保res文件夹中不应包含多个
-
。例如values-km
。不应该是values-km-rKH
。花了很长时间才找到并修复它。