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>

問題

フランス語とロシア語の両方について、次の警告が表示されます。

数量「1」は、このロケールで複数の特定の数値に一致しますが、メッセージにはフォーマット引数 (%d など) が含まれていませんでした。これは通常、国際化エラーです。詳細については、問題の完全な説明を参照してください。

詳細を表示することを選択すると、次のように表示されます。 ここに画像の説明を入力

つまり、それを修正するために何をすべきかわかりません。問題がある場合でも...

質問

これらの文字列を正確にどうすればよいですか?翻訳者に何を伝えるべきですか?

4

2 に答える 2

5

フランス語では、カウントが 0 または 1 の場合に単数形が使用されます。英語では、カウントが 1 の場合にのみ単数形が使用されます。0 は複数形を使用します。

これが、フランス語の単数パターンにプレースホルダー (%d) を挿入する必要がある理由です。

于 2017-11-14T17:57:13.170 に答える
4

これはかなり難しい説明なので、回答を書きます。

さまざまな言語で、1 で終わる名詞は単数形を使用します。参照: http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html

英語で説明すると、「101枚の写真を追加」だけでなく「1枚の写真を追加」と言うのが正しい言語があります。「写真」に注目。したがって、これは常に 1 つの文字列にも "%d" を追加する必要があることを意味します。Android は、使用する最適なシナリオを選択します。つまり、英語では 1 より大きい数字に対して「other」を選択し、他の言語では 1 で終わる数字に対して「one」を選択します。

再開して、1 つの文字列に %d を追加すると問題ありません。また、翻訳者が自分の言語の複数形のルールを尊重するようにしてください。

于 2014-10-02T11:45:09.057 に答える