2011-02-10 52 views
1

下面的代码将显示该代码my.message.code的国际化属性文件相关联的标签:Grails的国际化 - 如何从信息切换到代码

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

这是很容易的,方便的并且运行良好,但我希望按需启用交换机,以便在正在运行的应用程序中显示my.error.code

这种功能的目的是使Grails应用程序的用户能够针对特定代码提出修改请求,这将使翻译员能够轻松查看和批量修改应用程序。

Grails可能吗?

谢谢。

+0

您能为i18n创建一个伪语言吗?它不会定义任何翻译?那不会显示标识符? – Piskvor 2011-02-10 19:14:18

+0

嗯。不,当翻译缺失时,它似乎自动回退到英语。 – Titom 2011-02-18 19:19:56

回答

1

您可以创建一个自定义标签做到这一点通过标签库(我相信你可以覆盖摹命名空间和信息标签,如果你需要的话):

 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

您可以覆盖标准的消息标记。不是一个干净的解决方案,但它可以工作:

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

现在更改代码,使其显示消息代码(例如),如果区域设置具有特殊值(如“代码”)。