國際化

一、經過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>
相關文章
相關標籤/搜索