代码之家  ›  专栏  ›  技术社区  ›  Panda

谷歌和具有相同URL的多语言网站

  •  1
  • Panda  · 技术社区  · 12 年前

    我正在构建一个支持多种语言的网站,使用geoplugin-php类来检测国家代码。这是我的地理定位代码:

    //GEOLOCATE
    $geoplugin = new geoPlugin(); 
    $geoplugin->locate();
    define('REAL_COUNTRY', strtoupper($geoplugin->countryCode));
    
    //AVAILABLE COUNTRIES
    function available_countries(){
        $countries_array = array();
        $sql = mysql_query("SELECT id FROM countries WHERE enabled = '1';") or die(mysql_error());
        while($row = mysql_fetch_array($sql)) array_push($countries_array, $row['id']);
        return $countries_array;
    }
    
    //RETURN COUNTRY CODE
    function detect_language(){
        if(isset($_COOKIE['country'])) return $_COOKIE['country'];
        else if(isset($_SESSION['country'])) return $_SESSION['country'];
        else if(in_array(REAL_COUNTRY, available_countries())) return REAL_COUNTRY;
        else return 'EN';
    }
    

    根据返回的国家代码,我的php脚本然后从数据库加载内容。

    我希望链接的格式如下:

    英文网站:sitename.com/contact
    德语网站:sitename.com/kontakt
    斯洛文尼亚网站:sitename.com/kontakt


    注意,德国和斯洛文尼亚网站的URL是相同的,但它仍然根据IP和geoplugin返回的代码加载不同的内容。

    该网站运行良好,但我担心的是谷歌和其他搜索引擎。谷歌会找到除“EN”以外的其他语言的页面吗?还是最好使用更经典的方法,在URL中添加一个语言id,如下所示:

    英文网站:sitename.com/ /联系人
    德国网站:sitename.com/ 判定元件 /孔塔克
    斯洛文尼亚网站:sitename.com/ /孔塔克


    谢谢

    2 回复  |  直到 12 年前
        1
  •  1
  •   Adesso    12 年前

    我建议您使用描述性URL。它使基于URL的搜索引擎与任何搜索引擎都有100%的不同,从而消除了混乱。

    请确保您也将每个页面上的META信息更改为正确的语言。这将有助于从一开始就对语言进行分类。

    通过使用这种方法,你还可以确保,无论网站的哪个部分被链接,从而在搜索引擎中得到改进,整个域名都会得到更好的排名,从而保持你的SEO努力。

    可读URL在各个方面都是这十年的最佳创意。

        2
  •  0
  •   adiga    5 年前

    隐藏谷歌工具栏的CSS

    .goog-te-banner-frame.skiptranslate {
        display: none !important;
    }
    #google_translate_element{
        display: none !important;   
    }
    

    用于翻译的回调功能

    function googleTranslateElementInit() {
        new google.translate.TranslateElement({
            pageLanguage: 'de', 
            //includedLanguages: 'ar,en,gu,hi,pa,ur',       
            autoDisplay: false,
    
        }, 'google_translate_element');
    }
    
    <script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
    

    页面加载时的fire事件

    function fireEvent(element, event) {
      if (document.createEventObject) {
        var evt = document.createEventObject();
        return element.fireEvent('on' + event, evt)
      } else {
        var evt = document.createEvent("HTMLEvents");
        evt.initEvent(event, true, true);
        return !element.dispatchEvent(evt);
      }
    }
    
    var jObj = $('.goog-te-combo');
    var db = jObj.get(0);
    jObj.val('gu');
    fireEvent(db, 'change');