Rails-2.3.2とI18nを使って会社サイトを作り直しました
会社設立以来ほとんど更新していなかったのですが、
iPhoneアプリ等の開発で製品を紹介するページを置く場所が必要になったので、
Rails-2.3.
従来通り、http://www
I18nの使い方
ローカライズファイルは、デフォルトではconfig/loc
自動的にロケールを判別するために、以下のようなコードを
Applicatio
1 class ApplicationControlle r < ActionCont roller::Ba se 2 before_fil ter :set_locale 3 4 (..snip..) 5 6 def set_locale 7 I18n.locale = @original_l ocale = fallback_l ocale(I18n.locale) 8 if request.host =~ /^([\w-]+)\.#{HOST.split(':')[0]}/i 9 I18n.locale = fallback_l ocale($1) 10 end 11 end 12 13 private 14 def fallback_l ocale(locale) 15 locale = locale.to_s 16 @available_ locales ||= Set.new(I18n.available_ locales) 17 until locale.empty? || @available_ locales.include?(locale.intern) 18 locale = locale.split(/([-_])/)[0..-3].join 19 end 20 locale.present? ? locale.intern : I18n.default_lo cale 21 end
実際にローカライズする手順は、以下のような感じになります。
文字列のローカライズ
*.ymlファイルで定義されているメッセージキーに対して、
1 ja: 2 "hello": "こんにちわ"
こんな感じにt(...)
ヘルパーメソッドを使います。
1 t("hello") #=> "こんにちわ"
時刻などのローカライズ
時刻の場合もほぼ同様で、以下のような*.ymlファイルで定義されている設定に対応して、
1 ja: 2 date: 3 formats: 4 default: "%Y/%m/%d" 5 short: "%m/%d" 6 long: "%Y年%m月%d日(%a)"
以下のようにl(...)
ヘルパーメソッドを使ってローカライズします。
1 l(Date.today, :format => :short) #=> "03/22"
テンプレートのローカライズ
Viewテンプレートを丸ごとローカライズする場合は、
- top/index.
ja.html.er b - top/index.
en.html.er b
のようなファイル名すればOKです。