实现多语言的方式
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() 即可解决
|