2013-02-11 101 views
7

我使用這個腳本在我的網站翻譯檢測用戶的首選語言和谷歌翻譯自動

<div id="google_translate_element" align="center"></div> 
<script type="text/javascript"> 
    function googleTranslateElementInit() { 
     new google.translate.TranslateElement({ 
     pageLanguage: 'auto', 
     autoDisplay: false, 
     layout: google.translate.TranslateElement.InlineLayout.SIMPLE 
     }, 'google_translate_element'); 
    } 
</script> 
<script src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script> 

它工作得很好:) 但是,有沒有一種方法來檢測用戶的IP和經銷商的翻譯時,用戶進入我的網站?

+1

請閱讀** **的標籤把它們應用到一個問題前仔細閱讀。這與[tag:java]無關。 – 2013-02-11 23:41:42

+0

*「但有沒有辦法檢測用戶的IP和自動翻譯」*最好提供一個語言選項列表,讓用戶選擇。法國人在英國或德國旅行時可能更喜歡法語。 – 2013-02-11 23:43:40

回答

2

雖然您可以使用基於IP的位置檢測(請參閱this answer),但它既不可靠也不會讓您更加了解用戶的首選語言(例如,出國旅行的用戶等)。

具有較大國際流量的網站使用各種參數來決定內容應以哪種語言呈現。其中一些參數:

  • Accept-Language HTTP標頭詳細討論了here。性能window.navigator.language或反對CLDR檢查window.navigator.userLanguage(用於IE)
  • 基於IP的位置檢測數據的
  • 價值觀爲您提供在該地區共同的語言。

MediaWiki擴展UniversalLanguageSelector使用這些因子以及存儲的用戶偏好爲每個用戶提供一個通用語言列表。見getFrequentLanguageList()

W3C也有一些recommendations

1

此腳本翻譯下拉框只能用於英語的人不能設置爲主要或唯一的語言,並隱藏它當英語用戶查看頁面 - 它被編碼爲使用在該en英文網頁谷歌代碼。

它使用該語言的前2個字符,以避免檢查many variants of English,如en-US,en-tt等 - 它們都以en開頭。

這可以很容易地適應檢測pageLanguage並將其與用戶的首選語言進行比較。因爲這是用在新的瀏覽器版本,看到使用navigator.languages是重要cross-browser compatibility explained

<div id="google_translate_element"></div> 
<script type="text/javascript"> 
var userLang = navigator.language || navigator.userLanguage || navigator.languages; 
if (userLang.substr(0,2) != "en"){ 
    function googleTranslateElementInit() { 
    new google.translate.TranslateElement({pageLanguage: 'en', layout: 
    google.translate.TranslateElement.FloatPosition.TOP_LEFT}, 'google_translate_element'); 
    } 
} 
else { 
    document.getElementById("google_translate_element").style.display="none"; 
    } 
</script> 
<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>