foodsoft/app/controllers/concerns/locale.rb
Philipp Rothmann fb2b4d8a8a chore: rubocop
chore: fix api test conventions

chore: rubocop -A spec/

chore: more rubocop -A

fix failing test

rubocop fixes

removes helper methods that are in my opinion dead code

more rubocop fixes

rubocop -a --auto-gen-config
2023-06-09 17:35:05 +02:00

50 lines
1.1 KiB
Ruby

module Concerns::Locale
extend ActiveSupport::Concern
included do
before_action :set_locale
end
def explicitly_requested_language
params[:locale]
end
def user_settings_language
current_user&.locale
end
def session_language
session[:locale]
end
def browser_language
request.env['HTTP_ACCEPT_LANGUAGE']&.scan(/^[a-z]{2}/)&.first
end
def default_language
FoodsoftConfig[:default_locale] || ::I18n.default_locale
end
private
def select_language_according_to_priority
language = explicitly_requested_language || session_language || user_settings_language
language ||= browser_language unless FoodsoftConfig[:ignore_browser_locale]
language.presence&.to_sym if language.present?
end
def available_locales
::I18n.available_locales
end
def set_locale
::I18n.locale = if available_locales.include?(select_language_according_to_priority)
select_language_according_to_priority
else
default_language
end
locale = session[:locale] = ::I18n.locale
logger.info("Set locale to #{locale}")
end
end