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 并自动翻译?

4

2 回答 2

4

虽然您可以使用基于 IP 的位置检测(请参阅此答案),但它既不可靠也不会让您更了解用户的首选语言(例如出国旅行的用户等)。

具有大量国际流量的网站使用各种参数来决定应该以哪种语言呈现内容。其中一些参数:

  • Accept-Language此处详细讨论的 HTTP 标头。
  • 属性值window.navigator.languagewindow.navigator.userLanguage(对于 IE)
  • 根据 CLDR 检查基于 IP 的位置检测数据,为您提供该地区的通用语言。

MediaWiki 扩展程序UniversalLanguageSelector使用这些因素以及存储的用户偏好来为每个用户提供常用语言列表。见getFrequentLanguageList()

W3C 也有一些建议

于 2013-04-12T00:54:49.753 回答
2

此脚本仅针对未将英语设置为其主要或唯一语言的人显示翻译下拉框,并在英语用户查看页面时将其隐藏-​​ 它是使用en谷歌代码中的英文页面编码的。

它仅使用该语言的前 2 个字符来避免检查英语之类的许多变体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>
于 2015-08-15T02:17:09.347 回答