由于发现上架 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
在弹出的对话框中选择 Locale,并添加到右侧
这时会再次弹出国家代码选择框。注意,一定将该对话框拖大一点,否则没法看到所有内容。
添加之后,就会看到多了一个中文语言标识的 strings.xml。
而在真实目录结构下,这两个文件位于不同的目录中:
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/
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式