我正在使用多语言脚本来改变lanquage。 现在,当我使用默认语言(英语)
时,我遇到了从语言改变的麻烦该网站看起来像:
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。
我在想是否可以使用数组重写网址? 像这样:
<?php
function switchLanguage($lang)
$array1 = array(' ', $_SERVER['REQUEST_URI']);
$array2 = array('$lang', ' ');
$newArray = array_combine($array1, $array2);
foreach ($newArray as $key ) {
echo "$key $value";
}
?>
但是我怎样才能在网址中找到值或者我错在哪里。
使用数据库或.ini和geoip缓存不是一个选项
答案 0 :(得分:1)
function switchLanguage($lang, $defaultLang = "eng") {
if($lang == $defaultLang) {
$lang = "";
}
$u = explode('/', $_SERVER['REQUEST_URI']);
$u[1] = $lang;
return implode('/', $u);
}
如果我理解你的问题,这可能会有效。
答案 1 :(得分: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);
}
?>