国际化

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

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

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

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


国际化_第1张图片

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


国际化_第2张图片

i18n_en_US.properties(美国)。


国际化_第3张图片

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

testModelAndView

在 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 中写入:



运行项目后显示如图:


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


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

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

请求界面链接:

test i18n

在 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 中写入:


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

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

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

请求界面链接:

中文

英文

你可能感兴趣的:(国际化)