J'essaie d'afficher un message sur l'écran dans une langue différente (mais en gardant les dates dans la langue par défaut, uk_eng), en fonction de l'utilisateur qui regarde le écran. Étant seulement un paramètre temporaire je me demandais quelle est la meilleure façon de le faire en Java.Affichage temporaire du texte (pas de dates) dans une langue différente
Répondre
Vous pouvez avoir des ensembles de messages pour chaque environnement local. Chargez-les et affichez-les de manière appropriée lorsque vous identifiez les paramètres régionaux de l'utilisateur.
Un exemple est à http://java.sun.com/developer/onlineTraining/Programming/BasicJava2/int.html
Vous pouvez charger ces derniers dans une application web aussi comme http://www.devsphere.com/mapping/docs/guide/internat.html
Si je vois bien le problème, vous voulez afficher des messages avec MessageFormat
comme ceci:
Object[] arguments = {
new Integer(7),
new Date(System.currentTimeMillis()),
"a disturbance in the Force"
};
String result = MessageFormat.format(
"At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
arguments);
(Exemple de javadoc)
J'ai vérifié la source du MessageFormat
et je vois que getLocale()
est commun pour l'ensemble du message. Vous ne pouvez pas en créer un distinct pour un paramètre. Pourquoi ne pas faire un paramètre avec la chaîne de date mise en forme elle-même?
Comme ceci:
Object[] arguments = {
new SimpleDateFormat("yyyyy.MMMMM.dd GGG hh:mm aaa", Locale.UK).format(new Date())
};
String result = MessageFormat.format(
"This is the date format which I always want independently of the locale: {1} ",
arguments);
Le premier paramètre des méthodes de format peut provenir de fichiers de propriétés localisées.
Le problème concernait davantage la ressource à utiliser en fonction de l'utilisateur souhaitant la voir, et non la manière de formater les dates avec un environnement local codé en dur. SimpleDateFormat utilisera toujours les paramètres régionaux par défaut. mais le texte utilisera un regroupement de ressources spécifique. Merci – Marc