I need this to render a part of it in a controller like:
class MessageController {
  def index = {
    def messageMap = listAlli18nMessages() // the question
    render (contentType: "text/xml") {
       messageMap {key, message ->
          ..
       }
    }
  }
}
Finally I found an answer - override the default Grails messageSource:
class ExtendedPluginAwareResourceBundleMessageSource extends PluginAwareResourceBundleMessageSource {
    Map<String, String> listMessageCodes(Locale locale) {
        Properties properties = getMergedProperties(locale).properties
        Properties pluginProperties = getMergedPluginProperties(locale).properties
        return properties.plus(pluginProperties)
    }
}
In grails-app/conf/spring/resources.groovy:
beans = {
    messageSource(ExtendedPluginAwareResourceBundleMessageSource)  {
        basenames = "WEB-INF/grails-app/i18n/messages"
    }
}
Corresponding controller code:
class MessageController {
    def messageSource
    def index = {
        def messageMap = messageSource.listMessageCodes(request.locale)
        render (contentType: "text/xml") {
            messageMap {key, message ->
                ..
            }
        }
    }
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With