+ Répondre à la discussion
Affichage des résultats 1 à 9 sur 9
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    mars 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : mars 2007
    Messages : 561
    Points : 433
    Points
    433

    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 337
    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 337
    Points : 21 585
    Points
    21 585

    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
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : mars 2007
    Messages : 561
    Points : 433
    Points
    433

    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
    Profil pro
    Inscrit en
    janvier 2007
    Messages
    1 331
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

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

    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 !
    Program manager chez TraceOne. http://www.traceone.com

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

    Informations forums :
    Inscription : mars 2007
    Messages : 561
    Points : 433
    Points
    433

    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
    Profil pro
    Inscrit en
    janvier 2007
    Messages
    1 331
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

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

    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.
    Program manager chez TraceOne. http://www.traceone.com

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

    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 :
    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
    Profil pro
    Inscrit en
    janvier 2007
    Messages
    1 331
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

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

    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) !!
    Program manager chez TraceOne. http://www.traceone.com

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

    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++

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •