2

私はちょうどいくつかのアドバイスを探しています。(少なくとも) 2 つの言語を提供する Web サイトを作成しています。私が設定している方法は、言語用の XML ファイルを使用して、PHP で XML ノードの値を取得することです。次のように読み込まれる XML ファイルがあるとします。

<?php
$lang = "en";
$xmlFile = simplexml_load_file("$lang/main.xml");
?>

ファイルの内容が利用可能になったら、次のように各ノードを HTML タグに出力します。

<li><?php echo $xmlFile->navigation->home; ?></li>
which in turn is equal to : <li><a href="#">Home</a></li>
as a nav bar link.

さて、私が言語を切り替える方法は、次のように「$_POST」を介して「$lang」変数の値を変更することです。

if(isset($_POST['es'])){
$lang = "es";
}elseif(isset($_POST['en'])){
$lang = "en";
}

「$lang」変数の値がリセットされ、新しいファイルがロードされ、新しい XML ファイルからすべての新しいノードがロードされるため、言語が変更されます。

「$_POST」または「$_GET」以外の何かを使用して「$lang」変数をリセットする別の方法があるかどうか疑問に思っています。クエリ文字列も使用したくありません。JavaScript や jQuery を使用してこれを実現できることはわかっていますが、サイトを JavaScript に依存しすぎないようにしたいと考えています。

アイデアやアドバイスをいただければ幸いです。

ありがとう

4

4 に答える 4

2

私はセッション変数に行きます。

ページの先頭には、次のものがあります。

 if (!isset($_SESSION['language']))
    $_SESSION['language'] = "en";

次に、言語を変更するためのリンクがいくつかあります

<a href="changelanguage.php?lang=es">Español</a>
<a href="changelanguage.php?lang=fr">Français</a>

Changelanguage.php は単に次のようなものです

$language = $_GET['lang'];
// DO SOME CHECK HERE TO ENSURE A CORRECT LANGUAGE HAS BEEN PASSED
// OTHERWISE REVERT TO DEFAULT
$_SESSION['language'] = $language;
header("Location:index.php"); // Or wherever you want to redirect
于 2010-05-21T06:12:04.800 に答える
1

使用を考えたことはあります$_SERVER["HTTP_ACCEPT_LANGUAGE"]か?このようなもの:

if ($_SERVER["HTTP_ACCEPT_LANGUAGE"]) { 
    $langs = explode(",", $_SERVER["HTTP_ACCEPT_LANGUAGE"]); 
    for ($i = 0; $i < count($langs); $i++) { 
        if ($langs[$i] == "en") { 
            $lang = "en";
            break;
        } 
        elseif($langs[$i] == "es") {
            $lang = "es";
            break;
        }
    } 
}

もちろん、switchステートメントはここに少し適しているかもしれません。英語を言う方法はenだけではありませんが、これはユーザーが何もしなくても機能するはずです。手動で変更する場合は、ベンの回答に従ってCookieに保存してください。

于 2010-05-21T04:20:41.757 に答える
0

言語識別子を渡す最も一般的な方法はサブドメインです。

http://en.wikipedia.com/

両方のサブドメインが同じディレクトリを指す必要があり、実際の言語は HTTP_HOST から簡単に抽出できます

言語ファイルを保存するためのソリューションはgettextです

于 2010-05-21T02:13:43.697 に答える
0

最も一般的な方法は、URL の一部として使用し、ページの読み込み時に抽出することです。

http://www.your-site.com/en/somepage

フレームワークを使用していますか?

于 2010-05-21T00:56:34.650 に答える