Sometimes I write things, sometimes I don't.

To content | To menu | To search

Tag - Mobile

Entries feed - Comments feed

Friday 18 November 2011

Chaînes de caractères dynamiques

mobile.png Tout bon programmeur Android a pour habitude de lister toutes les chaînes de caractères (ou presque) dans le fichier res/values/strings.xml. A priori, seules les chaînes de caractères statiques ne peuvent être mises dans ce fichier. Mais, il existe des méthodes pour rendre ces chaînes un petit peu plus dynamique qu'elles n'y paraissent. Voyons tout ça.

1. Les formes plurielles

Les formes plurielles varient plus ou moins d'un langage à un autre. Par exemple, en français, on peut vouloir écrire :

  • Je ne possède pas de stylo.
  • Je possède un stylo.
  • Je possède des stylos.

L'API Android met à disposition plusieurs distinctions de formes plurielles grâce à 6 mot clés.

  1. zero, pour la quantité 0 ;
  2. one, pour la quantité 1 ;
  3. two, pour la quantité 2 ;
  4. few, pour représenter une petite quantité ;
  5. many, pour représenter une moyenne quantité ;
  6. other, pour représenter une quantité supérieure à une autre suivant la langue.

En français, on aura tendance à n'utiliser que zero, one et other.
Ainsi pour former les chaînes précédemment citées on mettra dans notre fichier res/values/strings.xml le code suivant :

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <plurals name="nombreDeStylos">
    <item quantity="zero">Je ne possède pas de stylo.</item>
    <item quantity="one">Je possède un stylo.</item>
    <item quantity="other">Je possède des stylos.</item>
  </plurals>
</resources>

Dans le code Java, on récupérera la bonne forme de cette manière.

final List<Stylo> stylos = getStylos();
final int count = stylos.size();
final String text = this.getResources().getQuantityString(R.plurals.nombreDeStylos, count, count);

2. Formatage des chaînes

Il peut être également utile d'afficher des nombres dans les chaînes de caractères comme par exemple : "Bonjour X, vous avez Y nouveaux messages !". Cela se fait de manière relativement simple grâce à la méthode String.format(String, Object...) de Java. Cette méthode est également invoquée automatiquement lors de l'utilisation de Context.getString(int, Object...). La chaîne de caractères à formater doit contenir quelques marques de formatage comme %1$s pour dire qu'il faut remplacer cette marque par le premier argument et que celui-ci est une chaîne de caractère ou encore %2$d pour dire qu'il faut mettre ici le second argument qui est un entier.
Ainsi dans le fichier res/values/strings.xml on écrira :

<string name="welcome_message">Bonjour %1$s, vous avez %2$d nouveaux messages !</string>

Et on utilisera le code Java suivant :

final String username = "toto";
final int mailCount = 10;
final String text = String.format(this.getResources().getString(R.string.welcome_message), username, mailCount);

On pourra aussi utiliser celui-ci :

final String username = "toto";
final int mailCount = 10;
final String text = this.getResources().getString(R.string.welcome_message, username, mailCount);

3. Conclusion

Comme on peut le voir Android met à disposition plusieurs méthodes pour manipuler les chaînes de caractères et les rendre aussi flexibles que possible tout en simplifiant un maximum le travail des traducteurs par exemple. Il ne reste plus qu'à exploiter ces possibilités pour créer un code simple et efficace.

Friday 31 July 2009

Restez connecté avec Ubuntu et la clé 3G+ Orange

Depuis plus ou moins 1 an, les opérateurs de téléphonie proposent pas mal de forfait pour utiliser des clés 3G+. Ces clés que l'on branche sur un port USB permettent de rester connecter à Internet via les réseaux (en général) GPRS, EDGE, 3G et 3G+. Malheureusement, elles sont prévues (selon les opérateurs) pour fonctionner sous Windows et Mac OS X. Alors qu'en est-il pour les systèmes GNU/Linux et surtout dans notre cas, comment ça marche sous Ubuntu ?

Continue reading...

Sunday 22 February 2009

Des applications mobiles

Le système d'exploitation pour mobile de Google ,nommé Android, va débarquer en France sous peu. SFR m'a récemment fait remplir un questionnaire en ligne pour savoir s'il pouvait me classer dans la catégorie des acheteurs potentiels du G1 de chez HTC. Malheureusement pour eux, ou heureusement peut-être (à plus long terme), mon oeil se dirige d'avantage vers le prochain Diamond. Même si mon PDA actuel tourne encore sous Windows Mobile, certains essaient d'inverser la tendance. C'est en partant de ça que j'ai fait quelques recherches et que je suis tombé sur un tutoriel qui m'a beaucoup intrigué et ne présage que de bonnes choses (pour moi). En le lisant, on comprend tout de suite que le SDK de Android est basé sur le langage Java. Et on sait combien je l'aime celui-ci. Si ça vous tente, n'hésitez pas à lire ce bref article, il est très simple à comprendre. Des notions de Java ne sont pas spécialement nécessaires, on peut aussi apprendre sur le tas. Pour ma part, je me tiens prêt à coder pour une utilisation future (je l'espère).

Wednesday 13 August 2008

HTC Touch Diamond

Ca y est, il est enfin arrivé. Le précieux téléphone que j'attendais avec impatience est entre mes mains. Il ne manque plus qu'à faire un rapide tour du propriétaire et donner les premières impressions après une courte utilisation.

Continue reading...

Saturday 9 August 2008

Un HTC Touch Diamond ?

Ca y est j'ai craqué... Je viens de commander mon HTC Touch Diamond via l'offre changement de mobile de SFR.
Théoriquement, si tout se passe bien, je recevrais ce petit bijoux mercredi.
Après réception, je ferais part des premiers instants avec ce nouveau téléphone via photos et un petit billet.
Stay tuned...