2013/03/31

Railsの国際化対応

環境

環境は以下を前提にしています。

  • Ruby : 1.9.3p125
  • Rails : 3.2.13

概要

国際化対応はi18nというgemにより実現されます。デフォルトの状態でBundlerにより導入されるのでインストールの必要はありません。

手順

手順といっても国際化対応の機能はデフォルトで組み込まれています。どういう仕様にしたいかによってやることは異なりますのでご注意を!

デフォルトロケールの設定

デフォルトロケールを日本語に設定します。
対象のファイルはconfig/application.rbです。
以下の通り変更します。

 config.i18n.default_locale = 'ja'


リソースファイルの構成

リソースはYAMLで定義し、デフォルトではconfig/locales直下に配置することにより利用可能となります。以下のような形で配置していきます。
  • en.yml
  • ja.yml
  • translation_ja.yml
好みの問題ですが、個人的には1つのファイルで管理するリソースは少なくカテゴライズされて定義されていた方が分かりやすいので以下のように定義しています。


locales
  |-- defaults <-- デフォルトリソースファイルを配置
  |       |-- en.yml 
  |       |-- ja.yml
  |-- models <-- モデルとその属性リソースを定義したファイルを配置
  |       |-- defaults
  |       |      |-- en.yml
  |       |      |-- ja.yml
  |       |-- bookshelf
  |       |      |-- en.yml
  |       |      |-- ja.yml
  |       |-- book
  |       |      |-- en.yml
  |       |      |-- ja.yml
  |-- views <-- 画面系リソースを定義したファイルを配置
          |-- defaults
          |      |-- en.yml
          |      |-- ja.yml
          |-- bookshelf
          |      |-- en.yml
          |      |-- ja.yml
          |-- book
                 |-- en.yml
                 |-- ja.yml 
 

ただし、上記の通りリソースファイルを構成してもデフォルトの状態では読み込んでくれません。そこでconfig/application.rbに以下を追加します。

 config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]

第3引数のワイルドカード「**」により再帰的にリソースが読み込まれるようになります。

デフォルトリソースファイルの作成

デフォルトリソースファイルはGitHubで公開されているものを利用させていただきます。
こちらから「https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml」ダウンロードさせて頂いた配置しましょう。

0 件のコメント:

コメントを投稿