Grails i18n - Как переключаться с сообщений на коды - PullRequest
1 голос
/ 10 февраля 2011

Следующий код отобразит метку, связанную с кодом my.message.code в файлах свойств i18n:

<g:message code="my.message.code" />

Это очень просто, удобно и хорошо работает, но я бы хотел включить переключатель по требованию, чтобы он отображал my.error.code вместо этого в работающем приложении.

Целью такой функциональности было бы предоставление пользователям приложения Grails возможности запрашивать модификации для конкретного кода, это позволило бы простым способом просмотреть и пакетно изменить приложение переводчиками.

Возможно ли это с Граалем?

Спасибо.

Ответы [ 2 ]

1 голос
/ 10 февраля 2011

Вы можете создать собственный тег для этого через taglib (я думаю, что вы можете переопределить пространство имен g и тег сообщения, если вам нужно):

      def messageWithCode = {attrs, body ->
         if (attrs.showCode) {//You will need to pass a boolean (or retrieve from a 
// config file) to indicate whether to show the message or the code
            out << attrs.code
          } else {
            out << g.message(attrs)  
          }
       }

Кроме того, Grails всегда будет отображать код, когда не может найти сообщение, связанное с ним.

0 голосов
/ 29 июля 2011

вы можете переопределить стандартную метку сообщения. Не чистое решение, но оно будет работать:

извлеките источник из http://grails.org/doc/latest/ref/Tags/message.html#message, создайте свою собственную библиотеку тегов (со стандартным пространством имен 'g'), скопируйте и вставьте источник в свою библиотеку тегов. Это избавит вас от необходимости менять все ваши файлы gsp.

Теперь измените код таким образом, чтобы он отображал код сообщения (как пример), если у локали есть специальное значение, например, «код».

...