当我将我的应用程序部署到 tomcat 时,我正在努力使本地化工作。我在我的应用程序上下文中设置了这个设置.xml:
<!-- Configures Handler Interceptors -->
<mvc:interceptors>
<!-- Changes the locale when a 'locale' request parameter is sent; e.g. /?locale=de -->
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" >
<property name="paramName" value="locale" />
</bean>
</mvc:interceptors>
<!-- Saves a locale change using a cookie -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="defaultLocale" value="no" />
</bean>
<!-- Application Message Bundle -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="useCodeAsDefaultMessage" value="true" />
<property name="basename" value="classpath:language" />
<property name="cacheSeconds" value="0" />
</bean>
现在,当我从本地 Jetty 运行它时,本地化工作得很好。当我从 tomcat 运行应用程序时,它会相应地显示 language_en.properties 文件中的语言,而不是我的默认文件 language.properties。当我尝试使用 ?locale=no(挪威语)更改区域设置时,网站上的语言没有任何反应,但日志显示区域设置实际上已更改为"no"。
是否有人对此有任何解决方案或建议,或者可能是设置本地化的替代方法。我对任何事情都持开放态度。
试试
类路径*:语言
即,搜索所有类路径。根据您部署资源包的位置,它们最终可能会位于 tomcat 和 jetty 的类装入器层次结构中的不同位置。
终于!我解决了!
I had to set the JvmOptions:
-Duser.language=no
-Duser.region=NO
以便 Tomcat 使用 language.properties
而不是 language_en.properties
文件。出于某种奇怪的原因,它现在在将区域设置(?locale=en)设置为英语时也可以工作。