java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot实现国际化

SpringBoot实现国际化的配置方法

作者:lang20150928

随着一个系统的规模做上去之后,国际化的问题就会逐渐暴露出来,简单来说,当你的系统面对的不再是本国的用户,而要面临海外用户时,系统必须要能适配国际化,所以本文给大家介绍了SpringBoot实现国际化的配置方法,需要的朋友可以参考下

一、什么是“国际化”(i18n)?

Spring Boot 通过 MessageSource 接口实现这一功能,而它默认使用 资源文件(properties 文件) 来存储不同语言的消息。

二、默认行为:自动配置 MessageSource

自动生效的条件:

Spring Boot 只有在 classpath 根目录下找到 messages.properties 文件时,才会自动配置 MessageSource。

也就是说:

所以:必须提供一个默认的 messages.properties,即使它是空的!

三、如何自定义资源包位置?

你可以通过 application.propertiesapplication.yml 修改默认设置:

# 指定多个资源文件基名(basename),用逗号分隔
spring.messages.basename=messages,config.i18n.messages

# 是否回退到系统本地语言(默认 true)
spring.messages.fallback-to-system-locale=false

解释:

spring.messages.basename=messages,config.i18n.messages

spring.messages.fallback-to-system-locale=false

四、资源文件命名规则

假设你的 basename 是 messages,那么 Spring 会按以下优先级查找:

用户 Locale尝试加载的文件(按顺序)
zh_CNmessages_zh_CN.propertiesmessages_zh.propertiesmessages.properties
frmessages_fr.propertiesmessages.properties
任意未知 locale直接用 messages.properties

注意:messages.properties 是兜底文件,必须存在,否则整个国际化机制不会启动!

五、代码中如何使用?

在 Controller 或 Service 中注入 MessageSource

@Autowired
private MessageSource messageSource;

@GetMapping("/greet")
public String greet(Locale locale) {
    return messageSource.getMessage("greeting", null, locale);
}

对应的 messages.properties

greeting=Hello!

messages_zh.properties

greeting=你好!

当请求带 Accept-Language: zh 时,返回“你好!”;否则返回“Hello!”。

总结关键点

要点说明
必须有 messages.properties否则 Spring Boot 不会自动配置 MessageSource
支持多组资源文件spring.messages.basename=a,b,c 配置
路径写法config.i18n.messages 表示 classpath:config/i18n/messages.properties
回退机制默认会尝试系统 locale,可通过 fallback-to-system-locale=false 关闭
文件命名basename + _ + language + _ + country + .properties

建议实践

  1. src/main/resources/ 下创建:
    • messages.properties(默认英文)
    • messages_zh.properties(中文)

application.yml 中明确配置(可选但推荐):

spring:
  messages:
    basename: messages
    fallback-to-system-locale: false
  1. 在代码中通过 MessageSource 获取本地化消息。

这样你的 Spring Boot 应用就具备了多语言能力!

到此这篇关于SpringBoot支持国际化的配置方法的文章就介绍到这了,更多相关SpringBoot支持国际化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文