PHP更改当前站点的语言

时间:2013-10-19 07:09:51

标签: php

我正在努力改变语言而不离开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;
    }

请帮帮我。

1 个答案:

答案 0 :(得分:1)

在开发多语言网站之前,请注意以下要素:

  • 要引用您的网站,一页链接必须只有一种语言 例如http://mydomain.com/mypage.php =&gt;即使通过自动检测用户语言,也可以使用英语或其他语言,但不能同时使用两种语言。使用http://fr.mydomain.com/mypage.phphttp://mydomain.it/mypage.phphttp://mydomain.com/en_US/mypage.php 如果你不考虑这个帮助,你会杀死自己的搜索引擎优化,让它在地板上流连忘返。
  • 您可以使用$ _SERVER ['HTTP_ACCEPT_LANGUAGE']自动检测用户语言。
    例如HTTP_ACCEPT_LANGUAGE =&gt; FR-FR,FR; Q = 0.8,的en-US; Q = 0.6,连接; Q = 0.4
  • 按语言分隔数据(一种语言版本,网站上每种语言只有一种版本,请避免在英文网站上使用法语内容)。
    您可以使用多个表(不推荐),多个数据库(方便但不可持续),多行(方便但不可持续)或一行语言参考(概念上最好的解决方案,但它意味着很多查询。)

对于你的问题......(是的,我有一个答案:D) 您是在会话或Cookie中保存所选语言吗? 我想我们缺少很多信息:

  • 保存所选语言的位置。
  • “我会越深入其显示的链接。”你是什​​么意思?
  • 你在做什么$params = $_GET; $params['lang'] = $res['languagecode']; ......
  • 你的语言系统的其余部分是什么?