p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    mars 2007
    Messages
    566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : mars 2007
    Messages : 566
    Points : 432
    Points
    432

    Par défaut Le fichier properties par défaut est ignoré

    Bonjour,

    Je ne sais pas pourquoi, j'ai un document généré sous JasperReports qui utilise les fichiers properties en fonction de la locale passée en paramètre au moteur de Jasper.

    Le problème est le suivant:
    J'ai les fichiers properties (report.properties, report_fr.properties, report_nl.properties, report_de.properties). Le fichier report.properties contient les textes en anglais.

    Le problème est que pour toutes les langues FR, NL, DE Jasper prends bien le bon properties mais pour l'anglais, il ne prends pas le properties par défaut mais prends le report_fr.properties. Donc le rapport s'affiche en français.

    Serait-ce un comportement normal en Java ?

    Merci d'avance pour votre aide.

  2. #2
    Expert Confirmé Sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    avril 2002
    Messages
    13 533
    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 533
    Points : 22 012
    Points
    22 012

    Par défaut

    Salut,


    Cela dépend de la manière dont l’internationalisation est géré par JasperReports.
    La seule manière d'être sûr étant de se plonger dans la documentation de l'outil...


    Je crains qu'en ne trouvant pas de "report_en.properties", il change de locale en utilisant celle du système (qui doit sûrement être FR).



    a++

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    mars 2007
    Messages
    566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : mars 2007
    Messages : 566
    Points : 432
    Points
    432

    Par défaut

    Citation Envoyé par adiGuba Voir le message
    Je crains qu'en ne trouvant pas de "report_en.properties", il change de locale en utilisant celle du système (qui doit sûrement être FR).
    La locale système est bien FR, mais est-ce que c'est un comportement normal en Java ou est-ce que c'est un comportement de Jasper?

  4. #4
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    janvier 2007
    Messages
    1 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : janvier 2007
    Messages : 1 331
    Points : 1 791
    Points
    1 791

    Par défaut

    Je confirme, et c'est normal en java :
    http://docs.oracle.com/javase/1.4.2/...ClassLoader%29

    Tu as ici en fait une incohérence : pour Java, tu veux utiliser en comme locale par défaut, et c'est pour cela que tu ne mets pas de fichier _en et que le fichier basename.properties contient de l'anglais, et pourtant ta locale système est le français.
    A cela, deux solutions :
    - Changer ta locale système (je conseille fortement pour les applis internationalisées d'avoir les serveurs et les postes de développement en anglais)
    - Forcer la locale par défaut à utiliser en "en" (voir par exemple http://stackoverflow.com/questions/8...ale-for-my-jvm)

    Dans les deux cas, attention aux effets de bord potentiels !!! Tout le code où la locale n'est pas spécifiée et qui se base sur la locale système (ce qui est normalement à proscrire mais se trouve très souvent) va potentiellement changer de comportement !

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    mars 2007
    Messages
    566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : mars 2007
    Messages : 566
    Points : 432
    Points
    432

    Par défaut

    Citation Envoyé par chtig Voir le message
    Dans les deux cas, attention aux effets de bord potentiels !!!
    En effet, je n'imagine même pas de changer la langue du système là où il y a le serveur applicatif. Il risque d'avoir des effets de bord déjà au niveau application <=> DB.
    Je ne pensais pas que ça allait être aussi tordu.

  6. #6
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    janvier 2007
    Messages
    1 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : janvier 2007
    Messages : 1 331
    Points : 1 791
    Points
    1 791

    Par défaut

    Le plus simple est peut être de te mettre en phase avec le système alors.
    Pourquoi ne pas renommer report.properties en report_en.properties et report_fr.properties en report.properties ?
    Tu comptes te servir de la notion de locale par défaut ?
    Pour essayer de t'aiguiller vers une solution, il faudrait que tu nous dises un peu les cas possibles que tu souhaites gérer.

  7. #7
    Expert Confirmé Sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    avril 2002
    Messages
    13 533
    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 533
    Points : 22 012
    Points
    22 012

    Par défaut

    Citation Envoyé par chtig Voir le message
    Je confirme, et c'est normal en java :
    http://docs.oracle.com/javase/1.4.2/...ClassLoader%29
    Wouah je n'avais jamais remarqué cela !!!!
    Je tombe toujours pile poil dans le cas où la locale par défaut est la locale système, mais c'est bon à savoir !




    Par contre il y a moyen de controller cela si on a accès au code qui crée les ResourceBundle, en spécifiant qu'on ne souhaite pas utiliser de locale de secours :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	ResourceBundle.Control control = ResourceBundle.Control.getNoFallbackControl(
    			ResourceBundle.Control.FORMAT_DEFAULT);
     
    	ResourceBundle rb = ResourceBundle.getBundle("demo.report", Locale.ENGLISH, control);

    a++

  8. #8
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    janvier 2007
    Messages
    1 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : janvier 2007
    Messages : 1 331
    Points : 1 791
    Points
    1 791

    Par défaut

    Ah ben c'est bon à savoir, je ne connaissais pas le control (c'est nouveau en 1.6 et pas eu l'occasion depuis d'utiliser des bundle autrement qu'avec un framework) !!

  9. #9
    Expert Confirmé Sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    avril 2002
    Messages
    13 533
    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 533
    Points : 22 012
    Points
    22 012

    Par défaut

    Citation Envoyé par chtig Voir le message
    Ah ben c'est bon à savoir, je ne connaissais pas le control (c'est nouveau en 1.6 et pas eu l'occasion depuis d'utiliser des bundle autrement qu'avec un framework) !!
    Les Control c'est vraiment pas mal... sauf comme tu le dis on n'y a généralement pas accès lorsqu'on utilise un framework.



    Perso je les avais utilisé pour gérer des fichiers proprerties en UTF8


    a++

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/08/2010, 16h31
  2. Probleme de detecter un fichier properties par Jboss?
    Par KING_OF_GRACELAND dans le forum JBoss
    Réponses: 2
    Dernier message: 26/05/2009, 15h35
  3. Réponses: 5
    Dernier message: 16/01/2008, 13h31
  4. Pourquoi la taille de fonte par défaut est de 8.25 points?
    Par Nico57 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 19/12/2007, 08h55
  5. [BDS 2006] fichier bpi par défaut
    Par gandf dans le forum C++Builder
    Réponses: 1
    Dernier message: 15/09/2006, 17h34

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