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文件中的验证消息

Java Spring国际化(i18n)问题

Spring Boot 国际化(messages.properties)

Spring validation中自定义的校验错误提示信息如何支持国际化

java国际化程序时出现了这样的错误: