Grails i18n - 如何从消息切换到代码

时间:2011-02-10 18:50:57

标签: grails internationalization messages

以下代码将在i18n属性文件中显示与代码my.message.code相关联的标签:

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

这非常简单,方便且运行良好但我想按需启用一个开关,因此它会在正在运行的应用程序中显示my.error.code

此类功能的目的是使Grails应用程序的用户能够对特定代码进行修改,这将使翻译人员能够轻松地审阅和批量修改应用程序。

Grails有可能吗?

感谢。

2 个答案:

答案 0 :(得分:1)

您可以通过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找不到与之关联的消息时,它将始终显示代码。

答案 1 :(得分:0)

您可以覆盖标准邮件标记。不是一个干净的解决方案,但它会起作用:

http://grails.org/doc/latest/ref/Tags/message.html#message获取源代码,创建自己的taglib(标准命名空间'g')并将源代码复制并粘贴到taglib。这样可以避免更改所有gsp文件。

现在更改代码的方式是,如果语言环境有一个像'code'这样的特殊值,它将显示消息代码(例如)。