实现多语言的方式
1.新建一个values-en文件夹,把values文件夹里面的strings.xml复制过来,把里面的中文替换成英文
2.在一个项目中通常会有一个BaseActivity 在onCreate中进行语言切换的操作
private fun setLanguage() {
// 这里在本地存储了语言的设置
val isEnglish = MMKVUtil.getBoolean(MkvConstants.LANGUAGE_TYPE, false)
val resource = resources
val metrics = resource.displayMetrics
val config = resource.configuration
config.setLocale(if (isEnglish) Locale.ENGLISH else Locale.SIMPLIFIED_CHINESE)
resource.updateConfiguration(config, metrics)
}
3.在项目中的首页如MainActivity,一般设置的启动模式都为singleTask。所以在设置完成后直接跳转到MainActivity中即可,个人觉得这样比在onResume中重新设置语言要好很多。
4.但是这样会发现一个问题就是MainActivity中如果存在底部tab菜单和fragment里面的文字语言并不会改变。这时只需在onNewIntent里面设置recreate()即可解决
|