国际化

作者: 暮雨随风 | 来源:发表于2016-11-05 23:24 被阅读0次

    一、在页面上能够根据浏览器语言设置的情况对文本(不是内容)、时间、数值进行本地化处理。解决方法是通过使用 JSTL 的 fmt 标签。

    如果使用了JSTL 的 fmt 标签,需要在SpringMVC 的配置文件中配置国际化资源文件。可以根据浏览器选择的语言不通,读取不同的国际资源属性文件。(处于不同国家时,浏览器语言不同)

    <!-- 配置国际化资源文件  -->

    <bean id="messageSource"

    class="org.springframework.context.support.ResourceBundleMessageSource">

    <property name="basename" value="i18n"></property>

    </bean>

    在 src 目录下,创建名为 i18n.properties 的文件。内容如下:

    然后在 src 目录下创建中文和美国对应的 i18n.properties 文件,i18n_zh_CN.properties(中国),内容分别为中文的 用户名 和 密码,

    i18n_en_US.properties(美国)。

    接着在 请求界面写一个链接:

    <a href="/SpringMVC_3/testModelAndView">testModelAndView</a>

    在 Controller 类中写一个方法:

    @RequestMapping("/testModelAndView")

    public ModelAndView testModelAndView(){

    ModelAndView mav = new ModelAndView(success);

    return mav;

    }

    在显示界面显示:(首先需要在界面中引入 fmt 标签)

    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

    在 HTML 中的 body 中写入:

    <fmt:message key="i18n.username"></fmt:message></br>

    <fmt:message key="i18n.password"></fmt:message></br>

    运行项目后显示如图:

    选择浏览器的 Internet 选项--语言选项,找到 英语(美国),添加,设为首选。刷新界面。

    二、在 bean 中获取国际化资源文件 local 对应的消息,解决方法是在 bean 中注入 ResourceBundleMessageSource  的实例,调用其 getMessage()方法即可。

    注解掉步骤一中的通过视图名直接响应。

    <!-- <mvc:view-controller path="/i18n" view-name="i18n"/> -->

    请求界面链接:

    <a href="/SpringMVC_3/i18n">test i18n</a>

    在 Handler(Controller)中写一个响应方法。

    @Autowired

    //注入 ResourceBundleMessageSource的实例

    private ResourceBundleMessageSource messageSource; 

    @RequestMapping("/i18n")

    public String testI18n(Locale locale){

    //调用 getMessage方法获取 i18n.username 的值,输出

    String val = messageSource.getMessage("i18n.username", null, locale);

    System.out.println(val);

    return "i18n";

    响应界面 i18n.jsp 显示信息:(首先需要在界面中引入 fmt 标签)

    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

    在 HTML 中的 body 中写入:

    <fmt:message key="i18n.username"></fmt:message>

    <fmt:message key="i18n.password"></fmt:message>

    三、通过超链接切换 local ,而不再依赖与浏览器语言设置情况。解决方法是配置 LocaleResolver 和 LocaleChangeInterceptor。

    在 mvc 的配置文件中配置 LocaleResolver 和 LocaleChangeInterceptor。

    <!-- 配置SessionLocalResolver  -->

    <bean id="localeResolver "

    class="org.springframework.web.servlet.i18n.SessionLocaleResolver ">

    </bean>

    <!-- 配置LocaleChangeInterceptor -->

    <mvc:interceptors>

    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean>

    </mvc:interceptors>

    请求界面链接:

    <a href="/SpringMVC_3/i18n?local=zh_CN">中文</a>

    <a href="/SpringMVC_3/i18n?local=en_US">英文</a>

    相关文章

      网友评论

          本文标题:国际化

          本文链接:https://www.haomeiwen.com/subject/qdpguttx.html