module Alchemy::Admin::Locale
Private Instance Methods
available_locale()
click to toggle source
Returns either the most preferred locale that is within the list of available locales or nil
The availability of the locales is checked in the exact order of either
* the passed parameter: +params[:admin_locale]+ * the user's locale * the locale of the browser
# File lib/alchemy/admin/locale.rb, line 42 def available_locale locales = [params[:admin_locale], locale_from_user, locale_from_browser].compact.map(&:to_sym) locales.detect { |locale| Alchemy::I18n.available_locales.include?(locale) } end
locale_change_needed?()
click to toggle source
Checks if we need to change to locale or not.
# File lib/alchemy/admin/locale.rb, line 30 def locale_change_needed? params[:admin_locale].present? || session[:alchemy_locale].blank? || available_locale.nil? end
locale_from_browser()
click to toggle source
Try to get the locale from browser headers.
# File lib/alchemy/admin/locale.rb, line 66 def locale_from_browser request.env["HTTP_ACCEPT_LANGUAGE"].try(:scan, /\A[a-z]{2}/).try(:first) end
locale_from_user()
click to toggle source
Try to get the locale from user settings.
# File lib/alchemy/admin/locale.rb, line 48 def locale_from_user return if !current_alchemy_user if user_has_preferred_language? current_alchemy_user.language end end
set_translation()
click to toggle source
Sets Alchemy’s GUI translation.
Uses the most preferred locale or falls back to the default locale if none of the preferred is available.
It respects the default translation from your config/application.rb
default_locale
config option.
# File lib/alchemy/admin/locale.rb, line 20 def set_translation locale = if locale_change_needed? available_locale || ::I18n.default_locale else session[:alchemy_locale] end ::I18n.locale = session[:alchemy_locale] = locale end
user_has_preferred_language?()
click to toggle source
Checks if the current_alchemy_user
has a preferred language set or not.
# File lib/alchemy/admin/locale.rb, line 57 def user_has_preferred_language? return if !current_alchemy_user current_alchemy_user.respond_to?(:language) && current_alchemy_user.language.present? && current_alchemy_user.language.respond_to?(:to_sym) end