Ruby on Rails 3.2 Mailer, localize o campo assunto do correio
Atualmente estou escrevendo um mailer no RoR 3.2 que enviaria e-mails que deveriam ser localizados com base no idioma de um usuário. Eu consegui renderizar as visualizações localizadas corretas, mas estou tendo algumas dificuldades com alguns campos que exigem a alteração da localidade (como o assunto). Eu já li algumas mensagens que são contra a alteração da localidade antes de enviar o email. Os usuários têm muitos idiomas diferentes e isso significaria alterar minha localidade toda vez que um usuário receber um email.
Eu sei que seria possível alterar a localidade, enviar o email, alterar a localidade. Isso não parece o caminho dos trilhos. Existe uma maneira correta de fazer isso?
Aqui está um trecho:
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
Minhas visões
auth_mailer
invite.en.html.erb
invite.en.text.erb
invite.it.html.erb
invite.it.text.erb
...
Em suma, neste caso, gostaria de localizar o assunto: usando o @locale, mas não executando: I18n.locale = locale