String sous Android
Definir une ressource string
Définir un String dans le fichier strings.xml:
<string name="maChaine">Ma chjaine de caractères à moi, c\'est la meilleure</string-array>
Certains caractères
ne peuvent pas être saisis directement comme par exemple ' qui peut indiquer
l'ouverture d'une chaîne. Dans ce cas, ces caractères doivent être
précédés de \ (Classique dans le monde Unix et la plupart
des langages de programmation).
Pour utiliser cette ressource, vous ferez dans votre code:
String texte= getResources().getString(R.string.maChaine);
Certaines méthodes
peuvent travailler directement avec l'identifiant de la ressource. Il ne sera
alors pas nécessaire de convertir la ressource en String.
Par exemple TextView.setText (id); -> textView.setText (R.string.maChaine);
Gérer le pluriel d'une ressource string
Il est possible de gérer "automatiquement" le pluriel d'un string
<plurals name="objetTable">
<item quantity="one">1 table</item>
<item quantity="other">%d tables</item>
</plurals>
Pour utiliser le pluriel du mot table, vous récupérez toujours la ressource de la même manière que précédemment soit:
Resources resources = getResources();
Mais pour récupérer le mot au singulier ou au pluriel suivant la quantité que votre programme aura évidemment déterminé avant:
String strTable = resources.getQuantityString(R.plurals.objeteTable, quantité, valeur_paramètre_string);
Avec quantité qui permettra à Android de déterminer s'il faut utiliser le singulier ou le pluriel du mot
valeur_paramètre_string qui est le paramètre qui sera passé à la chaîne other à la place de %d
Cette commande
a tout de même ses limites pour nous français. En effet, 0 se mettra
au pluriel en Anglais, pas en français ! et il n'existe pas de <item
quantity="zero">0 table</item>...
Vous devrez donc toujours utiliser une solution comme par exemple celle-ci:
String strMot=(objet.getValeur()>1 ? res.getString(R.string.mot_pluriel):res.getString(R.string.mot_singulier));