国际化步骤
①项目在project结构下,点击res ->new resource directory --local--点击>>后会出现语言列表
②在语言列表中选择语言,文件名称会自动生成
③把我们要国际化的文字写入各自语言的string.xml中
国际话思路
①需求是我们能进行语言切换
②当我们选择中一种语言后,当我们退出应用后,在进入的时候要保持我们先前选择的语言。
实现步骤
①需求①核心代码
//国际化核心设置的代码
public void switchLanguage(Activity mContext, String language, boolean isFinish) {
Resources resources = mContext.getResources();
Configuration config = resources.getConfiguration();
DisplayMetrics dm = resources.getDisplayMetrics();
switch (language) {
case "zh":
config.locale = Locale.CHINA;
resources.updateConfiguration(config, dm);
break;
case "en":
config.locale = Locale.US;
resources.updateConfiguration(config, dm);
break;
}
MySharedPreferences.saveData("system_language", language);
if (isFinish) {
Intent intent = new Intent(mContext, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
}
}
注意:这里已经把我们的选择的语种进行保存。
②需求②核心代码:就是在我们进入主页时,在setContentView()之前进行调用如下核心代码
protected void initLanguage() {
if (MySharedPreferences.getString("system_language", "").equals("")) {
} else if (MySharedPreferences.getString("system_language", "").equals("en")) {
Resources resources = this.getResources();
Configuration config = resources.getConfiguration();
DisplayMetrics dm = resources.getDisplayMetrics();
config.locale = Locale.US;
resources.updateConfiguration(config, dm);
} else if (MySharedPreferences.getString("system_language", "").equals("zh")) {
Resources resources = this.getResources();
Configuration config = resources.getConfiguration();
DisplayMetrics dm = resources.getDisplayMetrics();
config.locale = Locale.CHINA;
resources.updateConfiguration(config, dm);
}
}
ap第一次下载国际化问题
①既然做国际化,就是有多个国家,多种语言,所以默认哪一个国家语言都不太友好,所
以 最好的方式就是获取手机当前系统的语言,设置为默认语言。
②获取手机当前系统的语言代码如下:
Locale locale = this.getResources().getConfiguration().locale;
String localLanguage = locale.toString();
通过判断localLanguage 设置对应语言既可以完成。
以上就完成了语言国际化,我项目中因为集成了谷歌地图,这样切换是不能改变谷歌地图中地理信息的国际化,因为是谷歌地图语言的国际化是根据手机系统本身语言环境适配的。在app中没有更改系统功能的权限。