如何根据区域设置更改电子邮件语言格式?

问题描述:

我对于国家有不同的语言环境,我可以将词语翻译为其他语言,但是如何将它翻译为邮件?如何根据区域设置更改电子邮件语言格式?

application.rb中:

config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')] 
config.i18n.default_locale = 'en' 
config.i18n.available_locales = ['en', 'fr'] 

配置/语言环境/邮寄者/ en.yml:

en: 
    report_mailer: 
    report_review: 
     subject: 'Proof:' 

配置/语言环境/邮寄者/ fr.yml:

fr: 
    report_mailer: 
    report_review: 
     subject: 'ÉPREUVE:' 

在application.rb文件,我提到的语言环境为:

config.i18n.available_locales = ['en', 'fr'] 
config.i18n.fallbacks = { 'fr' => 'en'} 

在邮件的情况下,当语言环境设置为fr时,我无法进行翻译,但仍需要

应用程序/邮寄/ report_mailer.rb:

class ReportMailer < ActionMailer::Base 
    after_filter :set_delivery_options 
    def set_delivery_options 
    if @sender and @sender.use_smtp_settings? 
     message.delivery_method.settings.merge!(@sender.smtp_settings.to_settings) 
    end 
    end 
end 

应用程序/邮寄/ report_mailer.rb:

class ReportMailer < ClientMailer 
    def client_review(review, requestor, reviewer) 
    @review  = review 
    @sender  = requestor 
    @reviewer  = reviewer 
     mail(
     to:  @reviewer.email, 
     subject: t('report_mailer.report_review.subject', 
     job:  review.job.name 
    ) if [email protected]? && @reviewer.email != '' 
    end 
end 

我的一个前辈的建议增加I18n.default_locale = @ sender.account .locale或类似set_delivery_options到ReportMailer。但没有帮助我。 所以请帮助。

+0

http://*.com/a/16049411设置reviewer's/163640和http://*.com/a/11248315/163640回答类似的问题。 – eugen

+0

@eugen - 感谢您的链接。我试过但没用。我添加了application.rb,请帮助我。 – venkat

您可以使用I18n.with_locale方法

I18n.with_locale('en') do 
    mail(
    to: @reviewer.email, 
    subject: I18n.t('report_mailer.report_review.subject' 
) 
end 

我用英语,但你只需要使用的数据库

+0

什么是language_code在这里? – venkat

+0

谢谢你的回答,我尝试了**@reviewer.available_locales**,但没有帮助我。我添加了application.rb文件,请帮助我:) – venkat