2013-07-03 15 views
39

コードを簡略化するためにPluralsを使用しています。例えば、私が代わりに複数の文字列の複数形を使用してXMLで使用するためにPluralsから文字列を取得するには?

<string name="cat">Cat</string> 
<string name="cats">Cats</string> 

を持っていた、私は今

<plurals name="cats"> 
    <item quantity="one">Cat</item> 
    <item quantity="other">Cats</item> 
</plurals> 

はしかし、私は私のXMLにタイトルや要約として使用する文字列を取得するために使用されています。 は、例えば、

android:title="@string/cats" 

は、複数の賛成でその文字列を削除したので、私は今、XMLからの私の文字列を取得する方法がわからないと思います。私は

android:title="@plurals/cats" 

と素朴な試みを行いましたが、これはちょうど私の代わりにCats(またはCat)の@1234567890を与えます。

XMLからPluralから文字列を取り出すことができるかどうかは誰でも知っていますか?

+0

https://developer.android.com/guide/topics/resources/string-resource.html#Plurals –

+1

複数の機能は、エンジニアの複数形をsimlpifyすることではありません。あらゆる言語のpuralルールをサポートするために。フランス語は「0 cat」、ロシア語「21 cat」です。 %dを含めることを忘れないでください。数字は翻訳で移動できます。必要に応じて。 – Liggliluff

答えて

47

あなたはコードでそれを設定する必要があります:あなたは彼らがあなたの文字列リソースを残して、それらを参照することにより、複数形や文字列リソースの静的な利益の実行時の利点を持つことができます

...setText(yourContext.getResources().getQuantityString(R.plurals.cats, catsCountVar)); 
+0

私はこれが唯一の選択肢ではないことを望んでいます。それ以来、私はそうでなければCPU時間を費やさない実行時に多くのビューを見つける必要があります。 2〜3日以内に他の人が応答しない場合、私はこの回答を本質的に「XMLからは不可能」として受け入れます。 – Duke

+2

ここでdoc:http://developer.android.com/guide/topics/resources/string-resource.html# Plurals – gwa

+0

私は実際にカウントに関心を持っているわけではありません - 多言語をサポートしながら、単数形と複数形の形をしたいだけです。ビューの検索(idによる)が高価なので、表示された文字列を設定するために、リスト/メニュー/ etcのすべてのビューを(2番目に)渡す必要はありません。ビューが最初に膨張/作成されたときの私のこと。複数のリソースの代わりに2つの文字列を使用すると、これらのビューで自分のコードで何もする必要はありません。 (だから、私が見るところでは、Pluralsはパフォーマンスを損なうでしょう) – Duke

2

あなた複数のリソース。

https://developer.android.com/guide/topics/resources/string-resource.html#Plurals(強調が加えられている)。

<item>

複数または単数のストリング。 この値は、別の文字列リソースへの参照になります。要素の子でなければなりません。アポストロフィや引用符を逃さなければならないことに注意してください。文字列のスタイルと書式を正しく設定する方法については、下記の「書式設定とスタイル」を参照してください。 例:

<string name="cat">Cat</string> 
<string name="cats">Cats</string> 

<plurals name="cats"> 
    <item quantity="one">@string/cat</item> 
    <item quantity="other">@string/cats</item> 
</plurals> 

今、あなたはXMLファイルでandroid:title="@string/cats"を使用しても、実行時に

getQuantityString(R.plurals.cats, numberOfCats) 

を使用することができます。

関連する問題