0
votes

I'm tryting to add externalized messages from a properties file in a thymeleaf html template. I have a file messages_es.properties located in i18n/messages with this inside:

estimado=Estimado:

In my html template i have the following

<div th:text="#{estimado}">Estimado placeholder</div>

but then, the html I get is the following:

<div>??estimado_es??</div>

Is anyone able to help me?


This is the configuration i have added in order to make this work:

    @Bean
    @Qualifier("custom")
    public ITemplateResolver thymeleafTemplateResolver(){
        ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
        templateResolver.setPrefix("templates/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode("HTML");
        templateResolver.setCharacterEncoding("UTF-8");
        return templateResolver;
    }

    @Bean
    public SpringTemplateEngine thymeleafTemplateEngine(@Qualifier("custom") ITemplateResolver templateResolver) {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver);
        templateEngine.setTemplateEngineMessageSource(messageSource());
        return templateEngine;
    }

    @Bean
    @Description("Spring Message Resolver")
    public ResourceBundleMessageSource messageSource() {
        ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
        messageSource.setBasename("i18n/messages");
        return messageSource;
    }

In my application.yml file:

spring.messages.basename: i18n/messages
1

1 Answers

0
votes

first of all you should add classpath: as prefix to your base name. secondly if you have baseName set toi18n/messages app will look for i18n/messages_es.properties

if i understand correctly your file path is i18n/messages/messages_es.properties so you need to set baseName to: classpath:i18n/messages/messages