一、Android国际化的例子有很多,但是都是老的,有的在Android7.0以上是没办法实现多语言。这个例子的需求是这样的:App每次启动都去读取手机本地设置的语音环境,如果是中文,不管简体繁体,都显示中文,其他的语言则显示英文。还有一种需求就是在App里面设置固定的语音,这里的话,参考这位传送门 。本人也是在这个上做的简化更改。
二、做法思路:
1、在application 的 attachBaseContext设置当前设置的语言Local。
2、在application 的onConfigurationChanged(改变系统语言时会调用到)设置当前的语言Local。
3、在 Activity 的attachBaseContext设置当前设置的语言Local,所以一般这里是创建BaseActivity来方便统一改变。
4、在Fragment中的做法和在Activity中一样,只要在Fragment所在的Activity中设置attachBaseContext。
三、上代码:
1、先写一个存储工具类,将当前手机所这只的语音保存起来。
public class LocalSPUtil {
private final String SP_NAME = "language_setting";
private final String TAG_LANGUAGE = "language_select";
private static volatile LocalSPUtil instance;
private final SharedPreferences mSharedPreferences;
private Locale systemCurrentLocal = Locale.ENGLISH;
public LocalSPUtil(Context context) {
mSharedPreferences = context.getShared