繁体   English   中英

检测用户的首选语言和Google自动翻译

[英]Detect User's Preferred Language and Google Translate Automatically

我在我的网站上使用此脚本进行翻译

<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和用户进入我的网站时自动翻译?

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

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

  • Accept-Language中详细讨论的HTTP标头这里
  • 属性值window.navigator.languagewindow.navigator.userLanguage (对于IE)
  • 基于IP的位置检测数据针对CLDR进行检查,以便为您提供该领域的通用语言。

MediaWiki扩展, UniversalLanguageSelector ,使用这些因素以及存储的用户首选项来为每个用户提供常用语言列表。 请参阅getFrequentLanguageList()

W3C也有一些建议

此脚本仅针对英语未设置为主要或唯一语言的人显示翻译下拉框,并在英语用户查看页面时隐藏它 - 使用Google代码中的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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM