読者です 読者をやめる 読者になる 読者になる

( ꒪⌓꒪) ゆるよろ日記

( ゚∀゚)o彡°オパーイ!オパーイ! ( ;゚皿゚)ノシΣ フィンギィィーーッ!!!

ActiveScaffoldをgettextで国際化するときにやられたこと

とある理由で、Rails2.0をいじってます。

ActiveScaffoldをRuby-GetTextを使って日本語化しようとして、
以下の情報を参考にやってみた。

何の関連も定義していないモデルは問題なく国際化できたけど、
acts_as_treeを使ってツリー構造になっているモデルを
ActiveScaffoldで表示させようとすると、こんなエラーが発生した。

NoMethodError (You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.include?):
    /lib/localize_active_scaffold.rb:24:in `translate'
    /lib/localize_active_scaffold.rb:89:in `as_'

とりあえず、Ruby-GetTextを1.1.0から1.9.0にバージョンアップしてみる。
するとこんなエラー。

NoMethodError (undefined method `textdomainname' for ActionController::Base:Class):
    /lib/localize_active_scaffold.rb:10
    C:/dev/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
    C:/dev/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'

以下の情報を元に、localize_active_scaffoldにパッチをあてるも
状況は変わらず。
Ruby-GetText 1.90.0 では Rails 1.2.x をサポートしなくなった, Ruby-GetText 1.90.0 で localize_active_scaffold.rb を使う - underscore.jp/diary(2008-02-27)

どうも、acts_as_treeで追加されたchildrenが、
localize_active_scaffoldのas_にnilを渡しており、
例外が出ているようだ。

とりあえず、localize_active_scaffold.rb:24 translateのifに
引数がnilだったらという条件を追加して対応したが、
根本的な対応になっていない。

  def self.translate(string_to_localize)
    if string_to_localize && string_to_localize.include?('|')
      res = s_(string_to_localize)

どうしたらいいのかな?