YAMLでyes,noというキーは使用できない

at 2017-02-28 12:32 (UTC)

Rails にて true, false に対するマークを locale に登録しようとしてこんな yml を書いた。

ja:
  label:
    yes: '○'
    no: '×'

これで <%= t('label.yes') %> としても translation missing となって表示されない。

$ bin/rails console
[1] pry(main)> I18n.t('label')
=> {true=>"○", false=>"×"}

yes, no はそれぞれ true, false に変換されてしまうらしい。

$ pry
[1] pry(main)> require 'yaml'
[2] pry(main)> y YAML.load(<<EOS)
[2] pry(main)* foo:
[2] pry(main)*   yes: 'Y'
[2] pry(main)*   no: 'N'
[2] pry(main)* EOS
=> {"foo"=>{true=>"Y", false=>"N"}}

YAMLとはそういうものらしい。

こういう場合は、キーを囲ってやればよいそうだ。

ja:
  label:
    "yes": '○'
    "no": '×'

これでOK