springboot根据配置的值实现后端返回给前端内容国际化
·
- 需求
- 根据配置的值实现后端返回给前端内容国际化
- 分析
- 在application.yml中设置配置和值,例如:
app.message-source-basename: classpath:i18n/messages_en_US
- 使用ReloadableResourceBundleMessageSource设置basename的值为app.message-source-basename的值
- 在方法中引用ReloadableResourceBundleMessageSource,并调用getMessage方法获取对应属性的值
- 在application.yml中设置配置和值,例如:
- 实现
- 建2个不同语言的配置文件:messages_en_US.properties和messages_en_US.properties
- 在application.yml中设置配置和值:
app.message-source-basename: classpath:i18n/messages_en_US
- 配置属性值
- messages_en_US.properties中配置USER_NAME_ISNOT_NULL=User name cannot be empty
- messages_en_US.properties中配置USER_NAME_ISNOT_NULL=用户名不能为空


- 引入ReloadableResourceBundleMessageSource
-
@Configuration public class MessageSourceConfig { @Value("${app.message-source-basename}") private String basename; @Bean public ReloadableResourceBundleMessageSource messageSourceWeb() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename(basename); messageSource.setDefaultEncoding("UTF-8"); // 设置缓存时间,单位毫秒,这里设置为不缓存,每次读取都重新加载 messageSource.setCacheSeconds(0); return messageSource; } } -
使用处引入messageSourceWeb
-
@RestController public class I18nTestController { @Autowired private MessageSource messageSourceWeb; @GetMapping("/test/i18n") public RightResponse TestI18n() { // 业务逻辑 // 返回值 return ResponseUtil.rightResponse(I18nEnum.USER_NAME_ISNOT_NULL, null, messageSourceWeb); } } - 为了返回统一格式,引入了ResponseUtil和RightResponse和状态枚举值
-
// 返回统一格式 @Data public class RightResponse { private Object data; private int code; private String msg; } // 状态枚举值 public enum I18nEnum { USER_NAME_ISNOT_NULL(1000); private int code; I18nEnum(int code) { this.code = code; } public int getCode() { return code; } } // 返回统一调用类 public class ResponseUtil { public static RightResponse rightResponse(I18nEnum i18nEnum, Object data, MessageSource messageSource) { RightResponse rightResponse = new RightResponse(); rightResponse.setCode(i18nEnum.getCode()); rightResponse.setMsg(messageSource.getMessage(i18nEnum.name(), null, LocaleContextHolder.getLocale())); rightResponse.setData(data); return rightResponse; } }
-
-
-
- 调用结果

- app.message-source-basename: classpath:i18n/messages_zh_CN

- 建2个不同语言的配置文件:messages_en_US.properties和messages_en_US.properties
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)