项目概况

第09篇:MessageSource国际化

2026-01-291 min read后端技术
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