38

複数形を使用して、Android アプリケーションの数量文字列をコンパイルします。私はチュートリアルで見つけることができるものに正確に従っています:

res.getQuantityString(
    R.plurals.number_of_comments, commentsCount, commentsCount);

複数形の定義は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <plurals name="number_of_comments">
        <item quantity="zero">No comments</item>
        <item quantity="one">One comment</item>
        <item quantity="other">%d comments</item>
    </plurals>
</resources>

興味深いことに、出力文字列は私が定義したものとは異なります。

commentsCount = 0 => "0 comments"  
commentsCount = 1 => "One comment"  
commentsCount = 2 => "2 comments"

When the language requires special treatment of the number 0 (as in Arabic).これは、ドキュメントにzero数量が記載されているためだと思います。私の定義を強制する方法はありますか?

4

3 に答える 3

63

ドキュメントによると:

使用する文字列の選択は、文法上の必要性のみに基づいて行われます。英語では、数量が 0 であってもゼロの文字列は無視されます。これは、0 が 2 や 1 以外の他の数字 (「ゼロ本」、「1 本」、「2 本」、およびすぐ)。

それでもゼロにカスタム文字列を使用したい場合は、数量がゼロのときに別の文字列をロードできます。

if (commentsCount == 0)
    str = res.getString(R.string.number_of_comments_zero);
else
    str = res.getQuantityString(R.plurals.number_of_comments, commentsCount, commentsCount);
于 2013-06-23T13:44:38.577 に答える
3

複数形は Unicode 形式です。全ての複数値はこちら。英語では、2、3、4 のように 0 を複数形にするため、他の文字列を使用するにはこの値を使用する必要があります。

于 2014-04-21T07:53:02.480 に答える