Spring Resource bundle с примером ResourceBundleMessageSource
В Spring вы можете использоватьResourceBundleMessageSource для разрешения текстовых сообщений из файла свойств на основе выбранных локалей. Смотрите следующий пример:
1. Структура каталогов
Просмотрите структуру каталогов этого примера.

2. Файл свойств
Создайте два файла свойств, один для английских символов (messages_en_US.properties), другой для китайских символов (messages_zh_CN.properties). Поместите его в путь к классу проекта (см. Рисунок выше).
Файл: messages_en_US.properties
customer.name=Yong Mook Kim, age : {0}, URL : {1}
Файл: messages_zh_CN.properties
customer.name=\ufeff\u6768\u6728\u91d1, age : {0}, URL : {1}
«杨木金» - это символы Юникода на китайском языке.
Note
Для правильного отображения китайских иероглифов необходимо использовать «http://www.example.com/java/java-convert-chinese-character-to-unicode-with-native2ascii/. [native2ascii] »для преобразования китайских иероглифов в символы Юникода.
3. Файл конфигурации бина
Включите файл свойств в файл конфигурации бина. И «messages_en_US.properties», и «messages_zh_CN.properties» считаются одним файлом в Spring, вам просто нужно указать имя файла один раз, и Spring автоматически найдет правильный языковой стандарт.
locale\customer\messages
P.S Assume both files are located at “resources\locale\customer\u201d folder.
4. Запустить его
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);
}
}
Выход

Note
Убедитесь, что вашEclipse is able to display Chinese output.
объяснение
1. Вcontext.getMessage() второй аргумент - это параметры сообщения, вы должны передать его как массив объектов. Вы можете просто передать ноль, если нет доступных значений параметров.
context.getMessage("customer.name",null, Locale.US);
2. Locale.US будет получать сообщения от «messages_en_US.properties», а Locale.SIMPLIFIED_CHINESE будет получать сообщения от «messages_zh_CN.properties».
More …
Прочтите эту статью, чтобы узнать, как получить доступ кMessageSource inside a bean.
Скачать исходный код
Скачать -Spring-MessageSource-Example.zip