多言語ページを作成しようとしています。私の意図は、ユーザーを言語に応じて特定のページにリダイレクトすることです (ユーザーが以前に言語を選択したために Cookie が存在する場合、Cookie が設定されていない場合、このブロックは無視されます) ) $_SERVER['HTTP_ACCEPT_LANGUAGE'] を介して言語をキャプチャするダミー ファイルを作成します。
<?php
echo $_SERVER['HTTP_ACCEPT_LANGUAGE']
?>
理論的には、これはリクエストの実際の受け入れ言語ヘッダーを返す必要があります。しかし、異なる言語 EN、IT、ES を使用して異なるコンピューターでテストを実行しています... (私は彼らがそれらの言語を accept_language として送信していることを確認しました)
EN で最初にアクセスすると、他の言語で行った他の要求に関係なく、EN が維持されることがわかりました。最初のリクエストが IT または ES の場合も同様です。これは、しばらくすると、またはダミー ファイルを変更して再度アップロードした後に更新されません。
私が見る限り、静的変数として動作していますが、PHP docによると、「実際の」を返す必要があると書かれており、この多言語で実行するために見ているすべての例は、この方法で実行することを提案しています。
実際、数時間のテストの後、適切なサイトにリダイレクトするルールを .htaccess に作成することにしました。これはこの値に依存し、機能します。
RewriteEngine on
RewriteCond %{HTTP:Accept-Language} (en) [NC]
RewriteRule .* /en/index.php [L]
RewriteCond %{HTTP:Accept-Language} (it) [NC]
RewriteRule .* /it/index.php [L]
RewriteCond %{HTTP:Accept-Language} (es) [NC]
RewriteRule .* /es/index.php [L]
そのため、何かがPHPで機能していません。
- 何が起こっているのか分かりますか?
- .htaccess リダイレクトを維持することをお勧めしますか、それとも php でこの最初の言語を検出することをお勧めしますか?
敬具、
パブロ