介绍
在开发现代化的多语言应用程序时,国际化是一个重要的考虑因素。Spring Boot 提供了简单且强大的国际化(i18n)配置,使得我们可以轻松地支持不同语言环境下的应用程序。
本文将介绍如何在 Spring Boot 中配置国际化,并提供一些内容丰富的示例。
i18n 配置
-
在
src/main/resources
目录下创建messages.properties
文件。此文件将包含默认的英文翻译。greeting=Hello! welcome=Welcome to my blog!
-
创建其他语言的翻译文件。例如,我们创建一个名为
messages_zh_CN.properties
的文件,用于中文翻译。greeting=你好! welcome=欢迎来到我的博客!
-
在 Spring Boot 的配置文件中,添加以下配置:
spring: messages: basename: messages cache-duration: -1
这将告诉 Spring Boot 加载名为
messages.properties
或messages_{locale}.properties
的文件。 -
在控制器或服务类中使用
MessageSource
来获取翻译的文本。示例:import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.MessageSource; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.Locale; @RestController public class GreetingController { @Autowired private MessageSource messageSource; @GetMapping("/greeting") public String greeting(@RequestParam(name = "lang", required = false, defaultValue = "en") String lang) { Locale locale = Locale.forLanguageTag(lang); return messageSource.getMessage("greeting", null, locale); } }
通过访问
/greeting?lang=en
,将返回 "Hello!",通过访问/greeting?lang=zh_CN
,将返回 "你好!"。
更多示例
除了基本的国际化配置外,Spring Boot 还提供了更多灵活的配置选项。以下是一些常见用例的示例:
-
格式化日期:
event.date=The event is on {0, date, long}.
在代码中使用:
messageSource.getMessage("event.date", new Object[]{date}, locale)
-
带参数的文本:
welcome.user=Welcome, {0}!
在代码中使用:
messageSource.getMessage("welcome.user", new Object[]{name}, locale)
-
带复数形式的文本:
event.participants={0, plural, one{1 participant} other{# participants}}
在代码中使用:
messageSource.getMessage("event.participants", new Object[]{numParticipants}, locale)
-
带选择形式的文本:
email.title={gender, select, male{Mr.} female{Ms.} other{Dear}}
在代码中使用:
messageSource.getMessage("email.title", new Object[]{gender}, locale)
总结
通过 Spring Boot 的 i18n 配置,我们可以轻松地实现多语言支持的应用程序。以上是国际化配置的基本示例和一些常见用例,希望对你理解和应用 Spring Boot i18n 有所帮助。
欢迎大家访问我的博客,希望能对你有所启发!
本文来自极简博客,作者:技术趋势洞察,转载请注明原文链接:SpringBoot i18n 配置