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 ;) .

Categories: Tutoriels

7 Responses so far.


  1. Jouili Sameh dit :

    je faire mon applications Android internationalisée mais j’arrive pas d’appliquer la langue arabe quelqu’un m’aider s’il vous plait

  2. summ3r dit :

    Bonjour,
    Si vous êtes intéressés de traduire logiciels pour Internet, pour PC, pour mobiles ou tout autre type de logiciels, je vous recommandons chaleureusement le instrument numérique ”l10n” que mon équipe a récemment créé – et qui a toutes les chances de rendre vos activités de bureau bien plus faciles et rapides.
    http://poeditor.com/
    POEditor est intuitif, basé sur travail en collaboration. Il comprend de nombreuses fonctions qui puissent vous soutenir lors du processus de gestion de traductions, que vous pourriez découvrir sur notre page Internet.Vous pouvez importer depuis multiples types de fichiers de localisation (pot, po, xls, xlsx, strings, xml, resx, properties) ou se servir directement de notre REST API.
    N’hésitez pas de l’essayer et/ou le proposer aux développeurs ou, en général, a ceux qui en seraient intéressés.

Leave a Reply


Notifiez-moi des commentaires à venir via email. Vous pouvez aussi vous abonner sans commenter.