我正在使用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/en/contact
德语网站:sitename.com/de/kontakt
斯洛文尼亚网站:sitename.com/si/kontakt
谢谢!
我建议您使用描述性URL。它使得基于URL的搜索与任何搜索引擎100%不同,从而消除了混乱。
确保将每个页面上的META信息更改为正确的语言。这将有助于从一开始就对语言进行分类。
通过使用这种方法,您还可以确保无论网站的哪个部分得到链接,从而在搜索引擎中得到改进,完整的域名都将获得更好的排名,从而使您的SEO工作保持一致。
可读的URL在任何方面都是这个十年最好的主意。
隐藏google工具栏
.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');