12

背景

我在一个里面有很多翻译的应用程序上工作。

我有下一个英语复数字符串:

<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)。这通常是国际化错误。有关更多信息,请参阅完整的问题说明。

选择显示详细信息时,它说: 在此处输入图像描述

问题是,我不知道应该做些什么来解决它,如果甚至有问题......

问题

我应该如何处理这些字符串?我应该告诉翻译人员什么?

4

2 回答 2

5

在法语中,count 为 0 或 1 时使用单数形式。在英语中,仅当 count 为 1 时使用单数形式。0 使用复数形式。

这就是您需要在法语单数模式中插入占位符 (%d) 的原因。

于 2017-11-14T17:57:13.170 回答
4

我要写一个答案,因为这是一个相当困难的解释。

在各种语言中,以 1 结尾的名词使用单数形式。请参阅:http ://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html

用英语解释,有些语言可以正确地说“添加 1 张照片”和“添加 101 张照片”。注意“照片”。因此,这意味着您也应该始终在一个字符串上添加“%d”。Android 将选择使用的最佳方案。这意味着在英语中它将为数字> 1 选择“其他”,而在其他语言中,它将为以一结尾的数字选择“一”。

恢复,将 %d 添加到您的一个字符串中,应该没问题。还要确保您的翻译人员尊重他们语言的复数规则。

于 2014-10-02T11:45:09.057 回答