我正在努力在不离开当前网站的情况下更改语言以进行PHP。这是我到目前为止提出的代码,它仅在主页上工作正常,它显示的链接越多,我越深入。
function print_languages()
{
global $sipnati, $phrase;
$sql = $sipnati->db->query("
SELECT " . (MYSQL_QUERYCACHE ? "SQL_CACHE " : "") . "languageid, languagecode, title, canselect
FROM " . DB_PREFIX . "language
", 0, null, __FILE__, __LINE__);
$html = '';
while ($res = $sipnati->db->fetch_array($sql, DB_ASSOC))
{
$params = $_GET;
$params['lang'] = $res['languagecode'];
$qs = '?';
foreach($params as $k=>$v)
{
$qs .= $k.'='.urlencode($v).'&';
$html .= '<a class="flagi" href="' . substr($_SERVER['PHP_SELF'].$qs, 0, -1) . '"><img src="images/default/flag-' . $v . '.png" /></a>';
}
}
unset($res);
return $html;
}
请帮帮我。
在开发多语言网站之前,请注意以下元素:
- 为了引用您的网站,一个页面链接必须具有一种且只有一种语言。
例如 http://mydomain.com/mypage.php => 英语或其他语言的内容,但不能同时使用这两种语言,即使通过自动检测用户语言也是如此。使用 http://fr.mydomain.com/mypage.php、http://mydomain.it/mypage.php 或 http://mydomain.com/en_US/mypage.php。
如果你不考虑这种帮助,你会杀死你自己的SEO,让它在地板上流血。 - 您可以使用 $_SERVER['HTTP_ACCEPT_LANGUAGE'] 自动检测用户语言。
例如 HTTP_ACCEPT_LANGUAGE => fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
按语言 - 分隔数据(按语言一个版本,网站上每种语言只有一个版本,避免在英语网站上使用法语内容)。
您可以使用多个表(不推荐)、多个数据库(方便但不可持续)、多行(方便但不可持续)或带有语言引用的一行(概念上是最佳解决方案,但它意味着很多查询)。
对于您的问题...(是的,我有一个答案给你:D)您是否将所选语言保存在会话或 Cookie 中?我认为我们缺少很多信息:
- 保存所选语言的位置。
- "我走得越深,它显示的链接就越多。"你是什么意思?
- 你用
$params = $_GET; $params['lang'] = $res['languagecode'];
做什么... - 你的语言系统的其余部分是什么?