我在一个内部有很多翻译的应用程序上工作。
我有下一个英文复数字符串:
<plurals name="something">
<item quantity="one">added photo</item>
<item quantity="other">added %d photos</item>
</plurals>
和法语翻译:
<plurals name="something">
<item quantity="one">a ajouté une photo</item>
<item quantity="other">a ajouté %d photos</item>
</plurals>
对于法语和俄语,我收到了下一个警告:
数量'one'匹配多个特定数字 语言环境,但消息不包含格式化参数(例如 %d)。这通常是国际化错误。查看完整问题 解释更多。
当选择显示细节时,它说:
很好,我不知道该怎么做才能修复它,如果有问题......我应该怎么处理这些字符串?我应该告诉译者什么?
答案 0 :(得分:3)
我会写一个答案,因为这是一个非常困难的解释。
在各种语言中,名词如果以1结尾,则使用单数形式。请参阅:http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html
用英语解释有些语言可以正确地说'#34;添加了1张照片&#34;以及&#34;添加了101张照片&#34;。注意&#34;照片&#34;。所以这意味着你应该总是添加&#34;%d&#34;在一个字符串上也是如此。 Android将选择使用的最佳方案。这意味着在英语中它将选择&#34;其他&#34;对于数字&gt; 1和其他语言,它将选择&#34;一个&#34;数字以一个结尾。
恢复,将%d添加到您的一个字符串中,应该没问题。还要确保您的译员尊重他们语言的复数规则。
答案 1 :(得分:3)
当计数为0或1时,使用法语单数形式。英语单数形式仅在count为1时使用.0使用复数形式。
这就是您需要在法语单数模式中插入占位符(%d)的原因。