检测用户首选语言并自动使用谷歌翻译

9
我在我的网站上使用这个脚本进行翻译。
<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] 无关。 - Andrew Thompson
“但是有没有一种方法可以检测用户IP并自动翻译?”最好提供语言选项列表,让用户选择。法国人在英国或德国旅行时可能更喜欢选择法语。” - Andrew Thompson
2个回答

4
尽管您可以使用基于IP的位置检测(请参见此答案),但这既不可靠,也不会让您更了解用户的首选语言(例如:用户在国外旅行等)。
拥有大量国际流量的网站使用各种参数来决定以哪种语言呈现内容。其中一些参数包括:
  • Accept-Language HTTP头,详细讨论请参见此处
  • window.navigator.languagewindow.navigator.userLanguage(用于IE)属性的值。
  • 基于IP的位置检测数据与CLDR进行比较,为您提供该地域常见的语言列表。
MediaWiki扩展程序UniversalLanguageSelector也使用这些因素以及存储的用户偏好,为每个用户提供常见语言列表。请查看getFrequentLanguageList()
W3C也有一些建议

2
该脚本仅为非英语为其主要或唯一语言的人显示翻译下拉框,并且在英语用户查看页面时将其隐藏 - 它是使用Google代码中的en编码的英语页面。它仅使用语言的前两个字符,以避免检查许多英语变体,如en-USen-tt等 - 它们都以en开头。
这可以很容易地适应检测pageLanguage并将其与用户的首选语言进行比较。使用navigator.languages很重要,因为它用于较新的浏览器版本,请参见跨浏览器兼容性解释
<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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接