Reputation: 836
I am having different locales for countries, i am able to translate words for others but how to translate it for mailers?
application.rb:
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
config.i18n.default_locale = 'en'
config.i18n.available_locales = ['en', 'fr']
config/locales/mailers/en.yml:
en:
report_mailer:
report_review:
subject: 'Proof:'
config/locales/mailers/fr.yml:
fr:
report_mailer:
report_review:
subject: 'ÉPREUVE:'
In application.rb file, I am mentioning locales as:
config.i18n.available_locales = ['en', 'fr']
config.i18n.fallbacks = { 'fr' => 'en'}
In case of mail, I could not translate when locale is set to fr, still it is taking to en.
app/mailers/report_mailer.rb:
class ReportMailer < ActionMailer::Base
after_filter :set_delivery_options
def set_delivery_options
if @sender and @sender.use_smtp_settings?
message.delivery_method.settings.merge!(@sender.smtp_settings.to_settings)
end
end
end
app/mailers/report_mailer.rb:
class ReportMailer < ClientMailer
def client_review(review, requestor, reviewer)
@review = review
@sender = requestor
@reviewer = reviewer
mail(
to: @reviewer.email,
subject: t('report_mailer.report_review.subject',
job: review.job.name
) if [email protected]? && @reviewer.email != ''
end
end
One of my senior suggested to add I18n.default_locale = @sender.account.locale or something like that set_delivery_options to ReportMailer. But didn't helped me. So please help.
Upvotes: 0
Views: 900
Reputation: 881
You can use I18n.with_locale method
I18n.with_locale('en') do
mail(
to: @reviewer.email,
subject: I18n.t('report_mailer.report_review.subject'
)
end
I used english language but you just have to use the reviewer`s set on the database
Upvotes: 3