网页上的双语切换(java+jsp/html)

很多网站或手机端网页都可以做双语切换,以下是利用配置文件实现双语切换的讲解(我使用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

做的就是中文“首页”和“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....");
    }

}

其中 zh_CN就是中文配置文件的后缀,但是不用把 roperties加上(zh_CN是可以更换的,只要统一就行)

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();}
			});
		}

接收js请求,实现session中语言设置切换的方法如下所示:

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"%>


    
	    
    
	
	    
	    中文
	    英语
	    
	    
	



你可能感兴趣的:(网页上的双语切换(java+jsp/html))