0

多言語スクリプトを使用して、言語から変更しています。デフォルトの言語(英語)を使用しているときに、言語から変更するのに問題があります

サイトは次のようになります。

example.com ( Main directory)
example.com/fr/
example.com/es/ 

example.com/fr/blabla/indexにいて、example.com / es / blabla / indexにアクセスしたい場合は、正常に機能します。

しかし、example.com / blabla / indexにいて、example.com / fr / blabla/indexにアクセスしたい場合。example.com/fr/indexにリダイレクトします

私が使用しているもの:

<?php
function switchLanguage($lang) {
    $u = explode('/', $_SERVER['REQUEST_URI']);
    $u[1] = $lang;
    return implode('/', $u);
}

?>

したがって、ディレクトリ/ engがないため、正しいパスにリダイレクトされないのは論理です。

配列を使ってURLを書き直すことは可能だと思っていましたか?このようなもの:

<?php 
function switchLanguage($lang) 
$array1 = array(' ', $_SERVER['REQUEST_URI']);
$array2 = array('$lang', ' ');
$newArray = array_combine($array1, $array2);

foreach ($newArray as $key ) {
        echo "$key $value"; 
}

?>

しかし、どうすればURLの値を取得できますか、またはどこが間違っているのでしょうか。

データベースまたは.iniとgeoipキャッシングを使用することはオプションではありません

4

2 に答える 2

1

を実行して、最初のディレクトリを上書きしてい$u[1] = $langます。配列を再構築して、言語を適切な場所にプッシュする必要があります。既に存在する可能性のあるもの (ディレクトリなど) を上書きするのではありません。

編集: array_splice を使用して、言語部分に追加します。

<?php
function switchLanguage($lang) {
    $u = explode('/', $_SERVER['REQUEST_URI']);
    $u = array_splice($u,1,0,$lang);
    return implode('/', $u);
}

?>
于 2012-05-18T10:19:14.507 に答える
1
function switchLanguage($lang, $defaultLang = "eng") {
    if($lang == $defaultLang) {
        $lang = "";
    }
    $u = explode('/', $_SERVER['REQUEST_URI']);
    $u[1] = $lang;
    return implode('/', $u);
}

あなたの問題を正しく理解していれば、これはうまくいくかもしれません。

于 2012-05-18T10:15:19.140 に答える