【发布时间】:2021-02-08 05:11:39
【问题描述】:
我正在用 i18n 和三种语言构建一个 Spring Boot 网站。这意味着当我在表单中有一个带有多个字符串的选择输入时(例如选择 apple/banana/carrot),我不能只将这些字符串放在模板中,我必须通过消息包运行它们。我发现我可以像这样在选择输入中简单地使用数值:
<option value="1" th:text="#{user.function[1]}">Lorem</option>
<option value="2" th:text="#{user.function[2]}">Ipsum</option>
<option value="3" th:text="#{user.function[3]}">Dolor</option>
<option value="4" th:text="#{user.function[4]}">Sit</option>
<option value="5" th:text="#{user.function[5]}">Amet</option>
然后从消息属性文件中的数组中提取实际字符串,对于英语,该文件如下所示:
user.function[1]=Lorem
user.function[2]=Ipsum
user.function[3]=Dolor
user.function[4]=Sit
user.function[5]=Ames
这似乎可以用于提取数据,因为我可以显示例如像这样的模板中的“Dolor”:
th:text="#{user.function(3)}"
当我需要使用数据库中的字段而不是简单的“3”时,就会出现问题,例如用户功能:
th:text="#{user.function(${user.function})}"
即使 ${user.function} 返回 3,上面的行也只是返回:
??user.function_en??
我做错了什么?
【问题讨论】:
标签: spring-boot internationalization thymeleaf