Rails で i18n 辞書ファイル管理のディレクトリ構成と名前空間の方針まとめ

スポンサーリンク

Rails で i18n 利用時に、config/locales 以下に一枚の辞書ファイル、ja.yml, en.yml だけで管理しようとすると、何百行にもなってメンテナンス性が悪そうです。ということで、以下の方針で辞書ファイルを管理することにしました。認証エンジンに Devise を使用しているケースです。Devise を使用しない場合は、その部分は省いて下さい。

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

Rails4 で i18n で英語化(多言語化) | EasyRamble

— 環境 —
devise 3.2.2
rails 4.0.1
i18n 0.6.9
i18n_generators 1.2.1

config/locales 以下のディレクトリ構成

以下のようにモデル、ビューごとにディレクトリを分けて、辞書ファイルを管理する方針としました。

Devise 関係

devise.en.yml は Devise インストール時に作成されるので、そのまま config/locales/devise.en.yml に配置。devise.ja.yml はそれの日本語翻訳版。

config/locales/users 以下の confirmations, mailer… などのディレクトリは、Devise でビューをカスタマイズ時に生成されるディレクトリ構成に則りました。必要に応じて、それぞれのディレクトリ配下に、ja.yml, en.yml のファイルを作成します。

Rails で Devise のビューを作成してカスタマイズ | EasyRamble

views/users/en.yml, ja.yml は、Devise で管理されない users#index, users#show のアクション用。

i18n_generators 関係

i18n_generators では、config/locales/ja.yml, config/locales/translation_ja.yml の2種類のファイルが作成されますが、ja.yml(とen.yml)はそのまま配置。translation_ja.yml(とtranslation_en.yml)は、各々対応するモデルの辞書ファイルに中身を移して削除しました。

i18n_generators で Rails アプリを日本語化 | EasyRamble

コントローラー用

コントローラーでもフラッシュメッセージ等の翻訳が必要なので、controllers 以下に en.yml, ja.yml を作成しました。コントローラー毎に分けず、1つにまとめたのはフラッシュメッセージ等だけなので、たいした分量にはならないだろうとの予測のためです。

共通の辞書ファイルの置き場

モデル、ビュー全体に共通の辞書ファイルは、必要に応じて各々 modles/ja.yml, views/ja.yml に置く。

辞書ファイルの名前空間

models/user/ja.yml

モデルの辞書ファイルは、以上の書式に則ることで User.model_name.human, User.human_attribute_name(“admin”) などのメソッドが使える。

views/users/ja.yml

ビューの辞書ファイルは、以上の書式にすると、対応するビューファイルの中で以下のようにツリーを省略して書ける。

app/views/users/index.html.erb

locale が :ja であれば、「ユーザー一覧」と出力します。ツリー名は省略できますが、頭に . (ドット)が必要なことに注意。

後々、辞書ファイルが増えた時のことを考えて、以上の方針で管理することにしました。

スポンサーリンク
パーフェクト Ruby on Rails は、最近読んだ Rails 本の中では一番役に立った本です。Chef や Capistrano など Rails と共によく使用される技術にも触れてあります。Ruby on Rails 4 アプリケーションプログラミングは、入門的な内容で Rails の機能全体を網羅されています。
 
スポンサーリンク

Leave Your Message!