猿问

springboot 2 中的语言环境

我试图在我的 spring-boot 2 应用程序中使用 I18N


首先,我在我的资源/语言环境/消息中创建一个名为“messages_pt_BR.properties”的文件:


Size.Ato.sercicos=Deve conter pelo menos 1 item

Size.atoRtdpj.servicos=Deve conter pelo menos 1 item

Size.servicos=msg1

Size=msg2

validacao_documento_obrigatorio=Documento: Pelo menos 1 precisa estar preenchido

然后我创建


@Configuration

public class LocaleConfiguration {


    @Bean

    public LocaleResolver localeResolver() {

        SessionLocaleResolver localeResolver = new SessionLocaleResolver();

        Locale.setDefault(new Locale("pt","BR")); // without this line when I try to get the locale the system return en_BR

        localeResolver.setDefaultLocale(new Locale("pt","BR"));

        return localeResolver;

    }


    @Bean

    public ReloadableResourceBundleMessageSource messageSource() {

        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();

        messageSource.setBasename("classpath:locale/messages");

        messageSource.setCacheSeconds(3600); //refresh cache once per hour

        return messageSource;

    }

}

然后我创建


@Component

public class Messages {


    @Autowired

    private MessageSource messageSource;


    public String getMessage(String id) {

        Locale locale = LocaleContextHolder.getLocale();

        return messageSource.getMessage(id,null,locale);

    }


}

所以在我的控制器中我使用:


@Autowired

Messages messages;


//in my method:


messages.getMessage("validacao_documento_obrigatorio")

当我尝试测试此返回此错误时:


org.springframework.context.NoSuchMessageException: No message found under code 'validacao_documento_obrigatorio' for locale 'pt_BR'.

并且 jpa 约束不会更改为。


摇曳的蔷薇
浏览 199回答 1
1回答
随时随地看视频慕课网APP

相关分类

Java
我要回答