

Android简繁体翻译到底该放哪儿?
source link: https://aprildown.xyz/2022/12/25/android-chinese-strings/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Android开发有着和ISO 639-1与BCP 47相似但不同的语言管理方案。
TL;DR
如果minSdk大于等于24(Android 7, Nougat),根据官方文档,简体中文放values-b+zh+Hans
,繁体中文放values-b+zh+Hant
。
但没人会这么做吧!
如果minSdk小于等于23(Android 6, Marshmallow),经过个人测试,简体中文放values-rCN
,繁体中文放values-rTW
。如果要针对香港特殊翻译,再用values-rHK
,澳门、新加坡同理。
官方文档有坑
讲解如何增加翻译的官方文档和前段时间的Android Dev Summit的一个视频中中,都推荐BCP 47格式(比如values-b+zh+Hans
),但都不提示这是Android 7及之后才支持的格式。
在之前的版本使用该格式时,应用并不会崩溃。但在缺少对应的翻译时,系统会发现新格式包含zh
,进而先显示新格式的简体翻译,没有时显示新格式的繁体翻译。
以情况简单的英文为例,Android系统并没有单独的“英语”的语言选择,而有的是诸如“英语(美国)”、“英语(英国)”和“英语(印度)”等选择。这种情况下Locale.getDefault().toLanguageTag()
将会是en-US
、en-GB
和en-IN
等。
这里可以把英文翻译统一放到values-en
,但通常英语是直接放到values
中作为默认语言。
但简繁体中文并不能统一放到一个文件夹中。Android系统团队显然意识到了类似问题,但Android 7才支持为时已晚(要是AGP向前兼容就好了)。
以情况复杂的繁体中文为例,虽然翻译放到了台湾(values-rTW
),但是:
在Android 5和6中,只有“简体中文”和“繁体中文”两个语言选项。前者对应values-rCN
,后者对应values-rTW
。这里并没有之后系统中,可以选择地区的选项。
从Android 7开始,在选择语言的同时,也必须选择语言的地区。这时就出现了港澳台三地的繁体中文版本。
在个人测试中,以香港繁体中文为例,系统选择values-b+zh+Hant
和values-rTW
或values-rHK
的优先级在不同手机上是不同的。但肯定是繁体中文。
系统也足够智能,如果没有values-rHK
,它会选择values-rTW
,即使这里的地区是台湾而不是用户设置的香港。
系统会选择和用户设置地区不同的文件夹,这里是最反直觉的地方。这是因为找不到地区对应的翻译时,系统会选择同语言的其他地区翻译,来确保至少是语言是正确的。
build.gradle
中的指定语言的resConfigs
是要和对应文件夹一致的。比如resConfigs 'en', 'zh-rCN', 'zh-rTW'
在Per-app language preferences,Android依然沿用了反直觉的缩写。这里似乎和Locale.toLanguageTag()
是一致的。
Recommend
-
75
汉堡emoji的芝士该放哪?网友炸了,Google CEO 发话要全公司停工处理36氪的朋友们·2017-10-30 12:34随着 emoji 和各种表情包逐渐成为互联网的通用语言,这样的...
-
106
直播撒币的困境到底在哪儿?作者:李亚倢一边是趣店砸下的1亿广告费、百万在线人数和百万奖金的刺激,一边是模式同质化、人数奖金造假疑云、外挂泛滥的风波。无论惊叹还是质疑,直播问答还在继续撒币。一切的问题,基本都可以...
-
63
DOM操作成本到底高在哪儿?
-
28
从我接触前端到现在,一直听到的一句话:操作DOM的成本很高,不要轻易去操作DOM。尤其是React、vue等MV*框架的出现,数据驱动视图的模式越发深入人心,jQuery时代提供的强大便利地操作DOM的API在前端工程里用的越来越少。刨根问底,这里说的成本,到底高在哪儿呢?...
-
44
“不动行不行?我行!”
-
46
PHP - @taaaang - 最近刚接触 PHP,过了一遍 PHP 官方文档和 thinphp 的官方文档就开干。然后用到原生 sql,不知道正常情况应该写在哪儿更合适,controller ? 还是单独整一层? 或者一起放在 m
-
19
题图:Photo by João Silas on Unsplash 说 Roam Research 是一款笔记应用,可能是低估它了。
-
11
Nginx根据Accept-Language的简繁体支持 这个功能开启很久了,但直到昨天才发现遗漏了atom.xml…… 我想根据HTTP首部的Accept-Language决定提供简体或繁体的文件。在Chrome...
-
12
宣称“绝不跑路绝不推卸责任”的学霸君,到底去哪儿了? 2021-01-06 08:35:14...
-
4
【夜听】是该放下了 夜听 2...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK