簡體   English   中英

springboot 2中的區域設置

[英]Locale in 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約束不會更改為。

將您的messages_pt_BR.propertieslocale ,如果你想從加載classpath:locale/messages ,因為這會搜索自己的messages_pt_BR property區域文件夾下的,所以如果你想在/locale/messages ,那么你需要通過類似下面的完整文件名路徑它將在/locale/messages文件夾下加載messages_pt_BR文件:

 @Bean
    public ReloadableResourceBundleMessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:locale/messages/messages");
        messageSource.setCacheSeconds(3600); //refresh cache once per hour
        return messageSource;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM