Google Translate не скрыт

Выбрав «Автоматическую» версию виджета Google Translate, я ожидал, что не увижу раскрывающееся меню «Выбрать язык», если мой браузер поддерживает тот же язык, что и сайт. Однако я вижу это все время, независимо от того, для чего я установил атрибут html lang или какой язык я установил в своих браузерах. Я также заметил, что, похоже, нет никакой разницы, присутствует ли метатег «google-translate-customization» или нет, виджет всегда на виду.

Я бы хотел, чтобы сайт был просто переведен, если в браузере пользователя не установлен английский язык.

Любой совет будет принят во внимание.

Используемый код: -

В голове: -

<meta name="google-translate-customization" content="6bb255d109276506-b73cb06230e6b6c0-gbb2acb9bc95b4a11-12"></meta>

В теле: -

   <div id="google_translate_element"></div>
            <script>
            function googleTranslateElementInit() {
              new google.translate.TranslateElement({pageLanguage: 'en', layout: google.translate.TranslateElement.FloatPosition.TOP_LEFT}, 'google_translate_element');
            }
            </script>
            <script src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>

person Craig    schedule 13.11.2014    source источник
comment
возможный дубликат автоматического режима отображения переводчика веб-сайтов Google   -  person Mousey    schedule 14.08.2015


Ответы (2)


Вы можете попробовать этот небольшой скрипт jquery:

var userLang = navigator.language || navigator.userLanguage; 
if(userLang == "en"){
    $("#google_translate_element").css(["display", "none"]);
}

Не уверен, что if правильное. Я использую голландский браузер, и он показывает nl как userLang. Я почти уверен, что английскую следует называть en. В противном случае вам нужно предупредить пользовательский язык и изменить его на это.

alert(userLang);

Вот jsfiddle: http://jsfiddle.net/u950mwom/1/

person Stefan    schedule 13.11.2014
comment
Спасибо за это. Вероятно, это сработает, но дело в том, что он должен это делать в любом случае, в соответствии с тем, как я читал инструкции Google. Мне просто было интересно, справился ли кто-нибудь еще с этой проблемой или обсуждал ее с Google? - person Craig; 13.11.2014
comment
Может можно обратиться в поддержку гугла? они наверняка знают, как решить вашу проблему! :-) support.google.com - person Stefan; 13.11.2014
comment
Уже пробовал, спасибо. Просто попадите в цикл страниц без реального адреса электронной почты или подходящего форума, поэтому спрашивайте здесь. Но я почти уверен, что он не делает то, для чего предназначен. - person Craig; 13.11.2014
comment
Отредактированный код для добавления дополнительной совместимости путем добавления || navigator.languages; - также обратите внимание, что он возвращает язык с локалью, то есть обычно en_US, а не только en См. этот ответ для многих дополнительных английских языков. - person Mousey; 14.08.2015

Наконец, исправление для этого (это давняя ошибка в Google). Приведенный ниже код скрывает раскрывающийся список выбора языка для англоязычных пользователей на англоязычной странице. Он также совместим с такими языковыми стандартами, как en-US и более новыми браузерами.

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

объяснение кросс-браузерной совместимости

person Mousey    schedule 15.08.2015
comment
если userLang по умолчанию использует navigator.languages, это будет массив (по крайней мере, в последней версии chrome). Затем он выдаст ошибку типа при вызове substr - person zudduz; 16.11.2015