2010-05-17 4 views
1

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

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

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

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

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

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

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

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

Спасибо заранее и наилучшие пожелания

ответ

1

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

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

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

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

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

+0

Спасибо, скаффман за ваш ответ. Может быть, я не понимаю этого хорошо, но вот что я знаю. Локальный резольвер работает за localeChangeInterceptor. Перехватчик принимает один параметр, указывающий местный. В моей ситуации мне нужно два параметра для локального и другого для домена (в моем приложении мы называем его виртуальным сайтом). Если я хорошо понимаю, мне нужно будет переопределить перехватчик и распознаватель не только для распознавателя, и в этом случае файлы свойств, которые я буду использовать, будут следовать другому шаблону, например application_local_virtualSit.properties? Является ли это выполнимым? Я так не думаю. – Fanooos

+0

@Fanooos: 'LocaleChangeInterceptor' не требуется, это только для особых обстоятельств.«LocaleResolver» работает со многими частями среды Spring (например, с помощью 'DispatcherServlet'). – skaffman

Смежные вопросы