【问题标题】:Rails 5.1 devise_invitable gem ignoring i18n translation fileRails 5.1 devise_invitable gem 忽略 i18n 翻译文件
【发布时间】:2018-04-06 14:48:06
【问题描述】:

我添加了 devise_invitable gem 和自定义邮件。它可以正常工作并且正常的设计电子邮件(例如,confirmation_instructions)可以正确读取 i18n 文件,但invitation_instructions 不是。

这里是 devise.en.yml:

en:
  devise:
    mailer:
      confirmation_instructions:
        subject: "Hi %{first_name}, please confirm your email to activate your account"
      invitation_instructions:
        subject: "%{first_name} has invited you to join their team!"
        hello: "Oi"
        someone_invited_you: "Pig"

自定义邮件类:

class CustomDeviseMailer < Devise::Mailer

  def confirmation_instructions(record, token, opts={})
    custom_options(record, opts, :confirmation_instructions)
    super
  end

  def invitation_instructions(record, token, opts={})
    custom_options(record, opts, :invitation_instructions)
    super
  end  

  private

  def custom_options(record, opts, key)
    opts[:subject] = I18n.t('subject', scope: [:devise, :mailer, key], first_name: record.first_name)
  end

end

如果我将invitation_instructions 方法更改为:

  def invitation_instructions(record, token, opts={})
    custom_options(record, opts, :invitation_instructions)
    opts[:subject] = "TEST"
    super
  end  

然后邀请电子邮件主题正确更改为“TEST”。

那么为什么它不读取 i18n 文件呢?

注意

我还生成了默认的邀请视图,它也没有读取 i18n 文件。例如默认视图的第一行是:

\app\views\devise\mailer\invitation_instructions.html.erb

<p>
  <%= t("devise.mailer.invitation_instructions.hello", email: @resource.email) %>
</p>

应该从 i18n 文件中呈现“Oi”,但它会呈现默认的“Hello”。

【问题讨论】:

    标签: ruby-on-rails devise rails-i18n devise-invitable


    【解决方案1】:

    事实证明,devise_invitable gem 不读取 devise.en.yml,因为它创建了它的 OWN 语言环境文件:

    devise_invitable.en.yml
    

    这就是我需要自定义文本的地方。

    【讨论】:

      猜你喜欢
      • 2011-02-27
      • 2015-04-20
      • 1970-01-01
      • 2012-02-08
      • 2019-01-28
      • 1970-01-01
      • 2015-03-25
      • 2011-10-11
      • 2011-09-25
      相关资源
      最近更新 更多