如何确认消息i18n兼容

时间:2014-05-24 02:36:40

标签: ruby-on-rails ruby-on-rails-4 internationalization link-to rails-i18n

我对Rails相对较新,并且已经编程了几个月。

我尝试使用t()方法进行国际化,但是当我在link_to中请求确认时,它似乎无法正常工作。

例如,当我写

    <%= link_to t( ".delete_student_info"), 
       @student,
       method: :delete, 
       confirm: "child_deletion_confirmation"
    %>

...我可以预见得到一个有效的link_to并询问确认问题

但是,当我写

    <%= link_to t( ".delete_student_info"), 
        @student,
        method: :delete, 
        confirm: t( ".child_deletion_confirmation")
    %>

...我得到以下输出

  

儿童删除确认&#34;数据方法=&#34;删除&#34; HREF =&#34; / EN / student_profiles / 41&#34; rel =&#34; nofollow&#34;&gt;删除学生信息

我缺少一些概念性的东西吗?我已经查看了Rails Guides Rails i18n API,但它没有解决这个问题。我认为可能是确认:有些不同,但我不知道如何查找。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

我在我的Rails 4控制台上尝试了这个,它运行良好:

helper.link_to "Visit Other Site", "http://www.rubyonrails.org/", data: { confirm: I18n.t("date.formats.default") }
# => "<a data-confirm=\"%Y-%m-%d\" href=\"http://www.rubyonrails.org/\">Visit Other Site</a>"`. 

现在,请注意nil使用:confirm时的行为与您所看到的一样:

helper.link_to "Visit Other Site", "http://www.rubyonrails.org/", data: { confirm: nil }
# => "<a href=\"http://www.rubyonrails.org/\">Visit Other Site</a>"

所以这让我觉得你的翻译正以某种方式评估nil。但是,我似乎无法弄清楚如何复制该问题...

如果您能够展示翻译文件的样子,我会扩展此答案以尝试提供更多帮助吗?