すでに翻訳済みだった

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'