scaffoldで生成される項目名を日本語にするには
注意!以下で達成したいことは、T.Yamamotoさんがコメント欄に指摘してくれたように、I18n Templates Pluginでより高機能で汎用的でしかもより簡単に達成できますので、以下は使わないほうがいいです。
前に「scaffoldで生成される項目名が日本語にならないかなあ」という記事を書きましたが、なんとかできたので紹介。まず、id:uehaj:20080224:1203862889で示したように、grails install-templatesを実行してscaffoldのテンプレートを持ってきます。次に、Grailsプロジェクト配下(以降
diff scaffolding c:/tool/grails-1.0.1/src/grails/templates/scaffolding/ diff scaffolding/create.gsp c:/tool/grails-1.0.1/src/grails/templates/scaffolding/create.gsp 46c46 <
-
- -
diff scaffolding/edit.gsp c:/tool/grails-1.0.1/src/grails/templates/scaffolding/edit.gsp 46c46 <
- -
diff scaffolding/list.gsp c:/tool/grails-1.0.1/src/grails/templates/scaffolding/list.gsp 15d14 < 38c37 < g:sortablecolumn
- -
diff scaffolding/show.gsp c:/tool/grails-1.0.1/src/grails/templates/scaffolding/show.gsp 34c34 <g:message:
- -
要するに「${p.naturalName}」を「g:message」に置き換えます。 あとは、i18n/messages_ja.propertiesに、 フィールド変数名=日本語訳というエントリを日本語に置換したい変数分だけ記入しておけばOKです。例えばprice=価格 name=名称こんな感じ。 なお、こういうのが欲しい理由は、Grailsで顧客向けにデモをちゃっちゃと作りたいとき、scaffold(特に動的scaffold)を有効利用したいのですが、英語だと取っ付きがはるかに悪いアプリになってしまうからです。 ちなみにGroovyレベルでは日本語の変数名OKなのですが、Grailsレベルでエラーになります。こっちを何とかするのが正しい対処だったかもしれませんが、DBのフィールド名が日本語になってもアレなので、まあ、これで妥当かもしれません。