rails2.1.2からrails2.2.3へのアップデート
個人的に作成、使用しているrailsアプリをrails2.1.2からrails2.2.3へアップデートした時の記録。すごーく今更感満載な記事です。。。
gettext-railsが未対応
rails2.2から標準で国際化の仕組みとしてi18nをサポートするようになりました。
さらにgettext-railsはrails2.2はサポートされてないし、特にこだわりがなければrailsの標準の機能をつかっとこうということでi18nへ変更しました。
gettextの呼び出しを削除
config/environment.rbを修正
config.gem "gettext", :lib => "gettext/rails" # これを削除
app/controller/application.rbを修正
init_gettext "personal_management" # これを削除
i18n_generatorsをインストールする
バージョンは1.1.0を指定する。environment.rbのconfig.gemに指定してはいけない。i18n_generatorsのload errorになる。
gem install i18n_generators -v1.0.0 --no-rdoc --no-ri script/generate i18n ja
とりあえずgetttextの_メソッドをi18nのtメソッド等に置き替える
- '_'メソッドとか'N_'メソッドをtメソッドに変更する。
- '_'メソッドは固定的に翻訳するだけのメソッドで
- 'N_'メソッドは翻訳文字列に動的に文字列を入れている。
i18nで動的に文字列を入れこむには
t('view.hello_rails', :hoge => 'ほげ')
とやって
view: hello_rails: '%{hoge}こんにちわrails'
とオプション引数を設定して、翻訳ファイル上に%{option_key}と書く。ただし、これはrails2.3以上の機能なので、2.2では動的に変更することはあきらめる。
rails2.2はあくまでもrails2.3へのステップアップバージョン。まぁテストが通ればいい。
untranslateを使用している箇所を削除する
エラーメッセージにはActiveRecordのメソッドっぽいのが出ていたけど
gettextで翻訳対象か否かのメソッドなので、こいつを宣言しているモデルは単純にconfig/localesの翻訳ファイルに入れなければいいだけ。