0

首先:我使用的是 Ruby On Rails 3.2.x

我有一个正在运行的观察者,它在保存订单时触发电子邮件,准确地说是两封电子邮件,一封给卖家,一封给买家。

一切正常,ActionMailer 发送电子邮件。我现在添加了多语言支持,即用户可以在他的用户设置中设置他的首选语言。

不幸的是,ActionMailer 现在以触发订单处理的用户设置的语言发送两封电子邮件,因此如果订单的另一方与发起人不同,则会收到错误的语言。

如何让 ActionMailer 在发送电子邮件时使用特定的语言环境/语言?

我确实遇到过

<%= I18n.t('daily_mail.hello', :locale => @user.locale) + @user.name %>

但这不起作用,因为我对不同的语言有不同的看法。

4

2 回答 2

0

一些进展,解决方案似乎有效,我没有注意到任何副作用。

我存储当前语言环境

tmp = I18n.locale
I18N.locale = User.find(uid).language
# send the emails
I18n.locale = tmp

这是正确的方法吗?我应该注意哪些可能的副作用?

于 2012-05-15T08:03:58.863 回答
0
I18n.with_locale(locale) do
  # send the email
end

我找到了一个更好的方法来做到这一点。

于 2020-11-26T09:08:04.953 回答