I created a Spring Boot web application that uses Thymeleaf as the template engine. I configured the MessageSource
to look for messages in a subfolder:
@Bean public MessageSource messageSource() { final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("i18n/messages"); messageSource.setFallbackToSystemLocale(false); messageSource.setCacheSeconds(0); return messageSource; }
In this folder I created the file messages_de.properties
with the content ticket.type.BUG=Fehler
. In my template I try to display the text like this:
<p th:text="#{ticket.type.BUG}">BUG</p>
But when the page is rendered, I get the following:
<p>??ticket.type.BUG_de_DE??</p>
What am I missing? Do I have to configure any additional beans?
P.S.:
On the 'server side' I am able to obtain the message using MessageSource#getMessage("ticket.type.BUG", null, Locale.GERMANY)
.
In this case, you should use th:text . For example, Username: <p th:text=${account. username}>Username will be rendered here</p> . Note that, the text inside p tag won't be shown.
Because I am using Spring Boot, the MessageSource
is configured with a MessageSourceAutoConfiguration
. These settings can be easily changed in the application.properties
file. In my case I had to add the following to this file:
spring.messages.basename=i18n/messages
And add this to your application.properties
file
#messages spring.messages.basename=i18n/messages
and store the file n the correct folder as specified above.
you don't need messageSource
bean
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With