springmvc学习笔记(13)——国际化资源文件

为什么要配置国际化资源文件

当我们所做的网站,有可能被外国人访问,或者被浏览器语言为英语的用户访问时,我们就需要配置国际化资源文件。配置之后,可以根据浏览器的语言(中文或英文),自动显示对应的语言。
先来看看配置后的效果:
这里我们使用IE浏览器,一般情况下的显示界面如下
这里写图片描述
然后点击工具->Internet选项->语言
这里写图片描述
点击添加,加入英语(美国)[en-US],点击上移,将其移动到第一行(截图中还未上移),点击确定
刷新页面,发现中文变成了英文
这里写图片描述

如何配置国际化资源文件

1.在src目录下创建三个properties文件
这里写图片描述
截图中第一个文件和第三个文件内容一致
这里写图片描述
第二个文件中,则使用中文
这里写图片描述
(当你输入中文时,会被自动编码成如图所示的内容)

2.在springmvc配置文件中加入bean

<!-- 配置国际化资源文件 -->
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basename" value="i18n"></property>  
</bean>

3.在jsp中加上标签

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

3.你想要国际化的内容处使用fmt标签

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

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

搞定!

后端也可以得到资源文件的值

在上面的例子中,前端根据浏览器的语言也显示不同的语言,其实同时在后端也能得到你要显示的值

看代码

    @Autowired
    ResourceBundleMessageSource messagesource;

    @RequestMapping("/hello")
    public String hello(Locale locale){
        String msg = messagesource.getMessage("i18n.password", null, locale);
        System.out.println(msg);
        return "hello";
    }
  • 我们需要注入一个ResourceBundleMessageSource 的实例。你应该发现了,它就是我们在springmvc配置文件中配置的那个bean
  • 在目标方法参数中加入Locale

切换浏览器语言,在控制台打印出以下结果
这里写图片描述

使用超链接切换语言

上面我们都是修改浏览器语言来切换,现在我们实现使用超链接来切换语言

首先,我们要在springmvc配置文件中配置

        <!-- 配置 SessionLocalResolver -->
    <bean id="localeResolver"
        class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
    </bean>
        <!-- 拦截器 -->
    <mvc:interceptors>
        <!-- 配置 LocaleChanceInterceptor -->
        <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"></bean>
    </mvc:interceptors>

然后,在我们的页面中加入两个超链接

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

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

    <a href="hello?locale=zh_CN">中文</a>
    <a href="hello?locale=en_US">english</a>

在页面中,点击中文
这里写图片描述

点击english
这里写图片描述

运行原理/流程

该图来自尚硅谷
这里写图片描述

备注

要使用的jar包有 jstl.jarstandard.jar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值