Android应用内部实现多语言,一键切换语言,国际化适配

1.首先提供多语言对应的string值  如en对应英语, fr对应法语

 

 

 两个文件中包含同样的key, 对应不同的语言的value

2.java代码相应用户切换语言动作

 private static void setAppLanguage(Context context, Locale locale) {
        Resources resources = context.getResources();
        DisplayMetrics metrics = resources.getDisplayMetrics();
        Configuration configuration = resources.getConfiguration();
//Android 7.0以上的方法
        if (VERSION.SDK_INT >= 24) {
            configuration.setLocale(locale);
            configuration.setLocales(new LocaleList(locale));
            context.createConfigurationContext(configuration);
//实测,updateConfiguration这个方法虽然很多博主说是版本不适用
//但是我的生产环境androidX+Android Q环境下,必须加上这一句,才可以通过重启App来切换语言
            resources.updateConfiguration(configuration, metrics);

        } else if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) {
//Android 4.1 以上方法
            configuration.setLocale(locale);
            resources.updateConfiguration(configuration, metrics);
        } else {
            configuration.locale = locale;
            resources.updateConfiguration(configuration, metrics);
        }
    }

3. 将用户选择保持到SharedPrefrence中, 通过在BaseActivity中来设置切换的动作

需要注意:在手动触发切换动作后, 需要退出所有的Activity, 重新启动,才会生效

 

posted @ 2020-07-13 15:28  GLORY-HOPE  阅读(1364)  评论(0编辑  收藏  举报