1. 程式人生 > >springMVC 國際化 多語言

springMVC 國際化 多語言

springMVC 國際化(多語言) 配置

系統有時需要考慮多國人員使用(比如中國人、美國人、日本人、韓國人),面向不同國家的使用者應該能方便地在不同語言之間進行切換,比如中文、英文、日文、韓文。

常用的有兩種方式:(1)根據瀏覽器預設語言設定系統語言;   (2)根據頁面連線手動選擇系統語言(放入cookie);

還有session方式,沒有細究。

一、兩種方式設定的大概模樣:

(1)瀏覽器設定

(2)頁面連線設定


二、新增多語言支援

1、新增多語言檔案*.properties

label檔案:languages_zh.properties、languages_en.properties、languages_ja.properties;

message檔案:messages_zh.properties、messages_en.properties、messages_jp.properties;

檔案內容以鍵值對錶示,如:user=User、user=\u7528\u6237\u540D、user=\u30E6\u30FC\u30B6\u30FC;

在properties檔案中中文日文等英文以外的語言顯示unicode編碼。

unicode編碼看起來確實有些不爽,現在也有好的解決方式,比如如下連線中的博文介紹:點選開啟連結

2、springMVC配置檔案:我的檔名是spring-mvc.xml

    <!-- 配置國際化資原始檔 -->
    <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    	<property name="basenames">
    		<list>
    			<value>messages</value>
    			<value>languages</value>
    		</list>
    	</property>
    </bean>
    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">	
	 	<property name="cookieMaxAge" value="604800"/>
	 	<property name="defaultLocale" value="zh_CN"/>
	 	<property name="cookieName" value="Language"></property>
     </bean>

3、頁面檔案中新增jstl標籤支援:

    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

4、頁面使用多語言標籤:

     <label><fmt:message key="user"></fmt:message>:</label> 

5、根據瀏覽器選擇語言的場合,以上處理就OK了。在頁面手動選擇語言的場合,繼續後面的操作:

(1)controller檔案中新增RequestMapping

    /**
     * 國際化設定
     * @date 2017/09
     * @param request
     * @param response
     * @throws Exception
     */
    @RequestMapping(value="/setLocal")
    public void setLocal(HttpServletRequest request,HttpServletResponse response) throws Exception{
       String localType = request.getParameter("localType");
       if(localType.equals("zh")){
           resolver.setLocale(request, response, Locale.CHINA);
       }else if(localType.equals("en")){
           resolver.setLocale(request, response, Locale.ENGLISH);
       }else {
            resolver.setLocale(request, response, Locale.JAPAN);
        }
    }

(2)登入新增連結,並使連結請求上面controller中的處理:
        <div>
		<a href="javascript:void(0)" onclick="setLocal('zh')"><fmt:message key="l.Chinese"></fmt:message></a>
		<a href="javascript:void(0)" onclick="setLocal('en')"><fmt:message key="l.English"></fmt:message></a>
		<a href="javascript:void(0)" onclick="setLocal('ja')"><fmt:message key="l.Japanese"></fmt:message></a>
	</div>

       <script type="text/javascript">
		function setLocal(local){
		  $.post(ctx+"/setLocal",{localType:local},function(result){
			  location.reload();
		  });
		}
	</script>

以上!