要求されたドメインに応じて、nginx に適切な accept-language ヘッダーを設定してもらいたい:
www.domain.ru セットru-RU
www.domain.com セットen-US
www.domain.de セットde-DE
www.domain.eu は、Django がブラウザーからヘッダーを取得できるように何もしません。上記の 3 つのドメインでは、英語のユーザーが www.domain.ru を入力した場合でも、accept-language ヘッダーの変更を強制します (ロシア語を使用するように強制します)。
これが私のnginx構成です:
server {
listen 1.1.1.1;
server_name domain.eu www.domain.eu domain.de www.domain.de domain.com www.domain.com domain.ru www.domain.ru;
if($host ~* (.*)\.ru) {
set $http_accept_language 'ru-RU';
}
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_pass http://127.0.0.1:8888/;
}
}
これは私の設定の一部です (gunicorn 経由で Django を実行しています)。accept-language
セッション言語が設定されていない場合、Django はヘッダーをチェックします。