La gestion des strings sous Android

Dans ce tutoriel nous allons aborder la gestion des chaines de caractères sous Android. Les strings servent à référencer des chaines de caractères que vous allez utiliser dans votre application.

Création de chaines de caractéres

Le fichier qui contiendra vos chaines de caractères ne doit pas forcement se nommer strings.xml. Vous pouvez lui donner le nom que vous souhaité, il doit seulement se trouver dans le dossier values et entre des balises &ltstring&gt.

Voici un petit exemple

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="nom_string">texte_string</string>
</resources>

Vous pouvez utiliser une chaîne que vous avez déclaré depuis :

  • Un fichier Java : R.string.nom_string
  • Un fichier Xml : @string/nom_string

Gestion du pluriel

Pour vous permettre de gérer le pluriel de vos chaines de caractères, android intègre une balise très pratique (plurals).

Voici un petit exemple :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <plurals name="nombre_de_tutos">
        <item quantity="zero">Aucun tutoriel n'est disponible</item>
        <item quantity="one">un tutoriel est disponible</item>
        <item quantity="other">Plusieurs tutoriaux sont disponibles</item>
    </plurals>
</resources>

L’attribut quantité peut avoir les valeurs suivantes :

  • zero: Traitement du cas de 0 élément.
  • one : Traitement du cas d’un élément.
  • two : Traitement du cas de deux éléments.
  • few : Traitement d’un petit nombre d’éléments (3, 4 par exemple).
  • many : Traitement d’un grand nombre d’éléments (10, 12 par exemple).
  • other : Traitement des autres cas

Pour pouvoir récupérer ces chaines de caractéres en Java, la méthode getQuantityString est disponible.

public String getQuantityString(int id, int quantity);
  • Cette méthode retourne la chaine de caractére souhaitée.
  • Le premier argument est l’identifiant de la chaine.
  • Le deuxiéme argument est la quatité souhaitée.
  • Cette méthode peut lancer l’exception ResourceNotFoundException, si aucune ressource ne correspond à votre id.

Voici un petit exemple correspondant au cas cité au dessus :

Resources res = getResources();
String numberOfTutos = res.getQuantityString(R.plurals.nombre_de_tutos, nombreSouhaitee);

Formatage des chaines de caractères

Échapper les apostrophes

Si vous voulez inclure des apostrophes dans votre chaine de caractére, vous devez l’échaper. Voici un petit exemple :

<string name="apostrophe1">"L'exemple d'un échappement"</string>
<string name="apostrophe2">L\'exemple d\'un échappement </string>

Ajouter des arguments à vos chaines de caractéres

Vous pouvez rajouter des arguments à vos chaines de caractére afin de les inclures plus tard.

Voici un petit exemple :

<string name="reception_message">%1$s! Vous avez reçu %2$d nouveaux messages.</string>
  • Nous avons rajouté deux arguments à notre chaine de caractère.
  • Le premier correspond à une chaine de caractére et le deuxiéme à un entier.

Puis dans votre application, vous pouvez rajouter ces arguments à la volée.

Resources res = getResources();
String message = String.format(res.getString(R.string.reception_message), name, newMsgNumber);

Et du HTML ?

Vous pouvez utiliser quelques balises HTML pour personnaliser vos chaines de caractères.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="bienvenue">Bienvenue sur <b>tutos-android.com</b>!</string>
</resources>

Les balises supportées sont :

  • b : Gras
  • i : Italic
  • u : Souligné

Internationalisation

Vous pouvez internationaliser les chaines de caractères utilisées dans votre application. Pour cela il suffit de créer un dossier values par langues supportées.
Par exemple, si votre application supporte l’anglais, le français et l’espagnol. Vous devez avoir 3 dossiers values :

  • values : Dossier par défaut utilisé pour l’Anglais
  • values-fr : Dossier pour le français
  • values-es : Dossier pour l’espagnol

Lors du lancement de l’application sur un device, la langue correspondante à celle du device sera sélectionnée. Si elle n’est pas supportée ,la langue par défaut sera sélectionnée (anglais).

Conclusion

Voila ce tuto s’arrête ici, en espérant qu’il vous a appris à gérer les strings dans votre application. Pour finir je voulais vous annoncer que je travaille actuellement sur un projet qui vous ferra plaisir 🙂 mais qui me prends beaucoup de temps. Voila pourquoi les tutoriaux sont moins fréquents, je vous donnerai plus de détails bientôt. J’en profite aussi pour vous annoncer que tutos-android est ouvert à vos contributions d’articles (plus de détails bientôt) alors n’hésitez pas 😉.

9 commentaires


  1. Pour information, en écrivant avec des apostrophes (’), il n’est pas nécessaire d’échapper le texte. En revanche, si vous utilisez (comme beaucoup de monde) le guillemet simple (‘), là, oui, il faut l’échapper.

    Répondre

  2. j’ai réalise les répertoires values -fr et values -en dans mon projet sous android ,mais il y aune erreur au cours de l’exécution ,encore je réalise un menu qui contient langage :français et anglais je ne sais pas comment fait une action lors on clic sur français toute l’application en français et l’inverse .s’il te plais m’aide pour résoudre cette problème.merci d’avance.

    Répondre

  3. merci pour le tuto je ne connaissais pas toutes ces astuces avec les strings sous android, comme la balise plural par exemple! Bien pratique merci

    Répondre

  4. j’ai une Mapview je souhaite afficher dessus des marqueurs
    j’ai réussi a faire un seul marqueur mais je sais pas comment disposer plusieurs marqueurs svp svp urgent

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *