使用 thymeleaf 片段变量 select i18n 短语

use thymeleaf fragment variable to select i18n phrase

我正在使用 Thymeleaf 并设置了本地化文件并且工作正常,但为了获得帮助,我想显示相关页面的帮助,所以我将页面作为片段变量传递。

我知道我可以使用 th:switch/case 并通过一系列选项,但肯定有更快的方法吗?

到目前为止对此有任何变化:

<p th:text="#{help.${page}}"></p>

仅returns

??help.${page}_en??

而不是检索 help.page3=foo bar,并显示 foo bar

我已经尝试过不使用第二个大括号,并且还添加了方括号,但到目前为止还没有成功。有什么好用的 shorthand 吗?还是我坚持设置一个开关?

是的,我意识到我可以在这一点上写 5 次开关......

你需要的是表达式preprocessing。您可以按如下方式进行:

<p th:text="${__#{help.${page}}__}"></p>

您只需要对相关变量进行表达式预处理:

<p th:text="#{help.__${page}__}"></p>