Maven+SpringMVC+freemarker实现Java国际化对应
资源文件的导入
application-context.xml中追加的配置
<!-- 定义国际化消息 -->
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<!-- 其中basename用来指定properties文件的通用名 如实例中的messages_en.properties,messages_ja.properties通用名都是messages -->
<property name="basename" value="message" />
<property name="useCodeAsDefaultMessage" value="true" />
</bean>
<!-- 获取本地 -->
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />
前台对应获取相应值得代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String appContext = request.getContextPath();
response.setHeader("Cache-Control", "private");
%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<!DOCTYPE html>
<html>
<body>
<spring:message code="main.title" />
<spring:message code="main.target" />
<button id="airkissButton1">中文</button>
<button id="airkissButton2">English</button>
<button id="airkissButton3">日本语</button>
</body>
<script src="<%=appContext%>/js/jquery-1.11.1.min.js"></script>
<script>
$(function() {
var defaultLang = "${locale}";
if ('zh_CN' == defaultLang) {
$('#airkissButton1').hide();
$('#airkissButton2').show();
$('#airkissButton3').show();
} else if ('en_US' == defaultLang) {
$('#airkissButton1').show();
$('#airkissButton2').hide();
$('#airkissButton3').show();
} else if ('ja_JP' == defaultLang) {
$('#airkissButton1').show();
$('#airkissButton2').show();
$('#airkissButton3').hide();
}
$('#airkissButton1').click(function() {
var lang = "zh";
langSwitch(lang);
});
$('#airkissButton2').click(function() {
var lang = "en";
langSwitch(lang);
});
$('#airkissButton3').click(function() {
var lang = "ja";
langSwitch(lang);
});
var langSwitch = function langSwitch(lang) {
var url = "./langSwitch", param = {};
param.lang = lang;
// 同意声明
$.post(url, param, function(data) {
window.location.reload();
}, 'json');
};
});
</script>
</html>
Controller端代码
package com.sharp.slc.wechat.controller;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.i18n.CookieLocaleResolver;
/**
* 设备相关处理对应的Controller
*
* @author QinMingrui
*
*/
@Controller
@RequestMapping("/device")
public class DeviceManagerController {
static final String RETURN_FLAG_SUCCESS = "success";
static final String RETURN_FLAG_FAIL = "";
@Autowired
CookieLocaleResolver localeResolver;
/**
* 设备离线界面
*/
@RequestMapping(value = "/offline", method = { RequestMethod.GET })
@ResponseBody
public ModelAndView offlineInfo(HttpServletRequest request,
HttpServletResponse response) {
ModelAndView view = new ModelAndView();
localeResolver.setCookieName("language");
localeResolver.setCookieMaxAge(1800);
view.addObject("locale", localeResolver.resolveLocale(request)
.toString());
view.setViewName("Offline");
return view;
}
/**
* 设备离线界面
*/
@RequestMapping(value = "/langSwitch", method = { RequestMethod.POST })
@ResponseBody
public Map<String, Object> offlineInfo1(HttpServletRequest request,
HttpServletResponse response) {
String lang = request.getParameter("lang");
Map<String, Object> applyList = new HashMap<String, Object>();
Locale locale = null;
if ("zh".equals(lang)) {
locale = new Locale("zh", "CN");
} else if ("en".equals(lang)) {
locale = new Locale("en", "US");
} else {
locale = new Locale("ja", "JP");
}
localeResolver.setLocale(request, response, locale);
return applyList;
}
}
设置当前浏览器的语言环境
Locale locale = new Locale("en", "US"); LocaleResolver localeResolver = RequestContextUtils .getLocaleResolver(request); localeResolver.setLocale(request, response, locale);、
全心全意做开发
浙公网安备 33010602011771号