android切换语言
① 如何更改Android手机使用的语言
若您当前使用的vivo手机,语言的变更方法如下:
英文设置为中文的路径为:桌面的Settings--System management/More settings--Language--简体中文;
繁体中文设置为中文的路径为:设置--系统管理/更多设置--语言--简体中文;
中文设置为英文或繁体中文的路径为:设置--系统管理/更多设置--语言--English/繁体中文。
② Android国际化多语言切换
关于App国际化,之前有讲到国际化资源、字符换、布局相关,想要了解的猛戳 用力抱一下APP国际化 。借着本次重构多语言想跟大家聊一下多语言切换,多语言切换对于一款国际化App来讲是重中之重,并非难事,但是若要做好也是一件不容易的事情。
当我们做了系统的配置更改,比如说切换了系统导航或者说更改了深色模郑山式,那么我们一般的处理是也是要对Application作出处理。
如果项目中有用到ApplicationContext去getString(@StringRes int id)实现加载的提示语,那么如果只是单纯的重启界面则无法让当前的提示语跟随当前切换的语言,所以我们要么重启整个应用,要么对ApplicationContext中的Local也作出相应的更新方可,这里有一点问题,虽然Android N之后updateConfiguration是过时方法,官方给出使用createConfigurationContext代替,但是更新ApplicationContext的Local发现无效使用老版本updateConfiguration正常。
如果你发现你的应用广播通知栏适配无效,那就是context中的Local在切换语言是并未及时更新Local,这里调试一下便知,如果是Applicaiton注册的广播,那么喊高中多半情况下是没有更新ApplicationContext的Local所导致的。
多语言适配基本步骤大概就是如此了,下面看一下适配的细节问题。
[图片上传失败...(image-b42d06-1640685147639)]
还有一点Android N之后,手机系统的语言配置选项已经不是单选了,改为一个列表了,具体可以参考手机设置中的语言和输入法,所以 setLocal(@Nullable Locale loc) 方法建议不要再使用了,我相信很多人还在用,正确念谨的用法应该是 setLocals(@Nullable LocaleList locales) ,需要传递一个集合。
当你的应用使用的是androidx.appcompat:appcompat:1.2.0及以上时,BaseActivity中需要实现下面方法。
这套方案目前不在推荐,直接去替换attatchBaseContext()中的context则可,经过测试是完全正常的。
以下则是多语言操作的工具类,现在提供出来,需要的朋友可以自行进行改造。
③ Android应用内切换语言
最近接触到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提供的新特性来解决。
完整的例子请移步
https://gitee.com/lyyon/InternationDemo
参考链接: https://www.jianshu.com/p/4f9db19d9383
1. https://www.jianshu.com/p/32ff13db1f0d#comment-24575608
2. http://www.cnblogs.com/travellife/p/Android-ying-yong-nei-o-yu-yan-qie-huan.html
3. https://yanlu.me/android-7-0-app-language-switch/
4. https://github.com/captain-miao/MultiLanguagesSwitch
5. https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview
④ Android 内多语言切换实现
网上有很多安卓内多语言切换的文章,我也看了一些,很多都千篇一律,而且还是有问题,我就自己重新改了一下。整好分享给各位同学,废话不多说,我们正式开始
我们在点击切换语言的按钮时候弹窗dialog 然后用户可以选择 简体中文 英文 繁体中文 跟随系统 四种选项 ,这是我们基本的需求
首先我们要在资源文件res目录下面创建多语言的目录文件夹 values values-en values-zh-rTW values-TW 如图所示:
我们适配多语言的只需要在 values values-en values-zh-rTW 这个三个目录下面的string.xml文件里面写入对应的引用的文本即可
我们只需要这样配置就然后在布局的xml文件里面引用可以达到适配多语言的效果 :
具体引用:
切换的dialog实现这个我用原生的AlertDialog 你们自己可以自定义继承系统的Dialog来实现
这里的语言种类获取到的sta是重SharedPreferences 缓存里面获取到的因为需要
SharedPreferences 工具类:
我们在dialog点击事件里发送一个广播通知 用来触发刷新
然我们在baseActivity里面接收广播重启activity 来刷新多语言切换
关于Locale
实现多语言切换用到了Locale。Locale里很多常见国家和地区以及语言,如果我们做常见的语言,可以直接调用系统的,比如Locale.CHINESE。但是这次做的繁体中文的适配,略我坑一下。
繁体中文我们直接在Locale 属性里面传入 zh-rTW 但是切换没有生效 我翻了下源码只有TW的属性配置我就要修改了
问题是,我最开始直接这样写的:
到此我们说明下开头提到到为什么多出了 values-TW目录 是因为我发现在多语言切换更新 Configuration 中的 locale 属性 的时候翻开源码看到繁体中文(泛指港澳台并没有看到zh-rTW的属性配置)
所以目前的解决方案就是用values-TW来替代:
我这边目前是这样处理来兼容繁体中文切换不生效的做法 ,如果你有更好的方案 麻烦留言大家一起探讨。
Android 内多语言的切换网上的文章也挺多的,基本都千篇一律 很多有纰漏 ,这边也是翻了一下源码勉强能够兼容繁体中文, 项目地址
⑤ android 多语言怎么转换
1.添加多语言文件
在不同的 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();
language就是我们从系统拿到的语言,这里如果是中文,拿到的是“zh”,如果是英文是“cn”;
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);
}
⑥ Android的国际化语言适配(系统语言适配+APP内部适配)
Android国际化语言适配分为两种
1.更改手机系统语言后,APP的语言也会跟着变化
2.只改变自己APP的语言,不受手机系统语言的影响,不影响其他APP的语言,可以参考微信的切换语言的效果。
只需要创建不同语言的values即可
具体操作参考 简单的Android客户端国际化(语言适配)方案
操作的时候要注意: 当选择所要切换的语言后,则进行修改Config以及重启APP,一定要将选择的语言保存到SP中,且在activity中的oncreate中将SP中存储的语言取出来重新设置Config,否则当重启APP后,还是会跟系统语言一样。
具体操作参考 Android应脊敬明用稿轿程序内部切换语樱告言及自定义语言
⑦ Android切换系统语言会做哪些操作
以MIUI系统为例,来说明一下切换系统语言步骤:
1、打开手机设置应唯没用页面,选择“系统高级设置”选项。
⑧ Android:应用多语言切换,国际化实现
生成多种语言的string.xml,里面放置对应的语言,修改配置(Configuration),重启之后就会加载对应语言的string.xml。
1:在res目录下,生成对应的语言包,比如英语:
在res目录下生成了可看到生成了:
<string name="hello">你好</string>
英语:
<string name="hello">hello</string>
之后就可以使用getResource.getString(R.string.hello),这个字符串会加载相对应的配置的语言。
3:修改语言配置
修改语言配置后,需要重新启动进程,并且杀死进程。
1:有些手机是可以在设置里直接切换语言的,这个也就是Configuration改变。用户重新设置系统语言导致应用的语言也会重新设置。Configuration改变,如果在Manifest中不设置android:configChanges忽略掉配置改变,Activity会重新创建,那么我们就可以在Activity的onCreate中,重新修改语言配置。
2:切换语言后,退出应用,重新进来,你会发现又是系统设置的语言。所以需要在Application开启时,需要再次切换语言配置。
⑨ 如何在android APP中设置系统语言
设置达到的效果
在设置界面打开切换语言的界面,选择语言后重启 HomeActivity,语言切换完成,下次重新打开 App ,也是用户设置的语言。
工具
编程软件;
实现步骤
在不同的 value 文件夹下添加不同语言的string.xml文件,项目添加了英文、简体中文、繁体中文三种语言,如下图所示:
⑩ Android11海外版怎么改成中文版
通过设置修改成中文版。
第一步:打开手机主界面,找到“设置”(settings)图标。
第二步:在“设置”中找到“高级设置”(advanced settings)选项。
第三步:点开“高级设置"(advanced settings),找到“语世滚言和输入法”(language&input)。
第四步亮返宏:在“语言和输入法”(language&input)中,找到“语言和地区”(language_ion)设置选项。
第五步:点开“语言和地区”(language_ion)设置选项,我们看到现在的语言是英语切换成中文即可。
2020 年 9 月 14 日,ColorOS 以线上的形式举办了海外发布会,基于 Android 11 的 ColorOS 11 海外版正式亮相敬册。全新的 ColorOS 11 在设计、效率和安全等方面都有不同程度的提升,为全球 OPPO 用户带来更极致的体验。