diff --git a/app/mailers/concerns/mailer_defaults_configurable_concern.rb b/app/mailers/concerns/mailer_defaults_configurable_concern.rb index 8ab29d33f..0bf67ba86 100644 --- a/app/mailers/concerns/mailer_defaults_configurable_concern.rb +++ b/app/mailers/concerns/mailer_defaults_configurable_concern.rb @@ -32,8 +32,6 @@ module MailerDefaultsConfigurableConcern def configure_defaults_for_user(user) return if !user.is_a?(User) # not for super-admins - I18n.locale = user.locale - if user.preferred_domain_demarches_gouv_fr? set_currents_for_demarches_gouv_fr else diff --git a/app/mailers/devise_user_mailer.rb b/app/mailers/devise_user_mailer.rb index fcebeb0e1..d9acb25c3 100644 --- a/app/mailers/devise_user_mailer.rb +++ b/app/mailers/devise_user_mailer.rb @@ -33,7 +33,10 @@ class DeviseUserMailer < Devise::Mailer opts[:reply_to] = Current.no_reply_email @procedure = opts[:procedure_after_confirmation] || nil @prefill_token = opts[:prefill_token] - super + + I18n.with_locale(record.locale) do + super + end end def self.critical_email?(action_name) diff --git a/spec/mailers/devise_user_mailer_spec.rb b/spec/mailers/devise_user_mailer_spec.rb index c020e9e4f..1b6160c6b 100644 --- a/spec/mailers/devise_user_mailer_spec.rb +++ b/spec/mailers/devise_user_mailer_spec.rb @@ -19,6 +19,24 @@ RSpec.describe DeviseUserMailer, type: :mailer do expect { subject.deliver_later }.to have_enqueued_job.on_queue(Rails.application.config.action_mailer.deliver_later_queue_name) end end + + describe "i18n" do + context "when locale is fr" do + let(:user) { create(:user, locale: :fr) } + + it "uses fr locale" do + expect(subject.body).to include("Activez votre compte") + end + end + + context "when locale is en" do + let(:user) { create(:user, locale: :en) } + + it "uses en locale" do + expect(subject.body).to include("Activate account") + end + end + end end describe 'headers for user' do