Android允许翻译人员定义
Plurals.以下示例适用于我的语言环境’en’:
<plurals name="numberOfSongsAvailable"> <item quantity="one">One song found.</item> <item quantity="other">%d songs found.</item> </plurals>
但是为两个添加特殊值不起作用,仍然采用另一个版本.两个用法是否依赖于语言环境?那么,如果语言环境明确指定应该有两个版本,Android是否只采用这两个版本?
SO问题Android plurals treatment of “zero”在使用英语零时也发现同样的错误,但也不支持.除了避免我想要避免的Android复数之外,这个问题没有解决方案.
解决方法
Android正在使用CLDR复数系统,这不是它的工作原理(所以不要指望这会改变).
该系统在这里描述:
http://cldr.unicode.org/index/cldr-spec/plural-rules
简而言之,理解“one”并不意味着数字1是很重要的.相反,这些关键字是类别,属于每个类别的特定数字n由CLDR数据库中的规则定义:
http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
虽然似乎没有语言对0以外的任何东西使用“零”,但有些语言将0分配给“1”.肯定有很多情况下“两个”包含其他数字而不仅仅是2.
如果Android允许您执行您的预期操作,则无法将您的应用程序正确地翻译成具有更复杂复数规则的任意数量的语言.