Spring MVC веб-приложение i18n - PullRequest
3 голосов
/ 07 апреля 2009

В веб-приложении, написанном с использованием Spring-MVC, я хочу разрешить пользователям изменять текущий язык, щелкая ссылку, текст которой является названием языка.

Я уже настроил источник сообщений и заставил все мои страницы jsp находить сообщения, используя этот источник сообщений. В настоящее время язык меняется в зависимости от локали браузера пользователя.

Итак, сейчас я хочу разрешить изменение локали вручную.

Я обнаружил, что класс SessionLocaleResolver может помочь, но я не знаю, как настроить его в моем файле контекста приложения (имя которого myAppName-servlet.xml).

Я определил боб:

<bean id="localeResolver"
    class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
</bean>

Но к какому бину я должен это подключить? Кроме того, как мне установить cookie, связанный с локалью, в сеанс пользователя?

1 Ответ

6 голосов
/ 07 апреля 2009

Вся необходимая информация была в документации, передо мной, по адресу:

http://static.springframework.org/spring/docs/2.5.x/reference/mvc.html#mvc-localeresolver

Короче говоря, я адаптировал следующий xml к myAppName-servlet.xml

<bean id="localeChangeInterceptor"
      class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    <property name="paramName" value="siteLanguage"/>
</bean>

<bean id="localeResolver"
      class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/>

<bean id="urlMapping"
      class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="interceptors">
        <list>
            <ref bean="localeChangeInterceptor"/>
        </list>
    </property>
    <property name="mappings">
        <value>/**/*.view=someController</value>
    </property>
</bean>

А теперь достаточно получить доступ к любой странице с параметром:

siteLanguage=locale

для изменения локали для всего сайта.

Например: http://localhost:8080/SBrowser/deliveries.html?siteLanguage=frenter код здесь

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