公司需要用到多语言APP,同微信,在设置界面可以设置跟随系统,或者自行设置APP内语言。
搜了很多资料,大概是实现方式如下;
Resources res = context.getResources();
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf = res.getConfiguration();
conf.locale = locale;
res.updateConfiguration(conf, dm);
所以在application类的oncreate调用了上述方法,之后发现奇怪的事,发现内部很多文字可以设置当前语言,很多没有显示过来。
经过实测才发现 context.getResources(),对象在不同的Android版本中,系统API方式不一;
android 6及以下,全局resource单例;
android 7 每个context对应一个resource,但是resource.getConfiguration()单例
android 8及以上,resource和getConfiguration都为多例
故,上述实现方式在android6及以下能生效
在android6以上,需要在application 的oncreate上调用一次上述方法,在每个Activity也调用一次;
Android 多语言APP实现方案和遇到的坑
最新推荐文章于 2024-08-12 09:01:31 发布
本文探讨了在不同Android版本中实现多语言APP的复杂性。通过修改资源配置,作者发现实现方式在Android6及以下有效,但在更高版本中需在Application和每个Activity中调用方法。文章揭示了不同Android版本下资源对象的行为差异。
摘要由CSDN通过智能技术生成