Spring 3.0 本地化在 tomcat 中不起作用,只能在本地 Jetty 工作



当我将我的应用程序部署到 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)设置为英语时也可以工作。

最新更新