很多网站或手机端网页都可以做双语切换,以下是利用配置文件实现双语切换的讲解(我使用spring mvc+jsp)
我使用的切换是利用了java服务器的session来实现的(只有三个步骤,第三个步骤里面有4个操作,讲解非常详细)
1.建立两个roperties配置文件
language_en_US.properties
language_en_CN.properties
其中anguage_en_CN.properties实例内容
main.name=首页
其中anguage_en_US.properties实例内容
main.name=index
2.配置拦截器(会拦截每个请求)
每次请求都检查一下当前的语言配置,并返回给页面知晓
package *;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import java.io.IOException;
import java.util.Locale;
@WebFilter(urlPatterns = "/*")
public class LanguageFilter implements Filter {
private static final String SYSTEM_LANGUAGE = "system_language";
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
String systemLanguage = (String) httpServletRequest.getSession().getAttribute(SYSTEM_LANGUAGE);
if(StringUtils.isBlank(systemLanguage)){
systemLanguage="zh_CN";//默认为中文
}
request.setAttribute(SYSTEM_LANGUAGE, systemLanguage);
chain.doFilter(request, response);
}
@Override
public void destroy() {
System.out.println("init....");
}
}
3.页面实现语言的切换
页面实现语言切换需要几个必要因素(详细讲解后会有一个jsp的demo)
1)引用fmt文件
如果没有这个文件可以点击链接下载
<%@ taglib uri="/WEB-INF/fmt.tld" prefix="fmt"%>
2)引用语言的配置文件
其中${system_language}是获取拦截器返回的当前语言,让后拼接成配置文件的文件名,最后这个文件名会通过
3)使用配置文件中设置的语言(即:开始使用“首页”和“index”)
main.name就是配置文件中配置的那个名称
因为在拦截请求时设置默认时中文,所以现在只是完成了中文的引用,还无法切换英文。
下面我们还要一个js调用ajax的方法来实现语言切换(即:切换session中设置的zh_CN为zh_US------切换为英语)
js请求方法如下:
function changeLanguage(languge){
$.ajax({
type : "POST",
url : "/main/changeLanguge.action",//请求可以根据自己的需要进行修改
data : {languge:languge},//序列化表单里所有的内容
dataType : "json",
async : false,
success : function(data) {
location.reload();//刷新
},
error:function(){location.reload();}
});
}
package *;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller//扫描控制组件
@RequestMapping("/main")
public class mainController {
/**
* 修改设置的语言
*/
@ResponseBody
@RequestMapping(value="/changeLanguge.action")
public Map changeLanguge(String languge,HttpServletRequest request){
Map map = new HashMap();
request.getSession().setAttribute("system_language", languge);
map.put("msg", "1");
return map;
}
}
下面是jsp页面的操作
<%@ taglib uri="/WEB-INF/fmt.tld" prefix="fmt"%>
中文
英语