Android 允许译者定义 Plurals .以下示例适用于语言环境“en”:
<plurals name="numberOfSongsAvailable">
<item quantity="one">One song found.</item>
<item quantity="other">%d songs found.</item>
</plurals>
但是为two
添加特殊值不起作用,仍然采用other
版本。 two
的使用是否取决于语言环境?那么,如果语言环境明确指定应该有一个 two
版本,Android 是否只采用 two
版本?
SO 问题 Android plurals treatment of “zero”在英语中使用 zero
时也会出现同样的错误,这也是不受支持的。除了避免我想避免的 Android 复数形式之外,这个问题没有解决方案。
最佳答案
Android 使用的是 CLDR 复数系统,这不是它的工作方式(所以不要指望它会改变)。
系统描述如下:
http://cldr.unicode.org/index/cldr-spec/plural-rules
简而言之,重要的是要理解“一”并不意味着数字1。相反,这些关键字是类别,属于每个类别的具体数字n由CLDR数据库中的规则定义:
http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
虽然似乎没有语言使用“零”来表示 0 以外的任何东西,但有些语言将 0 分配给“一”。当然,在很多情况下,“二”包含其他数字,而不仅仅是 2。
如果 Android 允许你做你想做的事,你的应用程序就不能被正确地翻译成任何数量的具有更复杂的复数规则的语言。
关于android - 数量 "two"在 Android 字符串资源复数中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8473816/