国际化

1、写好国际化资源文件

welcomeinfo = welcome to mypage.com
username = USERNAME
password = PASSWORD
loginBtn = LOGIN
welcomeinfo = \u6B22\u8FCE\u6765\u5230\u6211\u7684\u4E3B\u9875
username = \u7528\u6237\u540D
password = \u5BC6\u7801
loginBtn = \u767B\u5F55

在这里插入图片描述
2、让Spring的ResourceBundleMessageSource管理国家化资源文件

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
		<property name="basename" value="loginpage/login"></property>
</bean>

3、直接去页面取值

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<h1>
	<fmt:message key="welcomeinfo"/>
</h1>
<form action="">
	<fmt:message key="username"/><input /><br>
	<fmt:message key="password"/><input /><br>
	<input type="submit" value="<fmt:message key="loginBtn"/>"/><br>
	
</form>

4、现象:是按照浏览器带来语言信息决定
SpringMVC中区域信息是由区域信息解析器得到的
在这里插入图片描述
在这里插入图片描述

程序中获取国际化相关信息

@RequestMapping("/tologinpage")
	public String tologinpage(Locale locale,Model model) {
		System.out.println(locale);
		String welcomeinfo = messageSource.getMessage("welcomeinfo", null, locale);
		System.out.println(welcomeinfo);
		model.addAttribute("国际化相关信息",welcomeinfo);
		return "login";
	}

在这里插入图片描述在这里插入图片描述

点击链接进行中英文切换(国际化信息是要能改变的)

方法一:自定义区域信息解析器
SpringMVC.xml

<!-- 自定义区域信息解析器 -->
	<bean id="localeResolver" class="com.lyj.controller.MyLocalResolver"></bean>

MyLocaleResolver

package com.lyj.controller;

import java.util.Locale;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.LocaleResolver;



public class MyLocalResolver implements LocaleResolver{
	/**
	 * 解析返回locale
	 */
	@Override
	public Locale resolveLocale(HttpServletRequest req) {
		// TODO Auto-generated method stub
		//zh_CN
		Locale l = null;
		String localeString = req.getParameter("locale");
		//如果带了locale参数就用带了的
		//如果没带就用请求头的
		if(localeString!=null&&!localeString.equals("")){
			l = new Locale(localeString.split("_")[0], localeString.split("_")[1]);
			
		}else{
			l =req.getLocale();
		}
		return l;
	}
	/**
	 * 修改locale
	 */
	@Override
	public void setLocale(HttpServletRequest arg0, HttpServletResponse arg1,
			Locale arg2) {
		throw new UnsupportedOperationException(
				"Cannot change HTTP accept header - use a different locale resolution strategy");
		
	}

}

login.jsp

<a href="tologinpage?locale=zh_CN">中文</a>/<a href="tologinpage?locale=en_US">English</a>

方法二:使用自带的SessionLocaleResolver
Controller

@RequestMapping("/tologinpage")
	public String tologinpage(@RequestParam(value="locale",defaultValue="zh_CN")String localeStr, Locale locale,Model model
			,HttpSession session) {
		/*System.out.println(locale);
		String welcomeinfo = messageSource.getMessage("welcomeinfo", null, locale);
		System.out.println(welcomeinfo);
		model.addAttribute("国际化相关信息",welcomeinfo);*/
		
		Locale l = null;
		if(localeStr!=null&&!localeStr.equals("")){
			l = new Locale(localeStr.split("_")[0], localeStr.split("_")[1]);
		}else{
			l =locale;
		}
		session.setAttribute(SessionLocaleResolver.class.getName()+".LOCALE", l);
		
		return "login";
	}

SpringMVC.xml

<!-- sessionLocaleResolver,区域信息从session中拿 -->
	<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"></bean>

方法三:SessionLocaleResolver配合LocaleChangeInterceptor拦截器
login.jsp

<a href="tologinpage?locale=zh_CN">中文</a>/<a href="tologinpage?locale=en_US">English</a>

SpringMVC

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"></bean>
	<mvc:interceptors>
		<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean>
		
	</mvc:interceptors>

controller

@RequestMapping("/tologinpage")
	public String tologinpage(@RequestParam(value="locale",defaultValue="zh_CN")String localeStr, Locale locale,Model model
			,HttpSession session) {
		
		return "login";
	}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值