2011-02-10 12 views
1

にメッセージから切り替えるために、次のコードは、国際化プロパティファイル内のコードのmy.message.codeに関連付けられたラベルが表示されます。これは便利、非常に簡単ですGrailsの国際化 - どのようにコード

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

うまくいきますが、オンデマンドでスイッチを有効にして、実行中のアプリケーションではなくmy.error.codeと表示するようにしたいと考えています。

このような機能の目的は、Grailsアプリケーションのユーザが特定のコードの変更を尋ねることができるようにすることです。翻訳者がアプリケーションを簡単に見直し、バッチ修正することができます。

Grailsで可能ですか?

ありがとうございました。

+0

翻訳が定義されていないi18n用の疑似言語を作成できますか?識別子を表示しませんか? – Piskvor

+0

Hmmm。いいえ、翻訳がない場合、自動的に英語にフォールバックするようです。 – Titom

答えて

1

あなたは(私はあなたが必要な場合は、グラム名前空間とメッセージタグをオーバーライドすることができると信じて)のtaglibを通じてそれを行うには、カスタムタグを作成することができます。

 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

これは良い提案です、私はこれを試してみましょう。 – Titom

0

標準のメッセージタグを無効にすることができます。クリーンな解決策ではありませんが、それは動作します:

http://grails.org/doc/latest/ref/Tags/message.html#messageからソースを取得し、独自のtaglib(標準名前空間 'g')を作成し、ソースをコピーしてtaglibに貼り付けます。これにより、すべてのgspファイルを変更する必要がなくなります。

ロケールに 'code'のような特殊な値がある場合は、メッセージコードを表示するようにコードを変更します(例)。