需要的工程jar包这里就不多说,网上有很多可以下载。下面直接入正题
- 要实现的功能如下,点击语言列表可以切换语言
2.下面是需要的一些文件
下面是几种语言的.properties文件
中文的配置文件message_zh_CN.properties(中文的会自动转码)
passwordModifyPage=\u5BC6\u7801\u4FEE\u6539\u9875\u9762
employeeId=\u5458\u5DE5\u5DE5\u53F7
changePassword=\u5BC6\u7801\u4FEE\u6539
logout=\u5B89\u5168\u9000\u51FA
admin=\u7BA1\u7406\u5458\u754C\u9762
international=\u56FD\u9645\u5316
English=\u82F1\u8BED
Chinese=\u4E2D\u6587
Japanese=\u65E5\u6587
currentLocation=\u5F53\u524D\u4F4D\u7F6E<<\u5BC6\u7801\u4FEE\u6539\u754C\u9762
oldPassword=\u539F\u5BC6\u7801
newPassword=\u65B0\u5BC6\u7801
example=\u4F8B\u5982
ConfirmPassword=\u786E\u8BA4\u65B0\u5BC6\u7801
notice=\u6CE8\u610F:\u5BC6\u7801\u53EF\u4EE5\u4E3A6-16\u4F4D\u82F1\u6587\u5B57\u6BCD\u3001\u6570\u5B57\u3002
determine=\u786E\u5B9A
cancel=\u53D6\u6D88
changePassword01=\u5BC6\u7801\u4FEE\u6539\u6210\u529F
changePassword02=\u4E24\u6B21\u65B0\u5BC6\u7801\u8F93\u5165\u4E0D\u4E00\u81F4
changePassword03=\u539F\u5BC6\u7801\u8F93\u5165\u4E0D\u6B63\u786E
英文配置文件message_en_US.properties
passwordModifyPage=Password modify page
employeeId=Employee number
changePassword=Change Password
logout=Safe exit
admin=Administrator interface
international=International
English=English
Chinese=Chinese
Japanese=Japanese
currentLocation=Current location<<Password modification interface
oldPassword=Original password
newPassword=New password
example=for example
ConfirmPassword=Confirm new password
notice=Notice:Password can be 6-16 bits of English letters, numbers
determine=Determine
cancel=Cancel
changePassword01=Password modification success
changePassword02=Two new password input inconsistent
changePassword03=The original password is not correct
spring-local.xml配置文件(上面有注释就不多说了)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
<!-- 国际化资源文件 -->
<!-- bean id必须为messageSource,不然会报错NoSuchMessageException -->
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>classpath:resource/message</value>
<value>classpath:resource/ValidationMessages</value>
</list>
</property>
<!-- 资源文件刷新间隔,默认-1,表示永不刷新 -->
<property name="cacheSeconds" value="0" />
<!-- 如果在国际化资源文件中找不到对应代码的信息,就用这个代码作为名称 -->
<property name="useCodeAsDefaultMessage" value="true" />
<property name="defaultEncoding" value="UTF-8" />
</bean>
<!-- 配置视图层 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- bean id必须为localeResolver,让DispatcherServlet可以自动侦测到它 -->
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<!-- 默认语言设置 -->
<!-- <property name="defaultLocale" value="zh" /> -->
</bean>
<mvc:interceptors>
<!-- 国际化操作拦截器 如果采用基于(请求/Session/Cookie)则必需配置 -->
<bean id="localeChangeInterceptor"
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
</bean>
</mvc:interceptors>
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
<property name="validationMessageSource" ref="messageSource" />
</bean>
</beans>
在web.xml中记得要引入
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>yzyg-wagemanage</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:config/spring-application.xml
classpath*:config/spring-mvc.xml
classpath*:config/spring-resources.xml
<!--
classpath*:config/spring-security.xml
-->
classpath*:config/spring-redis.xml
<!-- 国际化 -->
classpath*:config/spring-locale.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>charsetEncoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>charsetEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- <filter> -->
<!-- <filter-name>springSecurityFilterChain</filter-name> -->
<!-- <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> -->
<!-- </filter> -->
<!-- <filter-mapping> -->
<!-- <filter-name>springSecurityFilterChain</filter-name> -->
<!-- <url-pattern>/*</url-pattern> -->
<!-- </filter-mapping> -->
<servlet>
<servlet-name>springServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:config/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
3.jsp页面上<中文/英文/日语>的代码如下(这几个词也做了国际化)
<div style="color: white; text-align: right;">
<a href="?lang=zh_CN" style="color: white"><spring:message
code="Chinese" /></a> | <a href="?lang=en_US"
style="color: white"><spring:message code="English" /></a> | <a
href="?lang=_ja" style="color: white"><spring:message
code="Japanese" /></a>
</div>
记得在页面眉头上导入spring标签
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
截取部分做了国际化的jsp页面的代码(将需要国际化的语句用spring标签替换,code的值就是.properties文件中的key)
<div class="btn-group" style="float: right;">
<button type="button" class="btn btn-danger" style="width: 200px;">
<span class="glyphicon glyphicon-user">asdasdasdasdasdasd</span>
</button>
<button type="button" class="btn btn-danger dropdown-toggle"
data-toggle="dropdown" style="width: 80px;">
<span class="glyphicon glyphicon-cog"></span> <span class="sr-only">Toggle
Dropdown</span>
</button>
<ul class="dropdown-menu" role="menu" style="width: 280px;">
<li><a href="${ctx}/changePassword"><spring:message
code="changePassword" /></a></li>
<li><a href="${ctx}/administrator"><spring:message
code="admin" /></a></li>
<li><a href="#"><spring:message code="international" /></a></li>
<li class="divider"></li>
<li><a href="${ctx}/toLoginout"><spring:message
code="logout" /></a></li>
</ul>
</div>
4.因为js文件中无法用spring标签,如果js中也有要国际化的语句,那就需要单独建一个message.jsp文件。如下
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<style type="text/css">
<!--
.has-error {
color: #ff0000;
font-size: 10pt;
}
-->
</style>
<!-- scripts defined message -->
<script type="text/javascript">
//密码修改成功
function changePassword01() {
return '<spring:message code="changePassword01"></spring:message>';
};
//两次输入的新密码不正确
function changePassword02() {
return '<spring:message code="changePassword02"></spring:message>';
};
// 输入的原密码不正确
function changePassword03() {
return '<spring:message code="changePassword03"></spring:message>';
};
</script>
js文件如下
// /////////////////// Form提交 开始 /////////////////////
function formSubmit() {
if (!validate("passwordForm", rule, message)) {
return false;
}
var inputParams = new Input();
inputParams.employeeId = $("#employeeId").val();
inputParams.oldPassword = $("#oldPassword").val();
inputParams.newPassword = $("#newPassword").val();
inputParams.confirmPassword = $("#confirmPassword").val();
var params = JSON2.stringify(inputParams);
//js代码单独放在js文件中时,url用下面的写法
var url = "/项目名/resetPassword0101";
ajaxJson(url, true, params, function(resultObject) {
if (resultObject) {
if (resultObject.rt == "1") {
// 密码修改成功
alert(changePassword01());
} else if (resultObject.rt == "2") {
// 两次输入的新密码不正确
alert(changePassword02());
} else {
// 输入的原密码不正确
alert(changePassword03());
}
}
});
}
// ///////////////////Form提交 结束 /////////////////////
5.下面是简单的演示