【问题标题】:How to change the email language format based on locale?如何根据区域设置更改电子邮件语言格式?
【发布时间】:2015-12-02 17:17:54
【问题描述】:

我的国家/地区有不同的语言环境,我可以为其他人翻译单词,但如何为邮寄者翻译?

应用程序.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:'

在 application.rb 文件中,我提到的语言环境为:

config.i18n.available_locales = ['en', 'fr']
config.i18n.fallbacks = { 'fr' => 'en'}

如果是邮件,当语言环境设置为 fr 时,我无法翻译,但它仍然是 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 !@reviewer.email.nil? && @reviewer.email != ''
  end
end

我的一位资深人士建议将 I18n.default_locale = @sender.account.locale 或类似 set_delivery_options 的内容添加到 ReportMailer。但没有帮助我。 所以请帮忙。

【问题讨论】:

标签: ruby-on-rails delayed-job


【解决方案1】:

你可以使用 I18n.with_locale 方法

I18n.with_locale('en') do
  mail(
    to: @reviewer.email,
    subject: I18n.t('report_mailer.report_review.subject'
  )
end

我用的是英文,但你只需要使用数据库中的审稿人设置

【讨论】:

  • 感谢您的回答,我将其作为 @reviewer.available_locales 进行了尝试,但没有帮助我。我添加了 application.rb 文件,请帮助我:)
猜你喜欢
  • 2016-03-12
  • 2020-05-10
  • 2021-02-14
  • 1970-01-01
  • 2011-01-08
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多