2013-10-31 166 views
0

我有一個現有的Spring/GWT應用程序,我需要添加國際化。我的理解是,我可以使用Spring的「ResourceBundleMessageSource」根據用戶的位置自動選擇適當的messages_ *文件。我試過以下this tutorial,但我似乎無法讓應用程序以法語顯示我的字符串。既然這樣,我已經添加了2個文件messages_en_US.properties和messages_fr_FR.properties到我的src/main /資源/ i18n中的文件夾,並添加以下到的applicationContext.xml:Spring國際化

<bean id="messageSource" 
    class="org.springframework.context.support.ResourceBundleMessageSource"> 
    <property name="basename"> 
     <value>classpath:i18n/messages</value> 
    </property> 
</bean> 

<bean id="localeChangeInterceptor" 
    class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> 
    <property name="paramName" value="lang" /> 
</bean> 

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" > 
    <property name="interceptors"> 
     <list> 
     <ref bean="localeChangeInterceptor" /> 
     </list> 
    </property> 
</bean> 

只是想知道1)如果我需要額外的配置/膠水代碼和2)如果我可以輕鬆地進行測試,而無需在我的Redhat服務器上將Language/Locale設置爲法語。

回答

0

您的瀏覽器很可能在Accept-Header中發送「fr」語言標籤。 Spring因回退問題而臭名昭着,因此您可能需要將messages_fr_FR.properties複製爲messages_fr.properties。

我確定必須有一些配置回退的方法,所以你想不得不使用messages_en.properties(嘗試你的應用程序與其他英語區域...),只是messages.properties應該做的,但我是隻是太懶/太累了,目前找不到解決方案。

0

這裏你需要在spring.xml中指定下面的bean。

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
     <property name="basename" value="classpath:messages" /> 
     <property name="defaultEncoding" value="UTF-8" /> 
    </bean> 


    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> 
     <property name="defaultLocale" value="en"/> 
    </bean> 

    <mvc:interceptors> 
    <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> 
     <property name="paramName" value="lang" /> 
    </bean> 

    </mvc:interceptors> 

當你通過查詢字符串lang = es編輯這工作完全正常。如果還存在問題,您可以查看工作示例Here