2015年12月17日木曜日

【Rails4.2.5】多言語化対応を行う

  • 公開日:2015年12月17日

記事概要


rails4で多言語化に対応したので、そのやり方を記載した記事です。

環境


  • ruby2.2.3
  • rails4.2.5
  • unicorn
  • nginx1.8

Gemfile


railsの多言語化対応には、Rails Internationalization (I18n)を利用します。(Rails Internationalization (I18n) API )
まずはgemを導入します。

Gemfile

# Use rails-i18n for localization
gem 'rails-i18n', '~> 4.0.0'

記載して保存したらgemをinstallします。

terminal

rbenv exec bundle install

installに成功したのを確認したら先に進みます。

利用言語の設定


railsアプリで利用する言語を設定します。
設定はapplication.rbに記載します。

config/application.rb

    config.i18n.default_locale = :en
    config.i18n.available_locales = [:en, :ja, "zh-CN"]

上記の設定では、config.i18n.default_localeでデフォルトの言語を「英語」にしています。
また、「英語」「日本語」「中国語(簡体字)」を config.i18n.available_localesで利用可能な言語に設定しています。

テストの実行


これまでの設定が正しいことを確認するために、テストを流します(テストコードを記載していないプロジェクトの場合は、この箇所は無視してください。)

terminal

rbenv exec bundle exec rspec

Finished in 0.13951 seconds (files took 2.76 seconds to load)

成功したら、次はrouteを修正します。

Routeの設定


言語を判別するには、

  • 言語をサブドメインに記述する(http://en.www.test.com)
  • パラメーターに言語情報を持つ(http://www.test.com?lang=en)
  • URLに記述する(http://www.test.com/en/)

のパターンがありますが、ここでは「URLに記述」のパターンを利用します。
routes.rbを開き、scopeで既存のurl routeを囲みます。

config/routes.rb

scope "(:locale)", locale: /ja|en|zh-CN/ do
  get 'home', to: 'home#index'
  resources :test
end

続いて、パラメータからlocaleを判定することが出来るようにapplication_controller.rbに処理を記載します。

app/controllers/application_controller.rb

  before_filter :set_locale
  
  # 全リンクにlocale情報をセットする
  def default_url_options(options={})
    { :locale => I18n.locale }
  end

  # リンクの多言語化に対応する
  def set_locale
    I18n.locale = params[:locale] || I18n.default_locale
  end

続いては、言語ファイルを用意しましょう。

locales


言語のファイルはlocalesファイルの下に配置します。

config/locales

en.yml
zh-CN.yml
ja.yml

config/locales/en.yml

en:
  hello: "Hello world"

config/locales/ja.yml

ja:
  hello: "こんにちわ"

config/locales/zh-CN.yml

zh-CN:
  hello: "你好"

これで準備は完了です。

View


tメソッドを利用します。引数はhashのkeyを指定します。

app/views/xxxxx.erb

<%= t("hello") %>

ブラウザで確認します。

デフォルト(英語): http://192.168.33.40:3000/home

日本: http://192.168.33.40:3000/ja/home

中国語: http://192.168.33.40:3000/zh-CN/home

見事に反映されていますね。

まとめ


railsのアプリは、最小限の実装で多言語化に対応できます。
アプリを作るなら、是非世界を目指したサービスを作成しましょう。
最初は、日本語の他は、英語と中国語だけで十分だと思います。

以上

Rails4の開発にオススメの本


オススメ開発マシン


運営サイト(railsで作成しています)


参考サイト

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...