spring mvc 國際化配置

要使用spring mvc配置國際化,首先用MessageSource來管理國際資源文件:

 <!-- 國際化資源文件 messageSource配置的是國際化資源文件的路徑, 
classpath:messages指的是classpath路徑下的 messages_zh_CN.properties文件和messages_en_US.properties文件 
設置“useCodeAsDefaultMessage”,默認爲false,這樣當Spring在ResourceBundle中找不到messageKey的話,就拋出NoSuchMessageException, 把它設置爲True,則找不到不會拋出異常,而是使用messageKey作爲返回值。 -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">  
        <property name="defaultEncoding" value="UTF-8" />  
        <property name="useCodeAsDefaultMessage" value="true" />  
        <property name="cacheSeconds" value="10"></property>  
        <property name="basenames">  
            <list>  
                <value>classpath:messages</value>  
            </list>  
        </property>  
</bean>

主要有三種方式:

  • 默認爲基於瀏覽器(以谷歌瀏覽器爲例,設置語言的首選項即爲默認語言,Accept-Language)

 

  • 基於Cookie

<!--CookieLocaleResolver解析會檢查客戶端是否有Cookie,裏面可能存放了地區Locale或時區TimeZone信息。如果檢查到相應的值,解析器就使用它們。通過該解析器的屬性,你可以指定cookie的名稱和其最大的存活時間。-->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
    <property name="cookieName" value="clientlanguage"/>
    <!-- 單位爲秒。若設置爲-1,則cookie不會被持久化(客戶端關閉瀏覽器後即被刪除) -->
    <property name="cookieMaxAge" value="100000">
</bean>
<mvc:interceptors>  
    <!-- 國際化操作攔截器 如果採用基於(請求/Session/Cookie)則必需配置,這個攔截器會攔截請求中的參數,然後根據參數去調用LocaleResolver的setLocale()方法,改變當前的locale值 --> 
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />  
</mvc:interceptors>  
  • 基於Session

<mvc:interceptors>  
    <!-- 國際化操作攔截器 如果採用基於(請求/Session/Cookie)則必需配置 --> 
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />  
</mvc:interceptors>  

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章