マイペースなRailsおじさん

Ruby、Ruby on Rails、オブジェクト指向設計を主なテーマとして扱います。だんだん大きくなっていくRuby on Rails製プロダクトのメンテナンス性を損なわない方法を考えたり考えなかったりしている人のブログです。

Railsで、ユーザーの環境にあった言語を表示する

やりたいこと

  • 言語設定が英語の人には英語、日本語の人には日本語を表示したい
  • HTTPのAccept-Languageヘッダに応じて切り替えたい

手順

  1. Rack::Localeミドルウェアを導入する
  2. ローカライズする

Rack::Localeミドルウェアを使うと、Accept-Languageヘッダに応じてI18n.localeを設定してくれる。

1. Rack::Localeミドルウェアを導入する

 bundle add rack-contrib

config/application.rb(任意environment.rbや、initializerの中でも良いです)

config.middleware.use Rack::Locale

2. 訳文を設定する

config/locales配下に、言語ごとのファイルを作り、コードに訳文のキーを設定します。 詳しくは下記を参照

Rails 国際化 (i18n) API - Railsガイド