Spring集成i18n国际化操作

步骤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"))

        

猜你喜欢

转载自blog.csdn.net/yanluandai1985/article/details/79917337