以下代码将在i18n属性文件中显示与代码my.message.code相关联的标签:
<g:message code="my.message.code" />
这非常简单,方便且运行良好但我想按需启用一个开关,因此它会在正在运行的应用程序中显示my.error.code
。
此类功能的目的是使Grails应用程序的用户能够对特定代码进行修改,这将使翻译人员能够轻松地审阅和批量修改应用程序。
Grails有可能吗?
感谢。
答案 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'这样的特殊值,它将显示消息代码(例如)。