Class: ActionController::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/locale_rails/action_controller/base.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.after_init_locale(*filters, &block) ⇒ Object

Append a block which is called after initializing locale on each WWW request.

(e.g.)

class ApplicationController < ActionController::Base
  def after_init_i18n
    L10nClass.new(Locale.candidates)
  end
  after_init_locale :after_init_i18n
  # ...
end


75
76
77
# File 'lib/locale_rails/action_controller/base.rb', line 75

def self.after_init_locale(*filters, &block)
  locale_filter_chain.append_filter_to_chain(filters, :after, &block)
end

.before_init_locale(*filters, &block) ⇒ Object

Append a block which is called before initializing locale on each WWW request.

(e.g.)

class ApplicationController < ActionController::Base
  def before_init_i18n
    if (cookies["lang"].nil? or cookies["lang"].empty?)
      params["lang"] = "ko_KR"
    end
  end
  before_init_locale :before_init_i18n
  # ...
end


61
62
63
# File 'lib/locale_rails/action_controller/base.rb', line 61

def self.before_init_locale(*filters, &block)
  locale_filter_chain.append_filter_to_chain(filters, :before, &block)
end

.locale_filter_chainObject

:nodoc:



16
17
18
19
20
21
22
23
# File 'lib/locale_rails/action_controller/base.rb', line 16

def self.locale_filter_chain # :nodoc:
  if chain = read_inheritable_attribute('locale_filter_chain')
    return chain
  else
    write_inheritable_attribute('locale_filter_chain', FilterChain.new)
    return locale_filter_chain
  end
end

Instance Method Details

#init_localeObject

:nodoc:



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/locale_rails/action_controller/base.rb', line 25

def init_locale # :nodoc:
  cgi = nil
  if defined? ::Rack
    cgi = request
  else
    if defined? request.cgi
      cgi = request.cgi
    end
  end

  fchain = self.class.locale_filter_chain
  run_before_filters(fchain.select(&:before?), 0, 0)

  cgi.params["lang"] = [params["lang"]] if params["lang"]
  Locale.set_cgi(cgi)
  if cgi.params["lang"]
    I18n.locale = cgi.params["lang"][0]
  else
    I18n.locale = nil
  end

  run_after_filters(fchain.select(&:after?), 0)
end