diff --git a/app/mailers/user_notifications.rb b/app/mailers/user_notifications.rb index 81ea701312f..d63dd23b92b 100644 --- a/app/mailers/user_notifications.rb +++ b/app/mailers/user_notifications.rb @@ -188,7 +188,7 @@ class UserNotifications < ActionMailer::Base protected def user_locale(user) - user.respond_to?(:locale) ? user.locale : nil + (user.locale.present? && I18n.available_locales.include?(user.locale.to_sym)) ? user.locale : nil end def email_post_markdown(post) diff --git a/spec/mailers/user_notifications_spec.rb b/spec/mailers/user_notifications_spec.rb index 29466c08c02..a3092909791 100644 --- a/spec/mailers/user_notifications_spec.rb +++ b/spec/mailers/user_notifications_spec.rb @@ -429,5 +429,19 @@ describe UserNotifications do end end end + + context "user locale is an empty string" do + %w(signup signup_after_approval authorize_email forgot_password admin_login account_created).each do |mail_type| + include_examples "notification derived from template" do + SiteSetting.default_locale = "en" + let(:locale) { "" } + let(:mail_type) { mail_type } + it "sets the locale" do + expects_build_with(has_entry(:locale, nil)) + end + end + end + end + end end