android - 数量 "two"在 Android 字符串资源复数中不起作用

标签 android translation plural

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/

相关文章:

android - 谷歌地图未显示在 android Activity 中?

android生成随机唯一的颜色代码

android - 如何在 android 中的一个布局上显示一半按钮,在另一个布局上显示一半按钮?

java - Spring 3 如何处理具有相同内容的多语言 URL

javascript - 使用 Javascript 更改动态内容的语言

android - 应用已发布,但 2 周后未在 Google Play 中编入索引

python - Django-CMS 静态占位符不能在带有翻译的站点中工作

android - 获取复数 : "The quantity ' one' matches more than one specific number. 的错误/警告 .."

naming-conventions - 复合对象的复数命名约定

c# - 在 C# 中使用正则表达式匹配复数