许多地区的许多设备上都搭载了 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();