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

嘗試用引號括起來。例如 en: hello:「測試文本」 – 2012-01-07 19:39:12

+0

@volodymyr - 問題與引號無關...請閱讀下面的註釋以獲取更多信息。 – user12882 2012-01-07 19:48:10

回答

1

下面是工作的代碼的示例(我真的使用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 2012-01-07 19:34:53

+0

也許我找到了解決方案。我使用Delayed Job gem,並且在重新啓動作業('rake jobs:work'處於開發模式)之後,它開始工作。謝謝。 – user12882 2012-01-07 19:46:35