我正在编写本地化的Android应用;我对如何处理简体中文和繁体中文之间的差异感到困惑。
感谢this excellent answer,我知道我应该在values-zh-rCN
中使用简体中文,在values-zh-rTW
中使用繁体中文。
但是我应该将something放在values-zh
中,对吧?香港和澳门的人不应该只使用默认的(英语)字符串。
我的问题是:将繁体中文放入values-zh
更好吗?还是应该将简体中文作为默认值? (还是我应该忽略values-zh
目录?)
繁体中文字符(标准字符)在中文世界中用几种不同的名称指代。台湾政府正式称繁体字为标准字符或正统字(繁体中文;简体中文。
[中国,马来西亚和新加坡的人们主要使用简化系统,台湾(中华民国),香港和澳门目前使用繁体字。
[我认为您不应忽略values-zh
,将其简化为中文,或者允许用户在您的应用中切换语言。
我的应用程序存在相同的问题,目前仅使用zh-rCN和zh-rTW,这会导致所有其他区域出现问题。不幸的是,基于这个问题(Simplified and Traditional Chinese vs Regions),没有实际的方法来确定哪个是最好的:
values-zh (traditional)
values-zh-rCN (simplified)
或大声笑
values-zh (simplified)
values-zh-rTW (traditional)
所以我一直在寻找以下替代方法:
在我的应用程序中,我有一种方法从一开始就运行以设置用户定义的语言,如果未实际定义,我可以检查当前语言/区域并相应地应用补丁,而仅保留zh-rCN和zh- rTW文件夹:
zh-rHK => zh-RTW
zh-rSG => zh-rCN
zh-rMO => zh-r?? can be both according to the link above
这里使用的方法部分描述:Changing locale: Force activity to reload resources?
编辑:我现在使values-zh包含简体字,并将其修补为香港区域以自动使用繁体字。
默认情况下,Android假定zh
为繁体,但是Unicode(其中的Unicode设置了语言环境使用的标准)对zh
使用了简体字。
如果您的应用的最低版本为Android 7.0(API 24),则可以使用新的语言环境分辨率。通过将文件夹定义为values-b+zh+Hans
(标准)和values-b+zh+Hant
(传统),系统将根据选择的区域自动使用正确的语言环境。如果您需要使用相同变体的区域之间的区域差异,则仍然可以使用values-zh-rTW
等。