我创建了一个使用Thymeleaf作为模板引擎的Sping 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吗?
附:
在“服务器端”,我可以使用MessageSource#getMessage("ticket.type.BUG", null, Locale.GERMANY)
获取消息。
6条答案
按热度按时间rqmkfv5c1#
因为我使用的是Sping Boot ,所以
MessageSource
配置了MessageSourceAutoConfiguration
。这些设置可以在application.properties
文件中轻松更改。在我的情况下,我不得不将以下内容添加到该文件中:n3h0vuf22#
并将其添加到
application.properties
文件中并将文件存储在上面指定的正确文件夹中。
你不需要
messageSource
beanuurity8g3#
我解决i18n消息传递的方法是像你一样定义
MessagesSource
bean。另外,我必须覆盖WebMvcConfigurerAdapter
的getValidator()
方法。在这之后,它为我工作。
6ojccjat4#
是否存在允许回退的文件
messages.properties
(无_de
)?它是否有效?您的浏览器是否设置为区域设置DE_de
?pengsaosao5#
消息源与类路径相关:
下面是我参考的关于thymeleaf和spring = http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html的教程
7dl7o3gd6#
我遇到了类似的问题。在我的例子中,faraj的方法起作用了。但我想知道为什么我不能用bean配置来做。我的代码是:
然后我突然想到,默认情况下,方法名称将是bean名称。所以我的bean名称是getMessageResource。我认为这种命名可能是配置中的问题,所以我自己命名了bean。像这样:
因此,无需进行任何其他更改,也无需对属性文件进行任何配置即可解决该问题。
我附上整个类作为一个例子:
我的资源文件结构:structure
谢谢.