我是Thymeleaf的新手,我正在移动一些小脸页面以使用Thymeleaf。由于我所使用的遗留系统,我们正在使用Thymeleaf 2.1.5和xml配置。
我遇到了一个我一直难以找到适当文档的问题。我想要完成的是将本地化消息作为其他消息中的参数。
我在几个模板中有一个例子就是这样的
Some text string <a href="url">CLICK HERE</a>
属性文件的位置如下:
some.text=Some text string {0}
click.here=CLICK HERE
我尝试过这样的事情:
<p th:utext="#{some.text('<a th:utext="#{click.here}" href="url">')}"></p>
但没有运气让它上班。
另外,有没有办法本地化一个字符串,而不是它自己的dom元素的一部分?例如,我想放置一个这样的字符串:
String
而不是:
<div> String </div>
任何见解都会非常感激。谢谢。
答案 0 :(得分:3)
对于您的具体示例,这适用于Thymeleaf 3:
@IBAction func handleTouch(_ sender: UIButton) {
// assumes that the buttons' tags start at 0, which isn't a good idea.
// see @rmaddy comment bellow
let url = urls[sender.tag]
// use the version of the open method shown bellow because the other one becomes deprecated in iOS 10
UIApplication.shared.open(URL(string: url)!, options: [:], completionHandler: nil)
}
不幸的是,在输出中的链接周围生成 double 引号似乎不起作用。不知道Thymeleaf是否支持这一点。如果我找到方法,我会更新。单引号似乎有效。
但总的来说,您可能正在寻找<p th:with="openTag='<a href=\'stackoverflow.com\'>',anchorLabel=#{click.here},closeTag='</a>'" th:remove="tag" th:utext="#{some.text(${openTag+anchorLabel+closeTag})}"></p>
的某种组合来创建变量。至于您的第二个问题,您需要使用th:with
删除标记。
答案假定配置如下:
th:remove="tag"
答案 1 :(得分:0)
你应该用i18n和链接分割文本生成。你可以包装&#39; some.text&#39;在一个范围内,然后渲染链接。像这样,您可以避免utext
,并且如果需要,也可以正确生成带翻译文本的链接。
避免在生成的html中使用span的一种方法是使用属性th:remove="tag"
。
现在应该可以使用<th:block>...</>
元素来实现另一种解决方案,如果我没有弄错的话,那么您不需要再次删除标记。
<span th:remove="tag" th:text="#{some.text}">some text that will be replaced but shows in the mock</span> <a href="url" th:text="#{click.me}">CLICK HERE</a>