api中提供了locale 类,实现本地化
Locale类 http://www.android-doc.com/reference/java/util/Locale.html
Configuration类 http://www.android-doc.com/reference/android/content/res/Configuration.html
思路:
(app中设置语言的的时候,用SharedPreferences保存在本地一份,用来每次进入判断上次设置了什么语言,知道什么语言了,再用下面的代码设置下)
1.把app干掉,然后重新启动,,,进入的时候 用代码设置下,就切换了
例如:
System.exit(0);(少用)
Intent i = getBaseContext().getPackageManager().
getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
当然没有这么做的了。
2.重新加载边布局:用下面的代码设置完,再调用重新设置(就是把textview重新设置值了)的方法,语言就切换了。
例如:
代码
isEnglish:isEnglish
true :点击英文
false :点击中文
/**
* Locale类 http://www.android-doc.com/reference/java/util/Locale.html
* Configuration类 http://www.android-doc.com/reference/android/content/res/Configuration.html
*/
Configuration config = getResources().getConfiguration();
DisplayMetrics dm = getResources().getDisplayMetrics();
if(isEnglish){
//设置英文
config.locale = Locale.ENGLISH;
}else{
//设置中文
config.locale = Locale.SIMPLIFIED_CHINESE;
}
//更新配置
getResources().updateConfiguration(config, dm);
在工程res文件下添加对应语种的values文件
res:
把相对应的strings.xml做好翻译就ok了,
AndroidManifest.xml中:
- 所需权限
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>
- 每一个Activity中都要加:
android:configChanges="locale"
。
在系统设置(手机系统设置不是自己写的设置)中切换语言他会重启~
并且会调用Activity重写的onConfigurationChanged函数
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.e("Mylog","onConfigurationChanged");
}
但是有一种情况不会调用onConfigurationChanged函数:
原因是,4.2增加了一个layoutDirection属性,当改变语言设置后,该属性也会成newConfig中的一个mask位。所以ActivityManagerService(实际在ActivityStack)在决定是否重启Activity的时候总是判断为重启。当在android:configChanges 中同时添加locale和layoutDirection时,才会发生app期望的事情。
android:configChanges="locale|layoutDirection"
demo下载地址:http://download.csdn.net/detail/u013870523/9551033
获取系统语言
获取系统语言 方法:Locale.getDefault().getLanguage()
获取应用语言 方法:getResources().getConfiguration().locale.getLanguage()
推荐
……………………………………………………………………………………………………………………
Android 6.0+ 运行时权限探索
……………………………………………………………………………………………………………………
Android 切换系统语言功能实现
……………………………………………………………………………………………………………………
引用:android:configChanges locale 改语言后,该配置不起作用的原因
……………………………………………………………………………………………………………………
各国语言缩写-各国语言简称,世界各国域名缩写
……………………………………………………………………………………………………………………
有时间最好自己手写写试试,希望能帮到你。