百里香国际化使用默认文本html

时间:2016-01-31 15:58:25

标签: spring internationalization spring-boot thymeleaf

我在春季训练中使用百里香,

<span th:text="#{home.welcome}">Welcome Default Message</span>

如果在messages.properties中找不到密钥,我有

??home.welcome_en_US??

我不想翻译messages.properties中的每条消息。我想要#34;欢迎默认消息&#34;在找不到翻译密钥消息时在html页面中写入。

我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

可能不再相关,但以下对我有用。我正在运行Thymeleaf 3.0.7.RELEASE。

<span th:text="${#strings.defaultString(#messages.msgOrNull('home.welcome'),'Welcome Default Message')}"/>

如果未找到消息,则将null传递给#string.defaultString调用,当给定null参数时,将返回“Welcome Default Message”。

更多http://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#strings

答案 1 :(得分:2)

  

仅在翻译存在的情况下有条件地显示元素

<p th:if="${#messages.msgOrNull('not.so.important.message')}" th:text="#{not.so.important.message}"></p>
     

http://lukasgrygar.com/thymeleaf/thymeleaf-tips-and-tricks/

在您的情况下可以用作:

<span>
 <th:block th:if="${#messages.msgOrNull('not.so.important.message')}" th:text="#{not.so.important.message}" />
 <th:block th:unless="${#messages.msgOrNull('not.so.important.message')}">Welcome Default Message</th:block>
</span>

如果您想要显示默认文本,那么这不是最优雅的解决方案。

请查看百里香[{3}}的#messages实用工具方法。

也许你会找到更优雅的解决方案。但是,我的例子仍然解决了你的问题。

答案 2 :(得分:1)

使用Elvis operator in Spring

<span th:text="${#messages.msgOrNull('home.welcome')?:'Welcome Default Message'}"></span>