我正在尝试使用 .java 文件中的 messages_en.properties 模板发送短信。
我的 WebMvcConfig 文件是:
@Bean(name = "messageSource")
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("i18n/messages");
messageSource.setDefaultEncoding(StandardCharsets.UTF_8.toString());
return messageSource;
}
我的 .java 文件是:
content = messageSource.getMessage("delivery.otp.sms.template", new Object[] {"123456"}, LocaleContextHolder.getLocale())
我的文件位于 main/resources/i18n/messages_en.properties
delivery.otp.sms.template=Your OTP is {0}.
但是我得到了错误:
No message found under code 'delivery.otp.sms.template' for locale 'en_US'
请帮忙。谢谢。
最佳答案
只需在您的基本名称中添加 classpath:
即可。所以最终的代码如下:
@Bean(name = "messageSource")
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:/i18n/messages");
messageSource.setDefaultEncoding(StandardCharsets.UTF_8.toString());
return messageSource;
}
原因是,如果您不添加 classpath:
它会将给定路径视为 abosolute
路径,但由于我们有相对路径 (main/resources/i18n/messages_en.properties
)这里,最好添加classpath:
这样,spring将从jar运行的目录中查找。
关于java - Java 文件中的 Spring 国际化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61862450/