步骤1:在Spring配置文件中加入如下配置
<!-- 国际化 --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <!-- 国际化信息所在的文件名 --> <property name="basename" value="messages/messages"/> <!-- 如果在国际化资源文件中找不到对应代码的信息,就用这个代码作为名称 --> <property name="useCodeAsDefaultMessage" value="true"/> <property name="defaultEncoding" value="UTF-8"/> <property name="cacheSeconds" value="120"/> </bean> <!--指明使用默认的语言,由basename的value_en_US.properties指定--> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"> <property name="defaultLocale" value="en_US"/> </bean>
在这个messageSource的bean规定了国际化配置文件的文件目录是 messages/messages包。
localeResolver规定了默认的语言配置文件是 messages_en_US.properties这配置文件。它就是这么规定了。
长成这样 messages/messages/messages_en_US.properties
在这两个配置文件中,分别有如下配置文件
messages_zh_CN.properties中
msg.index.login.username=用户名
messages_en_US.properties中
msg.index.login.username=username
步骤二:使用session来装配数据.
不用管这些常量,会自动导包滴,IDEA很牛。
中文环境是:
session.setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, SIMPLIFIED_CHINESE);
想用英语环境
session.setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, US);
步骤3:在JSP页面中使用这些数据
导入标签库
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>调用数据,根据session的中规定的是中文环境,还是英文环境,这将会显示不同的值。
<spring:message code="msg.index.login.username"/>
附:在后台获取properties中的数据
如下测试代码
final RequestContext requestContext = new RequestContext(request); LOGGER.info("i18n:{}",requestContext.getMessage("msg.index.login.username"));
一般用户封装到JSON数据传递给前端
比如 new JsonReponse(false,requestContext.getMessage("msg.index.login.username"))