[前][次][番号順一覧][スレッド一覧]

rails:953

From: Yugui <yugui@y...>
Date: Sat, 18 Feb 2006 17:42:35 +0900
Subject: [rails:953] Re: ロケールによるテンプレートの切り替え

On Mon, 13 Feb 2006 16:25:43 +0900
manabu togawa <togawamanabu@g...> wrote:
> render :template => _('aboutus')
> みたいな形にして、jpのテンプレート名を'aboutus_jp'などしてあげれば、できそうなのですが、どうせなら、Renderする時点でロケールのテンプレートを自動的に探してくれるように拡張できないかなと思ったのです。

railsの国際化対応はなんだか色々あってよく把握しておりませんが、重複を恐
れずに適当に実装してみました。 vendor/localize_templates/init.rbに下記を
置きますと、仰るような挙動になると思います。

--vendor/localize_templates/init.rb:

ActionController::Base.class_eval do
  alias render_file_without_locale render_file
  private :render_file_without_locale

  def render_file_with_locale(template_path, status = nil, use_full_path = false, locals = {})
    locale_components = locale.split('_')
    until locale_components.empty?
      localized_path = template_path + "_" + locale_components.join('_')
      return render_file_without_locale(localized_path, status, use_full_path, locals) if template_exists? localized_path

      locale_components.pop
    end
    render_file_without_locale(template_path, status, use_full_path, locals)
  end
  alias render_file render_file_with_locale

  def locale
    params[:locale] or ''
  end
end


-- 
 ゆうき or Yugui
 yugui@y...
 http://idm.s9.xrea.com

--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

       934 2006-02-13 06:57 [togawamanabu@g...   ] ロケールによるテンプレートの切り替え    
       935 2006-02-13 07:38 ┣[kazuhiko@f...       ]                                       
       936 2006-02-13 07:42 ┗[shachi@j...         ]                                       
       937 2006-02-13 08:25  ┗[togawamanabu@g...   ]                                     
->     953 2006-02-18 09:42   ┗[yugui@y...          ]                                   
       957 2006-02-20 04:25    ┗[togawamanabu@g...   ]                                 
       965 2006-02-26 10:33     ┗[yugui@y...          ]