Railsのi18nでviewsを日本語/英語に切り替える機能を実装

rails i18n

Ruby on Railsにデフォルトで入っているi18nというライブラリを使って、ヘッダーに設置した「日本語/English」のリンクによって言語(locale)を切り替える機能を実装したいと思います。
URLのパラメータで言語を切り替える方法なので、「http://xxxx.com/」か、「http://xxxx.com/ja/」なら日本語、「http://xxxx.com/en/」なら英語とします。

Rails i18n
https://github.com/svenfuchs/rails-i18n

環境はこちらです

i18nがデフォルトで入っているかは$ bundle listを実行すると、「i18n (1.0.1)」とか出てくるので確認ができます。

Config

デフォルトのlocaleは暗黙的に:enになっているかと思いますので、config.i18n.default_locale = :jaを以下のあたりに記述してください

config/application.rb

Routes

localeをパスに含めるためにscopeで囲います。

config/routes.rb

このようなルーティングになります。

Controllers

application_controller.rbにset_localeでパスのパラメータを現在の言語I18n.localeに設定します。また、デフォルト値として現在の言語を指定するようにします。

app/controllers/application_controller.rb

Views

ヘッダーにlocalを切り替えるリンクを設置します。

app/views/layouts/_header.html.erb

users#showの場合のビューです。t ( translate ) ヘルパーメソッドを使って書いていきます。訳文メッセージの中に変数を含め、ビューから変数に値を渡すこともできます。

app/views/users/show.html.erb

日本語訳をja.ymlに追加します。

config/locales/en.yml

はい、以上で動作するかと思います!ご覧いただきありがとうございました!
今回はこちらを参考にさせていただきました。https://railsguides.jp/i18n.html
i18nも奥が深いですね。🤔


投稿者:

Shuji Tenra

「仕事に特化したQ&AサイトJobQuery【ジョブクエリ】」の開発/運営をしています。https://jobquery.jp