我目前正在用 RoR 3.2 编写一个邮件程序,它会发送应该根据用户语言进行本地化的邮件。我设法渲染了正确的本地化视图,但在某些需要更改语言环境的字段(如主题)方面遇到了一些困难。在发送电子邮件之前,我已经阅读了一些反对更改语言环境的帖子。用户有许多不同的语言,这意味着每次向用户发送电子邮件时都要更改我的语言环境。
我知道可以更改语言环境、发送电子邮件、更改回语言环境。这感觉不像是铁轨方式。有这样做的正确方法吗?
这是一个片段:
class AuthMailer < ActionMailer::Base
add_template_helper(ApplicationHelper)
default :from => PREDEF_MAIL_ADDRESSES::System[:general]
[...]
def invite(address, token, locale)
@token = token
@locale = locale
@url = url_for(:controller => "signup_requests", :action => "new", :token => token.key, :locale => locale)
mail(:subject => "Invitation", :to => address) do |format|
format.html { render ("invite."+locale) }
format.text { render ("invite."+locale) }
end
end
[...]
end
我的看法
auth_mailer
invite.en.html.erb
invite.en.text.erb
invite.it.html.erb
invite.it.text.erb
...
简而言之,在这种情况下,我想使用 @locale 本地化 :subject,而不是通过运行:I18n.locale = locale