Определение предпочтительного языка пользователя и Google Translate автоматически

Я использую этот скрипт на своем сайте для перевода

<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-адрес пользователя и автоматический перевод, когда пользователь заходит на мой сайт?

2 ответа

Решение

Хотя вы можете использовать определение местоположения на основе IP (см. Этот ответ), но это не надежно и не делает вас мудрее в отношении предпочтительных языков пользователя (например, пользователей, путешествующих за границу и т. Д.).

Веб-сайты с большим международным трафиком используют различные параметры, чтобы решить, на каком языке должен быть представлен контент. Некоторые из этих параметров:

  • Accept-Language Заголовок HTTP, который подробно обсуждается здесь.
  • Значения свойств window.navigator.language или же window.navigator.userLanguage (для IE)
  • Данные определения местоположения на основе IP проверены по CLDR, чтобы предоставить вам общие языки на этой территории.

Расширение MediaWiki, UniversalLanguageSelector использует эти факторы, а также сохраненные пользовательские настройки, чтобы предоставить список общих языков для каждого пользователя. Увидеть getFrequentLanguageList(),

W3C также имеет несколько рекомендаций.

Этот сценарий показывает раскрывающийся список перевода только для людей с английским языком, не установленным в качестве основного или единственного языка, и скрывает его при просмотре страниц пользователями английского языка - он кодируется для английских страниц с использованием en в коде Google.

Он использует только первые 2 символа языка, чтобы избежать проверки на многие варианты английского языка, такие как en-US, en-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>
Другие вопросы по тегам