Проблемы с использованием драгоценного камня i18n с почтовой программой - PullRequest
2 голосов
/ 07 января 2012

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

... в моем 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 , кажется, не выполняет правильно то, что должно быть сделано. Как я могу решить эту проблему, чтобы правильно отобразить локальное сообщение в «нацеленном» теле письма?


ОБНОВЛЕНИЕ для @ Владимир

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

en:
  hello: Test text!!!

Test text!!! по-прежнему не отображается в отправленном электронном письме (оно пустое).

1 Ответ

1 голос
/ 07 января 2012

Вот пример рабочего кода (я использую Rails 3.1.0 и ruby ​​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

Так что вам нужно проверить:

  • Имя файла шаблона Erb совпадает с именем метода почтовой программы
  • В файле локализации имеется соответствующая запись
  • Имена переменных в методе почтовой программы и совпадении файла шаблона
  • Имя папки в "views" соответствует имени почтовой программы

ОБНОВЛЕНИЕ: Попробуйте заключить строку с кавычками в файл локализации:

en:
    hello: "Some text here"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...