- 更新日: 2014年2月23日
- Rails
i18n_generators で Rails アプリを日本語化
i18n_generators は Rails アプリの日本語化を助ける便利な gem です。年月日や単位、システムメッセージに加え、モデルに則した辞書ファイルの雛形も作ってくれるのでとても助かります。
i18n_generators のインストール
Gemfile に以下を書いてインストール。
1 2 3 4 5 |
$ vi Gemfile gem 'i18n_generators' $ bundle install |
config/application.rb は以下のように日本語をデフォルトに設定の状態です。
1 |
config.i18n.default_locale = :ja |
yml の辞書ファイルを生成
日本語の辞書ファイルを生成します。
1 2 3 4 5 6 7 8 9 |
$ bundle exec rails g i18n ja fetching ja.yml from rails-i18n repository... create config/locales/ja.yml translating models to ja... failed to translate "user" into "ja" language. ... create config/locales/translation_ja.yml |
以下の二種類のロケールファイル(辞書ファイル)が生成される。
config/locales/ja.yml
年月日・曜日、時間、Railsのシステムメッセージ、通貨、単位などの辞書ファイル。
config/locales/translation_ja.yml
作成済みのモデルに則した辞書ファイル。生成直後は以下の様に英語のままなので日本語に翻訳する。
1 2 3 4 5 6 7 8 9 10 11 |
ja: activerecord: models: user: user #g ... attributes: user: admin: admin #g email: email #g ... |
翻訳後↓
1 2 3 4 5 6 7 8 9 10 11 |
ja: activerecord: models: user: ユーザー #g ... attributes: user: admin: 管理者権限 #g email: Eメール #g ... |
参考までに英語の辞書ファイルも生成。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ bundle exec rails g i18n en updating application.rb... conflict config/application.rb Overwrite /***/config/application.rb? (enter "h" for help) [Ynaqdh] n skip config/application.rb fetching en.yml from rails-i18n repository... create config/locales/en.yml translating models to en... failed to translate "user" into "en" language. ... create config/locales/translation_en.yml |
すでに、application.rb で config.i18n.default_locale = :ja とデフォルトロケールを :ja に設定していたので、application.rb を上書きするか?と警告が出ました。n(no)をタイプして上書きせずに継続。
辞書ファイルの翻訳を出力
1 2 3 4 |
pry(main)> I18n.locale => :ja |
モデル名やモデルの属性名の翻訳へは以下でアクセスできます。
1 2 3 4 5 6 |
pry(main)> User.model_name.human => "ユーザー" pry(main)> User.human_attribute_name("admin") => "管理者権限" |
普通に yaml ファイル(辞書ファイル)のキーをたどってもOK。
1 2 3 4 5 6 |
pry(main)> I18n.t("activerecord.models.user") => "ユーザー" pry(main)> I18n.t("activerecord.attributes.user.admin") => "管理者権限" |
ロケールを :en(英語)に変更。
1 2 3 4 5 6 7 8 9 10 11 12 |
pry(main)> I18n.locale = :en => :en pry(main)> User.model_name.human => "user" pry(main)> User.human_attribute_name("admin") => "admin" pry(main)> I18n.t("activerecord.models.user") => "user" pry(main)> I18n.t("activerecord.attributes.user.admin") => "admin" |
以上です。
- Rails の関連記事
- RailsでMySQLパーティショニングのマイグレーション
- Rails ActiveRecordでdatetime型カラムのGROUP BY集計にタイムゾーンを考慮する
- RailsプラグインGemの作成方法、RSpecテストまで含めたrails pluginの作り方
- RailsでAMPに対応するgemをリリースしました
- Railsでrequest.urlとrequest.original_urlの違い
- Railsでwheneverによるcronバッチ処理
- Google AnalyticsのRails Turbolinks対応
- Railsアプリにソーシャル・シェアボタンを簡単設置
- Rails監視ツール用にErrbitをHerokuで運用
- Facebook APIバージョンのアップグレード手順(Rails OmniAuth)
Leave Your Message!