インストール
sudo gem so -a http://gems.github.com #http://gems.github.comがgemのSOURCESに入ってない場合
sudo gem i amatsuda-i18n_generators
sudo gem i amatsuda-i18n_generators
設定ファイルの生成
script/generate i18n ja
exists config/locales
create config/locales/ja.yml
create config/locales/models_ja.yml
exists config/locales
create config/locales/ja.yml
create config/locales/models_ja.yml
参考:Close to the EDGE Rails 2.2の I18nによる日本語化を最も簡単に行う方法
で、実行してみると
translation missing: ja, activerecord, errors, templates , header
というエラーが出る。これは/cofig/locales/ja.ymlにバグがあって
activerecord:
errors:
template:
header:
one: "{{model}}にエラーが発生しました。"
other: "{{model}}に{{count}}つのエラーが発生しました。"
body: "次の項目を確認してください。"
activerecord:
errors:
messages:
inclusion: "は一覧にありません。"
exclusion: "は予約されています。"
activerecord:
errors:
が重複しているため。2つめのこの行を削除するとエラーが出なくなる。
参考:i18n_generators にハマった件 - you know something? | Use it for myself.
その後に/cofig/locales/ja.ymlをモデルとカラム名に合わせて以下のようにする。
例)モデル名:Topic、カラム名:body titleの場合
activerecord:これで以下のように日本語化される。
models:
topic: トピック
attributes:
topic:
body: 本文
title: タイトル
errors:
template:
header:
one: "{{model}}にエラーが発生しました。"
other: "{{model}}に{{count}}つのエラーが発生しました。"
body: "次の項目を確認してください。"
トピックに2つのエラーが発生しました。
次の項目を確認してください。
・ 本文 は1文字以上で入力してください。
・タイトル は1文字以上で入力してください。
・ 本文 は1文字以上で入力してください。
・タイトル は1文字以上で入力してください。
注意すべきは、正しくネストされていないと、正しく日本語化されない点。
例えば
activerecord:のように、カラム名の指定箇所attributesがmodelsと同じレベルになっていないと「Bodyがありません」などとなってしまう。
models:
topic: トピック
attributes:
topic:
body: 本文
title: タイトル
これが分からずに数時間格闘した・・・。
タグ:Rails