3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RailsでI18nにtrue/false のキーを設定するとtranslation missing

Last updated at Posted at 2018-11-18

I18n

Railsで多言語化や、表示文言の統一などで用いるRuby のgemです。
詳しいことはネット上にたくさんわかりやすい記事がありますので省略させていただきます。

問題

さっそく表題にある問題について書いていきます。
ソースコードは以下のとおりです。

config/locales/ja.yml
ja:
  example:
    true: "おk"
    false: "だめ"
app/views/example.html.erb
<div>
  <%= t('example.true') %>
  <%= t('example.false') %>
</div>

「おk/だめ」が表示されるのを期待したのですが以下のようなエラーが発生。

translation missing: ja.example.true
translation missing: ja.example.false

設定がミスっていないことを確認して原因を調べると、同じ問題に直面している方とそれに対する解決策が見つかりました。
https://github.com/rails/rails/issues/27829

解決策

つまるところ、キーのtrue/false をダブルクォーテーションで囲めば上手くいきます。

config/locales/ja.yml
ja:
  example:
    "true": "おk"   # 'true'でもいいよ
    "false": "だめ"  # 'false'でもいいよ

yes/no でも同じ現象が起きるみたいですが、同じようにダブルクォーテーションで囲ってあげれば大丈夫みたいです。

「enumerizeのI18nではまったこと」
https://qiita.com/runamoon@github/items/d0a953afc25ea4e9365b

「YAML: Keys like "yes" or "no" evaluate to true and false」
https://makandracards.com/makandra/24809-yaml-keys-like-yes-or-no-evaluate-to-true-and-false

以上です。

メモ

表題について調べてる途中に、i18n の小技集という記事があったのでメモとして残させていただきます。意外にこういう細かいことは検索しても出てきにくいので、とてもありがたいです。先人に感謝です。

「i18nロケールファイルの書き方小技集」
https://qiita.com/tomomomo1217/items/858f290a0dc1a817985c

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?