0

我正在实现一个 PHP 函数来基于 HTTP_ACCEPT_LANGUAGE 翻译我的网站,但也由用户选择:

<?php 
if (!isset($language)) {
$language = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$language = strtolower(substr(chop($language[0]),0,2));
}

include("functions/content_".$language.".php"); 
?>

当用户单击导航栏中的链接时,用户选择出现,如下所示:

<ul>
<li><a href="portfolio.php?language=es">Español</a></li>
<li><a href="portfolio.php?language=en">Enshlish</a></li>
<li><a href="portfolio.php?language=fr">Français</a></li>
</ul>

问题是我无法使用 href 更改 $language 的值,它始终自定义为“es”(我的浏览器设置为西班牙语)。

4

2 回答 2

1

你可以试试这个

$language = isset($_GET['language']) ? $_GET['language'] : false;
if(!$language) {
    $language = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
    $language = strtolower(substr(chop($language[0]),0,2));
}

此外,您可以使用函数(辅助函数),例如

function setlanguage()
{
    $language = isset($_GET['language']) ? $_GET['language'] : false;
    if(!$language) {
        $language = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
        $language = strtolower(substr(chop($language[0]),0,2));
    }
    return $language;
}

像这样使用它

$language = setlanguage();
include("functions/content_".$language.".php");
于 2013-10-13T16:48:19.463 回答
1

在检查它是否已设置之前,您是否获得了 $language 的值?关闭 register_globals 后,您需要从 $_GET 变量中获取它以从 URL 中获取它:
if(isset($_GET['language'])){ $language = $_GET['language']; }

于 2013-10-13T16:46:52.643 回答