2013-10-19 114 views
0

我正在改變語言而不離開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; 
    } 

請幫我一把。

+0

您可以使用PHP Session實現,它存儲了當前正在處理的用戶的當前語言信息。 –

+0

對不起,你的問題非常含糊......「越深入,它顯示的鏈接越多」是什麼意思?請在提問時提供所有相關信息,讓人們討厭可能發生的事情並不好。 – arkascha

回答

1

開發多語言網站之前,請注意以下幾個要素:

  • 對於引用您的網站,一個頁面的鏈接必須有且只有一種語言。
    例如http://mydomain.com/mypage.php =>英文內容或其他語言,但不能同時使用,即使通過自動檢測用戶語言。使用http://fr.mydomain.com/mypage.phphttp://mydomain.it/mypage.phphttp://mydomain.com/en_US/mypage.php
    如果你不認爲這個幫助,你會殺了你自己的搜索引擎優化,使它在地板上流血。
  • 您可以使用$ _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']; ...
  • 你的語言系統的其他部分是什麼?