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

2D Java Discussion :

[JFreeChart] Modifier langue du popupmenu


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Par défaut [JFreeChart] Modifier langue du popupmenu
    Bonjour à tous,

    Je développe une application utilisant JfreeChart , je suis confronté à un problème d’internationalisation au niveau du clique droit sur les graphiques qui affiche un popupmenu .

    Pour traduire l'IHM, je fais appel à i18n via des fichiers properties,
    pour jfreechart, je fais une modification de la Locale en anglais, tout est bien traduit sauf les jmenuitem du popupmenu.

    Comment les traduire ?
    Suis-je obligé de les récupérer via getpopupmenu ou y-a-t-il plus simple ??


    Merci pour votre aide.

  2. #2
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Par défaut
    Normalement, le menu popup doit être dans la langue par défaut du système d'exploitation.

    J'utilise aussi JFreeChart et je n'ai jamais du faire quelque chose de spécial pour que le menu popup soit en Français.

    Vérifie les propriétés user.language=fr et user.country=BE (ou FR pour France) à l'aide de System.getProperty(...);

    Tu peux fixer cette propriété en ajoutant -Duser.language=fr dans la ligne de commande de démarrage de ton programme java.

    Si tu est sur linux, il est peut être utile de fixer la variable d'environnement LANG avant de démarrer ton programme. Dans mon cas, il s'agit de LANG = "fr_BE.UTF-8", mais il peut aussi s'agir de "fr_FR.UTF-8" (si tu es en France).

    Les menus popup de JFreeChart sont dans la langue du système et la sélection est réalisée à partir de la propriété user.language.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2010
    Messages : 47
    Par défaut
    Merci pour ton aide, mais on s'est mal compris.

    Je suis d'accord avec toi sur le fait que JFreeChart prennes la langue du système d'exploitation, c'est bien le cas chez moi.

    Mais le soucis, c'est que mon programme peut se traduire en temps réel a l'aide d'un menu langue, et seul les JPopupMenu (Clic droit) des JFreeChart ne veulent pas se traduire, ils gardent la langue de l'OS alors que je modifie les paramètres du Locale, et que tout le reste se traduit correctement.

    Qu'en pensez vous ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Par défaut
    Le problème, c'est que les classes JFreeCharts recherchent les chaînes traduites à l'aide de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /** The resourceBundle for the localization. */
    protected static ResourceBundle localizationResources = ResourceBundleWrapper.getBundle("org.jfree.chart.LocalizationBundle");
    Ensuite, lors de la création du composant popup:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JMenuItem copyItem = new JMenuItem(localizationResources.getString("Copy"));
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JMenuItem saveItem = new JMenuItem(localizationResources.getString("Save_as..."));
    En dur dans la méthode createPopupMenu(...);...

    En conséquence, si tu tiens absolument à ce que l'interface change de langue instantanément sans tenir compte du système d'exploitation, il faut capturer les événements de la souris pour créer soi-même un menu popup dans la langue voulue.

    Une autre possibilité, consisterait (en fonction des compatibilités de licences possibles) de fournir toi-même une version du JFreeChart modifiée en conséquence (localizationResources public static et non pas protected static).

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2010
    Messages : 47
    Par défaut
    Mais pourquoi seuls les JMenuItems ne se traduisent pas alors que le reste se traduit correctement comme par exemple les propriétés du graph ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Par défaut
    Et bien parce qu'il n'y a que les entrées du menu popup qui sont directement extraites des bundles de localisation inclus dans le classpath de jfreechart (le fichier pour la langue par défaut est le suivant):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # org.jfree.chart.ChartPanel ResourceBundle properties file
    # 
    # Changes (from 31-Aug-2003)
    # --------------------------
    # 31-Aug-2003 : Initial version (AL);
    #
     
    Auto_Range=Auto Range
    All_Axes=Both Axes
    Chart_Properties=Chart Properties
    Copy=Copy
    Domain_Axis=Domain Axis
    PNG_Image_Files=PNG Image Files
    Print...=Print...
    Properties...=Properties...
    Save_as...=Save as...
    Range_Axis=Range Axis
    Zoom_In=Zoom In
    Zoom_Out=Zoom Out
    Le fichier correspondant à la langue française est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # org.jfree.chart.ChartPanel ResourceBundle properties file - french version
    # 
    # Changes (from 31-Aug-2003)
    # --------------------------
    # 31-Aug-2003 : Initial version (AL);
    #
     
    Auto_Range=Echelle automatique
    All_Axes=Les deux axes
    Chart_Properties=Propri\u00E9t\u00E9s du graphique
    Copy=Copier
    Domain_Axis=Axe horizontal
    PNG_Image_Files=Format PNG (Portable Network Graphics) (*.png)
    Print...=Imprimer...
    Properties...=Propri\u00E9t\u00E9s...
    Save_as...=Enregistrer sous...
    Range_Axis=Axe vertical
    Zoom_In=Zoom avant
    Zoom_Out=Zoom arri\u00E8re
    Il s'agit de fichiers du type '.properties' inclus directement dans le jar de l'api.

    Tu peux consulter le code source de jFreeChart sur http://sourceforge.net/projects/jfreechart/files/.

    Les autres éléments peuvent être directement affectés comme paramètres (données et légende) des graphes. Mais les menus sont gérés en interne par les classes de jFreeChart.

    Comme je te disais dans mon précédent post, tu peux aussi intercepté les événements de clique droit et implémenter ton propre menu (dans la langue que tu veux alors).

    Il suffit alors de rediriger les appels vers les méthodes qui correspondent à chaque action (qui peuvent dépendre du type de graphe et des autres composants disponibles).

    En espérant que cela t'aidera.

Discussions similaires

  1. [JFreeChart] Modifier Police titre légende
    Par SebastianPx dans le forum 2D
    Réponses: 2
    Dernier message: 27/01/2012, 10h52
  2. Réponses: 3
    Dernier message: 19/10/2011, 14h49
  3. [JFreeChart] Modifier les axes
    Par TekP@f dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 30/03/2010, 18h26
  4. [JFreeChart] modifier les intervalles de vue
    Par franfr57 dans le forum 2D
    Réponses: 3
    Dernier message: 10/07/2007, 09h48
  5. Réponses: 1
    Dernier message: 06/07/2007, 13h46

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