一、經過springmvc配置文件映射國際化配置文件(因爲放在resoures(Maven)下,全部沒法前端沒法直接獲取)前端
<mvc:resources mapping="/i18n/messages**" location="classpath:i18n/messages**" />java
訪問路徑:http://ip:port/項目名/i18n/messages_zh_CN.propertiesjquery
二、配置一個攔截器,判斷語言web
<mvc:interceptors> <bean class="com.hollycrm.hollybeacon.business.personoa.common.interceptor.LanguageInterceptor"/></mvc:interceptors>
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse arg1, Object arg2) throws Exception { String language = request.getLocale().toString(); String country = request.getLocale().getLanguage(); request.getSession().setAttribute("lan", language);//語言 zh_CN request.getSession().setAttribute("country", country);//國家zh return true; }
三、jquery.i18n.properties解決js端的問題spring
(參考文件http://www.ibm.com/developerworks/cn/web/1305_hezj_jqueryi18n/)mvc
jQuery.i18n.properties({ name : 'messages', path : 'http://ip:port/項目名/i18n/', mode : 'map', language : '${lan}' /* callback: function() { alert( $.i18n.prop('SYS_NOTICE_NOTICESTATUS')); } */ }) 獲取值:$.i18n.prop('key');
四、jsp頁面app
//根據語言判斷basename <% java.util.Locale locale=request.getLocale(); if(locale.equals(java.util.Locale.US)){ request.setAttribute("language" ,"messages_en_US"); //out.print("Welcome to BeiJing"); }else if(locale.equals(java.util.Locale.CHINA)){ request.setAttribute("language" ,"messages_zh_CN"); //java.util.Locale.TAIWAN //out.print("北京歡迎您"); }else if(locale.equals(java.util.Locale.TAIWAN)){ request.setAttribute("language" ,"messages_zh_TW"); //java.util.Locale.TAIWAN //out.print("臺灣歡迎您"); }else{ request.setAttribute("language" ,"messages_zh_CN"); } %> <%-- 用下面種方式登陸和退出登陸的時候,會取不到Session,由於登陸頁是默認的靜態映射頁面,沒走後臺,因此不會走攔截器。 --%> <%-- <c:choose> <c:when test="${country=='en'}"> <c:set var="language" value="messages_en_US"/> </c:when> <c:otherwise> <c:choose> <c:when test="${lan=='zh_CN'}"> <c:set var="language" value="messages_zh_CN"/> </c:when> <c:when test="${lan=='zh_TW'}"> <c:set var="language" value="messages_zh_TW"/> </c:when> <c:otherwise> <c:set var="language" value="messages_zh_CN"/> </c:otherwise> </c:choose> </c:otherwise> </c:choose> --%> //設置頁面的語言解析文件 <fmt:bundle basename="${language}" > 必需要包含你全部用到標籤<fmt:message key='key'/> </fmt:bundle>