谷歌开发者网站上针对各个安卓版本进行了版本说明,Android13版本说明中有一项关于app应用程序语言
设置的说明,引用一下:
设置
每个应用程序的语言设置
Android 13 添加了允许用户逐个应用更改语言首选项的功能。合作伙伴和 OEM 不应禁用应用程序语言选择页面,并且应可通过以下三个导航选项访问该页面:
设置 > 应用程序 > app_name并选择Language 。
长按应用程序图标,点击应用程序信息,然后选择语言。
设置 > 系统 > 语言和输入 > 应用程序语言 > app_name 。
设置应用程序必须继续从android.settings.App_Locale_Settings Intent 启动应用程序区域设置页面。
本文针对此功能进行基本介绍说明
官方链接:Android13版本说明
在许多情况下,多语言用户会将其系统语言设置为某一种语言(例如英语),但又想为特定应用选择其他语言(例如荷兰语、中文或印地语)。为了帮助应用为这些用户提供更好的体验,Android 13 针对支持多种语言的应用引入了以下功能:见链接:按应用设定的语言偏好设置
简单描述一下,以前的安卓版本只是支持修改系统语言,然后整个系统的语言文字发生变化,而从现在的Android13版本开始,系统支持单独的app应用修改它的语言文字,即我们的系统语言可以设置为中文,而某一个app可以单独设置为英文、日语、韩语等系统支持的其他语言。
那么该功能如何使用呢?
使用Android studio创建SDK33(即Android13)的模拟器,根据官方提示进入Settings的应用程序和系统查看此功能。
可以看到系统的语言与输入法这一块是多了App languages这个功能项
点进去查看,显示了支持多语言选择的应用
点击Chrome查看:
可以看到该应用支持的语言。
我们在apps->对应的应用程序->app info下也可以看到有语言的选择项
如果我们想要创建应用,并搭载该功能,该做什么步骤呢?
SDK版本选择33
,毕竟这是安卓13支持的功能嘛
文件路径:res/xml/locales_config.xml
<?xml version="1.0" encoding="utf-8"?>
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
<locale android:name="zh"/><!-- Chinese -->
<locale android:name="en"/><!-- English -->
<locale android:name="ja"/><!-- Japanese -->
<locale android:name="ko"/><!-- Korea -->
<locale android:name="fr"/><!-- French -->
</locale-config>
以中、英、法、日、韩举例,其他语言填写参考官方文档
AndroidManifest.xml
<application
......
android:localeConfig="@xml/locales_config"
......
tools:targetApi="33">
如果此时编入到系统中,该App便已经有了多语言选项,可以选择我们填写的五种语言,但很明显,app什么都没做,语言功能并不会真正起效。
文件名称strings,选择Locale(区域、语言环境),依次添加上述的五个地区
最后效果:
定义相同的字符串id,但是内容不同
日语:
<resources>
<string name="des1">こんにちは世界string>
<string name="des2">世界は美しいstring>
<string name="language">日本語string>
resources>
法语
<resources>
<string name="des1">Bonjour le mondestring>
<string name="des2">le monde est beaustring>
<string name="language">Françaisstring>
resources>
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_language_main);
Language = findViewById(R.id.Language);
des1 = findViewById(R.id.describe1);
des2 = findViewById(R.id.describe2);
Language.setText("应用程序语言为 " + getString(R.string.language));
des1.setText(getString(R.string.des1));
des2.setText(getString(R.string.des2));
}
看下效果:
语言偏好设定
Android13版本说明
按应用设定的语言偏好设置