Различный i18n весной по URL - PullRequest
1 голос
/ 17 мая 2010

У меня есть весеннее веб-приложение, которое должно работать следующим образом

приложение будет доступно с двух разных URL-адресов: www.domain1.com и www.domain2.com

и требуется, чтобы два URL выглядели как два разных приложения с разными CSS и I18n.

для части css сделано, но я застрял с частью i18n

Как заставить пружину загружать разные файлы свойств i18n в зависимости от имени домена?

Решение, о котором я подумал, состоит в том, чтобы реализовать фильтр, который проверяет URL-адрес запроса и в соответствии с URL-адресом очищает исходный компонент сообщения и загружает требуемый файл i18n, но это не выглядит хорошим для производительности

кстати, я использую источник сообщений ReloadableResourceBundleMessageSource

Другое решение заключается в реализации двух разных источников сообщений. Проблема этого решения заключается в том, что из исходного кода я могу управлять компонентом, который я использую, но как мне указать тегу fmt: message, какой источник данных использовать?

Заранее спасибо и наилучшими пожеланиями

1 Ответ

1 голос
/ 17 мая 2010

Я предлагаю использовать LocaleResolver. Это стандартный интерфейс Spring для выполнения подобных задач.

Интерфейс для веб-локали стратегии разрешения, которая позволяет оба разрешения локали через запрос и модификация локали через запрос и ответ.

Этот интерфейс позволяет реализации на основе запроса, сеанс, куки и т. д.

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

В таком случае ваши пакеты ресурсов будут использовать стандартный механизм языка Java для разрешения правильного сообщения для текущего языка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...