rail3 国際化対応
rais 2.2 から国際化対応が正式採用されたけど、なんか日本語化でいろんなのが出てるっぽい。とりあえず svenfuchs/rails-i18n でいってみよ。:-)
インストールはこんな感じ。
$ gem install i18n thor
APP_ROOT にある Gemfile の最後にこれ(↓)を追記する。
gem 'i18n_generators'
bundle を実行する。gem よりしっかりした依存関係のチェック機構らしい。自分の環境だと complete! って言われた。不足があれば追加してくれるっぽい。
$ bundle install
i18n generator を実行する。config/application.rb を上書きする?って確認されるので 'Y' (overwrite) する。
実行すると config/application.rb のロケールが日本語になる。
config.i18n.default_locale = 'ja'
あと config/locales/ja.yml が追加されてエラーメッセージとか日本語化されてる。こんな感じ。
... errors: format: "%{attribute} %{message}" messages: &errors_messages inclusion: "は一覧にありません。" exclusion: "は予約されています。" invalid: "は不正な値です。" confirmation: "が一致しません。" accepted: "を受諾してください。" empty: "を入力してください。" blank: "を入力してください。" too_long: "は%{count}文字以内で入力してください。" too_short: "は%{count}文字以上で入力してください。" wrong_length: "は%{count}文字で入力してください。" not_a_number: "は数値で入力してください。" not_an_integer: "は整数で入力してください。" greater_than: "は%{count}より大きい値にしてください。" greater_than_or_equal_to: "は%{count}以上の値にしてください。" equal_to: "は%{count}にしてください。" less_than: "は%{count}より小さい値にしてください。" less_than_or_equal_to: "は%{count}以下の値にしてください。" odd: "は奇数にしてください。" even: "は偶数にしてください。" ...
おまけ
rails3 になってファイル構成が変わってて困った。APP_ROOT にある Gemfile ってのが増えてる。Bundler ってツール用の設定ファイルで plugin 間の依存関係を辿って環境構築してくれるツールらしい。gem より便利ツールってことで rails3 に採用されたっぽい。こちらさん(↓)が詳しく解説してくれてるよ。:-)
ついでに config/application.rb も増えてる。これも config/environment.rb から独立したものっぽい。
require File.expand_path('../boot', __FILE__) require 'rails/all' Bundler.require(:default, Rails.env) if defined?(Bundler) module [APP_NAME] class Application < Rails::Application config.encoding = "utf-8" config.filter_parameters += [:password] end end
その分、config/environment.rb がすっきりしたなぁ :-)
require File.expand_path('../application', __FILE__) [APP_NAME]::Application.initialize!
おまけ2
ロケール指定で言語を切り替える方法が書いてあった。ロケール固定より便利だよね。こんど試してみよ :-)
# app/controllers/application.rb
before_filter :set_locale
Ruby On Rails 国際標準化機能 I18n その1
def set_locale
I18n.locale = params[:locale]
end