Spring MVC國際化配置

Spring MVC國際化配置

前言

項目開發中要考慮支持國際化,框架選用的是Spring MVC框架,那麼問題來了Spring MVC如何配置並實現國際化。

實現過程(Maven項目)

對於Spring MVC的國際化這裏我是基於session來實現的,具體實現過程如下:

1、首先我們需要在XML配置文件中進行如下配置:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<!-- 國際化信息所在的文件名 -->                     
<property name="basename" value="language.messages" />   
<!-- 如果在國際化資源文件中找不到對應代碼的信息,就用這個代碼作爲名稱  -->               
<property name="useCodeAsDefaultMessage" value="true" />           
</bean>

這裏核心的配置是配置資源文件路徑"language.messages".

2. 基於session或cookies的要進行攔截配置,具體實現過程如下:

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

3、編寫Controller代碼用於切換語言。

@RequestMapping("/language")
@ResponseBody
public String lang(HttpServletRequest request){
    String langType = request.getParameter("languageType");
        if(langType.equals("zh")){
            Locale locale = new Locale("zh", "CN"); 
            request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,locale); 
        }
        else if(langType.equals("en")){
            Locale locale = new Locale("en", "US"); 
            request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,locale);
        }
        else 
            request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,LocaleContextHolder.getLocale());
        return null;
}

能夠知道的是,通過前端傳遞的語言類型,設置相應的語言環境Locale,之後Spring MVC內部根據Locale動態的選擇去加載指定語言的.porperties文件,前端通過特定的表達式進行調用顯示。

3.準備語言文件,這裏舉例中文、English: messages_en.properties 和 messages_zh.properties

裏面的內容已鍵值對的形式存儲了前端界面需要的信息(各種語言),簡單的看下英文文件裏面的內容。

ms.sysName=Manager System
ms.copyRight=CopyRight@2019 MrZhangxd
ms.languageEN=English
ms.languageZH=Chinese

4.前端界面調用

項目使用的是Velocity模板引擎構建頁面,在.vm文件中的調用方式爲如下形式:

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