Rails 3 エラーメッセージ日本語化のメモ

岩崎 貴之 (sakisan@st.rim.or.jp)

この文章は、内容は間違いないが、非常にてきと〜に HTML化してあるので、ソースをコピペすると、色々関係ない文字が入って爆死するので注意されたし(笑)

Ruby 1.9.2, Rails 3.0.3, SQLite3 で確認。
環境はMac OS X 10.6.5を使用を使用した。 OSXに最初から入ってるRubyは古いので、ソースアーカイブからビルドする形でRuby 1.9.2p136が入っている。 localeはLANGとLC_ALLが共に ja_JP.UTF-8 に設定してあるが、恐らく関係ないと思う。

ソースやHTML、XMLは全部UTF-8で書くべし。
DBは適宜UTF-8を受け入れられるようにする。 (エラーメッセージとは関係ないけどね)
rubyのソースコードでエラーが出たら、1行目に
# -*- coding: utf-8 -*-
を書く。

ja.ymlを https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale/ からダウンロードし、config/locales に置く。

file: config/application.rb の38行目あたりに以下を追加。
config.i18n.default_locale = :ja

file: app/views/layouts/application.html.erb
HTMLの<HEAD>セクションに以下を追加。
<meta http-equiv="content-type" content="text/html ;charset=utf-8" />
#最近のトレンドは知らん...。

file: app/views/<name of scaffold>/_form.html.erb の4行目を書き換え。
<h2><%= pluralize(@blog.errors.count, "") %> 個のエラーが発生しました:</h2>
(pluralizeの第2パラメータの"error"を空文字列にするのを忘れないように)

以下、
rails generate scaffold Post name:string title:string content:text での場合。

validationはHelperを使う。
以下の例は、file: app/models/post.rb の場合。

class Post < ActiveRecord::Base
  validates_presence_of :name, :title
  validates_length_of :title, :minimum => 5
end

file: config/locales/ja.yml に以下の行を追加。 カラム名は適当。
localesのファイルを書き換えた場合はWEBrickの再起動が必要になる。
activerecordの設定の方は、i18n以外にも人間向けの表示用として使えそう。
yml(YAML)はスペースのインデントでブロック化する。 老眼になるとはまりやすい(爆)

helpers:
 label:
  post:
   name: "名前"
   title: "タイトル"
   content: "内容"

activerecord:
 attributes:
  post:
   name: "名前"
   title: "タイトル"
   content: "内容"

以上
have fun ;-)