Извините за задержку, но я думаю, что это может помочь вам. У меня была точно такая же проблема с enums и i18n. Вот решение, которое я нашел:
В соответствии с указанным ранее перечислением, в ваших файлах message.properties для каждого значения перечисления должна быть запись, например:
enum.value.GENERIC
enum.value.CONFIRM_RESERVATION
enum.value.CONFIRM_ORDER
enum.value.CONFIRM_PAYMENT
Затем, когда вы хотите показать значения перечисления в элементе select, выполните следующие действия:
<g:select from="${path.to.package.Notification.values()}" keys="${path.to.package.Notification?.values()}" name="notification" valueMessagePrefix="enum.value"/>
В соответствии с документацией Grails, касающейся тега select, используется значение, указанное в атрибуте valueMessagePrefix, за которым следует точка (.), А затем значение элемента перечисления. Таким образом, он будет идти в файл message.properties и искать строки, которые вы положили раньше.
Теперь, другое, что вам нужно сделать, это, например, в списке данных показать значение перечисления для каждой записи. В этом случае вам нужно сделать следующее:
${message(code:'enum.value.'+fieldValue(bean: someDomainClass, field: "notification"))}
Это если у вас есть класс домена с одним атрибутом типа Notification.
Надеюсь, это помогло.
Bye!