すでに翻訳済みだった
Rails の scaffold でモデルやページを生成すると、エラーメッセージの表示などは勝手に組み込んでくれるので、それをそのまま利用していた。
でもエラーメッセージのタイトルはそのまま
<h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>
とかなってる。単純に日本語に書き換えてもいいけど何だかカッコ悪い。
ありがたいことに、i18n_generators なるプラグインを導入すると、オフィシャルな翻訳ファイルを取ってきて config/locale の下に置いてくれる
rails g i18n_locale ja
ja.yml をよく見ると
activerecord: errors: template: header: one: "%{model}にエラーが発生しました。" other: "%{model}に%{count}つのエラーが発生しました。" body: "次の項目を確認してください。"
て、もう既に書いてあるよ!
ちうわけで、ビューに
<h2><%= t(:header, :model => t(:user, :scope => [:activerecord, :models]), :count => @user.errors.count, :scope => [:activerecord, :errors, :template]) %></h2> <p><%= t(:body, :scope => [:activerecord, :errors, :template]) %></p>
とか書くだけ。
ちなみに i18n_generators は、作成済みのモデルから適当に翻訳ファイルを作成してくれる、という優れものだよ
rails g i18n_translation ja
(2011/6/18)
2011年6月18日の時点で、HEAD を git 経由で取ってこないと動かない。
gem 'i18n_generators', :git => 'git://github.com/amatsuda/i18n_generators'