よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

May 09, 2006 [おもひで]

[Rails] Ruby-GetText-Packageでデフォルトのロケールを英語以外にする

アプリのmsgidとしては英語で用意するんだけど、中国のリソースを用意してかつ、中国語をデフォルトにしたい、という要望がrails MLで出たので例を書いてみた。

require 'gettext/rails'
class ApplicationController < ActionController::Base
  prepend_before_filter :default_locale
  def default_locale
    if (cookies["lang"].nil? or cookies["lang"].empty?)
      GetText.locale = "zh_CN"
    else
      GetText.locale = cookies["lang"]
    end
  end 
  init_gettext "yourapp"
end

この例はcookie["lang"]にデフォルトのロケールをセットする例。langの選択・設定自体は他にGUIを作って設定する。
場合によってはセッションを使っても良いだろうし、ユーザ毎にGUIの制御を行っている場合はデータベースの該当テーブルに設定したりすることもあるだろう。ということで、ライブラリ化は先送りかな。まぁ、Tipsということで。

[Ruby] Ruby-GetText-Package Railsでのバグ

validates_length_ofでmessageを%d付きで指定するとローカライズされないとい不具合があったので修正しました。同時にお二方からレポートいただきました。

このファイルのRevision 1.34をダウンロードしてお手元のlib/gettext/rails.rbと置き換えてください(例えば/usr/lib/ruby/gems/1.8/gems/gettext-1.5.0/lib/gettext/配下にインストールされていると思います)。

しかし、我ながらすごいソースだ・・・。見ちゃいやん。


編集