Android i18n
Android 本地化:让您的应用支持多种语言
Android 提供了一个基于资源的强大本地化系统,该系统利用 strings.xml 文件和资源限定符。每个语言环境都有自己的 values 目录,系统会根据设备语言自动选择相应的资源。借助 Jetpack Compose 以及 Android 13 及更高版本中的“按应用设置语言偏好”功能,构建多语言 Android 应用从未如此简单。
Android 本地化功能
包含类型安全的 R 类引用的 strings.xml 资源文件
内置的复数规则,支持数量词(零、一、二、少数、许多、其他)
Jetpack Compose 支持 stringResource() 和 pluralStringResource()
Android 13+ 支持按应用设置语言偏好,无需重启应用
针对区域设置、屏幕尺寸和布局方向的资源限定符
支持从右到左(RTL)布局镜像,自动翻转视图
通过 ICU 库实现区域感知的日期、时间与数字格式化
用于本地化列表内容的字符串数组和类型化数组
Android Studio 翻译编辑器,用于可视化字符串管理
Android 本地化实践
在 res/values/strings.xml 中定义可翻译字符串(支持复数形式),然后使用 Kotlin 和 Jetpack Compose API 在 UI 中渲染本地化内容。
<!-- res/values/strings.xml -->
<resources>
<string name="welcome">Welcome to %1$s</string>
<plurals name="items">
<item quantity="one">%d item</item>
<item quantity="other">%d items</item>
</plurals>
</resources>
<!-- res/values-fr/strings.xml -->
<resources>
<string name="welcome">Bienvenue sur %1$s</string>
<plurals name="items">
<item quantity="one">%d article</item>
<item quantity="other">%d articles</item>
</plurals>
</resources>
// Kotlin - Jetpack Compose
@Composable
fun WelcomeScreen() {
Text(text = stringResource(R.string.welcome, "My App"))
Text(text = pluralStringResource(R.plurals.items, 5, 5))
}