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

Langage Java Discussion :

Internationalisation - messages_xx.properties en dehors du jar


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 123
    Par défaut Internationalisation - messages_xx.properties en dehors du jar
    Bonjour à tous,

    Actuellement, je travaille sur un programme qui doit être multilangue.
    Pour le moment, tout se passe bien. J'ai mis les fichiers messages_xx.properties dans le même package que ma classe et j'y accède en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResourceBundle.getBundle("util.internationalization.messages", locale).getString(msg);
    Problème : Si une faute d'orthographe est détectée, je vais devoir mettre à jour le fichier message_xx.properties mais également re-compiler le jar. Or, je voudrais éviter cette dernière partie.

    J'essaie donc de mettre mes fichiers dans un dossier externe (non-source) qui sera à côté de mon jar/exe au lancement. Mais lorsque j'essaie d'y accéder, ça ne fonctionne pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResourceBundle.getBundle("folder/internationalization/messages", locale).getString(msg);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResourceBundle.getBundle("folder.internationalization.messages", locale).getString(msg);
    Rien ne fonctionne :-(

    Quelqu'un peut-il m'aider ?

    Merci.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Et tu as ajouté "folder" au classpath ?

    Par ailleurs, tu n'es pas obligé de recompiler : il suffit de refaire le jar (ce qui ne nécessite pas de recompiler). Tu pourrais également mettre les fichiers .properties dans un jar à part (sans classes) ou un zip (ce qui est assez facilement gérable pour modifier les fichiers, tout en ayant qu'un seul fichier).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 123
    Par défaut
    Salut,

    Merci pour ta réponse.

    C'est justement refaire le jar qui m'ennuie car ça prend du temps (obfusquer pour des raisons de sécurités, retransformer le jar en .exe, etc.). Mais oui, le terme re-complier était mal choisi

    Je vais commencer par ajouter le folder au classpath et voir ce que ça donne. Sinon, faire un autre jar peut-être une bonne idée :-) Il faudra juste refaire le jar sur le côté. Ce sera plus rapide :-)

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par VonDriguen Voir le message
    .exe
    Hum, attention, les systèmes qui transforment le jar en exe gèrent en interne le classpath. Pas sûr que ça fonctionne du coup, parce que ce qui se trouve dans le classpath est censé être dans l'exe normalement : à tester donc. Sinon, il faudra peut-être utiliser un classloader personnalisé pour charger les bundles de l'extérieur.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 123
    Par défaut
    Juste pour info, j'ai fait ceci et ça fonctionne depuis Eclipse:

    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
     
    private ResourceBundle rb;
     
    public String getMessage(String msg, Locale locale) {
    	if(rb == null) {
    		try {
    			File file = new File("resources/files/I18N");
    			URL[] urls = {file.toURI().toURL()};
    			ClassLoader loader = new URLClassLoader(urls);
    			rb = ResourceBundle.getBundle("messages", locale, loader);
    		} catch (MalformedURLException e) {
    			Popup.showExceptionPopup(e);
    		}
    	}
    	return rb.getString(msg);
    }
    Je n'ai plus qu'à tester en .exe et, si ça fonctionne, je mets en résolu :-)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 123
    Par défaut
    Je confirme, ça fonctionne...

    Pour les intéressés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    File file = new File("resources/files/I18N");
    URL[] urls = {file.toURI().toURL()};
    ClassLoader loader = new URLClassLoader(urls);
    rb = ResourceBundle.getBundle("messages", locale, loader);
    "resources/files/I18N" => Le dossier où se trouve mes fichiers .properties
    "messages" => Le nom de mon fichier .properties qui a les extensions _fr, _en, etc.

    En d'autres termes, mon arborescence est la suivante:
    • resources
      • files
        • I18N
          • messages.properties
          • messages_fr.properties
          • messages_en.properties
          • ...


    Et bien entendu, le dossier "resources" est juste à côté de mon .exe

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

Discussions similaires

  1. chargement d'un properties en dehors du jar
    Par eatherquake dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 17/08/2010, 14h36
  2. Ajout de ressources en dehor du JAR
    Par urubs dans le forum NetBeans
    Réponses: 1
    Dernier message: 23/07/2010, 18h11
  3. Chemin vers un fichier en dehors du .jar
    Par NutellaPiou dans le forum Applets
    Réponses: 1
    Dernier message: 27/02/2009, 09h21
  4. ajout fichiers properties au lancement du jar
    Par Katachana dans le forum Langage
    Réponses: 3
    Dernier message: 19/02/2009, 17h35
  5. appeler un properties en dehors du jar
    Par keguira dans le forum Langage
    Réponses: 13
    Dernier message: 04/07/2006, 16h39

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