Интерфейс ApplicationContext расширяет интерфейс называемый MessageSource , который предоставляет функциональность по интернационализации приложений. (Подробней)
Существует две реализации описанного интерфейса : StaticMessageSource и
ResourceBundleMessageSource . Если быть точнее они реализуют не сам MessageSource, а его дочерний класс HierarchicalMessageSource, который кроме прочего позволяет иерархически обрабатывать сообщения.
StaticMessageSource - тяжёлый в использовании, но позволяющий програмно добавлять сообщения в список заготовленных сообщений, что далеко не всегда нужно.
ResourceBundleMessageSource рассмотрим болле подробно с помощью примера:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>format</value>
<value>exceptions</value>
</list>
</property>
</bean>
Тут мы зарегистрировали бин, который будет искать messages в двух файлах:
format.properties
errors.properties
Это файлы используемые по умолчанию, но если в вашем броузере установлена какая то специфическая локализация ,
то сначала будут искатся файлы характерные для этой локализации ,
например для украинского языка:
format_uk.properties
errors_uk.properties
для немецкого
format_de.properties
errors_de.properties
и так далее ..
Все выше перечисленные файлы необходимо разместить в CLASSPATH.
В каждом из файлов в столбик записаны код сообщения и их значения для определённого языка.
Например
# в файле 'format.properties'
message=Hello world message!
Или пример по сложнее:
# в файле 'errors_uk.properties'
argument.required=Поле '{0}' є обов`язковим для заповнення
Для того что бы вывести эти сообщения на jsp странице используется тег spring:message .
В результате получаем вполне понятное сообщение об ошибке для украинской локализации:
Пример из файла error_uk :
Поле Address є обов`язковим для заповнення
5 комментариев:
Благодарю. Весьма кстати этот замечательный пост
Копипаст немного Вас подвёл.
В примере xml Вы пишете:
[value]format[/value]
[value]exceptions[/value]
[value]windows[/value]
Далее по тексту идёт пояснение:
... в двух файлах:
format.properties
errors.properties
Вы пишете:
если в вашем броузере установлена какая то специфическая локализация
Наверное, Вы имели ввиду контейнер сервлетов.
Вы пишете:
Пример для сообщения из файла error_uk :
Ожидаемого примера ниже нет.
1,3 замечания - спасибо , исправил
2 - нет, я имел ввиду именно броузер на стороне клиента (Для ФФ это: Инструменты-Настройки-Содержимое-Языки).
Добрый день! Если Вы заинтересованы в локализации web-ПО, ПО для персональных компьютеров, ПО для мобильных устройств либо иного вида программного обеспечения, я рекомендую Вам использовать этот инструмент на базе web: https://poeditor.com/ POEditor является интуитивным, хорошо проработанным инструментом, обладающим рядом полезных свойств, которые помогают организовать процесс управления переводом. Он поддерживает множество популярных форматов файлов и обладает собственным API, что обеспечивает лучшую автоматизацию. Желаю Вам больших успехов в Ваших проектах!
Отправить комментарий