网站实现中英文切换

4 篇文章 0 订阅
3 篇文章 0 订阅


主要的几点:

1.中英文配置文件 message_en.properties   ,    message_zh_CN.properties;

2.

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
		<property name="basename" value="classpath:message" />
		<property name="useCodeAsDefaultMessage" value="true" />
	</bean> 
3.
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
		<property name="prefix" value="/WEB-INF/jsp/"/>
		<property name="suffix" value=".jsp"/>
	</bean>

4.进入首页,首先把language放进session中

/**
 * 直接页面跳转请求
 * @author yangpeng
 *
 */
public class Forward implements Controller{
	public Logger logger = Logger.getLogger(Forward.class);
	@Override
	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		String forward = request.getParameter("forward");
		if(forward==null){
			forward="index";
			Locale locale = request.getLocale();
			String language = locale.getLanguage();
			String country = locale.getCountry();
			if(!"".equals(country)){
				language+="-"+country;
			}
			request.getSession().setAttribute("language", language);
		}
		request.setAttribute("forward", forward);
		return new ModelAndView(forward);
	}	
}


5.

<script type="text/javascript">
			var basePath="<%=basePath%>";
			var language="<%=request.getLocale().getLanguage()%>"+"-"+"<%=request.getLocale().getCountry()%>";			
			var languageTmp = "${languageTmp}";
			if(languageTmp!=""){
				language = languageTmp;
			}
		</script>              
          
  //这里用<c:if test="${fn:length(languageTmp)!=0}"> 用<c:if test="${languageTmp!=''}"}有问题                  
                 <c:if test="${fn:length(languageTmp)!=0}">
			<fmt:setLocale value='${languageTmp}' scope='session'/>			
		</c:if>
		<c:if test="${fn:length(languageTmp)==0}">
			<fmt:setLocale value='${language}' scope='session'/>			
		</c:if>

<script type="text/javascript">

jQuery(function(){
				var topLanguage=jQuery("#topLanguage");
				if(language.indexOf("en")>-1){
					topLanguage.html("<a href=javascript:switchLanguage('zh-CN')>中文</a>");
				}else if(language.indexOf("zh")>-1){
					topLanguage.html("<a href=javascript:switchLanguage('en')>English</a>");
				}else{
					topLanguage.html("<a href=javascript:switchLanguage('zh-CN')>中文</a>");
				}
			});
			function switchLanguage(lan){									
				var url = "localeAction.htm?action=switchLanguage";
				var pars='language='+lan;
				new Ajax.Request(
				url,
					{
						method:'post',
						parameters:pars,
						onSuccess: function(originalRequest){
							window.location.reload();//页面刷新
						},
						asynchronous : true
					}
				);
			}
		</script>


6.后台

public void switchLanguage(HttpServletRequest request,HttpServletResponse response) {
		String language = request.getParameter("language");
		response.setContentType("text/html;charset=utf-8");
		response.setHeader("Cache-Contrl", "no-cache");
		// 将session中的信息更改掉
		request.getSession().setAttribute("languageTmp",language);//这里是languageTmp,如果用language的话,在页面中还是以前的语言,不知道为什么?
		try {
			response.getWriter().flush();
			response.getWriter().close();
		} catch (IOException e) {
			this.getLogger().error(e.getMessage(), e);
		}
	}





  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值