FormBuilder#labelのローカライズ

http://www.yotabanana.com/hiki/ja/ruby-gettext-howto-ror.html
の方法でgettextを導入している場合、form_for中のlabelを日本語化したいとき。
gettextによってモデルのフィールドは自動的にpoファイルに抽出されるので、それを利用したいとき。
新たにlocalized_form_forを導入する。

/app/helpers/application_helper.rb

module ApplicationHelper
  def localized_form_for(object_name, *args, &proc)
    options = args.last.is_a?(Hash) ? args.pop : { }
    options.update(:builder => LocalizedFormBuilder)
    form_for(object_name, *(args << options), &proc)
  end
end

/lib/localized_form_builer.rb

class LocalizedFormBuilder < ActionView::Helpers::FormBuilder
  include GetText::Rails

  bindtextdomain("myapp")

  def label(method, text = nil, options = { })
    text ||= s_("#{@object.class}|#{method.to_s.humanize}")
    @template.label(@object_name, method, text, options.merge(:object => @object))
  end
end

/app/views/users/edit.html.hamlなど

- localized_form_for(@user) do |f|
  %table
    %tr
      %th= f.label :mail
      %td= f.text_field :mail
    %tr
      %th= f.label :login_name
      %td= f.text_field :login_name

結果