Я создал собственное решение с помощью пользовательской метки.
def htmlMessage = { attrs, body ->
out << g.message(attrs, body).decodeHTML()
}
Затем, чтобы определить сообщение, оно должно быть с escape-html:
my.html.message={0,choice,0#There is no elements|1#There is <strong>1</strong> element|1<There are <strong>{0}</strong> elements}
Для HTML просто:
<g:htmlMessage code="my.html.message" args="[qElements]" />
Результатом является HTML-код i18n, сгенерированный с сильным шрифтом. Как это:
"Есть 9 элементов"