0

自国語用のフォルダを作りたいです。

例として、私はファイルを持っていますfoo.php。そのファイルには英語版とオランダ語版もあります。

そのため、ディレクトリ/english/foo.phpを作成しました/dutch/foo.php。そのディレクトリ内の両方のファイルは、ルートフォルダ内とまったく同じになります。

ルートフォルダに、他のファイルとディレクトリからのroot/foo.php変数をロードします。$varroot/scripts/bar.php

ファイルではroot/scripts/bar.php、ヘッダー関数を使用します:

if ($pref_language == 'zu'){
    $header = 'english'.$_SERVER['PHP_SELF']; 
    $var = "xyz";  
}

header ("location: $header");

問題は、ヘッダー関数を開くroot/foo.phpと正常に機能するが$var、そのヘッダー方向で初期化されないことです。ソースコードを開くときは何もありません

<?php echo $var;?>

しかし、ヘッダーなしでソースコードを見ると、変数がロードされます。

だからこれは私には少し奇妙です。私を助けてくれる人がいたら、本当に感謝しています。

どうもありがとう。

4

2 に答える 2

0

を使用header("location: $header");するとブラウザが にリダイレクトされ$headerますが、これは望ましくありません。

include($header);(ここに文書化されているか、おそらくここrequireに文書化されています) 、定義された変数をファイルで使用できるようにすることができます。$header

あなたが本当にやりたいと思っているのは国際化であり、Twig (ここ) や Smarty (ここ)などの PHP でそれを行うための優れたツールがあります。

于 2012-12-12T23:58:11.173 に答える
0

Web サーバーで書き換えルールを利用して、特定の言語の URL 要求を、php ファイルで使用できるパラメーターに転送するのが最善の方法です。Apache での例は次のようになります。

RewriteEngine On
RewriteRule ^/?(english|dutch)/(.*)$ /$2?lang=$1 [L,QSA]

これにより、たとえば、処理のためにリクエスト/english/foo.phpが渡され/foo.php?lang=englishます。

次に、$_GET['lang']どのローカリゼーションを使用するかを確認できます。

これにより、ブラウザーのリダイレクトを行う必要がなくなり、サイト内のすべてのリンクに動的に値を追加して、エンド ユーザーに完全に英語のサイト ( ) またはオランダ語のサイト( )$_GET['lang']内にいるように見せることができます。)。/english/*/dutch/*

于 2012-12-13T00:05:31.297 に答える