spring MVC 国际化实现配置

众里寻他千百度,蓦然回首,那人却在灯火阑珊处。。。。

这两天,一直被国际化所困扰着,一直在查询资料 ,从自己手动实现,到找到最佳实现方案,才知道,其实国际化很简单,现在将我的总结分享给大家。。。。

其实我们只要学会配置,了解国际化实现机制即可:

国际化:必备基础知识:

国际化(Internationalization,又称il8n),是越来越多的应用软件必须面临的问题,Java语言采用Unicode编码,并且提供了强大的类库支持国际化编程。采用Java语言编程,可以方便地实现应用软件界面语言的国际化。


 国际化编程常用类:使用Java语言进行国际化编程,经常要用到Locale类及ResourceBundl e类,它们都在包java.util中.
1.Locale类
Locale类包含对主要地理区域的地域化特征的封装。通过设定Locale,我们可以为特定的国家或地区提供符合当地文化习惯的语言、表达格式等。一个Locale代码 可由语言代码和地区代码组合而成。常用的两种Locale代码如下:

 语言代码 地区代码 Locale代码 说明
 en US en_US 美国英语
 zh CN zh_CN 简体中文

 

2.ResoureeBundle类
ResourceBundle类是一个抽象类,需要通过getBundle(String baseName,Locale locale)方法加载扩展名为properties的资源文件。资源文件的名称由一个基本名称和Locale代码组成,而基本名称则可以在Java程序 中调用getBundle(StringbaseName,Locale locale)方法时传人参数指定。例如,我们在程序中指定基本名称为messages,Locale代码为zh_CN, 则对应的资源文件应为messages_zh_CN.properties



3  . 接下来,看实现方式
1)applicationContext.xml 国际化相关配置:

<!--start 定义国际化消息 -->
	<bean id="messageSource"
		class="org.springframework.context.support.ResourceBundleMessageSource">

		<!-- 其中basename用来指定properties文件的通用名 如实例中的messages_en.properties,messages_ja.properties通用名都是messages -->
		<property name="basename" value="myproperties" />
		<property name="useCodeAsDefaultMessage" value="true" />

	</bean>

	<!-- 获取本地 -->
	<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />
	
	<!--end 定义国际化消息 -->

2)spring mvc配置webmvc-config.xml

<!-- 国际化操作拦截器 如果采用基于(请求/Session/Cookie)则必需配置 --> 
	<mvc:interceptors>
		<!-- Changes the locale when a 'locale' request parameter is sent; e.g.  /?locale=de -->
		<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
			<property name="paramName" value="locale" />
		</bean>
	</mvc:interceptors>
3)页面实现, 在jsp页面中引入spring标签

<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
 

下面展示的是jsp页面用spring标签直接绑定的国际化信息
 <spring:message code="money"/>
 4) 
在head页面添加国际化链接 

        <!-- start 使用message 标签配置需要显示的国际化文本,  locale  对应国际化文件中对应的键的名称  -->
        <a href="/alarm/system/user/login?locale=zh_CN">Chinese</a>
	<a href="/alarm/system/user/login?locale=en_US">English</a>

5)相关国际化文件

    a)myproperties_en_US.properties

login_title=monitoring processing system
login=login
user_name=username
password=password
verification_code=verification code
remember_me=remember the password
chinese=chinese
english=english

   b)myproperties_zh_CN.properties

login_title=告警监测处理系统
login=登录
user_name=用户名
password=密码
verification_code=验证码
remember_me=请记住我
chinese=中文
english=英文


4.页面代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8" trimDirectiveWhitespaces="true"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page import="java.io.*,java.util.*"%>
<%@ page import="javax.servlet.*,javax.servlet.http.* "%>
<jsp:include page="basemain.jsp"></jsp:include>
<!DOCTYPE html>
<html>
<!--Head-->
<head>
<style>
#change_language_chinese {
	float: left;
	padding-right: 20px;
	color: #4374e0 !important;
}

#change_language_english {
	color: #4374e0 !important;
}
</style>
<meta charset="utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><spring:message code="login_title" /></title>

<meta name="description" content="Dashboard" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="shortcut icon"
	href="<c:url value="/resources/bootstrap/assets/img/favicon.png" />"
	type="image/x-icon">

<!--Basic Styles-->
<link
	href="<c:url value="/resources/bootstrap/assets/css/bootstrap.min.css" />"
	rel="stylesheet" />
<link
	href="<c:url value="/resources/bootstrap/assets/css/font-awesome.min.css" />"
	rel="stylesheet" />

<!--Beyond styles-->
<link id="beyond-link"
	href="<c:url value="/resources/bootstrap/assets/css/beyond.min.css" />"
	rel="stylesheet" type="text/css" />
<link
	href="<c:url value="/resources/bootstrap/assets/css/typicons.min.css" />"
	rel="stylesheet" />
<link
	href="<c:url value="/resources/bootstrap/assets/css/animate.min.css" />"
	rel="stylesheet" />
<link id="skin-link" href="" rel="stylesheet" type="text/css" />
<!--Basic Scripts-->
<script
	src="<c:url value="/resources/bootstrap/assets/js/jquery.min.js" />"></script>
<script
	src="<c:url value="/resources/bootstrap/assets/js/bootstrap.min.js" />"></script>
<script
	src="<c:url value="/resources/bootstrap/assets/js/slimscroll/jquery.slimscroll.min.js" />"></script>
<!--Beyond Scripts-->
<script src="<c:url value="/resources/bootstrap/assets/js/beyond.js" />"></script>
<script>
	if (parent && parent != window && parent.location && typeof parent.location.reload === 'function') {
		parent.location.reload();
	}
	window.CMS_URL = "<%=request.getContextPath() + "/"%>";
</script>
<!--Skin Script: Place this script in head to load scripts for skins and rtl support-->
<script src="<c:url value="/resources/bootstrap/assets/js/skins.js" />"></script>

</head>
<!--Head Ends-->
<!--Body-->
<body>

	<div class="login-container animated fadeInDown">
		<c:url value="/j_spring_security_check" var="loginurl" />
		<form method="post" name="login" action="${loginurl}">
			<div id="change_language_chinese">
				<a href="/alarm/system/user/login?locale=zh_CN"><spring:message code="chinese" /></a>
			</div>
			<div id="change_language_english">
				<a href="/alarm/system/user/login?locale=en_US"><spring:message code="english" /></a>
			</div>
			<div class="loginbox bg-white">
				<div class="loginbox-title primary"><spring:message code="login_title" /></div>
				<div class="loginbox-or">
					<div class="or-line"></div>
					<div class="or"><spring:message code="login" /></div>
				</div>
				<c:if test="${not empty errorMsg}">
					<div class="loginbox-textbox red">${errorMsg}</div>
				</c:if>
				<div class="loginbox-textbox">
					<input type="text" class="form-control"
						placeholder="<spring:message code="user_name" />"
						name="j_username" autocomplete="off" />
				</div>
				<div class="loginbox-textbox">
					<input type="password" class="form-control"
						placeholder="<spring:message code="password" />"
						name="j_password" autocomplete="off" />
				</div>
				<div class="loginbox-textbox clearfix">
					<div class="col-xs-6" style="padding-left: 0px; padding-right: 5px">
						<input type="text" class="form-control "
							placeholder="<spring:message code="verification_code" />"
							name="regcode" autocomplete="off" />
					</div>
					<div class="col-xs-6" style="padding-right: 0px; padding-left: 5px">
						<img class="form-control "
							src="<c:url value='/regcode/renew' />?<%=(new java.util.Date().getTime())%>"
							οnclick="this.src+=1" style="padding: 0px" />
					</div>
				</div>
				<div class="loginbox-textbox">
					<div class="checkbox">
						<label> <input type="checkbox" class="colored-blue"
							id="remember_me" name="_spring_security_remember_me"> <span
							class="text"><spring:message code="remember_me" /></span>
						</label>
					</div>
				</div>
				<!--div class="loginbox-forgot">
					<a href="">忘记密码?</a>
				</div-->
				<div class="loginbox-submit">
					<input type="submit" class="btn btn-primary btn-block"
						value="<spring:message code="login" />" />
				</div>

			</div>
		</form>
	</div>

</body>
<!--Body Ends-->
</html>

页面截图:




  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值