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
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 回答
1

You are overwriting the first directory by doing $u[1] = $lang. You need to rebuild the array, pushing the language into the right place, not by overwriting something that may already be there (e.g. a directory)

Edit: Use array_splice to add in the language part:

<?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 回答