February 27, 2008
_ Ruby-GetText 1.90.0 では Rails 1.2.x をサポートしなくなった
なんの気無しに Ruby-GetText を 1.10.0 -> 1.90.0 に gem update すると、Rails 1.2.6 で作ったアプリで gettext が効かなくなっていた。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/44559
- Ruby on Rails 2.0をサポートしました。(Rails 1.2.xは対象外とします)
との事なので、RAILS_ROOT/config/environment.rb で "gettext/rails" を require している行の直前に以下の行を追加。
# Include your application configuration below + gem "gettext", "1.10.0" require "gettext/rails"
システムに gettext 1.10.0 がインストールされていない場合や、早まってアンイソストロールアンインストールしてしまった場合は、コマンドラインから以下のコマンドを実行。(バージョン指定付きで Ruby-GetText をインストール)
gem install gettext -v 1.10.0
_ Ruby-GetText 1.90.0 で localize_active_scaffold.rb を使う
activescaffold を手軽に日本語化するのに便利な localize_active_scaffold.rb も、同様に Ruby-GetText を 1.90.0 に update すると動かなくなってしまった。
どうやら 1.90.0 では ActionController::Base.textdomainname というメソッドが無くなってしまったようなので、以下の場当たりパッチ。
@@ -7,7 +7,11 @@
include GetText
# [09-12-07] changed to use the ActionController textdomainname and removed setting single locale
- bindtextdomain(ActionController::Base.textdomainname, :path => File.join(RAILS_ROOT, "locale"))
+ begin
+ bindtextdomain(ActionController::Base.textdomainname, :path => File.join(RAILS_ROOT, "locale"))
+ rescue
+ bindtextdomain(ActionController::Base.textdomains.flatten.first, :path => File.join(RAILS_ROOT, "locale"))
+ end
GT_LOG = Logger.new("#{RAILS_ROOT}/log/gettext.log")
GT_LOG.level = Logger::WARN
こんな感じですかのう。
[]
本日のPingbacks(全0件)
loc_stringがnilの場合はnilを返さないとまずいようなので。<br> def as_(loc_string, *args)<br>- LocalizeActiveScaffold.translate(loc_string) % args<br>+ LocalizeActiveScaffold.translate(loc_string) % args if loc_string<br> end<br>が必要かもしれない?(自信ないですが)<br><br>どうも、ActiveScaffold::DataStructures::Column#initializeにてlabelの初期値を定める時、AR#columns_hash(dbのカラムじゃないassociationとかですか)nilをas_に与えてるようで、LocalizeActiveScaffold#translateでnil.include?してしまうようでした。
ette さん<br>貴重な情報どうもありがとうございます~