mardi 9 août 2016

Utilisez des ressources avec spring

Afin d'utiliser les ressources dans une application Spring, il faut créer un répertoire i18n dans le répertoire ressources.

Créer un fichier pour la langue par défaut et ensuite un par langue qui sera supporté.

messages.properties
messages_fr.properties

Le contenu du premier fichier serait

paymentMode.CASH=Cash
paymentMode.DEBIT=Debit
paymentMode.CHECK=Check
paymentMode.CREDITCARD=Credit card
paymentMode.GIFTCARD=Gift card

et celui du deuxième

paymentMode.CASH=Comptant
paymentMode.DEBIT=D\u00e9bit
paymentMode.CHECK=Ch\u00c3\u00a8que
paymentMode.CREDITCARD=Carte de cr\u00e9dit
paymentMode.GIFTCARD=Carte cadeaux

J'avais mis directement les accents, mais il semble qu'il y est eu une conversion à l'unicode.

Dans la classe où vous désirer accéder la valeur, il faut ajouter une propriété

@Autowired
private MessageSource messageSource;

Ensuite pour accéder au message vous pouvez utiliser une de ces deux méthodes

getMessage(String code, Object[] args, Locale locale);
getMessage(String code, Object[] args, String defaultMessage, Locale locale);

Dans notre cas, pour avoir la valeur de CASH en français.
messageSource.getMessage("paymentMode." + CASH, null, Locale.FRENCH);