㈠ android的国际化语言适配(系统语言适配+APP内部适配)
Android国际化语言适配分为两种
1.更改手机系统语言后,APP的语言也会跟着变化
2.只改变自己APP的语言,不受手机系统语言的影响,不影响其他APP的语言,可以参考微信的切换语言的效果。
只需要创建不同语言的values即可
具体操作参考 简单的Android客户端国际化(语言适配)方案
操作的时候要注意: 当选择所要切换的语言后,则进行修改Config以及重启APP,一定要将选择的语言保存到SP中,且在activity中的oncreate中将SP中存储的语言取出来重新设置Config,否则当重启APP后,还是会跟系统语言一样。
具体操作参考 Android应用程序内部切换语言及自定义语言
㈡ android的程序怎么使资源文件随着系统语言来进行语言改变,也就是实现android代码的国际化。
这个很简单,在res目录下,新建对应语言的values文件夹
中文 : values-zh
中文简体: values-zh-CN
英文 : values-en
英文(美式) : values-en-rUS
系统提供的values是默认语言环境,当象上面一样提供了其它语言环境时,以提供的语言环境优先。
㈢ Android 国际化 设置Locale.ENGLISH不生效以及createConfigurationContext()问题
Q1 故事情节: 设置了简体中文,繁体中文和英信戚锋文,结果拿了7.0荣耀青春版完美显示,然而7.0下的所有安卓手机都设置英文无效,简体中文和繁体中文依然可以,纳闷......
Q1 解决方式:虽说看起来设置了英文Locale.ENGLISH, 但实际上有些手机或系统需要特殊指明那个英文的(英国/美国),所以不要直接使用Locale.ENGLISH,将滑晌Locale.ENGLISH改成相对应的Locale.US(美国英文) 或 Locale.UK(英国英文)就可以了,如下图注释部分。
Q2 故事仔渗情节:还以为Q1问题解决就可以了,在设置createConfigurationContext(config)情况下,>=6.0系统的手机都切换语言失败(5.0的手机刚好没有,所以待定),具体原因不详
Q2 解决方式:老老实实,用回getResources().updateConfiguration(config, null)就可以了
㈣ Android如何实现国际化
只要在 res 文件夹下新建对应语言的 values 文件夹就好了, 如,英语环境下的,文件夹命名为:values-en 美国英文环境:values-en-rUS 中文环境为:values-zh 大陆地区中文环境: 在 eclipse 下新建 Android 项目时,会在 res 目录下自动创建一个默认语言环境的文件夹 : values 当某一个资源没有在语言环境的对应的资源集合中找到时,就会使用 values 下的资源。 若某一个语言环境没有在项目中定义语言环境,那么也会使用 values 下的资源。 图片国际化同理。 在 res 下新建 drawable-zh 文件夹,存放中文环境下的图片 新建 drawable-en 作为英语环境下的图片 在 eclipse 下新建 Android 项目时,会在 res 目录下自动创建三个默认语言环境的文件夹: drawable-hdpi drawable-ldpi drawable-mdpi 分别用于存放高、中。低分辨率的图片。Android 系统会根据手机的分辨率,而自动从不同的对应的某一个文件夹下去加载图片。 同样,它们也可以国际化,命名规则如: drawable-zh-hdpi drawable-en-ldpi drawable-en-rUS-mdpi 使用,在 XML 中需要使用到图片的地方用表达式: @drawable/icon 代码中使用:R.drawable.icon。因为图片资源同样也会在 R 文件中生成一个索引
㈤ 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:应用多语言切换,国际化实现
生成多种语言的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国际化之多语言(配置及应用内设置)✈️
Android系统通过判断当前系统的Local配置,来使用对应的strings.xml文件
values-->strings.xml 默认语言(简体中文)
values-zh-rHK-->strings.xml 繁体中文
values-en-->strings.xml 英语
在Android系统中,系统的配置大都通过 Configuration 来管理,包括strings等等。
onCreate() 中注册
onDestroy() 中取消注册
setLanguage() 方法
通过上面的设置,可以实现不重启APP修改语言的效果
以上只是对Android多语言设置的一些小小的总结,可能有理解不周的情况,欢迎给我留言指出😄