Android:应用多语言切换,国际化实现
2018-10-30 本文已影响0人
yangSmallXing
多语言切换原理:
生成多种语言的string.xml,里面放置对应的语言,修改配置(Configuration),重启之后就会加载对应语言的string.xml。
实现步骤:
1:在res目录下,生成对应的语言包,比如英语:
image.png
在res目录下生成了可看到生成了:
image.png
2:在对应string.xml内,需要使用相同的name的string;比如
中文简体:
<string name="hello">你好</string>
英语:
<string name="hello">hello</string>
之后就可以使用getResource.getString(R.string.hello),这个字符串会加载相对应的配置的语言。
3:修改语言配置
Resources resources = context.getResources();
DisplayMetrics dm = resources.getDisplayMetrics();
Configuration config = resources.getConfiguration();
//简体中文
config.locale = Locale.SIMPLIFIED_CHINESE;
//or 繁体中文
config.locale = Locale.TRADITIONAL_CHINESE;
// or 英文
config.locale = Locale.ENGLISH;
//更新语言配置
resources.updateConfiguration(config, dm);
//重启到主页
Intent intent = new Intent(context, HomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent);
// 杀掉进程
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
修改语言配置后,需要重新启动进程,并且杀死进程。
多语言切换细节
1:有些手机是可以在设置里直接切换语言的,这个也就是Configuration改变。用户重新设置系统语言导致应用的语言也会重新设置。Configuration改变,如果在Manifest中不设置android:configChanges忽略掉配置改变,Activity会重新创建,那么我们就可以在Activity的onCreate中,重新修改语言配置。
2:切换语言后,退出应用,重新进来,你会发现又是系统设置的语言。所以需要在Application开启时,需要再次切换语言配置。