Android i18n - 多语言版本

更新日期: 2021-09-30 阅读次数: 8682 字数: 602 分类: Android

由于发现上架 Google Play 之后,中国区的 Android APP 无法显示 AdMob 广告,但是其他国家却非常正常。所以,我决定给 App 添加英文翻译,使其同时支持中文,和英文。

为文本添加翻译文件

鼠标放在待翻译的字符串上,按下 Alt + Enter

同样适用于 Jetpack Compose 组件。

不同语言对应的文本文件

例如:

  • 中文:res/values-zh/strings.xml
  • 法语:res/values-fr/strings.xml
  • 日语:res/values-ja/strings.xml

默认文本

res/values/strings.xml

  • Android 系统获取文本的逻辑,在找不到对应语言的文本文件时,使用默认文本文件
  • 最好模式是用户量最大的语言版本,但我觉得还是英语合适,方便以后扩展

便于翻译的技巧

写明使用场景,及长度限制等。方便翻译人员做出最佳翻译。

<!-- The action for submitting a form. This text is on a button that can fit 30 chars -->
<string name="login_submit_button">Sign in</string>

如何生成本地化 strings.xml 文件

在 values 目录上右键 - New - Values resource file

Android i18n - 多语言版本

在弹出的对话框中选择 Locale,并添加到右侧

Android i18n - 多语言版本

这时会再次弹出国家代码选择框。注意,一定将该对话框拖大一点,否则没法看到所有内容。

Android i18n - 多语言版本

添加之后,就会看到多了一个中文语言标识的 strings.xml。

Android i18n - 多语言版本

而在真实目录结构下,这两个文件位于不同的目录中:

modified:   app/src/main/res/values-zh/strings.xml
modified:   app/src/main/res/values/strings.xml

除了语言,还可以选择区域

例如,同样是中文,还能选择香港,澳门,新加坡,台湾等区域,生成带区域后缀 strings.xml 文件。

考虑的很周到。但是,目前我还用不到。

如何测试

只需要在 Android 系统的设置中,修改语言即可,将需要测试的语言拖动到顶部即可。

可以立即生效,并不需要重启 Android 系统。但是需要将自己写的 APP 先干掉,然后重启点开。

注:并没有找到 Android 官方文档中提到的 Custom Locale 这个 APP。

参考文档

  • Android 官方文档 https://developer.android.com/guide/topics/resources/localization
  • Android 编程权威指南第三版
  • https://phrase.com/blog/posts/internationalizing-jetpack-compose-android-apps/

tags: Google AdMob 广告 Android i18n 国际化 Jetpack Compose i18n

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式