2011-02-03 30 views
9

He añadido la barra de traducción de Google a nuestro sitio web pero debido a cómo funciona el diseño si la traducción en la navegación principal es más larga que el inglés empuja algunos enlaces hasta la siguiente fila y comienza a cubrir otros elementos Tengo un Javascript que detecta si la barra de traducción está en uso y hace que el div que contiene para el menú y el cuadro de búsqueda sean más anchos para compensar, mientras que esto afecta el diseño, es preferible que cubra partes de la página.Detectando traducción Google Chrome

Sin embargo, Chrome ahora tiene la traducción integrada en el navegador, si alguien utiliza esto obviamente no usará la versión incrustada y por lo tanto no puedo detectar que aplique mi corrección de ancho. ¿Hay alguna forma de detectar si se está utilizando la traducción integrada de Chrome?

+0

También estoy interesado en esto, en realidad. ¿Alguna vez descubrió cómo hacerlo? – whitehawk

+0

@whitehawk ver mi comentario agregado debajo – Chao

Respuesta

13

Quizás intente usar js para detectar si el contenido del menú ha cambiado y luego aplicar nuevos estilos.

ACTUALIZACIÓN

Cuando Chrome traduce una página que añade varios elementos de una página:

  • dos script elementos para head etiqueta
  • objeto global window.google
  • class = "translated-ltr" a html etiqueta
  • div id="goog-gt-tt" a body etiqueta

Usted puede ver los cambios en DOM para averiguar cuando el contenido se traduce:

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

No es exactamente lo que hice pero es la solución más cercana. Usé el plugin jQuery resize http://benalman.com/projects/jquery-resize-plugin/ para detectar el tamaño de cambio de menú, en lugar de detectar el cambio de contenido. – Chao

+0

Muy bueno, muchas gracias! – BairDev

+0

Puede ser interesante observar que para la función de traducción incorporada de Google Chrome, solo los métodos tercero y cuarto parecen funcionar. También estoy suponiendo que 'translate-ltr' puede ser' translated-rtl' dependiendo del idioma al que se está traduciendo. Sin embargo, aún dudaría un poco, considerando que solo estás usando nombres de clase, lo que podría cambiar fácilmente a algo bastante diferente. – Knelis

2

Sé que esto es así tarde ... y no es una solución JS .. .pero si solo necesita poder asegurarse de que pueda darle estilo a los elementos en su página cuando se muestre la barra Google Translate, puede usar CSS. El código de traducción agrega una clase de "traducido-ltr" (o "traducido-rtl" si el idioma es de derecha a izquierda y no de izquierda a derecha como en inglés) a la etiqueta de cuerpo.

Así se puede utilizar como classess CSS:

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

sustitución de la clase correcta/Identificación de los elementos según sea necesario.

Espero que esto ayude!