第09篇:MessageSource国际化
Spring Framework

公众号: 西魏陶渊明
CSDN: https://springlearn.blog.csdn.net
天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄!
一、前言
1.1 i18n
12
二、API
2.1 Locale
2.2 文件命名规范
AcceptLanguage en_US 语言解析器
LanguageTag.parse Locale#forLanguageTag en_US 要转成 en-US 中划线
LocaleResolver#resolveLocale
java
1@Override
2 public Locale resolveLocale(HttpServletRequest request) {
3 Locale defaultLocale = getDefaultLocale();
4 if (defaultLocale != null && request.getHeader("Accept-Language") == null) {
5 return defaultLocale;
6 }
7 Locale requestLocale = request.getLocale();
8 List<Locale> supportedLocales = getSupportedLocales();
9 if (supportedLocales.isEmpty() || supportedLocales.contains(requestLocale)) {
10 return requestLocale;
11 }
12 Locale supportedLocale = findSupportedLocale(request, supportedLocales);
13 if (supportedLocale != null) {
14 return supportedLocale;
15 }
16 return (defaultLocale != null ? defaultLocale : requestLocale);
17 }2.3 Spring中体系

-
MessageSource
-
HierarchicalMessageSource
-
MessageSourceSupport
-
AbstractMessageSource
-
StaticMessageSource
-
AbstractResourceBasedMessageSource
-
ResourceBundleMessageSource
-
ReloadableResourceBundleMessageSource
三、使用
后端渲染页面场景
前后端分离
3.1 spring实现原理
3.2 springboot中使用
java
1spring.mvc.locale-resolver=accept_header
2spring.messages.basename=message