首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多语言站点:切换语言

多语言站点:切换语言
EN

Stack Overflow用户
提问于 2012-05-18 17:51:13
回答 2查看 635关注 0票数 0

我正在使用一个多语言脚本来改变语言。现在,当我使用默认语言(英语)时,我在更改语言时遇到了麻烦

该站点如下所示:

代码语言:javascript
复制
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

我使用的是:

代码语言:javascript
复制
<?php
function switchLanguage($lang) {
    $u = explode('/', $_SERVER['REQUEST_URI']);
    $u[1] = $lang;
    return implode('/', $u);
}

?>

所以我没有重定向到正确路径是合乎逻辑的,因为没有目录/eng。

我在想,有没有可能使用数组重写url?如下所示:

代码语言:javascript
复制
<?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缓存

EN

回答 2

Stack Overflow用户

发布于 2012-05-18 18:15:19

代码语言:javascript
复制
function switchLanguage($lang, $defaultLang = "eng") {
    if($lang == $defaultLang) {
        $lang = "";
    }
    $u = explode('/', $_SERVER['REQUEST_URI']);
    $u[1] = $lang;
    return implode('/', $u);
}

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

票数 1
EN

Stack Overflow用户

发布于 2012-05-18 18:19:15

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

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

代码语言:javascript
复制
<?php
function switchLanguage($lang) {
    $u = explode('/', $_SERVER['REQUEST_URI']);
    $u = array_splice($u,1,0,$lang);
    return implode('/', $u);
}

?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10650376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档