1

多言語ページを作成しようとしています。私の意図は、ユーザーを言語に応じて特定のページにリダイレクトすることです (ユーザーが以前に言語を選択したために 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 でこの最初の言語を検出することをお勧めしますか?

敬具、

パブロ

4

0 に答える 0