2012-05-19 1 views
1

Я использую эту простую конфигурациюSpring локаль распознаватель - текущая локаль в URL

<beans:bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
     <beans:property name="basename" value="classpath:localization/messages" /> 
     <beans:property name="defaultEncoding" value="UTF-8" /> 
    </beans:bean> 

    <interceptors> 
     <beans:bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> 
      <beans:property name="paramName" value="lang" /> 
     </beans:bean> 
    </interceptors> 

    <beans:bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> 
     <beans:property name="defaultLocale" value="en" /> 
     <beans:property name="cookieMaxAge" value="100000" /> 
    </beans:bean> 

работает хорошо, но что, если кто-то отправит URL кому-то другому? Это работает только с клиентским браузером. Если пользователь меняет локализацию, он установит файл cookie. Я видел много веб-сайтов, что у них есть локализация после первой косой черты в URL (например, nette.org/en/about). Когда кто-то отправит эту ссылку, она разрешит локализацию в зависимости от url. Существует ли какое-либо простое решение для этого в весеннем контексте? Как-то отобразить это место в URL-адресе?

ответ

-1

Вместо CookieLocaleResolver использование SessionLocaleResolver.

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"> 
     <property name="defaultLocale" value="en"/> 
    </bean> 

Я думаю, что это должно решить вашу проблему.

Cheers.

+0

И в чем разница? Может быть, не ясно из моего поста, какова моя цель. Кто-то просматривает мою страницу в «de» locale, и он хочет отправить URL-адрес кому-то другому, но страница будет отображаться в локали по умолчанию (ru) кому-то, кто открыл этот URL-адрес, и это то, чего я не хочу. Я хочу открыть страницу в том же языке (de). Ваше решение не разрешает это. –

+0

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

+0

Это определенно делает это ... Я использую то же самое в своем проекте. –