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