Railsでi18nを使おうと思ったらハマるの巻き


個人的に開発中のRailsプロジェクトで、Validationのメッセージを日本語化するためにi18nを導入しようとしたら小一時間ハマったのでその覚書。
環境は
OS CentOS 5.4
ruby 1.8.7
Rails 2.3.5

前提として、もともとはgettextでやろうと思っていたので、以下のパッケージが導入済みでした。
gettext (2.1.0)
gettext_activerecord (2.1.0)
gettext_rails (2.1.0)
locale (2.0.5)
locale_rails (2.0.5)
しかしのちのちのことを考えると、個人の方のメンテナンスに頼らざるをえないgettextより、Rails標準のi18nの方が困ることが少ないかと思い直し、i18nの設定を行おうとした次第です。

一般的な設定手順に従ってi18nを設定し、amatsuda-i18n_generators (0.6.0) をgemでインストール。
以下のスクリプトで日本語ロケールファイルを作成。
$ ruby script/generate i18n ja

本来なら、これでとりあえずValidationのエラーメッセージが日本語化されるはずですが、なぜか
“%{attribute}%{message}”
のように、明らかに属性名やエラーメッセージで置換される前のテキストが表示されます。
この時点からしばらく悩んでいたんですが、他の参考サイトをよくよく見ると、{RAILS_ROOT}/config/locales/ja.yml の中の該当部分は
“{{attribute}}{{message}}”
のようになっています。
上記の部分だけでなく、ja.ymlの中の代替テキスト部分がすべて”%{}”の形になっていました。
ためしにすべて”{{}}”に修正したところ、あっさり成功。

amatsuda-i18n_generatorsでのja.ymlの生成時に何かおかしなことになっていたのか?
まだ原因を追いきれていませんが、とりあえずこんなことがあった、ということでご参考まで…

カテゴリー: Ruby on Rails   パーマリンク

Railsでi18nを使おうと思ったらハマるの巻き への2件のコメント

  1. くみちょー より:

    鉄道ネタかと思った…

  2. kojiro より:

    いや鉄分ないしこのブログ(^^;

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>