之前javaweb的时候就是用过国际化,而springmvc作为一个javaweb的框架,肯定也是支持国际化的,其建立在java国际化的基础之上,通过不同国家或语言的消息资源,通过ResourceBundle加载指定的Locale对应的资源文件,在取得该资源文件中指定key对应的消息
MessageSource
springmvc中通过messageSource来告诉springmvc国际化文件保存在哪里,常用的实现类为ResourceBundleMessageSource,使用basename(或者basenames)来指定属性文件名称,存储在basenameSet属性中
LocaleResolver
在springmvc中选择语言区域,可以使用语言区域解析器,而LocaleResolver就是springmvc中提供的区域解析器接口,实现类有
- AcceptHeaderLocaleResolver 默认解析器,读取请求头中的Accept-Language来确定使用哪个语言区域
- CookieLocaleResolver 从cookie中获取用户所设置的语言区域来确定使用哪个语言,key为org.springframework.web.servlet.i18n.CookieLocaleResolver中的LOCALE_REQUEST_ATTRIBUTE_NAME,value为所设置的Locale对象
- SessionLocaleResolver 从HttpSession作用域中获取用户设置的语言区域来确定使用的是哪个语言,key为org.springframework.web.servlet.i18n.SessionLocaleResolver中的LOCALE_SESSION_ATTRIBUTE_NAME,value为所设置的Locale对象