Вопрос

Мне нужно вывести пакет Spring MessageSources для поддержки i18n (файлы свойств) за пределы пути к классам, чтобы упростить изменение свойств.Как мне это сделать ?

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basename" value="test-messages"/>

Спасибо!

Это было полезно?

Решение

Мы создали реализацию источника сообщений, которая ищет сообщения в БД.Что вам нужно сделать, так это создать реализацию MessageSource, которая наследуется от Spring AbstractMessageSource (чтобы получить все функции, см. Javadoc).

Вам необходимо реализовать как минимум абстрактный метод resolveCode(String, Locale) (но реализация resolveCodeWithoutArguments(String, Locale) увеличит вашу производительность), который делегирует DAO, указывающий на эту простую таблицу, с таким определением, как этот:

table translation (
  translation_id number pk
  code varchar(20)
  locale varchar(5)
  translation varchar(100)
)

код и локаль образуют уникальный индекс.

И вы сделали.Конечно, вы добавите некоторые возможности кэширования и обеспечите поведение «деградации локали» (т.если «en_US» не найден, попробуйте «en») либо на уровне dao, либо на уровне MessageSource.

Это работает отлично.

Другие советы

Проверь это нить для получения информации по этой проблеме, но я думаю, что не рекомендуется иметь файлы вне контекста tomcat, поскольку вы никогда не знаете, где будет развернуто ваше приложение.

Но если вам понадобится, вы найдете там несколько довольно хороших решений.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top