数量“两”在Android Strings-Resources Plural中不起作用

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允许您执行您的预期操作,则无法将您的应用程序正确地翻译成具有更复杂复数规则的任意数量的语言.

相关文章

Android 通过adb shell命令查看内存,CPU,启动时间,电量等...
Monkey Android app稳定性测试工具之Monkey使用教程 by:授客...
Android 常见adb命令 by:授客 QQ:1033553122 1、 查看所有已...
这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...