Accept-Language
Railsのことを調べていてAccept-Languageという用語を見かけて、聞きなれない用語だったため調べてまとめることにしました。これはRailsの国際化、言語設定を行う際に使われるもののようです。言語の切り替えを行う方法にはいくつか方法がありますが、今回はその切り替えを行う方法の1つです。HTTPヘッダーのAccept-Languageから言語を選択して、言語を設定します。
HTTPヘッダーとは
WebブラウザからWebサーバーへ送信するHTTPリクエストに含まれる情報のことです。その中でブラウザがどの言語を理解できるか、またはどの種類のロケールかを表している部分がAccept-Languageリクエストヘッダーになります。以下がHTTPヘッダーの例になります。
GET / HTTP/1.1
Accept: image/gif, image/jpeg, */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (Compatible; MSIE 6.0; Windows NT 5.1;)
Host: www.xxx.zzz
Connection: Keep-Alive
HTTPのAccept-Languageリクエストヘッダーは、クライアントがどの言語を理解できるか、どの種類のロケールが推奨されるかを示します。コンテンツネゴシエーションを使用して、サーバーは提案されたものから一つを選択して使用し、Content-Languageレスポンスヘッダーを使用してクライアントに選択結果を知らせます。ブラウザはユーザーインターフェイスの言語に従って、このヘッダーに適切な値を設定し、ユーザーはこれを変更することができます。
このヘッダーはヒントであり、サーバーが言語を判別するための方法として、明示的なユーザーの選択によって制御する特定の URL など、他のものがない場合に使用されます。サーバーは明示的な決定を上書きしないことを推奨します。 Accept-Languageの中身はユーザーが制御できないことがよくあります(旅行中で外国のインターネットカフェを使用している場合など)。