Как показать сообщения о локализации с параметрами в Spring 3/Thymeleaf
Я использую Spring 3 и Thymeleaf для создания некоторых веб-страниц, и я теряюсь, как показывать такие сообщения:
welcome.message = Привет {0}, добро пожаловать!
а затем замените {0} именем пользователя внутри тегов thymeleaf:
<h1 th:text="#{welcome.message}">Welcome Placeholder</h1>
Я даже не уверен, что {0} - правильный синтаксис для сообщения пакета.
Ответы
Ответ 1
Вы можете использовать
#{welcome.message(${some.attribute})}
где some.attribute
будет значением, которое следует использовать при замене {0}
.
Вы должны иметь возможность запятой разделять значения между ()
, чтобы добавить больше значений, которые будут использоваться.
Ответ 2
Вы даже можете использовать вычисленный ключ сообщения в качестве параметра:
<p th:text="#{messages.msg1(${param1})}"></p>
<p th:text="#{messages.msg2(${param2},${param3})}"></p>
<p th:text="#{messages.msg3(#{${param4}})}"></p>
Выше, параметр [msg3] является ключом сообщения [# {key}], где ключ сам рассчитывается [$ {param4}]. Преимущество состоит в том, что вы можете вставить интернационализированные вычисленные фрагменты в интернационализированное сообщение.
Ответ 3
Если вам нужно передать массив параметров, для которых вы не знаете размер массива, вы можете использовать:
<p th:text="${#messages.msgWithParams(messageKey, messageParams)}"></p>