Java文件中的Spring国际化错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java文件中的Spring国际化错误相关的知识,希望对你有一定的参考价值。
我正在尝试从.java文件的messages_en.properties发送带有模板的SMS消息。
我的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}.
但是我得到了错误:
在语言环境“ en_US”下的代码“ delivery.otp.sms.template”下未找到消息
请帮助。谢谢。
答案
只需在您的基本名称中添加classpath:
。因此,最终代码如下所示:
@Bean(name = "messageSource")
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
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文件中的Spring国际化错误的主要内容,如果未能解决你的问题,请参考以下文章
Java,Spring 国际化:如何在简单字符串中使用 .properties 中的值?
java 在spring引导中通过语言环境进行i18n国际化的messages.properties文件中的验证消息
Spring Boot 国际化(messages.properties)