前言
在全球化业务场景下,系统适配多语言已成为标配需求。SpringBoot 作为主流的 Java 开发框架,提供了完善的国际化(i18n)解决方案。本文将从实战角度出发,完整讲解两种企业级 i18n 实现方案:基于配置文件的静态实现(适配简体中文、繁体中文、英文)和基于数据库的动态实现(支持运行时修改语言配置),同时覆盖校验注解国际化、性能优化、常见问题排查等核心要点。
一、国际化基础认知
1.1 核心概念
i18n 的核心目标是让系统在不修改代码的前提下,通过配置适配不同语言和地区的使用习惯。SpringBoot 中实现 i18n 的核心依赖是:
MessageSource:消息源接口,负责加载和解析多语言消息,默认实现为ResourceBundleMessageSource(基于配置文件)。Accept-Language:语言地区标识,格式为语言代码_国家/地区代码,如:- 简体中文:
zh_CN - 繁体中文:
zh_TW - 英文(美国):
en_US
- 简体中文:
LocaleResolver:语言解析器,负责从请求中获取/设置当前 Locale。LocaleChangeInterceptor:语言切换拦截器,用于拦截请求参数实现语言动态切换。
1.2 核心原理
SpringBoot 启动时,MessageSource 会加载指定路径下的多语言配置文件;当业务代码获取国际化消息时,框架会根据当前 Accept-Language 从对应配置文件/数据源中匹配消息键(Key),返回对应的消息值(Value)。
二、方式一:基于配置文件的 i18n 实现
2.1 环境准备
2.1.1 依赖配置
新建 SpringBoot 项目(推荐 2.7.x 或 3.2.x),核心依赖仅需 spring-boot-starter-web,无需额外依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 可选:简化配置文件编写(.yml) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation

