Bundle de ressources Spring avec exemple ResourceBundleMessageSource
Au printemps, vous pouvez utiliserResourceBundleMessageSource
pour résoudre les messages texte à partir du fichier de propriétés, en fonction des paramètres régionaux sélectionnés. Voir l'exemple suivant:
1. Structure du répertoire
Passez en revue la structure du répertoire de cet exemple.
2. Fichier de propriétés
Créez deux fichiers de propriétés, un pour les caractères anglais (messages_en_US.properties
), l'autre pour les caractères chinois (messages_zh_CN.properties
). Placez-le dans le chemin de classe du projet (voir la figure ci-dessus).
Fichier: messages_en_US.properties
customer.name=Yong Mook Kim, age : {0}, URL : {1}
Fichier: messages_zh_CN.properties
customer.name=\ufeff\u6768\u6728\u91d1, age : {0}, URL : {1}
Les «杨木金» sont des caractères Unicode en chinois.
Note
Pour afficher correctement les caractères chinois, vous devez utiliser «http://www.example.com/java/java-convert-chinese-character-to-unicode-with-native2ascii/ [native2ascii] »pour convertir les caractères chinois en caractères Unicode.
3. Fichier de configuration du bean
Incluez le fichier de propriétés dans le fichier de configuration du bean. «messages_en_US.properties» et «messages_zh_CN.properties» sont tous deux considérés comme un seul fichier dans Spring, il vous suffit d'inclure le nom de fichier une fois, et Spring trouvera automatiquement la bonne locale.
locale\customer\messages
P.S Assume both files are located at “resources\locale\customer\u201d folder.
4. Exécuter
package com.example.common; import java.util.Locale; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class App { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("locale.xml"); String name = context.getMessage("customer.name", new Object[] { 28,"http://www.example.com" }, Locale.US); System.out.println("Customer name (English) : " + name); String namechinese = context.getMessage("customer.name", new Object[] {28, "http://www.example.com" }, Locale.SIMPLIFIED_CHINESE); System.out.println("Customer name (Chinese) : " + namechinese); } }
Sortie
Note
Assurez-vous que vosEclipse is able to display Chinese output.
Explication
1. Danscontext.getMessage()
, le deuxième argument est les paramètres de message, vous devez le passer en tant que tableau d'objets. Vous pouvez simplement passer un null si aucune valeur de paramètre n'est disponible.
context.getMessage("customer.name",null, Locale.US);
2. Locale.US récupérera les messages de «messages_en_US.properties», tandis que Locale.SIMPLIFIED_CHINESE récupérera les messages de «messages_zh_CN.properties».
More …
Lisez cet article pour savoir comment accéder auxMessageSource inside a bean.
Télécharger le code source
Téléchargez-le -Spring-MessageSource-Example.zip