Решение
В вашем Railsproject создайте почтовик (читайте http://guides.rubyonrails.org/action_mailer_basics.html, как его создать). Например, UserMailer.
rails g mailer UserMailer
Определите метод, например, mail_user.
def mail_user(user)
@user = user
mail(:to => "test example <testuser@testuser.com>", :subject => "hello")
end
Теперь определите виды. Например: mail_user.de.html.erb и mail_user.en.html.erb. Поместите туда свои переводы. Если вы хотите перевести переменные отдельно, используйте:
<%= I18n.t("foo.bar") %>
Когда вы сделаете это, убедитесь, что у вас есть перевод en.yml и de.yml! Определите перевод, как в следующем примере:
foo:
bar: hello
Ты должен быть готов к работе.
Как это работает
ActionMailer работает следующим образом. Вы можете создавать модели почтовых программ, которые наследуются от ActionMailer :: Base. Как и ActionController, модели имеют связанные представления (шаблоны) в каталоге / app / views /.
Теперь вот техническая часть и почему это все волшебно работает. ActionController и ActionMailer по умолчанию включают в себя AbstractController :: Rendering прямо или косвенно (ActionController :: Metal :: Rendering). AbstractController :: Rendering использует ActionView в качестве библиотеки по умолчанию для своего механизма визуализации шаблонов и включает AbstractController :: ViewPaths и экземпляр прокси I18n для поиска локализованных представлений. Чтобы узнать больше, я хотел бы обратиться к исходному коду ActionPack на github.
Чтобы добраться до сути. ActionView позволяет использовать локализацию в ваших шаблонах: см. Руководство по Rails: обзор Action View , Глава Локализованные представления.