Exemple de ressource Spring avec ResourceBundleMessageSource

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.

directory structure of this example

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

output

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