Rails 2.3.5 で i18n を使ってメッセージを日本語化する

Rails Internationalization (I18n) API の i18n を gem でインストールする。

$ sudo gem install i18n

i18n を初期化してロケールを読み込むファイルを作成する。

$ vi config/initializers/init_i18n.rb

# 以下のように記述する
I18n.default_locale = 'ja-JP'
LOCALES_DIRECTORY = "#{RAILS_ROOT}/config/locales/"
LOCALES_AVAILABLE = Dir["#{LOCALES_DIRECTORY}/*.{rb,yml}"].collect do |locale_file|
  File.basename(File.basename(locale_file, ".rb"), ".yml")
end.uniq.sort

メッセージ等のリソースファイルを作成する。

$ vi config/locales/ja-JP.rb

リソースファイルの内容はこちらのサイト『Rails2.2の新機能i18nを使ってみる – func09』の翻訳メッセージを参考にした。

こんな感じで、日本語化できた。

Rails i18n 日本語化 Screenshot1

さらに、メッセージだけでなくモデル・その他の日本語化をするには、config/locales/ja-JP.yml ファイルを作成して以下のように記述する。

ja-JP:
  activerecord:
    models:
      client_workout: ワークアウト
    attributes:
      client_workout:
        client_name: 名前
        trainer: トレーナー
        duration_mins: 指導時間
        date_of_workout: 年月日
        paid_amount: 支払い
  label:
    client_workout:
      new_client_workout: ワークアウト新規作成
      edit_client_workout: ワークアウト編集
      listing_client_workout: ワークアウト一覧
      show: 表示
      edit: 編集
      destroy: 削除
      new: 新規作成
      back: 戻る
      create: 作成
      search: 検索
      update: 更新

テンプレートファイル内で以下の例のように各ラベルを指定する。

<h1><%= t 'label.client_workout.edit_client_workout' %></h1>

<% form_for(@client_workout) do |f| %>
  <%= f.error_messages %>

  <p>
    <%= f.label :client_name, t('activerecord.attributes.client_workout.client_name') %><br />
    <%= f.text_field :client_name %>
  </p>
  <p>
    <%= f.label :trainer, t('activerecord.attributes.client_workout.trainer') %><br />
    <%= f.text_field :trainer %>
  </p>
  <p>
    <%= f.label :duration_mins, t('activerecord.attributes.client_workout.duration_mins') %><br />
    <%= f.text_field :duration_mins %>
  </p>
  <p>
    <%= f.label :date_of_workout, t('activerecord.attributes.client_workout.date_of_workout') %><br />
    <%= f.date_select :date_of_workout %>
  </p>
  <p>
    <%= f.label :paid_amount, t('activerecord.attributes.client_workout.paid_amount') %><br />
    <%= f.text_field :paid_amount %>
  </p>
  <p>
    <%= f.submit t('label.client_workout.update') %>
  </p>
<% end %>

<%= link_to t('label.client_workout.show'), @client_workout %> |
<%= link_to t('label.client_workout.back'), client_workouts_path %>

Rails i18n 日本語化 Screenshot2


Rails アジャイル本 第13章 タスクI:国際化(ロケールの追加)
Rails I18n generators でロケールファイルを生成する

Head First Rails ―頭とからだで覚えるRailsの基本
David Griffiths
オライリージャパン
売り上げランキング: 45786
«
»