こんにちは、作成したいスクリプトに夢中です。
すべての背後にあるロジック:
セッションを使用するページがあります。これで、ユーザーが初めてサイトにアクセスしたときに、http_accept_language
. その場合、セッションが作成され、優先言語が保存されます。ブラウザに設定がない場合は、デフォルトの言語設定として手動で行います。その後、正しいパスに直行します。
だから私はこの部分を持っています:
if (!isset($_SESSION['pref_lang'])){
if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])){
$max = 0.0;
$languages = explode(",", (strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"])));
foreach($languages as $language){
$language = explode(';', $language);
$q = (isset($language[1])) ? ((float) $language[1]) : 1.0;
if ($q > $max){
$max = $q;
$pref_language = $language[0];
}
}
$pref_language = trim($pref_language);
}
elseif (!isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])){
$pref_language = "en";
}
$_SESSION['pref_lang'] = $pref_language;
$pref_language = $_SESSION['pref_lang'];
if ($basename === "index" ){
header ('Location: http://www.domain.com/'.$pref_language.'/'.$basename);
}
}
セッションが既に存在する場合に備えて、すべてのサイトで言語設定を変更するオプションを提供したいと思います。そのため、php に含まれ、$pref_language に依存する 2 つの異なるフッターがありますが、すべて同じ部分が含まれています。
<form action="'.$_SERVER['PHP_SELF'].'" method="post">
<input type="submit" id="de" name="de"/><div>german/div>
</form>
<form action="'.$_SERVER['PHP_SELF'].'" method="post">
<input type="submit" id="en" name="fr"/><div>french</div>
</form>and so on...
そしてphpパーサーの上に:
if (isset($_SESSION['pref_lang'])){
if (isset($_POST["de"]) ){
$pref_language = "de";
$_SESSION['pref_lang'] = $pref_language;
var_dump($_POST);
}
elseif (isset($_POST["fr"]) ){
$pref_language = "fr";
$_SESSION['pref_lang'] = $pref_language;
var_dump($_POST);
}
}
echo "session exist:".$_SESSION['pref_lang']."<br/>";
$pref_language = $_SESSION['pref_lang'];
var_dump($_POST);
}
ページを呼び出してボタンを押して言語を変更すると、var_dump がエコーされます。
array(1) { ["fr"]=> string(2) "fr" }
ただし、他の空白ページで print_r を介してセッションを呼び出すと、変更されません。URL をリロードしても、デフォルトに戻されます。
ですから、それを解決するためのヒントを私に与えることができる人がいれば、私は本当に感謝しています.