安卓13应用程序语言设置


前言

谷歌开发者网站上针对各个安卓版本进行了版本说明,Android13版本说明中有一项关于app应用程序语言设置的说明,引用一下:

设置
每个应用程序的语言设置
Android 13 添加了允许用户逐个应用更改语言首选项的功能。合作伙伴和 OEM 不应禁用应用程序语言选择页面,并且应可通过以下三个导航选项访问该页面:
设置 > 应用程序 > app_name并选择Language 。
长按应用程序图标,点击应用程序信息,然后选择语言。
设置 > 系统 > 语言和输入 > 应用程序语言 > app_name 。
设置应用程序必须继续从android.settings.App_Locale_Settings Intent 启动应用程序区域设置页面。

本文针对此功能进行基本介绍说明
官方链接:Android13版本说明


一、功能简介

在许多情况下,多语言用户会将其系统语言设置为某一种语言(例如英语),但又想为特定应用选择其他语言(例如荷兰语、中文或印地语)。为了帮助应用为这些用户提供更好的体验,Android 13 针对支持多种语言的应用引入了以下功能:见链接:按应用设定的语言偏好设置

简单描述一下,以前的安卓版本只是支持修改系统语言,然后整个系统的语言文字发生变化,而从现在的Android13版本开始,系统支持单独的app应用修改它的语言文字,即我们的系统语言可以设置为中文,而某一个app可以单独设置为英文、日语、韩语等系统支持的其他语言。

二、使用步骤

那么该功能如何使用呢?

2.1 原生app语言功能查看

使用Android studio创建SDK33(即Android13)的模拟器,根据官方提示进入Settings的应用程序和系统查看此功能。
在这里插入图片描述

可以看到系统的语言与输入法这一块是多了App languages这个功能项

在这里插入图片描述
点进去查看,显示了支持多语言选择的应用
在这里插入图片描述
点击Chrome查看:
在这里插入图片描述
可以看到该应用支持的语言。
我们在apps->对应的应用程序->app info下也可以看到有语言的选择项
在这里插入图片描述

2.2 创建属于自己的多语言app

如果我们想要创建应用,并搭载该功能,该做什么步骤呢?
SDK版本选择33,毕竟这是安卓13支持的功能嘛

2.2.1 创建locales_config.xml文件,指定应用的语言

文件路径: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>

以中、英、法、日、韩举例,其他语言填写参考官方文档

2.2.2 manifest清单导入此文件

AndroidManifest.xml

<application
        ......
        android:localeConfig="@xml/locales_config"
        ......
        tools:targetApi="33">

如果此时编入到系统中,该App便已经有了多语言选项,可以选择我们填写的五种语言,但很明显,app什么都没做,语言功能并不会真正起效。

2.2.3 创建多语言资源文件

在这里插入图片描述
文件名称strings,选择Locale(区域、语言环境),依次添加上述的五个地区
在这里插入图片描述
最后效果:
在这里插入图片描述

定义相同的字符串id,但是内容不同
日语:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="des1">こんにちは世界</string>
    <string name="des2">世界は美しい</string>
    <string name="language">日本語</string>
</resources>

法语

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="des1">Bonjour le monde</string>
    <string name="des2">le monde est beau</string>
    <string name="language">Français</string>
</resources>

2.2.4 app调用资源

    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版本说明
按应用设定的语言偏好设置

  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值