2

Я использую Ruby on Rails 3.1, и я хотел бы знать, как правильно обрабатывать интернационализацию, связанную с почтовой программой. То есть, ...Проблема с использованием драгоценного камня i18n с почтовым отправителем

... в моем app/views/users/mailer/_custom.html.erb файле у меня есть:

... 
<%= @test_email.to_s %> 
... 

... в моем app/mailers/users/mailer.rb файле у меня есть:

class Users::Mailer < ActionMailer::Base 
    def custom(user) 
    ... 
    @test_email = t('test_email') 
    # I also tried to use '@test_email = I18n.t('test_email')' 
    end 
end 

Используя приведенный выше код в @test_email.to_s текст не отображается (кажется, пустым) в отправленном письме, а I18n gem кажется, что он не выполняет правильно, что делать. Как я могу решить проблему, чтобы правильно отображать локальное сообщение в «нацеленном» теле письма?


UPDATE для @volodymyr

код вы вывесили в своем ответе не работает для меня. Я попытался также добавить следующий код в мой config/locales/defaults/en.yml файл:

en: 
    hello: Test text!!! 

Test text!!! еще не отображается в посланном по электронной почте (это пробел).

+0

Постарайтесь заключить его в кавычки. Например: ru: hello: «Test text» –

+0

@volodymyr - Проблема не связана с кавычками ... прочитайте комментарий ниже своего ответа для получения дополнительной информации. – user12882

ответ

1

Вот пример рабочего кода (I`m с помощью Rails 3.1.0 и рубиновый 1.9.3p0 (2011-10-30 ревизия 33570)):

# Fragment of mailer 
def test_locale 
    @test_email = I18n.t('hello') 
    mail(:to => "<your_email_goes_here>", :subject => "test") 
end 

# Contents of test_locale.html.erb 
String, retrieved from I18n: <%= @test_email %> 

Для тестирования я использовал Rails консоли:

MyMailer.test_locale.deliver 

Таким образом, вы должны проверить, если:

  • Эрба имя файла шаблона соответствует имени метода mailer`s
  • Там находится соответствующая запись в файл локализации
  • имена переменных в методе почтовой программы и матч файла шаблона
  • Имя папки в «мнения» совпадает с именем Мейлер

UPDATE: Попробуйте вложить строку с кавычками в локализации файла :

en: 
    hello: "Some text here" 
+0

Ваш код кажется не работает для меня. Я обновил вопрос ... – user12882

+0

Возможно, я нашел решение. Я использую жемчужину Delayed Job, и после того, как я перезапустил задания («rake jobs: work» в режиме разработки), он начал работать. Благодарю. – user12882

Смежные вопросы