2011-02-03 12 views
9

Я добавил панель перевода Google на наш сайт, но из-за того, как работает макет, если перевод в основной навигации длиннее английского, толкает некоторые ссылки на следующую строку и начинает скрыть другие элементы. У меня есть Javascript, который обнаруживает, что панель перевода используется, и делает содержащий div для меню и окна поиска более широким для компенсации, в то время как это влияет на макет, гораздо предпочтительнее охватить части страницы.Обнаружение перевода Google Chrome

Однако Chrome теперь имеет встроенный перевод в браузер, если кто-то использует это, очевидно, что они не будут использовать встроенную версию, и поэтому я не могу ее обнаружить, чтобы применить мое исправление ширины. Есть ли способ определить, используется ли встроенный перевод Chrome?

+0

Меня это тоже интересует. Вы когда-нибудь узнавали, как это сделать? – whitehawk

+0

@whitehawk см. Мой комментарий добавил ниже – Chao

ответ

13

Возможно, попробуйте использовать js, чтобы определить, изменилось ли содержимое меню, а затем применить новые стили.

UPDATE

Когда Chrome транслирует страницы он добавляет несколько элементов на странице:

  • два script элементы в head тег
  • глобальный объект window.google
  • class = "translated-ltr" к html теге
  • div id="goog-gt-tt" в body тег

Вы можете следить за изменениями в DOM, чтобы узнать, когда содержание переводится:

document.addEventListener('DOMSubtreeModified', function (e) { 
    if(e.target.tagName === 'HTML' && window.google) { 
     if(e.target.className.match('translated')) { 
      // page has been translated 
     } else { 
      // page has been translated and translation was canceled 
     } 
    } 
}, true); 
+0

Не совсем то, что я сделал, но это самое близкое решение. Я использовал плагин jQuery resize http://benalman.com/projects/jquery-resize-plugin/, чтобы обнаружить изменение размера меню, а не обнаруживать изменяющийся контент. – Chao

+0

Очень круто, большое спасибо! – BairDev

+0

Может быть интересно отметить, что для встроенной функции перевода в Google Chrome работают только третий и четвертый методы. Я также предполагаю, что 'transl-ltr' может быть' transl-rtl' в зависимости от того, на каком языке переводится. Тем не менее, я все равно немного сомневаюсь, учитывая, что вы используете только имена классов, которые могут легко измениться на нечто совершенно другое. – Knelis

2

Я знаю, что это путь поздно ... и это не решение JS .. но если вам просто нужно убедиться, что вы можете стилизовать элементы на своей странице, когда отображается панель Google Translate, вы можете использовать CSS. Код перевода добавляет класс «transl-ltr» (или «transl-rtl», если язык справа налево, а не слева направо, как английский) в тег body.

Таким образом, вы можете использовать CSS classess как:

.translated-ltr .nav, .translated-rtl .nav {} 

подставив правильный класс/ID для ваших деталей по мере необходимости.

Надеюсь, это поможет!

Смежные вопросы