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

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って素晴らしい。

コメント

タイトルとURLをコピーしました