多语言网站:切换语言


Multilingual site: switching languages

我正在使用多语言脚本从语言更改。现在,当我使用默认语言(英语(时,我无法从语言更改

该网站看起来像:

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缓存不是一种选择

您正在通过执行$u[1] = $lang来覆盖第一个目录。 您需要重建数组,将语言推到正确的位置,而不是覆盖可能已经存在的东西(例如目录(

编辑:使用array_splice在语言部分添加:

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

如果我正确理解您的问题,这可能会起作用。