PHP更改当前站点的语言


PHP change language of current site

我正在努力在不离开当前网站的情况下更改语言以进行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'];做什么...
  • 你的语言系统的其余部分是什么?