本地化您的应用(观看次数)

概念和 Jetpack Compose 实现

许多地区的许多设备上都搭载了 Android。为了覆盖大多数用户,请确保您的应用以适合其所在语言区域的方式处理文本、音频文件、数字、货币和图形。

本页介绍了一些本地化 Android 应用的最佳实践。

您需要具备 Kotlin 或 Java 编程 语言的实战知识,熟悉 Android 资源加载在 XML 中声明界面元素、activity 生命周期等开发注意事项,以及国际化和本地化的基本原则。

使用 Android 资源框架将应用的已本地化部分与应用的核心功能尽可能分开,是一种很好的做法。

  • 将应用界面的大部分内容或全部内容放入资源 文件中,如本页和应用资源概览中所述。
  • 另一方面,界面的行为是由基于 Kotlin 或基于 Java 的代码驱动的。 例如,如果用户输入的数据需要根据语言区域使用不同的格式或排序方式,则可以使用 Kotlin 或 Java 编程语言以编程方式处理数据。本页不讨论如何对基于 Kotlin 或 Java 的代码进行本地化。

有关如何将应用中的字符串本地化的简短指南,请参阅 支持不同的语言和文化

使用资源进行本地化

本部分介绍如何创建默认资源以及备用资源, 还说明了如何为资源分配优先级以及如何在代码中引用资源。

创建默认资源

将应用的默认文本放在 res/values/strings.xml 中。对于这些字符串,请使用默认语言,即您预计应用的大部分用户所说的语言。

默认资源集还包含任何默认的可绘制对象和布局,还可以包含其他类型的资源,例如动画。这些资源位于以下目录中:

  • res/drawable/:必需的目录,至少包含一个图形文件,用作 Google Play 上的应用图标
  • res/layout/:必需的目录,包含一个用于定义默认布局的 XML 文件
  • res/anim/:如果您有任何 res/anim-<qualifiers> 文件夹,则为必需
  • res/xml/:如果您有任何 res/xml-<qualifiers> 文件夹,则为必需
  • res/raw/:如果您有任何 res/raw-<qualifiers> 文件夹,则为必需

提示:在代码中,检查对 Android 资源的每个引用。确保为每个引用都定义了默认资源。此外,还需要确保默认字符串文件是完整的:已本地化 的字符串文件可包含部分字符串,但默认字符串 文件必须包含所有字符串。

关于本地化的建议

在本地化您的应用时,请遵循以下建议。

设计灵活的布局

如果您需要重新排列布局以适应某种语言,则可以针对该语言创建备用布局,例如为德语布局创建 res/layout-de/main.xml。不过,这样做会增加应用的维护难度。最好创建一个更灵活的布局。

另一种常见情况是,某种语言需要在布局中使用不同的内容。例如,当应用以日语运行时,可能需要包含两个名称字段的联系人表单,而当应用以其他语言运行时,则可能需要包含三个名称字段的联系人表单。您可以通过以下两种方式之一来处理这种情况:

  • 创建一个布局,在其中包含您可以根据语言以编程方式启用或停用的字段。
  • 让主布局包含另一个包含可更改字段的布局。第二个布局可以针对不同的语言采用不同的配置。

使用 Android Context 对象手动查找语言区域

您可以使用 Android 提供的 Context 对象 查找语言区域,如以下示例所示:

Kotlin

val primaryLocale: Locale = context.resources.configuration.locales[0]
val locale: String = primaryLocale.displayName

Java

Locale primaryLocale = context.getResources().getConfiguration().getLocales().get(0);
String locale = primaryLocale.getDisplayName();