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

NetBeans Java Discussion :

application Multilingue dans Netbeans


Sujet :

NetBeans Java

  1. #1
    Candidat au Club
    Femme Profil pro
    tunis
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : tunis
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut application Multilingue dans Netbeans
    bonjour,
    je veut créer une application Multilingue dan netbeans ,
    je voudrais savoir comment je peut faire un code on cliquant sur un bouton la langue de l'application se transformer par exemple du français en anglais
    merci

  2. #2
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Bonjour,

    Tu pourrais t'inspirer de cet exemple.
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  3. #3
    Candidat au Club
    Femme Profil pro
    tunis
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : tunis
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    je voudrais un code java simple qui permet de passe d"un bundle . proprities a un bundle _es_Us.. proprities on cliquant sur un

  4. #4
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Pour y arriver, tu aurais besoin d'un hyperlien / bouton (décoré ou pas par l'image d'un petit drapeau américain).
    L'action sur celui-ci va appeler une méthode qui définit la langue "en" et le pays "US", puis crée une currentLocale = new Locale(language, country);, puis trouve le fichier Bundle correspondant et l'utilise pour afficher des chaînes de caractères en anglais.

    Bon courage!
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  5. #5
    Candidat au Club
    Femme Profil pro
    tunis
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : tunis
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    s'il vous plait vous pouvez plus m'expliquer
    merci

  6. #6
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Qu'est-ce que tu as déjà fait? Où est-ce que ça coince?
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  7. #7
    Candidat au Club
    Femme Profil pro
    tunis
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : tunis
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    j'ai fait 2 fichiers .proprities
    dans le fiche.java j"insérer votre code mais j"ai une erreur

  8. #8
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Quelle erreur? Merci de poster le code de fiche.java et la partie du fichier .log concernant l'erreur.
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  9. #9
    Candidat au Club
    Femme Profil pro
    tunis
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : tunis
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Voici la page Bundle.properties :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    n.jButton1.text=entrer
    n.jLabel1.text=bonjour
    la 2eme page Bundle_es_US.proprities
     
    n.jButton1.text=ok
    n.jLabel1.text=goog morning
    la page find.java :
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    Classe n :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    package pkg1;
    import java.util.Locale;
    /**
     *
     * @author NADIA
     */
    public class n extends javax.swing.JFrame {
     
        /**
         * Creates new form n
         */
        public n() {
            initComponents();
        }
     
        /**
         * This method is called from within the constructor to initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is always
         * regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
     
            jLabel1 = new javax.swing.JLabel();
            jButton1 = new javax.swing.JButton();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
     
            java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pkg1/Bundle"); // NOI18N
            jLabel1.setText(bundle.getString("n.jLabel1.text")); // NOI18N
     
            jButton1.setText(bundle.getString("n.jButton1.text")); // NOI18N
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton1ActionPerformed(evt);
                }
            });
     
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addGap(31, 31, 31)
                            .addComponent(jLabel1))
                        .addGroup(layout.createSequentialGroup()
                            .addContainerGap()
                            .addComponent(jButton1)))
                    .addContainerGap(327, Short.MAX_VALUE))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jLabel1)
                    .addGap(18, 18, 18)
                    .addComponent(jButton1)
                    .addContainerGap(234, Short.MAX_VALUE))
            );
     
            pack();
        }// </editor-fold>                        
     
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
     
            // TODO add your handling code here:
            currentLocale = new Locale(Bundle_en_US, country);
     
        }                                        
     
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            /* Set the Nimbus look and feel */
            //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
            /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
             * For details see <a href="http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html" target="_blank">http://download.oracle.com/javase/tu...feel/plaf.html</a> 
             */
            try {
                for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                    if ("Nimbus".equals(info.getName())) {
                        javax.swing.UIManager.setLookAndFeel(info.getClassName());
                        break;
                    }
                }
            } catch (ClassNotFoundException ex) {
                java.util.logging.Logger.getLogger(n.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                java.util.logging.Logger.getLogger(n.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                java.util.logging.Logger.getLogger(n.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (javax.swing.UnsupportedLookAndFeelException ex) {
                java.util.logging.Logger.getLogger(n.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            }
            //</editor-fold>
     
            /* Create and display the form */
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new n().setVisible(true);
                }
            });
        }
     
        // Variables declaration - do not modify                     
        private javax.swing.JButton jButton1;
        private javax.swing.JLabel jLabel1;
        // End of variables declaration                   
    }

  10. #10
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Aie, en plus c'est une application Swing!

    Déjà que ça remonte à longtemps mes quelques notions et en plus je n'ai jamais été trop douée pour les applis desktop, désolée...

    Tout ce que j'ai réussi faire c'est une bête méthode qui change "en dur" la langue en "en_US" (et pas en "es_US", suis encore moins douée en espagnol qu'en Swing) que voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
            java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pkg1/Bundle_en_US");// pense à changer soit le nom du fichier Bundle, soit le code
            jLabel1.setText(bundle.getString("n.jLabel1.text")); // NOI18N
            jButton1.setText(bundle.getString("n.jButton1.text")); // NOI18N
        }
    Si tu ne dois pas changer la langue 32 fois pendant l'exécution de l'application, ça va marcher comme ça. Sinon tu va devoir mettre plusieurs boutons inscriptionnés chacun avec le nom de la langue et faire une méthode de ce genre pour ButtonFR, ButtonEN, ButtonDE qui va te changer le Bundle en Français, Alglais, Allemand. C'est sûr et certain qu'il y a moyen de faire plus propre (par exemple faire une méthode qui change les textes des labels et boutons et l'appeler dans ActionPerformed mais ça dépend si tu dois changer la langue plusieurs fois).

    Alors voilà...
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Bien que ce soit effectivement le principe: repasser sur chaque composant, chaque item à la main pour faire un setText dessus, la manière de charger le bundle n'est pas bonne.


    il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pkg1.Bundle",Locale.ENGLISH);// 
            jLabel1.setText(bundle.getString("n.jLabel1.text")); // NOI18N
            jButton1.setText(bundle.getString("n.jButton1.text")); // NOI18N
    parce que si on fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getBundle("pkg1/Bundle_en_US")
    il va chercher dans l'ordre
    pkg1/Bundle_en_US_fr_FR.properties
    pkg1/Bundle_en_US_fr.properties
    pkg1/Bundle_en_US.properties

    et n'ira jamais chercher dans

    pkg1/Bundle_en.properties
    pkg1/Bundle.properties

    ce qui n'est pas voulu

  12. #12
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Citation Envoyé par tchize_ Voir le message

    il va chercher dans l'ordre
    pkg1/Bundle_en_US_fr_FR.properties
    pkg1/Bundle_en_US_fr.properties
    pkg1/Bundle_en_US.properties

    et n'ira jamais chercher dans

    pkg1/Bundle_en.properties
    pkg1/Bundle.properties

    ce qui n'est pas voulu
    Un grand merci pour ces précisions!
    Mais pourquoi aller chercher des fichiers Bundle qui n'existent pas (Bundle_en_US_fr_FR.properties et Bundle_en_US_fr.properties)?
    Vous voulez dire que la recherche a pour but de trouver la valeur d'une Locale la plus proche de la "currentLocale" du système et que ça commence obligatoirement par le pays et la langue du pays où le système tourne?
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  13. #13
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ben oui, c'est marqué tel quel dans la doc de Ressource Bundle. Du coup, à moins que tu aie des régionalismes à prendre en compte, on se contente de créer des fichier _fr _en etc sans ajouter le pays.

    D'ailleurs, si tu fait uniquement un bundle_fr_FR et un bundle.properties (default), moi, pauvre belge, je ne tomberais jamais sur le fr_FR puisque chez moi c'est fr_BE

    L'ordre de recherche pour chaque clé est

    • baseName + "_" + language1 + "_" + country1 + "_" + variant1
    • baseName + "_" + language1 + "_" + country1
    • baseName + "_" + language1
    • baseName + "_" + language2 + "_" + country2 + "_" + variant2
    • baseName + "_" + language2 + "_" + country2
    • baseName + "_" + language2
    • baseName

    avec 1 la locale demandée et 2 la locale retournée par Locale.getDefault()

  14. #14
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Un très grand pour vos explication et pour la doc!
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  15. #15
    Candidat au Club
    Femme Profil pro
    tunis
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : tunis
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    donc c'quoi la bon solution ??

  16. #16
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu charge le nouveau bundle avec la nouvelle langue, comme déjà dit, en passant à getBundle les deux paramètre: le nom générique du bundle et la locale a utiliser. Puis tu passe sur tous les composant (label, menuitem, etc) de ton application et tu change leur text en chargeant la clé depuis le nouveau ressource bundle chargé juste avant. Cf le dernier code que j'ai posté pour passer à Anglais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pkg1.Bundle",Locale.ENGLISH);// 
            jLabel1.setText(bundle.getString("n.jLabel1.text")); // NOI18N
            jButton1.setText(bundle.getString("n.jButton1.text")); // NOI18N
    Désolé, mais il n'y a pas de système automatique, puisque les composants swing n'ont aucune notion de ressource bundle. Tu peux aussi trouver sur le net des librairies de composants graphique où c'est automatique, je pense. Mais faut chercher.

Discussions similaires

  1. Design Web Application dans NetBeans
    Par mougaref dans le forum NetBeans
    Réponses: 3
    Dernier message: 05/12/2012, 01h24
  2. Réponses: 0
    Dernier message: 25/11/2012, 12h49
  3. 2 questions avec une application web dans NetBeans
    Par L'aigle de Carthage dans le forum NetBeans
    Réponses: 2
    Dernier message: 01/02/2012, 11h35
  4. Plug Oracle Application Sever dans NetBeans
    Par supernova dans le forum NetBeans
    Réponses: 8
    Dernier message: 29/05/2007, 18h57
  5. RaveReport dans une application multilingue??
    Par Ben_Le_Cool dans le forum Bases de données
    Réponses: 5
    Dernier message: 21/12/2005, 07h22

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