javascript 自动检测用户的首选语言和谷歌翻译

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/14823022/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-26 22:40:43  来源:igfitidea点击:

Detect User's Preferred Language and Google Translate Automatically

javascriptinternationalizationgoogle-translate

提问by Petar Stoyanov

I use this script in my site for translation

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

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

It is working just fine :) But is there a way to detect the user ip and auto translate when a user go in to my site?

它工作得很好:) 但是有没有办法在用户进入我的网站时检测用户 ip 并自动翻译?

采纳答案by Shervin

Although you can use IP-based location detection (see this answer), but it's neither reliable nor makes you wiser about user's preferred languages (e.g. users travelling abroad, etc.).

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

Websites with heavy international traffic use various parameters to decide in which language the content should be presented. Some of these parameters:

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

  • Accept-LanguageHTTP header which is discussed in detail here.
  • Values of properties window.navigator.languageor window.navigator.userLanguage(for IE)
  • IP-based location detection data checked against CLDR to provide you with common languages in that territory.
  • Accept-Language此处详细讨论的 HTTP 标头。
  • 属性值window.navigator.languagewindow.navigator.userLanguage(对于 IE)
  • 根据 CLDR 检查基于 IP 的位置检测数据,为您提供该地区的通用语言。

MediaWiki extension, UniversalLanguageSelector, uses these factors as well as stored user preferences to provide a list of common languages for each user. See getFrequentLanguageList().

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

W3C also has some recommendations.

W3C 也有一些建议

回答by Mousey

This script shows the translation drop-down box only for people with English not set as their primary or only language, and hides it when English users view the page- it is coded for English pages using the enin the google code.

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

It uses the first 2 characters of the language only to avoid checking for the many variants of Englishlike en-US, en-ttetc - they all begin with en.

它仅使用语言的前 2 个字符来避免检查英语许多变体,例如en-USen-tt等等——它们都以en.

This could easily be adapted to detect pageLanguageand compare it with the user's preferred language(s). The use of navigator.languagesis important because this is used on newer browser releases, see cross-browser compatibility explained

这可以很容易地进行调整以检测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>