Spring Resource-Bundle mit ResourceBundleMessageSource-Beispiel
In Spring können SieResourceBundleMessageSource
verwenden, um Textnachrichten aus der Eigenschaftendatei basierend auf den ausgewählten Gebietsschemas aufzulösen. Siehe folgendes Beispiel:
1. Verzeichnisaufbau
Überprüfen Sie die Verzeichnisstruktur dieses Beispiels.
2. Eigenschaftendatei
Erstellen Sie zwei Eigenschaftendateien, eine für englische Zeichen (messages_en_US.properties
) und eine für chinesische Zeichen (messages_zh_CN.properties
). Fügen Sie es in den Projektklassenpfad ein (siehe Abbildung oben).
Datei: messages_en_US.properties
customer.name=Yong Mook Kim, age : {0}, URL : {1}
Datei: messages_zh_CN.properties
customer.name=\ufeff\u6768\u6728\u91d1, age : {0}, URL : {1}
Das '杨木金' ist ein Unicode-Zeichen auf Chinesisch.
Note
Um die chinesischen Schriftzeichen korrekt anzuzeigen, müssen Sie „http://www.example.com/java/java-convert-chinese-character-to-unicode-with-native2ascii/“ verwenden. [native2ascii] ”, um die chinesischen Zeichen in Unicode-Zeichen umzuwandeln.
3. Bean Konfigurationsdatei
Fügen Sie die Eigenschaftendatei in die Bean-Konfigurationsdatei ein. Sowohl "messages_en_US.properties" als auch "messages_zh_CN.properties" werden in Spring als eine Datei betrachtet. Sie müssen den Dateinamen nur einmal einfügen, und Spring findet automatisch das richtige Gebietsschema.
locale\customer\messages
P.S Assume both files are located at “resources\locale\customer\u201d folder.
4. Starte es
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); } }
Ausgabe
Note
Stellen Sie sicher, dass IhreEclipse is able to display Chinese output.
Erläuterung
1. Incontext.getMessage()
ist das zweite Argument Nachrichtenparameter. Sie müssen es als Objektarray übergeben. Sie können einfach eine Null übergeben, wenn keine Parameterwerte verfügbar sind.
context.getMessage("customer.name",null, Locale.US);
2. Locale.US ruft die Nachrichten von 'messages_en_US.properties' ab, während Locale.SIMPLIFIED_CHINESE die Nachrichten von 'messages_zh_CN.properties' abruft.
More …
Lesen Sie diesen Artikel, um zu erfahren, wie Sie aufMessageSource inside a bean zugreifen können.
Quellcode herunterladen
Laden Sie es herunter -Spring-MessageSource-Example.zip