11
4

3 回答 3

10

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 在哪里允许你做你想做的事,你的应用程序就不能正确地翻译成具有更复杂复数规则的任意数量的语言。

于 2012-03-02T23:57:02.697 回答
3
于 2011-12-12T12:04:17.933 回答
3

是的,两个的用法特定于语言环境。仅仅因为你给它数字 2 并不意味着它将使用数量 =“两个”。它只会将该数量用于具有数字 2 特殊情况的语言

来自http://developer.android.com/guide/topics/resources/string-resource.html#Plurals

请注意,选择是基于语法必要性进行的。即使数量为 0,英语中的零字符串也会被忽略,因为 0 在语法上与 2 或除 1 之外的任何其他数字没有区别(“零书”、“一本书”、“两本书”等在)。也不要被这样一个事实误导,例如,两个声音只能适用于数量 2:一种语言可能要求 2、12、102(等等)都被视为彼此相同但与其他不同数量。依靠您的翻译人员了解他们的语言实际坚持的区别。

于 2012-04-04T01:52:43.683 回答