2013-07-03 2 views
39

Ich verwende Plurals, um meinen Code zu vereinfachen. Beispiel IEine Zeichenkette aus Plurals erhalten, um sie in XML zu verwenden?

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

Mit Plurale statt mehrerer Strings verwendet haben, ich habe jetzt

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

Allerdings habe ich Strings abzurufen als Titel oder Zusammenfassungen in meinem XML zu verwenden. z.B.

android:title="@string/cats" 

diese Zeichenfolge für eine Plural entfernt haben, bin ich jetzt nicht sicher, wie meine Zeichenfolge von XML abzurufen. Ich habe mit

android:title="@plurals/cats" 

einen naiven Versuch machen, aber das gibt mir nur @1234567890 statt Cats (oder Cat).

Wer weiß, ob es möglich ist, eine Zeichenfolge aus einem Plural aus XML abzurufen?

+0

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

+1

Die Pluralfunktion besteht nicht darin, die englischen Pluralformen zu simplifizieren; aber um die Sprachregeln jeder Sprache zu unterstützen. Französisch wäre "0 Katze" und Russisch "21 Katze". Vergessen Sie nicht, das% d einzufügen, damit die Nummer in Übersetzungen verschoben werden kann; wenn benötigt. – Liggliluff

Antwort

47

Sie haben es zu setzen, indem Code:

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

Ich hoffe, das ist nicht die einzige Option, da ich dann zur Laufzeit viele Ansichten finden müsste, auf die ich sonst keine CPU-Zeit hätte. Wenn niemand innerhalb von ein paar Tagen antwortet, werde ich diese Antwort im Wesentlichen als "nicht möglich von XML" akzeptieren. – Duke

+2

Hier das Dokument: http://developer.android.com/guide/topics/resources/string-resource.html# Plurals – gwa

+0

Ich bin eigentlich nicht daran interessiert, eine Zählung zu zeigen (ich möchte nur eine Singular- und Pluralform des Wortes haben, während ich mehrere Sprachen unterstütze). Da das Auffinden von Sichten (nach ID) teuer ist, möchte ich keinen (zweiten) Durchlauf über jede Ansicht in meiner Liste/meinem Menü/etc im Code machen müssen, um die angezeigte Zeichenkette festzulegen, für die Android standardmäßig bereits ausgeführt hat Ich, wenn die Ansicht (en) zuerst aufgeblasen/erstellt wird.Mit zwei Zeichenfolgen anstelle einer Plural-Ressource muss ich in diesen Ansichten in meinem Code nichts tun. (Von dem, was ich sehe, wird Plurals meiner Leistung für minimalen Wartungsgewinn schaden.) – Duke

2

Sie die Laufzeit Vorteile der Plurale und dem statischen Nutzen von String-Ressourcen haben können Ihre String-Ressourcen durch verlassen, wo sie sind und unter Bezugnahme auf sie in Ihrem mehrere Ressourcen.

Von https://developer.android.com/guide/topics/resources/string-resource.html#Plurals (Hervorhebung hinzugefügt).

<item>

A Plural oder singuläres String. Der Wert kann eine Referenz auf eine andere Zeichenfolgenressource sein. Muss ein Kind eines Elements sein. Beachten Sie, dass Sie Apostrophe und Anführungszeichen vermeiden müssen. Weitere Informationen zum Formatieren und Formatieren von Strings finden Sie im Abschnitt Formatierung und Formatierung. Beispiel:

<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> 

Jetzt können Sie android:title="@string/cats" in XML-Dateien verwenden und auch

getQuantityString(R.plurals.cats, numberOfCats) 

zur Laufzeit verwenden.

Verwandte Themen