Dieser Artikel erklärt das Vorgehen, wenn bei der Internationalisierung von Spring-Anwendungen die Texte innerhalb von *.properties-Dateien direkt im UTF-8 Encoding abgelegt und nicht auf das im JDK befindliche Werkzeug native2ascii zurückgegriffen werden soll.
Die Konfiguration der Standard-Implementierung im Spring-Umfeld sieht bei der Verwendung eines ResourceBundle im ISO-8859-1 Encoding in der Regel wie folgt aus:
Von der häufig verwendeten Standard-Implementierung ResourceBundleMessageSource, welche intern auf die Klasse java.util.ResourceBundle zurückgreift, wird allerdings lediglich das ISO-8859-1 Encoding unterstützt.
Als Alternative bietet sich daher der Einsatz der Klasse ReloadableResourceBundleMessageSource für die Bereitstellung des ResourceBundle an. An dieser Klasse lässt sich eine zusätzliche Eigenschaft defaultEncoding definieren mit deren Hilfe das Standard-Encoding für die zugrunde liegenden MessageBundle-Dateien definiert werden kann.
In unserem ResourceBundle können wir nun unter Verwendung des UTF-8 Encoding beispielsweise “Hallo Welt” unter anderem auf Hebräisch hinterlegen und aus der Anwendung darauf zugreifen.
Ein simpler Test mit dem oben konfigurierten ApplicationContext zeigt den Zugriff auf die internationalisierten Texte:
Mit der Klasse ReloadableResourceBundleMessageSource ist es zudem auch möglich, Properties-Dateien in unterschiedlichen Encodings zu hinterlegen. Über die Eigenschaft fileEncodings besteht die Möglichkeit, das Encoding dateispezifisch vorzunehmen.