java - JSP Spring internationalization using OSGi as service changing locale not working properly -
first of all! don't judge me reason i'm using messagesource service. since i'm in phase learning osgi , spring.
i have project has many modules, in pages, since i'm making internationalization it. saw use same messages, put codes in common module every module uses it. , shared message service osgi-context.xml:
<osgi:service ref="messagesource" interface="org.springframework.context.support.reloadableresourcebundlemessagesource"/> <osgi:service ref="localeresolver" interface="org.springframework.web.servlet.i18n.cookielocaleresolver"/> <osgi:service ref="localechangeinterceptor" interface="org.springframework.web.servlet.i18n.localechangeinterceptor"/> and in module-context.xml beans:
<bean id="messagesource" scope="bundle" class="org.springframework.context.support.reloadableresourcebundlemessagesource"> <property name="basename" value="classpath:messages" /> <property name="defaultencoding" value="utf-8" /> </bean> <bean id="localeresolver" scope="bundle" class="org.springframework.web.servlet.i18n.cookielocaleresolver"> <property name="defaultlocale" value="et" /> </bean> <bean id="localechangeinterceptor" scope="bundle" class="org.springframework.web.servlet.i18n.localechangeinterceptor"> <property name="paramname" value="lang" /> </bean> in module uses service:
<osgi:reference id="messagesource" interface="org.springframework.context.support.reloadableresourcebundlemessagesource"/> <osgi:reference id="localeresolver" interface="org.springframework.web.servlet.i18n.cookielocaleresolver"/> <osgi:reference id="localechangeinterceptor" interface="org.springframework.web.servlet.i18n.localechangeinterceptor"/> so internationalization works! not completely... problem comes when try change locale, partially works. jsp pages use tag message like:
<spring:message code="general.welcome"/> it not change! in same time pass translations using controller javascript var like:
//some page.jsp
<script> translations = ${translations == null? '{}' : translations}; </script> since controllers wired messagesource:
@autowired messagesource messagesource; ... //the way request returned method //a map in json using messagesource return model.addattribute("translations", somejsonmap); it's working!
so in controller locale change working, in jsp pages isn't.
do know missing? or how fix it?
thanks reading until here , sorry long question.
the problem solved removing service:
module-context.xml:
<bean id="localechangeinterceptor" scope="bundle" class="org.springframework.web.servlet.i18n.localechangeinterceptor"> <property name="paramname" value="lang" /> </bean> osgi-context.xml:
<osgi:service ref="localechangeinterceptor" interface="org.springframework.web.servlet.i18n.localechangeinterceptor"/> and put module, using service, applicationcontext.xml:
<mvc:interceptors> ... <bean id="localechangeinterceptor" class="org.springframework.web.servlet.i18n.localechangeinterceptor"> <property name="paramname" value="lang" /> </bean> </mvc:interceptors>
Comments
Post a Comment