fixes locales issue
This commit is contained in:
parent
c2c1961bd0
commit
47405b5b19
1 changed files with 28 additions and 29 deletions
|
@ -8,43 +8,42 @@ module Foodsoft
|
||||||
before_filter :set_locale
|
before_filter :set_locale
|
||||||
end
|
end
|
||||||
|
|
||||||
module InstanceMethods
|
def explicitly_requested_language
|
||||||
def explicitly_requested_language
|
params[:locale]
|
||||||
params[:locale]
|
end
|
||||||
|
|
||||||
|
def session_language
|
||||||
|
session[:locale]
|
||||||
|
end
|
||||||
|
|
||||||
|
def browser_language
|
||||||
|
request.env['HTTP_ACCEPT_LANGUAGE'] ? request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first : nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def default_language
|
||||||
|
::I18n.default_locale
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def select_language_according_to_priority
|
||||||
|
language = explicitly_requested_language || session_language || browser_language
|
||||||
|
language.to_sym unless language.blank?
|
||||||
|
end
|
||||||
|
|
||||||
|
def available_locales
|
||||||
|
::I18n.available_locales
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_locale
|
||||||
|
if available_locales.include?(select_language_according_to_priority)
|
||||||
|
::I18n.locale = select_language_according_to_priority
|
||||||
|
else
|
||||||
|
::I18n.locale = default_language
|
||||||
end
|
end
|
||||||
|
|
||||||
def session_language
|
locale = session[:locale] = ::I18n.locale
|
||||||
session[:locale]
|
logger.info("Set locale to #{locale}")
|
||||||
end
|
|
||||||
|
|
||||||
def browser_language
|
|
||||||
request.env['HTTP_ACCEPT_LANGUAGE'] ? request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first : nil
|
|
||||||
end
|
|
||||||
|
|
||||||
def default_language
|
|
||||||
::I18n.default_locale
|
|
||||||
end
|
|
||||||
|
|
||||||
protected
|
|
||||||
|
|
||||||
def select_language_according_to_priority
|
|
||||||
explicitly_requested_language || session_language || browser_language
|
|
||||||
end
|
|
||||||
|
|
||||||
def available_locales
|
|
||||||
::I18n.available_locales
|
|
||||||
end
|
|
||||||
|
|
||||||
def set_locale
|
|
||||||
if available_locales.include?(select_language_according_to_priority)
|
|
||||||
::I18n.locale = select_language_according_to_priority
|
|
||||||
else
|
|
||||||
::I18n.locale = default_language
|
|
||||||
end
|
|
||||||
|
|
||||||
locale = session[:locale] = ::I18n.locale
|
|
||||||
logger.info("Set locale to #{locale}")
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue