我创建了一个使用Thymeleaf作为模板引擎的Spring Boot Web应用程序。我将MessageSource
配置为在子文件夹中查找消息:
@Bean
public MessageSource messageSource() {
final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("i18n/messages");
messageSource.setFallbackToSystemLocale(false);
messageSource.setCacheSeconds(0);
return messageSource;
}
在此文件夹中,我使用内容messages_de.properties
创建了文件ticket.type.BUG=Fehler
。在我的模板中,我尝试显示如下文本:
<p th:text="#{ticket.type.BUG}">BUG</p>
但是当呈现页面时,我得到以下内容:
<p>??ticket.type.BUG_de_DE??</p>
我错过了什么?我是否必须配置任何其他bean?
P.S:
在服务器端&#39;我可以使用MessageSource#getMessage("ticket.type.BUG", null, Locale.GERMANY)
获取消息。
答案 0 :(得分:28)
因为我使用的是Spring Boot,MessageSource
配置了MessageSourceAutoConfiguration
。可以在application.properties
文件中轻松更改这些设置。在我的情况下,我不得不将以下内容添加到此文件中:
spring.messages.basename=i18n/messages
答案 1 :(得分:4)
并将其添加到您的application.properties
文件
#messages
spring.messages.basename=i18n/messages
并将文件存储在上面指定的正确文件夹中。
您不需要messageSource
bean
答案 2 :(得分:3)
我解决i18n消息传递的方式是像你一样定义MessagesSource
bean。另外,我必须覆盖getValidator()
的{{1}}方法。
WebMvcConfigurerAdapter
在此之后,它对我有用。
答案 3 :(得分:1)
是否存在允许回退的文件messages.properties
(无_de
)?它有用吗?您的浏览器是否设置为区域设置DE_de
?
答案 4 :(得分:0)
消息源与classpath相关:
messageSource.setBasename(" classpath:i18n/messages");
这是我为thymeleaf和spring = http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html
引用的教程