私は現在、ユーザーの言語に基づいてローカライズする必要があるメールを送信する 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