Android多语言设置

news/2024/12/21 18:46:30/

如果Android应用需要做本地化,都要用到多语言来适配,例如手机设置成英文后,App内文字变成英文。

App提供资源可以参考官方文档https://developer.android.com/guide/topics/resources/providing-resources#AlternativeResources,App提供各种适配的资源,包括但不限定于:语言和区域,屏幕尺寸,屏幕像素密度。做多语言功能,提供values资源即可。例如中文:values-zh;中文简体:values-zh-rCH;中文繁体:values-zh-rTW;App查找资源可以参考文档https://developer.android.com/guide/topics/resources/providing-resources#BestMatch,而对于语言的资源匹配可以参考这个https://developer.android.com/guide/topics/resources/multilingual-support,7.0之前和之后有些许区别。

这样设置基本实现了多语言,但是如果需要App内切换语言的功能的话需要设计应用内切换语言的代码。主要代码是更新Application和Activity的Resources的语言设置,在Application中的onCreate中更新Resources,在Activity中则需要在attachBaseContext中进行操作,在7.0之后有些许变化,

7.0之前只更新Resources即可,代码如下

    private void setConfiguration(Context context) {Resources resources = context.getResources();Locale targetLocale = getLocale();Configuration configuration = resources.getConfiguration();configuration.locale = targetLocale;resources.updateConfiguration(configuration, resources.getDisplayMetrics());//语言更换生效的代码!}

7.0之后需要使用createConfigurationContext新建一个Context返回,代码如下

    private Context updateResources(Context context) {Resources resources = context.getResources();Locale locale = getLocale();Configuration configuration = resources.getConfiguration();configuration.setLocale(locale);return context.createConfigurationContext(configuration);}

getLocale就是获取当前选择的语言。如果是跟随系统则需要获取系统设置的语言,代码如下

    private static Locale getSystemLocale() {Locale locale;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //7.0有多语言设置获取顶部的语言locale = Resources.getSystem().getConfiguration().getLocales().get(0);} else {locale = Resources.getSystem().getConfiguration().locale;}return locale;}

每次选择后需要重建Activity,并更新Application的Resources,这时可以选择重建所有的Activity,或者返回MainActivity,只重建MainActivity。

另外:如果在项目中配置了resConfigs,则需要添加自己多语言的配置,例如resConfigs("zh-rCN","zh-rTW","en")

具体Demo可以参考https://github.com/jklwan/NoteApplication/blob/master/app/src/main/java/com/chends/note/utils/LanguageUtil.java


http://www.ppmy.cn/news/712005.html

相关文章

Spyder5.0语言设置中文 解决方案

目录 问题描述解决方案 问题描述 想要将Spyder5.0界面由英文切换至中文。 解决方案 路径:工具栏中【Tools】→【Application】→【Advanced settings】→【Language】→【English】切换为【简体中文】后重启即可解决。 重启后就变成中文啦o( ̄▽&#xf…

如何把Eclipse语言设置为中文(官方网址语言包)

把Eclipse语言设置为中文需要安装中文语言包,去官网上下载,我给大家找到了官方网址。 下载地址:Eclipse Babel Project Downloads | The Eclipse Foundation 先去上面那个官网上面,再找到最新版的压缩p2存储库添加即可。 具体安装…

facebook语言_如何在Facebook上更改语言设置

facebook语言 If you want to improve your language skills through immersive practice or add an additional language to Facebook, the social media platform provides in-depth language and region settings that are accessible with just a few clicks. 如果您想通过…

android 多语言设置

最近APP里做到了多语言的功能,需要简体中文,繁体中文,英语,三种语言。去查找了一下资料发现语言的切换就只是重载了一下resources; 首先在values里新建values-en(英文) values-zh-rCN(中文) values-zh-rTW…

spyder 5语言设置简体中文

在以往的spyder版本中,简中的设置都在Tools-Preferences里的第一条的Advanced settings中,但在spyder5这个界面被调到了Application里。 在这里改一下就可以啦 新人博主欢迎评论或纠错

Eclipse语言设置

eclipse界面语言的切换方法 1.该方法只支持安装过中文包的eclipse(其实中文包中几乎包含了全世界所有的语言,只是调用了其中的中文简体而已) 2.在桌面的快捷方式中目标的地址后面加上参数-nl "区域语言代码"即可实现界面语言切换 如…

如何将kali linux语言设置成中文

1.进入root模式&#xff0c;执行dpkg-reconfigure locales命令。 2.找到en_US.UTF-8 UTF-8选项&#xff0c;按空格键将其进行取消。 3.选择语言zh_CN.UTF-8 UTP-8&#xff0c;空格选择&#xff0c;按tab键选择ok。 4.在此处选择zh_CN.UTF-8字符编码&#xff0c;在<0k> 处…

R语言设置随机种子set.seed()函数使用

在R语言中&#xff0c;有各种各样的函数可以产生随机数&#xff0c;只需要在对应分布前面加上r就可以&#xff0c;如&#xff1a;rnorm(10),为产生10个服从标准正态分布的随机数。每运行一次&#xff0c;得到的随机数都不相同。但在做模拟运算过程中&#xff0c;往往希望产生随…