and*_*per 9 string android plural language-translation
我在一个内部有很多翻译的应用程序上工作.
我有下一个英文复数字符串:
<plurals name="something">
<item quantity="one">added photo</item>
<item quantity="other">added %d photos</item>
</plurals>
Run Code Online (Sandbox Code Playgroud)
和法语翻译:
<plurals name="something">
<item quantity="one">a ajouté une photo</item>
<item quantity="other">a ajouté %d photos</item>
</plurals>
Run Code Online (Sandbox Code Playgroud)
对于法语和俄语,我得到了下一个警告:
数量"1"与此区域设置中的多个特定数字匹配,但该消息未包含格式化参数(例如%d).这通常是国际化错误.请参阅完整的问题解释.
当选择显示细节时,它说:

很好,我不知道该怎么做才能解决它,如果有问题......
我究竟应该用这些字符串做什么?我该怎么告诉翻译?
我要写一个答案,因为这是一个相当困难的解释。
在各种语言中,以1结尾的名词使用单数形式。请参阅:http ://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html
用英语解释时,有些语言中“添加 1 张照片”和“添加 101 张照片”是正确的。注意“照片”。因此,这意味着您也应该始终在一个字符串上添加“%d”。Android 会选择最佳的使用场景。这意味着在英语中,它将为 > 1 的数字选择“other”,而在其他语言中,它将为以 1 结尾的数字选择“one”。
继续,将 %d 添加到您的一个字符串中,应该没问题。还要确保您的翻译人员遵守其语言的复数规则。
在法语中,当计数为 0 或 1 时使用单数形式。在英语中,仅当计数为 1 时使用单数形式。0 使用复数形式。
这就是您需要在法语单数模式中插入占位符 (%d) 的原因。