ruby-on-rails – 如何使用I18n宝石翻译电子邮件正文?
我正在使用
Ruby on Rails 3.1.1,我正在尝试翻译电子邮件正文.我创建/陈述了所有必要的“东西”(YAML文件,键/值对…),以使I18n宝石工作:电子邮件消息使用默认语言(:en)发送无问题.
然后我添加了一种新的语言,并使所有这些都必须完成,使I18n宝石与另一种语言一起工作,并始终在URL中的locale = de参数. class ApplicationController < ActionController::Base before_filter :set_locale def set_locale if params[:locale] && I18n.available_locales.include?(params[:locale].to_sym) I18n.locale = params[:locale] end end ... end 但是,当我发送电子邮件时,即使语言环境正确设置(例如:locale = de),发送的电子邮件消息也不会被翻译(仍然使用默认语言:en语言). 如何使I18n翻译电子邮件正文? 我读了Localized ActionMailer Templates for Rails博客文章 解决方法
解
在你的铁路项目中做一个邮件(读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 ::直接或间接呈现(ActionController :: Metal :: Rendering). AbstractController :: Rendering使用ActionView作为其模板呈现引擎的默认库,并且包含AbstractController :: ViewPaths和I18n代理的实例以查找本地化视图.要了解更多,我想参考gitub上的ActionPack源代码. 要达到目的ActionView允许您在模板中使用本地化:请参阅Rails guide: Action View Overview,本地化视图. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |