forked from fedi/mastodon
51d760960c
Previously the default locale was set by Localized concern for controllers, but it was not enforced for mailers. config is enforced throughout the application and an appropriate place to set the default locale.
35 lines
670 B
Ruby
35 lines
670 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Localized
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
before_action :set_locale
|
|
end
|
|
|
|
private
|
|
|
|
def set_locale
|
|
I18n.locale = default_locale
|
|
I18n.locale = current_user.locale if user_signed_in?
|
|
rescue I18n::InvalidLocale
|
|
I18n.locale = default_locale
|
|
end
|
|
|
|
def default_locale
|
|
request_locale || I18n.default_locale
|
|
end
|
|
|
|
def request_locale
|
|
preferred_locale || compatible_locale
|
|
end
|
|
|
|
def preferred_locale
|
|
http_accept_language.preferred_language_from(I18n.available_locales)
|
|
end
|
|
|
|
def compatible_locale
|
|
http_accept_language.compatible_language_from(I18n.available_locales)
|
|
end
|
|
end
|