Précédent   Forum du club des développeurs et IT Pro > Java > Général Java > Langage
Langage Forum d'entraide sur le langage Java et autres langages pour la JVM : syntaxe, POO, conventions, API standard. Avant de poster -> FAQ Java
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 02/01/2013, 10h29   #1
cmako
Membre éclairé
 
Homme
Inscription : mars 2007
Messages : 485
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Luxembourg

Informations forums :
Inscription : mars 2007
Messages : 485
Points : 337
Points : 337
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.
cmako est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 10h56   #2
adiGuba
Expert Confirmé Sénior
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 657
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations professionnelles :
Activité : Développeur Java/Web
Secteur : Transports

Informations forums :
Inscription : avril 2002
Messages : 12 657
Points : 22 438
Points : 22 438
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++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 11h53   #3
cmako
Membre éclairé
 
Homme
Inscription : mars 2007
Messages : 485
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Luxembourg

Informations forums :
Inscription : mars 2007
Messages : 485
Points : 337
Points : 337
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?
cmako est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 11h55   #4
chtig
Membre Expert
 
Inscription : janvier 2007
Messages : 1 331
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 331
Points : 1 561
Points : 1 561
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
chtig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 13h01   #5
cmako
Membre éclairé
 
Homme
Inscription : mars 2007
Messages : 485
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Luxembourg

Informations forums :
Inscription : mars 2007
Messages : 485
Points : 337
Points : 337
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.
cmako est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 13h14   #6
chtig
Membre Expert
 
Inscription : janvier 2007
Messages : 1 331
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 331
Points : 1 561
Points : 1 561
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
chtig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 14h24   #7
adiGuba
Expert Confirmé Sénior
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 657
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations professionnelles :
Activité : Développeur Java/Web
Secteur : Transports

Informations forums :
Inscription : avril 2002
Messages : 12 657
Points : 22 438
Points : 22 438
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++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 17h28   #8
chtig
Membre Expert
 
Inscription : janvier 2007
Messages : 1 331
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 331
Points : 1 561
Points : 1 561
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
chtig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2013, 17h48   #9
adiGuba
Expert Confirmé Sénior
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 657
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations professionnelles :
Activité : Développeur Java/Web
Secteur : Transports

Informations forums :
Inscription : avril 2002
Messages : 12 657
Points : 22 438
Points : 22 438
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++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h18.


 
 
 
 
Partenaires

Hébergement Web