Railsのローカライズ

Railsのローカライズ

皆さんこんにちは、新人の意識高丸です。
初心者Ruby勉強会、gaienrb#23に参加してきました。
とりあえずチュートリアルも卒業し、いまは簡単なアプリを作っています。

今回はローカライズまわりを実装しました。
ローカライズとは多言語に対応(地域化)させる事などをいいます。
今回作っているアプリは日本語版しか無いのですが、メッセージやタイトルなどを集約して管理したいのもあり、
ローカライズをすることにしました。
railsにはi18nという名前でローカライズできる機能が用意されています。

ちなみにi18nとは「internationalisation」という意味で、国際化を意味します。
iとnの間に18文字あるのが由来で、i18nの他にもm17nやl10nなどもあり、以下のようにそれぞれ意味が違います。

i18n internationalization 国際化
m17n multilingualization 多言語化
l10n localization 地域化

Railsのi18nでは言語だけでなく、単位や日付のフォーマットなどその他のさまざまなものも対応出来ます。

ローカライズの設定ファイルは以下の場所にデフォルトで英語用があるのですが、日本語用が無いので
用途に分けて作りました。

“`英語のローカライズファイルの場所
/config/locales/en.yml
“`

“`作成したファイル
/config/locales/common.ja.yml 共通タイトルなど全体で共通なもの
/config/locales/views.ja.yml 各ビュー用
“`

デフォルトのロケールファイルは日本語のファイルを読み込むよう、application.rbで「:ja」に設定します。

“`/config/application.rb
19 # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
20 # config.i18n.load_path += Dir[Rails.root.join(‘my’, ‘locales’, ‘*.{rb,yml}’).to_s]
21 # config.i18n.default_locale = :de
22 config.i18n.default_locale = :ja
“`

ちなみに、ローカライズファイルを「/config/locales/」以下でディレクトリで分ける場合は、サブディレクトリを読み込ませるために、
application.rbで以下のように設定します。

“`/config/application.rb
10 class Application < Rails::Application 省略〜 31 config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s] 32 end ``` ビューのローカライズファイルは、以下のようにスコープで分けて作成しました。 ```/config/locales/views.ja.yml 22 ja: 23 views: 24 sessions: 25 title: ログイン 26 projects: 27 title: プロジェクト ``` ビュー側ではヘルパーメソッドtを使い、ドットで区切って指定します。 ```/app/views/sessions/new.html.haml 1 !!! 2 %h1 3 = t('views.sessions.title') #ローカライズファイルでのタイトル指定部分 4 .row 5 .span6.offset3 ``` ※ビューはhamlを使っています。 今回は日本語の設定を固定しましたが、アクセスしてきたIPによって地域の設定を切り替えたり、GETパラメータやcookieで地域を指定させるような事も可能なので、いずれは対応したいと思います。

TAG

  • このエントリーをはてなブックマークに追加
意識 高丸
エンジニア 意識 高丸 takamaru

Rubyについて日々勉強している新人エンジニアです。初心者向けRuby勉強会のレポートなどを投稿していきます。