Tôi hiện đang viết thư trong RoR 3.2 để gửi thư cần được bản địa hóa dựa trên ngôn ngữ của người dùng. Tôi đã quản lý để hiển thị các chế độ xem được bản địa hóa chính xác nhưng tôi gặp một số khó khăn với một số trường yêu cầu thay đổi ngôn ngữ (như chủ đề). Tôi đã đọc một số bài đăng chống lại việc thay đổi ngôn ngữ trước khi gửi email. Người dùng có nhiều ngôn ngữ khác nhau và điều đó có nghĩa là thay đổi ngôn ngữ của tôi mỗi lần người dùng được gửi email.Ruby on Rails 3.2 Mailer, bản địa hóa trường chủ đề thư
Tôi biết rằng có thể thay đổi ngôn ngữ, gửi email, thay đổi lại ngôn ngữ. Điều này không giống như đường ray. Có cách nào để thực hiện điều này không?
Dưới đây là một đoạn:
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
quan điểm của tôi
auth_mailer
invite.en.html.erb
invite.en.text.erb
invite.it.html.erb
invite.it.text.erb
...
Nói tóm lại, trong trường hợp này, tôi muốn khoanh vùng: đối tượng sử dụng @locale, nhưng không phải bằng cách chạy: I18n.locale = locale
tôi chấp nhận câu trả lời của bạn vì nó vỉa hơn Rails-ish – Oktav
tôi đã cố gắng tiếp cận này, nhưng nó mang lại cho tôi một 'NameError: uninitialized UserMailer liên tục :: I18' Bất kỳ manh mối? – piffy
Xin lỗi, tôi đã nhập nhầm I18n, nó có chữ 'n' ở cuối. –