使用转换I18n轨道check_box值

时间:2014-10-22 21:40:15

标签: ruby-on-rails forms checkbox rails-i18n

只是想知道在正常(非常简单)的形式中使用复选框时我应该如何在rails中进行国际化; 这就是我试过的:

view/form档案:

<%= f.check_box :do_you_agree, {}, t('submissions.yes'), t('submissions.no') %>
<%= f.check_box :do_you_agree, {}, I18n.t('submissions.yes'), I18n.t('submissions.no') %>
<%= f.check_box :do_you_agree, {}, "#{t('submissions.yes')}", "#{t('submissions.no')}" %>

......所有人都回来了: HTML中的translation_missing

当我使用时:

<%= f.check_box :do_you_agree, {}, 'NO', 'YES' %>

......一切都好!

YML文件没问题。非常感谢。

1 个答案:

答案 0 :(得分:0)

在您的config/application.rb中,您必须拥有config.i18n.default_locale = :es行(例如西班牙语的es)

yml必须是这样的:

es:
  submissions:
    'yes': Si
    'no': No

编辑:将yes / no键设为显式字符串。它会起作用。

为什么呢?因为Rails使用psych gem进行yaml转换。心理返回truefalse所有这些值(参见链接)。

然后,如果您以这种方式定义语言环境:

es:
  submissions:
    yes: Si
    no: No

在rails控制台上你得到:

irb> I18n.t('submissions')
=> {true=>"Si",false=>"No"}
irb> I18n.t('submissions')[true]
=> "Si"
irb> I18n.t('submissions.true')
=> "translation missing: es.submissions.true"