1

我正在使用 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 返回的代码加载不同的内容。

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

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


谢谢!

4

2 回答 2

1

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

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

通过使用这种方法,您还可以确保无论网站的哪个部分被链接并因此在搜索引擎中得到改进,整个域都将获得更好的排名,从而使您的 SEO 工作保持一致。

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

于 2013-04-04T18:06:15.823 回答
0

用于隐藏谷歌工具栏的 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>

页面加载时触发事件

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');
于 2019-06-26T09:37:40.130 回答