2015-12-02 2 views
0

У меня разные страны для стран, я могу переводить слова для других, но как перевести их для почтовых программ?Как изменить формат языка электронной почты на основе языка?

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'} 

В случае почты, я не смог перевести, если locale установлен на fr, все еще он принимает ru.

приложение/отправители/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://stackoverflow.com/a/16049411/163640 и http://stackoverflow.com/a/11248315/163640 отвечают на подобные вопросы. – eugen

+0

@eugen - Спасибо за ссылки. Я пробовал, но не использовал. Я добавил application.rb, пожалуйста, помогите мне. – venkat

ответ

3

Вы можете использовать метод I18n.with_locale

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

Я использовал английский язык, но вы просто должны использовать reviewer`s установленные на базе

+0

Что такое язык_код здесь? – venkat

+0

Спасибо за ответ, я попробовал его как **@reviewer.available_locales**, но мне не помог. Я добавил файл application.rb, пожалуйста, помогите мне :) – venkat