Rails:发送不同语言的电子邮件

时间:2014-04-24 10:53:48

标签: ruby-on-rails ruby-on-rails-3

在我的应用中,我需要发送不同语言的电子邮件。如何正确完成 - 例如制作不同的电子邮件模板invite.en.text.erbinvite.de.text.erb(不确定是否可行),将电子邮件保留在I18n本地化或其他解决方案中可能?

2 个答案:

答案 0 :(得分:3)

使用本地化视图(链接到Rails指南here),完全按照您的建议操作。只需重命名视图文件,如图所示,它们将自动与您的Rails本地化设置进行交互。

要根据用户的区域设置,电子邮件地址或其他逻辑发送给定区域设置中的邮件,您可以使用I18n.with_locale(区域设置)方法。使用类似方法的Mailer示例显示在this SO回答中。

我不建议做HendrikPetertje的建议。它使用仅用于单个视图的本地化字符串来混淆您的语言环境文件。

答案 1 :(得分:1)

创建默认电子邮件文件(就像您将使用的那样),并尝试以下说明:

在您的电子邮件文件中:

<p><%= t('email_line_description_here')%></p>
<p><%= t('email_line2_description_here') %></p>
(etc)

在你的config / locales / en.yml中(右缩进在这里很重要)

en:
  # email stuff
  email_line_description_here: "Your email's first line content in English here"
  email_line2_description_here: "Your email's second line content in English here"

在你的config / locales / de.yml中(右缩进在这里也很重要)

de:
  # email stuff
  email_line_description_here: "Your email's first line content in German here"
  email_line2_description_here: "Your email's second line content in German here"

现在当环境设置为英语时,如果德语翻译将根据de.yml进行,则将根据en.yml翻译。