各应用语言偏好设定  

您所在的位置:网站首页 设置internet参数打开ie的自动选择语言编码功能 各应用语言偏好设定  

各应用语言偏好设定  

#各应用语言偏好设定  | 来源: 网络整理| 查看: 265

在系统设置中设置各应用的语言

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

系统设置:用户可以在这个集中位置为每个应用选择首选语言。

您可以将应用配置为自动生成文件,以便支持各应用语言偏好设定,并显示在系统设置中。如需了解详情,请参阅有关启用各应用自动设定语言支持的说明。

其他 API:借助这些公共 API(例如 LocaleManager 中的 setApplicationLocales() 和 getApplicationLocales() 方法),应用可以在运行时设置不同于系统语言的其他语言。

这些 API 会自动与系统设置同步;因此,使用这些 API 创建自定义应用内语言选择器的应用将确保用户获得一致的用户体验,无论他们在何处选择语言偏好设置。公共 API 还有助于减少样板代码量、支持拆分 APK,并且支持应用自动备份,以存储应用级的用户语言设置。

为了向后兼容以前的 Android 版本,AndroidX 中也提供了等效的 API。不过,对于 Android 12(API 级别 32)及更低版本,向后兼容的 API 可与 AppCompatActivity 上下文一起使用,而非应用上下文。请使用 Appcompat 1.6.0 或更高版本访问向后兼容的 API。

此功能的实现方式概览

下表根据不同的用例展示了推荐的实现方式。

用例 推荐的实现方式 您的应用没有应用内语言选择器 启用各应用自动设定语言支持,以便生成 LocaleConfig 文件并将应用的语言添加到系统设置中。 (可选)如果您想添加应用内语言选择器:请使用 AndroidX 库并选择接受 API 实现,以通过 autoStoreLocales 支持向后兼容性。 您的应用已有应用内语言选择器 启用各应用自动设定语言支持,以便生成 LocaleConfig 文件并将应用的语言添加到系统设置中。 迁移应用的自定义逻辑以使用公共 API,确保用户获得一致的体验。 处理以下极端情况: 应用在搭载 Android 13 的设备上首次运行时调用 AppCompatDelegate.setApplicationLocales()。 针对以下情况,调用 AppCompatDelegate.setApplicationLocales() 以向系统提供用户请求的现有语言区域: 如果您针对 Android 12(API 级别 32)及更低版本为您的应用选择启用自动存储功能 如果您的应用需要从自定义备份存储位置迁移数据 面向用户的系统设置

从 Android 13 开始,Android 在系统设置中引入了一个集中位置,以用于设置各应用语言偏好设定。为了确保在搭载 Android 13 或更高版本的设备上,在系统设置中可以配置应用的语言,请启用各应用自动设定语言支持(推荐)或手动配置支持。

启用各应用自动设定语言支持 注意:此功能不会像手动设置流程一样对项目进行更改。自动流程中的所有更改都是在生成的文件中完成的。例如,您不会在应用的清单中看到 android:localeConfig 条目,也不会在 res/xml/locales_config.xml 看到文件。这是预期行为,因为所有更改都是在构建应用时自动生成的。

从 Android Studio Giraffe 和 AGP 8.1 开始,您可以将应用配置为自动支持各应用语言偏好设定。AGP 会根据您的项目资源生成 LocaleConfig 文件,并在最终清单文件中添加对该文件的引用,这样您就不再需要手动操作。AGP 使用应用模块的 res 文件夹中的资源以及任何库模块依赖项来确定要在 LocaleConfig 文件中添加的语言区域。这意味着,如果您向应用中添加了新语言的资源,则无需担心更新 LocaleConfig 文件。

请注意,各应用自动语言功能支持搭载 Android 13(API 级别 33)或更高版本的应用。如需使用此功能,您必须将 compileSdkVersion 设为 33 或更高版本。如需为之前版本的 Android 配置各应用语言偏好设定,您仍然需要使用 API 和应用内语言选择器。

注意:如果您为生产环境中的应用启用了启用各应用自动设定语言支持,请确保应用和库模块依赖项资源中的所有语言区域也可与您的应用一起发布。

如需启用各应用自动设定语言支持,请按以下步骤操作:

如需启用此功能,请使用模块级 build.gradle.kts 文件(如果您使用的是 Groovy,则为 build.gradle 文件)的 androidResources {} 块中的 generateLocaleConfig 设置。该功能默认处于关闭状态。 Kotlin android { androidResources { generateLocaleConfig = true } } Groovy android { androidResources { generateLocaleConfig true } } 请指定默认语言区域: 在应用模块的 res 文件夹中,创建一个名为 resources.properties 的新文件。

在 resources.properties 文件中,使用 unqualifiedResLocale 标签设置默认语言区域。如需设置语言区域名称的格式,请参阅如何构成语言区域名称。

AGP 会将此默认语言区域和您指定的所有其他语言区域(使用 res 文件夹中的 values-* 目录)添加到自动生成的 LocaleConfig 文件中。

注意:在启用了各应用自动设定语言支持的情况下,如果您手动创建 LocaleConfig 文件,构建会失败。您必须先移除手动创建的 LocaleConfig 文件,然后才能启用各应用自动设定语言支持和构建应用。 如何构成语言区域名称

将语言代码与可选的脚本代码和区域代码(使用短划线将各部分隔开)组合在一起即可构成语言区域名称。

语言:使用由两个或三个字母组成的 ISO 639-1 代码。 脚本(可选):使用 ISO 15924 代码。 区域(可选):使用由两个字母组成的 ISO 3166-1-alpha-2 代码或三位数的 UN_M.49 代码。

例如,如果您的默认语言区域是美式英语:

unqualifiedResLocale=en-US 使用 android:localeConfig 将受支持的语言添加到系统设置中 注意:我们建议您尽可能启用各应用自动设定语言支持,而不是手动配置。

您可以手动设置应用,以确保在搭载 Android 13 或更高版本的设备上可以在系统设置中配置其语言。如需实现此目的,请创建一个 locales_config XML 文件,并使用 android:localeConfig 属性将其添加到应用的清单中。省略 android:localeConfig 清单条目表明用户不应该能够在他们的系统设置中独立于系统语言来设置您的应用语言。

若要将应用支持的语言手动添加到用户的系统设置中,请执行以下操作:

创建一个名为 res/xml/locales_config.xml 的文件,并指定您的应用的语言,包括应用的最终回退语言区域(即在 res/values/strings.xml 中指定的语言区域)。

如需了解格式要求,请参阅如何构成语言区域名称。 另请参阅示例 locale_config.xml 文件,了解最常用的语言区域列表。

例如,对于支持以下语言的应用,可以为 locales_config.xml 文件设置如下格式:

使用“英语(美国)”作为最终回退语言区域 英语(英国) 法语 日语 中文(简体,澳门) 中文(繁体,澳门)

在清单中,添加一行指向这个新文件的代码:

... 在 Gradle 中指定受支持的语言

请使用应用的模块级 build.gradle 文件中的 resourceConfigurations 属性指定相同的语言(如果这些语言尚不存在):

android { ... defaultConfig { resourceConfigurations += ["en", "en-rGB", "fr", "ja", "b+zh+Hans+MO", "b+zh+Hant+MO"] } }

当存在 resourceConfigurations 属性时,构建系统仅在 APK 中包含这些指定语言的语言资源,以防止从可能支持相应应用所不支持的语言的其他库中添加经过翻译的字符串。如需了解详情,请参阅指定应用支持的语言。

重要提示:如果您是首次添加对任何语言的支持,请务必按照本地化您的应用一文中针对相应语言提供的指南来操作。添加各应用的语言设置并不会自动将应用的资源翻译成相应语言。 用户在系统设置中如何选择应用语言

用户可以通过系统设置为每个应用选择首选语言。他们可以通过以下两种方式访问这些设置:

通过系统设置访问

设置 > 系统 > 语言和输入法 > 应用语言 >(选择一款应用)

通过应用设置访问

设置 > 应用 >(选择一款应用)> 语言

处理应用内语言选择器

对于已经具有或想要使用应用内语言选择器的应用,请使用公共 API 而不是自定义应用逻辑来处理相关设置和获取用户对应用的首选语言设置。如果您将公共 API 用于应用内语言选择器,则设备的系统设置会自动更新,以匹配用户通过您的应用内体验选择的任何语言。

为了向后兼容以前的 Android 版本,强烈建议使用 AndroidX 支持库来实现应用内语言选择器。不过,如有需要,您也可以直接实现框架 API。

使用 AndroidX 支持库来实现

使用 Appcompat 1.6.0 或更高版本中的 setApplicationLocales() 和 getApplicationLocales() 方法。请注意,对于 Android 12(API 级别 32)及更低版本,向后兼容的 API 可与 AppCompatActivity 上下文一起使用,而非应用上下文。

注意:如果您将 Compose 与 setApplicationLocales() 搭配使用,则必须从 AppCompatActivity 扩展您的 activity。否则,应用语言区域设置将不起作用。如需开始使用,请参阅我们的示例应用。

例如,如需设置用户的首选语言,您需要让用户在语言选择器中选择语言区域,然后在系统中设置该值:

Kotlin val appLocale: LocaleListCompat = LocaleListCompat.forLanguageTags("xx-YY") // Call this on the main thread as it may require Activity.restart() AppCompatDelegate.setApplicationLocales(appLocale) Java LocaleListCompat appLocale = LocaleListCompat.forLanguageTags("xx-YY"); // Call this on the main thread as it may require Activity.restart() AppCompatDelegate.setApplicationLocales(appLocale);

请注意,除非应用自行处理语言区域配置更改,否则调用 setApplicationLocales() 会重新创建 Activity。

使用 AppCompatDelegate.getApplicationLocales() 检索用户的首选语言区域。用户可能是从系统设置或应用内语言选择器中选择的应用语言区域。

支持 Android 12 及更低版本

如需支持搭载 Android 12(API 级别 32)及更低版本的设备,请在应用的 AppLocalesMetadataHolderService 服务的清单条目中将 autoStoreLocales 值设置为 true 并将 android:enabled 设置为 false,以指示 AndroidX 处理语言区域存储空间,如以下代码段所示:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3