安卓13应用程序语言设置

目录

  • 前言
  • 一、功能简介
  • 二、使用步骤
    • 2.1 原生app语言功能查看
    • 2.2 创建属于自己的多语言app
      • 2.2.1 创建locales_config.xml文件,指定应用的语言
      • 2.2.2 manifest清单导入此文件
      • 2.2.3 创建多语言资源文件
      • 2.2.4 app调用资源
  • 参考链接


前言

谷歌开发者网站上针对各个安卓版本进行了版本说明,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这个功能项

安卓13应用程序语言设置_第1张图片
点进去查看,显示了支持多语言选择的应用
安卓13应用程序语言设置_第2张图片
点击Chrome查看:
安卓13应用程序语言设置_第3张图片
可以看到该应用支持的语言。
我们在apps->对应的应用程序->app info下也可以看到有语言的选择项
安卓13应用程序语言设置_第4张图片

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 创建多语言资源文件

安卓13应用程序语言设置_第5张图片
文件名称strings,选择Locale(区域、语言环境),依次添加上述的五个地区
安卓13应用程序语言设置_第6张图片
最后效果:
安卓13应用程序语言设置_第7张图片

定义相同的字符串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>

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

你可能感兴趣的:(安卓,android,android,studio,java)