2013-07-03 16 views
39

Sto usando Plurals per semplificare il mio codice. per esempio, ho usato per avereCome utilizzare una stringa da Plurals in XML?

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

Utilizzando Plurali invece di più stringhe, ora ho

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

Tuttavia, ho usato per recuperare stringhe da utilizzare come titoli o riassunti nella mia XML. esempio,

android:title="@string/cats" 

aver tolto quella stringa a favore di un plurale, ora sono sicuri di come recuperare la mia stringa da XML. Ho fatto fare un tentativo ingenuo con

android:title="@plurals/cats" 

ma questo solo mi dà @1234567890 invece di Cats (o Cat).

Qualcuno sa se è possibile recuperare una stringa da un plurale da XML?

+0

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

+1

La fucilazione plurale non consiste nel simplicare i plurali inglesi; ma per supportare le regole del pural di qualsiasi lingua. Il francese sarebbe "0 cat" e il russo "21 cat". Non dimenticare di includere% d in modo che il numero possa essere spostato nelle traduzioni; se necessario. – Liggliluff

risposta

47

È necessario impostarla per codice:

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

Spero che questa non sia l'unica opzione, dal momento che in quel momento avrei bisogno di trovare molte viste in runtime, altrimenti non avrei dedicato tempo alla CPU. Se nessun altro risponde entro un paio di giorni, accetterò questa risposta come essenzialmente "non possibile da XML" – Duke

+2

Qui il documento: http://developer.android.com/guide/topics/resources/string-resource.html# Plurals – gwa

+0

Non sono realmente interessato a (visualizzare) un conteggio - Voglio solo avere una forma Singolare e Plurale della parola, supportando più lingue. Poiché la ricerca di viste (da id) è costosa, non voglio dover passare (in secondo luogo) su ogni vista nel mio elenco/menu/etc in codice per impostare la stringa visualizzata, che Android di default ha già fatto per me quando la vista (s) viene prima gonfiato/creato.Con 2 stringhe invece di una risorsa plurale, non ho bisogno di fare nulla nel mio codice su queste viste. (Quindi da quello che vedo, Plurals danneggerà le mie prestazioni per un minimo guadagno di manutenzione.) – Duke

2

Si possono avere i benefici di run-time di Plurali e il beneficio statica delle risorse di tipo stringa, lasciando le risorse di stringa dove sono e riferendosi a loro nella vostra risorse plurali.

Da https://developer.android.com/guide/topics/resources/string-resource.html#Plurals (corsivo aggiunto).

<item>

Una stringa plurale o singolare. Il valore può essere un riferimento a un'altra risorsa stringa. Deve essere un figlio di un elemento. Fai attenzione che devi sfuggire apostrofi e virgolette. Vedi Formattazione e Styling, sotto, per informazioni su come approntare e formattare correttamente le tue stringhe. Esempio:

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

Ora è possibile utilizzare android:title="@string/cats" in file XML e anche l'uso

getQuantityString(R.plurals.cats, numberOfCats) 

in fase di esecuzione.

Problemi correlati