我已经搜索了这个站点(和其他站点),但无法找到解决方案。或者,我找到的解决方案看起来与我的做法相似。
无论如何,在用户登录后,我会根据他们的个人资料偏好更新他们的语言环境。在这种情况下,我需要将用户更新为“fr_FR”法语。有趣的是,用户登录后第一页是英文的,但是如果您离开页面,页面会变为法语,如果您返回原来的页面,则现在是法语。
当用户登录时,他们通过 HomeController 将 SessionLocaleResolver 设置/更新为应该是法语的,但下一页没有反映这一点!!。
final LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
if (localeResolver != null) {
// get the new locale name from the request param, if possible
final String newLocaleName = userProfile.getDefaultLocaleId();
if (newLocaleName != null) {
final LocaleEditor localeEditor = new LocaleEditor();
localeEditor.setAsText(newLocaleName);
// set the new locale
localeResolver.setLocale(request, response,
(Locale) localeEditor.getValue());
}
}
配置类="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<bean id="messageSource" class="
com.ecommerce.web.util.MyResourceBundleMessageSource" >
<property name="basenames" >
<util:list>
<value>resourcebundles.mybundles-ui</value>
</util:list>
</property>
</bean>
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver" >
<property name="defaultLocale" value="en" />
</bean>
这是一个类似于我的问题,但除非我读错了,否则我认为我做的事情是正确的。
我不确定我在这里缺少什么......