2011-05-20 30 views
2

當我將應用程序部署到tomcat時,我正在努力使本地化工作。 我有這個安裝在我的applicationContext.xml:現在Spring 3.0本地化不能在tomcat中工作,只能從本地的碼頭工作

<!-- 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> 

,當我從碼頭本地運行的本地化工作得很好。 當我從tomcat運行應用程序時,它必然會顯示language_en.properties文件中的語言,而不是我的默認文件language.properties。當我嘗試更改locale = no(挪威語)的語言環境時,網站上的語言沒有任何變化,但日誌顯示語言環境實際上更改爲「否」。

有人有任何解決方案或建議來解決這個問題,或者可能是另一種設置本地化的方法。我爲任何事情都開放。

+0

當在Tomcat中訪問應用程序時,您是否看到在響應中設置了區域cookie?您是否正在將所有'language _ *。properties'文件部署到Tomcat? – 2011-05-20 13:41:28

+0

matt b:是的cookie正在設置,它存儲了正確的語言環境,但是與該語言環境對應的語言文件未加載。 – tego 2011-05-20 20:38:01

回答

0

嘗試

的classpath *:語言

即搜索所有的classpath。根據您部署資源包的位置,它們可能會在tomcat和jetty的類加載器層次結構中的不同位置結束。

+0

謝謝,但這只是給了我一個錯誤。 – tego 2011-05-23 07:41:40

+0

然後,我會嘗試將代碼硬編碼到語言資源包的實際位置,如WEB-INF/classes/language。 – pap 2011-05-23 09:10:45

+0

這也沒有效果。我認爲所有這些都很奇怪的是它加載了language_en.properties而不是默認的language.properties文件。我不知道如何正確調試這個... – tego 2011-05-23 10:18:05

0

最後!我解決了它!

I had to set the JvmOptions: 
-Duser.language=no 
-Duser.region=NO 

,以便Tomcat使用language.properties而不是language_en.properties文件。 由於一些奇怪的原因,它現在也可以在將語言環境(?locale = en)設置爲英語時使用。

+0

希望這將有助於一些非英語作爲默認的地方程序員在未來:P – tego 2011-05-23 10:49:26