好きなGrailsプラグインシリーズその1 i18n-templates
前にもどっかに書いたかもしれませんが、山本さんに教わった「i18nテンプレートプラグイン」はわたしの好きなものの一つです。scaffold生成物は最終的には使えん、という意見も散見しますが、動的に生成させるにせよ静的に生成するにせよ、scaffoldテンプレートをかなりいじると、結構つかえる可能性もあるんじゃないかなーとおもう(マスター系管理画面などには特に)。さらにいうとお客さんの前でささーっとプロトタイプを作るのにはscaffoldは必須だし、日本語の方が取っ付きがいいですよね。
そのような向きにお勧めしたいのがscaffold画面を日本語化(多国語化)できるi18nテンプレートプラグインです。
使い方:
>grails install-plugin i18n-templates
すると、
- Controller.groovy
- create.gsp
- edit.gsp
- list.gsp
- renderEditor.template
- show.gsp
これらは、grails generate-allとかgrails generate-viewとかで静的生成するscaffoldの雛形でもあるし、動的scaffoldのGSPの雛形ともなります(GSPはある意味でHTMLの雛形なので、「雛形の雛形」ともいうべきか)。
ここまでで既に有用ですが(ここまでならgrails insatall-templatesと同様)、データ項目名などや[Edit][Delete]などのリンクも日本語化多国語化できるのがi18n-templatesの利点です。
具体的には、上を入れた後でgrails generate-i18n-messages "*"とかすると各ドメインクラス向けの多国語化メッセージファイルのベースを標準出力に表示してくれます。こんな感じです。("*"の代りにドメインクラス名を指定すると、その指定したドメインクラスに対してのみ表示されます)
# Test messages
test.create=Create Test
test.edit=Edit Test
test.list=Test List
test.new=New Test
test.show=Show Test
test.created=Test {0} created
test.updated=Test {0} updated
test.deleted=Test {0} deleted
test.not.found=Test not found with id {0}
test.id=Id
test.address=Address
test.address.nullable.error=Property [Address] of class [Test] cannot be null
test.age=Age
test.age.nullable.error=Property [Age] of class [Test] cannot be null
test.name=Name
test.name.nullable.error=Property [Name] of class [Test] cannot be null
これは「Test.groovy」というドメインクラス向けのメッセージです。
んでこれを元にちょちょいと日本語に翻訳しておきます。
# Test messages
test.create=テストを生成
test.edit=テストを編集
test.list=テストの一覧
test.new=テストを新規作成
test.show=テストを表示
test.created=テスト{0}が生成されました
test.updated=テスト{0}が更新されました
test.deleted=テスト{0}を削除しました
test.not.found=id {0}を持つテストがありません。
test.id=Id
test.address=住所
test.address.nullable.error=クラス[Test]の[住所]プロパティはnullになることができません。
test.age=年齢
test.age.nullable.error=クラス[Test]の[年齢]プロパティはnullになることができません。
test.name=名前
test.name.nullable.error=クラス[Test]の[名前]プロパティはnullになることができません。
この内容を、
ちなみに特定ドメインクラスに所属しないGeneral messageとして
home=ホーム
create=作成
edit=編集
update=更新
delete=削除
delete.confirm=まじっすか?
とかを書いておくことも出来ます。詳しくはプラグインのリファレンスをどうぞ。