springMVC 國際化 多語言
阿新 • • 發佈:2018-12-30
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>
以上!