Ruby・Rails

railsでhttpのヘッダを見てlocaleを変更する

最終更新から8年以上たっています。ライブラリのバージョンや手順が変わっている可能性があります。

railsで英語と日本語対応のサービスを作ってみようと思い、I18nについて調べてみた。

まぁ、マニュアルは

Rails国際化 (I18n) API

ばっちりここに有る訳だけど。

localeの切り替えについて幾つか方法が例示されていて、パラメータに付けたくなかったので
ヘッダのAccept-Languageを見て切り替える方法にした。

マニュアルにある通り、以下のgemを導入。

http_accept_language

そして、before_actionで実装しようかと思ったら、このgemがconcernも提供してくれていた。
という訳で、以下の一文をApplicationControllerに書くだけで出来た。

include HttpAcceptLanguage::AutoLocale

確認方法

日本語の場合

curl -v -H 'Accept-Language: ja-JP' http://localhost:3000

英語の場合

curl -v -H 'Accept-Language: en-US' http://localhost:3000

簡単。
やっぱりrailsって素晴らしい。

made with Flutter

この記事を書いた人がつくったアプリ

Ruby・Rails の記事

コメントの受け付けは終了しました。ご意見・ご質問は X(@nm_aru)へどうぞ。