IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Java Discussion :

Internationalisation de texte avec variables


Sujet :

Eclipse Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Par défaut Internationalisation de texte avec variables
    Bonjour à tous,
    je suis en train d'internationaliser mon plugin Eclipse.
    Il existe d'ailleurs un assistant qui fait ça très bien.

    Mais existe-t-il un moyen de passer une variable à la chaine internationalisée ?
    Je m'explique.

    J'ai un bout de code qui ressemble à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int nb = 5;
    monLabel.setText("Your directory contains " + nb + " items");
    Sans variables, l'i18n ressemblerait à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int nb = 5;
    monLabel.setText(getString("myApp.dirContains") + nb + getString("myApp.items"));
    L'i18n avec variables permettrait de faire quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int nb = 5;
    monLabel.setText(getString("myApp.dirContainsItems", nb));
    sans être obligé de couper la chaine à traduire en deux bouts.
    Je ne sais pas si j'ai été clair.

    Merci d'avance pour vos réponses.
    a+,
    nako

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu peux utiliser la classe MessageFormat pour cela.

    Concrètement dans la classe qui gère le chargement des messages tu rajoutes une méthode comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	// Code Java 5.0 et supérieur :
    	// Sous Java 1.4 ou inférieur il faut utiliser "Object[]" à la place de "Object..."
    	public static String getString(String key, Object... args) {
    		return MessageFormat.format(getString(key), args);
    	}

    Et MessageFormat.format() va formater la chaine obtenu en utilisant les paramètres et les champs {#}# correspond au numéro de paramètre...


    Ainsi dans ton cas myApp.dirContainsItems doit être défini comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myApp.dirContainsItems=Your directory contains {0} items
    Et tu peux même utiliser des formats plus complexe pour modifier quelque peu le résultat selon la valeur des paramètres, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myApp.dirContainsItems=Your directory contains {0,choice,0#no|1#one|1<{0}} item{0,choice,0#|1<s}
    Te donnera un texte différente pour 0, 1, 2, 3...
    Your directory contains no item
    Your directory contains one item
    Your directory contains 2 items
    Your directory contains 3 items
    Pour plus d'info jettes un coup d'oeil à la Javadoc de MessageFormat

    a++

  3. #3
    Membre émérite Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Par défaut
    Merci adiGuba,
    je ne connaissais pas cette classe, mais ça a l'air de coller avec ce que je cherche.
    Je regarder ça de plus près,
    Merci,
    a+

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Sinon à partir de Java 5.0 tu peux aussi utiliser la classe Formatter et sa syntaxe "à la printf()" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	// Code Java 5.0
    	public static String getString(String key, Object... args) {
    		return String.format(getString(key), args).toString();
    	}
    Que tu utilises avec le label comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myApp.dirContainsItems=Your directory contains %1s items

    Cela ne permet pas de faire des conditions comme dans l'exemple ci-dessus, mais pour le reste sa syntaxe est un peu plus performante à mon goût...

    Enfin chacun ses goûts

    a++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. texte avec variable dans messageBox
    Par luckyalan dans le forum Débuter
    Réponses: 15
    Dernier message: 29/01/2014, 23h08
  2. Réponses: 9
    Dernier message: 23/08/2010, 14h41
  3. placer dans une texbox du texte avec variable
    Par flamel dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/03/2010, 21h15
  4. Widget Text avec variable
    Par frites.saucisse dans le forum Tkinter
    Réponses: 5
    Dernier message: 14/10/2008, 14h28
  5. Import fichier texte avec des champs variables
    Par joshua12 dans le forum Access
    Réponses: 4
    Dernier message: 26/09/2006, 09h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo