扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
以MIUI系统为例,来说明一下切换系统语言步骤:
创新互联公司专注于项城企业网站建设,成都响应式网站建设公司,商城网站建设。项城网站建设公司,为项城等地区提供建站服务。全流程定制设计,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务
1、打开手机设置应用页面,选择“系统高级设置”选项。
2、系统高级设置页面中选择“语言和输入法”选项。
3、选择"语言"设置选项。
4、选择需要的语言即可。
首先扯点别的:这是第一次在上写东西,我突然明白为啥这么多人在上写东西了,因为没有广告啊,哈哈。
最近接触到Android 应用内切换语言的问题,研究了两天,做个记录先。实现了中文,英文,泰语的切换。测试机器 Nexus5(Android p),HUAWEI荣耀9青春版(8.0.0),XIAOMI mi 4LTE(6.0.1)。看下效果
完整的例子在底部
实现步骤
首先需要新建对应语言环境下的资源文件
定义一个BaseActivity,重写attachBaseContext方法,在此方法里进行语言切换
LanguageUtil中的attachBaseContext()方法
在attachBaseContext()方法中,我们判断一下,如果当前api大于24,那么就调用updateResources()方法更新context。
定义好BaseActivity以后,我们只需要让我们的Activity都继承这个基类即可。
自定义Application并在AndroidManifest.xml文件中声明,在Application的onCreate()方法中,调用更换语言的方法即可。
LanguageUtil中的changeAppLanguage方法
经过上面的操作就可以在7.0以下实现应用内切换语言。
定义一个ChangeLanguageActivity
如果是7.0以下,我们需要调用changeAppLanguage方法, 如果是7.0及以上系统,直接把我们想要切换的语言类型保存在SharedPreferences中,然后重新启动MainActivity即可。
可以使用google提供的新特性来解决。
完整的例子请移步
参考链接:
1.
2.
3.
4.
5.
1 .在工程res文件下添加对应语种的values文件,ar:阿拉伯语, en:英语 zh_rCN: 简体中文
截图如下:
2 .在功能清单文件中对要进行切换acitivity 进行配置添加
android:configChanges="locale"
3 .对语言选择的处理
public class MainActivity extends Activity {
Context context = MainActivity.this;;
int languageId;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
read();//设置
setContentView(R.layout.main);
findViewById(R.id.btn_change).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
save();
}
});
}
//保存
private void save() {
String[] languages = { "默认", "CN", "EN" };
AlertDialog.Builder builder = new AlertDialog.Builder(context,
android.R.style.Animation_Dialog);
builder.setTitle("选择语言");
final SharedPreferences languagePre = context.getSharedPreferences(
"language_choice", context.MODE_PRIVATE);
final int id = languagePre.getInt("id", 0);
builder.setSingleChoiceItems(languages, id,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int index) {
switch (index) {
case 0:
// 系统默认语言
languageId = 0;
break;
case 1:
// 简体中文
languageId = 1;
break;
case 2:
// 英语
languageId = 2;
break;
case 3:
// 阿拉伯语
languageId = 3;
break;
default:
break;
}
languagePre.edit().putInt("id", languageId).commit();
}
});
// 保存
builder.setPositiveButton("保存", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
((Activity) context).finish();
Intent intent = new Intent();
intent.setClass(context, MainActivity.class);
context.startActivity(intent);
}
});
builder.show();
}
//读取
private void read() {
SharedPreferences languagePre = getSharedPreferences("language_choice",
Context.MODE_PRIVATE);
int id = languagePre.getInt("id", 0);
Log.d("MainActivity", "langauge_id=" + id);
Toast.makeText(context, "langauge_id=" + id, Toast.LENGTH_LONG).show();
// 应用内配置语言
Resources resources = getResources();// 获得res资源对象
Configuration config = resources.getConfiguration();// 获得设置对象
DisplayMetrics dm = resources.getDisplayMetrics();// 获得屏幕参数:主要是分辨率,像素等。
switch (id) {
case 0:
config.locale = Locale.getDefault(); // 系统默认语言
break;
case 1:
config.locale = Locale.SIMPLIFIED_CHINESE; // 简体中文
break;
case 2:
config.locale = Locale.ENGLISH; // 英文
break;
default:
config.locale = Locale.getDefault();
break;
}
resources.updateConfiguration(config, dm);
}
}
1打开主菜单,进入【Settings(设置)】菜单,像手机一样操作,网上拖动屏幕,选择【Language Keyboard(语言和键盘)】菜单: 2同样把屏幕往上拖动,知道最后出现【中文(简体)】的选项,然后选择它,你的手机就变成了中文界面了
Android国际化语言适配分为两种
1.更改手机系统语言后,APP的语言也会跟着变化
2.只改变自己APP的语言,不受手机系统语言的影响,不影响其他APP的语言,可以参考微信的切换语言的效果。
只需要创建不同语言的values即可
具体操作参考 简单的Android客户端国际化(语言适配)方案
操作的时候要注意: 当选择所要切换的语言后,则进行修改Config以及重启APP,一定要将选择的语言保存到SP中,且在activity中的oncreate中将SP中存储的语言取出来重新设置Config,否则当重启APP后,还是会跟系统语言一样。
具体操作参考 Android应用程序内部切换语言及自定义语言
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流