Ruby on Rails 3.2 Mailer, zlokalizuj pole tematu wiadomości
Obecnie piszę mailer w RoR 3.2, który wysyła maile, które powinny być zlokalizowane w oparciu o język użytkownika. Udało mi się wyrenderować poprawne zlokalizowane widoki, ale mam pewne trudności z niektórymi polami, które wymagają zmiany ustawień narodowych (takich jak temat). Przeczytałem już kilka postów, które są przeciwko zmianie ustawień regionalnych przed wysłaniem wiadomości e-mail. Użytkownicy mają wiele różnych języków, co oznaczałoby zmianę moich ustawień regionalnych za każdym razem, gdy użytkownik otrzyma wiadomość e-mail.
Wiem, że można zmienić ustawienia regionalne, wysłać wiadomość e-mail, zmienić ustawienia regionalne. To nie wygląda na szynowy sposób. Czy jest to właściwy sposób?
Oto fragment:
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
Moje poglądy
auth_mailer
invite.en.html.erb
invite.en.text.erb
invite.it.html.erb
invite.it.text.erb
...
W skrócie, w tym przypadku chciałbym zlokalizować: temat używając @locale, ale nie przez uruchomienie: I18n.locale = locale