Javascript 检测用户';s首选语言和谷歌自动翻译

Javascript 检测用户';s首选语言和谷歌自动翻译,javascript,internationalization,google-translate,Javascript,Internationalization,Google Translate,我在我的站点中使用此脚本进行翻译 <div id="google_translate_element" align="center"></div> <script type="text/javascript"> function googleTranslateElementInit() { new google.translate.TranslateElement({ pageLanguage: 'auto',

我在我的站点中使用此脚本进行翻译

<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>

函数googleTranslateElementInit(){
新的google.translate.TranslateElement({
页面语言:“自动”,
自动显示:false,
布局:google.translate.TranslateElement.InlineLayout.SIMPLE
}“谷歌翻译元素”);
}
它工作得很好:)
但是,有没有一种方法可以检测用户ip并在用户进入我的网站时自动翻译?

虽然您可以使用基于ip的位置检测(请参阅),但它既不可靠,也不能让您更明智地了解用户的首选语言(例如用户出国旅行等)

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

  • 详细讨论了HTTP头
  • 属性值
    window.navigator.language
    window.navigator.userLanguage
    (用于IE)
  • 根据CLDR检查基于IP的位置检测数据,为您提供该地区的通用语言
MediaWiki扩展名,
UniversalLanguageSelector
,使用这些因素以及存储的用户首选项为每个用户提供通用语言列表。看


W3C也有一些。

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

它只使用语言的前两个字符来避免检查类似的
en-US
en-tt
等-它们都以
en
开头

这可以很容易地用于检测
pageLanguage
,并将其与用户的首选语言进行比较。使用
navigator.languages
非常重要,因为这在较新的浏览器版本中使用,请参阅


var userLang=navigator.language | | navigator.userLanguage | | navigator.languages;
if(userLang.substr(0,2)!=“en”){
函数googleTranslateElementInit(){
新的google.translate.TranslateElement({pageLanguage:'en',布局:
google.translate.TranslateElement.FloatPosition.TOP_LEFT},“google_translate_element”);
}
}
否则{
document.getElementById(“谷歌翻译元素”).style.display=“无”;
}
在将标签应用于问题之前,请仔细阅读标签。这与“但有没有办法检测用户ip和自动翻译”无关,最好提供一个语言选项列表,让用户选择。法国国民在英国或德国旅行时可能更喜欢法语。
<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>