Skip to content

Получение строк с использованием messagesource

wizardjedi edited this page Nov 20, 2012 · 1 revision

В ApplicationContext есть получения строк сообщений, что удобно использовать для интернационализации.

Создадим бин источника строк

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
	<property name="basenames">
		<list>
			<value>format</value>
		</list>
	</property>
</bean>

Данное определение описывает источник строк, который состоит из одного пространства строк format.

Создадим файлы для хранения строк: format_ru_RU.properties

msg1 = "Тестовая строка"
msg2 = "Найдено {0} файлов"

format_en_US.properties

msg1 = "This is example message en US"
msg2 = "Found {0} files"

Пример приложения

public class App 
{
    public static void main( String[] args )
    {
        ApplicationContext ctx = (ApplicationContext) new ClassPathXmlApplicationContext("context.xml");
		
		Locale l = Locale.getDefault(); 
		
		System.out.println(l.toLanguageTag());
		
		System.out.println(ctx.getMessage("msg1", null, Locale.US));
		System.out.println(ctx.getMessage("msg1", null, new Locale("en")));
		System.out.println(ctx.getMessage("msg1", null, new Locale("en","US")));
		
		System.out.println(ctx.getMessage("msg2", new Object[]{10}, Locale.US));
		System.out.println(ctx.getMessage("msg2", new Object[]{10}, new Locale("en")));
		System.out.println(ctx.getMessage("msg2", new Object[]{10}, new Locale("en","US")));
    }
}

Вывод приложения

ru-RU
"This is example message en US"
"Тестовая строка"
"This is example message en US"
"Found 10 files"
"Найдено 10 файлов"
"Found 10 files"