前言
我们在使用Android手机系统的时候经常在“设置”项里面会提供用户多种系统语言选择来进行语言切换,那么问题来了语言切换在开发中如何实现呢?接下来的时间我们就来讨论Android开发如何实现语言切换
首先在 res 文件夹下新建对应语言的 values 文件夹
常见的有:
zh_cn: 简体中文
zh_hk: 繁体中文(中国香港)
zh_tw: 繁体中文(中国台湾地区)
en-hk: 英语(香港)
en_us: 英语(美国)
en_gb: 英语(英国)
en_ww: 英语(全球)
ja_jp: 日语(日本)
ko_kr: 韩文(韩国)
在每个文件夹里放置一个strings.xml,strings.xml里是各种语言字符串。在项目运行时系统默认是调用的valuse中的Strings.xml,但我们可以通过代码来引用别的values来进行android的系统中进行语言切换
主要代码
/**
* 切换语言
*/
public void updateActivity(String sta){
// 本地语言设置
Locale myLocale;
if(sta=="default"){
myLocale = Locale.getDefault();
}else{
myLocale = new Locale(sta);
}
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
restart();
}
调用此方法,当我们传 "tw" 进去时语言就会切换成values-tw中的Strings.xml中的文字了,如果你这个strings.xml中写的是繁体语言就切换成繁体了
注意事项:
当我们语言切换成功后退回去会发现语言没有切换,还是之前的语言,那是因为虽然系统语言已经切换了但这些页面的文字之前已经加载出来了没实时刷新,这样我们只能在语言切换成功后用代码使之前加载的页面刷新
Intent it = new Intent(this, MainFragment.class); //MainActivity是你想要重启的activity
it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(it);
这样的话会执行主页面的onNewIntent();方法,然后我们在onNewIntent();方法中重启一下主页面就ok了
@Override
protected void onNewIntent(Intent intent) {
// TODO Auto-generated method stub
super.onNewIntent(intent);
finish();
Intent i = new Intent(this, MainFragment.class);
startActivity(i);
}
}
没错android国际化就是这么简单,赶紧去试试吧