问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android 怎么实现应用多语言切换

发布网友 发布时间:2022-04-23 19:56

我来回答

1个回答

热心网友 时间:2023-10-06 06:46

添加多语言文件
在不同的 value 文件夹下(例如 value 、value-en、values-zh-rTW 文件夹)添加不同语言的 string.xml 文件,我们的项目添加了英文、简体中文、繁体中文三种语言,如下图所示:
Project模式:

Android模式:

其中英文需要翻译,繁体如果没有专门翻译的话,可以找个简繁转换网站,直接将简体中文转成繁体中文,推荐一个网站:
http://www.vifo.com.cn/fanti/
下面我只讲解简体中文和英文的做法;
2.现在我们可以在activity启动里面(onCreate()或者onResume())获取系统的语言:
Locale locale = Locale.getDefault();
String language = locale.getLanguage();1212

language就是我们从系统拿到的语言,这里如果是中文,拿到的是“zh”,如果是英文是“cn”;
3.拿到了系统语言,那么我们就要通过系统语言的判断改变我们app对应的系统语言:
protected void showLanguage(String language) {
//设置应用语言类型
Resources resources = getResources();
Configuration config = resources.getConfiguration();
DisplayMetrics dm = resources.getDisplayMetrics();
if (language.equals("zh")) {
config.locale = Locale.SIMPLIFIED_CHINESE;
} else {
config.locale = Locale.ENGLISH;
}
resources.updateConfiguration(config, dm);
//保存设置语言的类型(这个里面我先保存一下,下面会讲到他的用处)
PreferenceUtil.commitString("language", language);
}12345678910111213141234567891011121314

这样子,如果你的手机开始的时候系统是中文,那么你的app就是中文,如果开始的时候系统是英文,那么你的app就是英文,这个只是适用开始的时候语言就已经设定好了,但是如果你现在的app用的是中文,app没有退出的情况下,直接去把系统设置成英文,那么你返回到你的app的时候并不会是英文,依然是中文,必须在程序退出之后,再进来的时候才会成为英文,这样子的体验一点都不好,那么我们怎么样才能做到你改系统语言,我的app就跟着去改变呢,所谓的动态改变。那么我们可以这样子做。
@Override
protected void onResume() {
super.onResume();
String LAN = PreferenceUtil.getString("language","");
Locale locale = Locale.getDefault();
String language = locale.getLanguage();
Log.i("语言————————",language);
if(!language.equals("")){
if(!LAN.equals(language)){
freshView();//重新启动MainActivity

}
}
showLanguage(language);
}

private void freshView(){
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);

}12345678910111213141516171819202122231234567891011121314151617181920212223

首先PreferenceUtil这个是我自己写的工具类,就是SharedPreferences存储,在onResume()里面,重要的就是做个判断,拿到的language是不是和之前保存系统的language一样,如果不一样,重新启动MainActivity,这样子就做到了重新获取系统language。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
whirlpool如何制热 如何查被录取到的专业 怎样查被录取的专业 录取后怎样查询录取的专业 录取专业怎么查 已被录取怎么查专业 ghs网络语什么意思_ghs网络语意思出处含义介绍 纸箱企业管理软件 ghs什么意思网络(ghs什么意思网络用语) 《喜羊羊与灰太狼》大结局 android开发中怎么设置多语言版本? Android如何实现多语言支持 使用ueditor编辑后保存到数据库,内容中含有html代码 markdown和ueditor 哪个更好 如何配置 ueditor 使用 kcfinder 如何使用ueditor编辑js 怎样使用ueditor修改脚本vbs 关于jsp中ueditor的用法 如何在代码中使用控件ueditor java ueditor 怎么使用 php ueditor怎么使用 ueditor怎么使用 如何更换微博背景图片呢?拜托了各位 谢谢 微博怎么换背景? 怎样让微博背景图对称显示在两侧 华为手机怎么知道wifi密码 华为手机怎么查看已经连接的wifi密码?(不显示分享二维码。) 湖北省中等职业学校毕业证管理与查询系统查询到的毕业证有效吗? 中职学历查询什么时候能查到2011年的? 没有保存二维码,华为手机忘记了wifi密码怎么办,就是手机WIFI打开不了了而且二维码没保存? 如何实现Android程序的多语言的支持 Android 8.0 以上怎么设置多语言 android 多语言怎么转换 android多语言的纠结问题 安卓手机如何添加多国语言? android的快捷方式怎样支持多语言 如何构建多语言版本的 Android 应用 Android版的微信的多语言是怎么实现的 Android studio怎么建多语言ResouuceBundle文件 亲~怎么编写多语言?Android手机,墨西哥西语。语言列表中目前没有。---我是一名做手机开发的小菜鸟。。 如何让android应用实现对多国语的支持语言缩写 Android中,如何适配多语言,多机种(不同分辨率)机型? android中按钮如何实现多语言,有的按钮是ImageButton,带字的,切换语言的时候,这ImageButton该怎么办啊 如何删除android setting语言列表中多余的语言(只要中文和英文) android studio多语言建立的文件夹在哪 漏电空气开关的功能介绍 漏电空气开关的3大使用注意事项 漏电开关和空气开关,哪一种更加安全? 漏电开关和空气开关有什么区别吗? 家里装漏电开关还是空气开关好? 漏电开关与空气开关的区别 五大区别介绍给你