Utilizar el atributo translate
de HTML
Audiencia de destino:usuarios, codificadores XHTML/HTML (que utilicen editores o lenguaje script), desarrolladores de script (PHP, JSP, etc.), desarrolladores de Schema (DTD, XML Schema, RelaxNG, etc.), y cualquiera que necesite orientación sobre cómo utilizar el atributo translate
de HTML.
Pregunta
¿Para qué sirve el atributo translate
, y cómo debería utilizarlo?
Respuesta rápida
El atributo translate
de HTML5 indica si el contenido del elemento debería ser traducido o no. No hay un efecto directo en la página representada (aunque usted podría, por supuesto, estilizarlo si encuentra una buena razón para hacerlo). Por ejemplo,
Utilizar el atributo translate de HTML
El atributo puede aparecer en cualquier elemento, y sólo se necesitan dos valores: yes
o no
. Si el valor es no
, las herramientas de traducción deberían prevenir que el texto del elemento sea traducido. La herramienta de traducción en cuestión podría ser un traductor automático, como los que son ofrecidos en línea por Google, Microsoft y Yandex. O podría ser la herramienta en la ‘plataforma de trabajo’ de un traductor humano, lo cual impediría que el traductor cambiara el texto sin querer.
Poner este indicador para traducir en un elemento aplica ese valor a todos los elementos del contenido. HTML5 tiene una lista de atributos que deben ser traducidos por defecto, pero estos atributos no deberían traducirse si están en un elemento donde translate
ha sido establecido en no
. Cualesquiera otros atributos no deberían ser traducidos.
Si una página no tiene el atributo translate
, un sistema de traducción o traductor debería asumir que todo el texto debe ser traducido. Por lo tanto, es probable que no se use mucho el valor yes
, aunque sería muy útil si se necesita anular un comando para traducir en un elemento raíz e indicar algunas partes de texto que necesitan ser traducidas. Por ejemplo, es posible que quiera traducir el texto de lenguaje natural en ejemplos de código fuente, pero sin traducir el código.
Respuesta extensa
¿Por qué es necesario?
Agregar el atributo translate
a su página puede ayudar a que los lectores comprendan su contenido mejor cuando lo corran por sistemas de traducción automática, y puede ahorrar cantidades significativas en costos y molestias a los proveedores de traducciones que tienen que producir traducciones largas en diversos idiomas.
Es frecuente encontrarse con esta necesidad. Hay un ejemplo en la especificación de HTML5 sobre el Juego de la Abeja. Aquí presentamos un ejemplo similar, pero real, donde la documentación traducida se refiere a una máquina con texto en inglés en el panel de control del hardware que no había sido traducido.
Click the Resume button on the Status Display or the
CONTINUE button
on the printer panel.
En la traducción al alemán, esto sería:
Drücken Sie Fortsetzen in der Statusanzeige oder die
Taste CONTINUE
an Ihrem Drucker.
Aquí presentamos algunos otros ejemplos de la vida real que podrían beneficiarse con el atributo translate
. El primero es de un libro que cita el título de una obra que debería mantenerse en su idioma original.
La pregunta en el titulo How Far Can You Go? se aplica tanto al debilitamiento de las creencias religiosas tradicionales por la teología radical y el debilitamiento de la convención literaria por la perspectiva de “romper barreras”…
El próximo ejemplo se tomó directamente de una página en inglés sobre pan francés – pan en francés es pain – y el código no contiene el atributo translate
. El original está en inglés, lo que significa que una traducción automática traducirá pain con su significado en inglés, es decir dolor o sensasión física desagradable, en lugar de algo que se come según el significado en francés.
Welcome to french pain on Facebook. Join now to write reviews and connect with french pain. Help your friends discover great places to visit by recommending french pain.
Sería mejor agregar translate="no"
a los elementos strong
. (Y, dicho sea de paso, también sería útil para cosas como navegadores con voz rodear a pain con ...
.)
También se lo podría usar para proteger palabras clave, muestras de código o ejemplos y evitar que se traduzcan. En el primer párrafo del ejemplo siguiente la marca que parece ser simples palabras en inglés está siendo protegida para que no sea traducida. El código fuente del segundo párrafo garantiza que todo el párrafo quede en inglés.
Here is an example of the label element using the for attribute:
Cuando utilizar traducir =”yes”
Más que nada, el valor yes
del atributo translate
se utiliza para anular el efecto si translate
está en no
. Por ejemplo, podríamos querer permitir que el texto en lenguaje natural del código fuente de arriba sea traducido, pero protegiendo el código en si al mismo tiempo (es decir, las palabras clave como label
, for
, postcode
, input
, etc.). Podríamos hacer esto al rodear el texto en lenguaje natural con elementos que poseen el atributo translate
.
Here is an example of the label element using the for attribute:
Trabajar con atributos
Puede ser problemático trabajar con valores de atributos en la traducción. En general, los valores de atributos son parte de la sintaxis de la página, y por lo tanto no deberían ser traducidos. Si se traducen, la página se romperá. Sin embargo, en algunos casos los valores contienen texto legible para humanos (por ejemplo los valores de atributo en HTML title
, alt
, y placeholder
), aunque esto no es recomendable.1
1 Por ejemplo, es imposible marcar los valores de atributos para manejar textos bidireccionales en idiomas como el árabe y el hebreo, o marcar cosas como cambios de idioma. Y, por supuesto, puede ser difícil de determinar cuales valores de atributos deberían ser traducidos y cuáles no. También es difícil identificar una parte del valor de atributo que se debería dejar sin traducir, o un valor de atributo que no se debería traducir aun cuando el contenido del elemento está traducido.
La especificación HTML lista de atributos debería ser tratada como traducible. Los valores de atributos que no se encuentren en esta lista no deberían ser traducidos.
Si un valor de atributo ‘traducible’ aparece en un elemento que tiene translate
en no
, entonces se espera que el valor de atributo también permanecerá sin traducir.
Por supuesto esto puede presentar problemas en los casos donde sí quiere traducir los valores de atributo pero no el contenido del elemento, o viceversa. En algunos casos, estas situaciones pueden ser mitigadas al anidar el marcado en cuestión. Por ejemplo, usted podría tener un elemento span
exterior con translate
en yes
que cargue el title
del atributo que quiere traducir. Dentro de ese span
podría poner otro span
con translate
en no
y conteniendo el contenido del elemento. Es así como artículos, como el que usted está leyendo, lidian con enlaces a versiones traducidas de una página – el atributo title
del elemento exterior lleva el nombre del lenguaje indicado, y el elemento interior lleva el nombre de ese idioma en el idioma mismo (el cual no se debería cambiar). Esto también ayuda a etiquetar el idioma con el atributo lang
.
El siguiente ejemplo muestra cómo podría proteger la palabra ‘Inglés’, cuando esta es un enlace a la versión en inglés del documento, al traducir una página en alemán a otro idioma. El atributo informativo title
se traduciría. Sin el indicador para traducir, los servicios en línea actuales tienden a traducir la palabra ‘Inglés’ al equivalente en la lengua meta o al ‘Alemán’.
Sin embargo, debido a que estos son valores de atributos, es imposible indicar si partes del texto en el valor de atributo deberían ser protegidas de ser traducidas.
(Tenga en cuenta que la especificación HTML5, al momento de escritura, todavía no es estable, y puede que las implementaciones aún no sigan la especificación.)
Este enfoque es diferente al enfoque general recomendado por la especificación ITS para lenguajes basados en XML. ITS (ver más abajo) recomienda que por defecto los valores de atributos se dejen sin traducir, pero también provee una forma de indicar atributos específicos que deberían ser traducidos, independientemente de su contexto.
Añadir indicadores de traducción en una página
Ciertamente, el atributo translate
puede ser añadido a una página hecha por un autor de contenido que tenga en cuenta cómo quiere que se vea la página después de la traducción. Esto es particularmente útil para proteger el contenido cuando un lector traduce una página a través de un servicio de traducción automática, como los que son ofrecidos por Google, Microsoft y Yandex.
En los casos de traducción industrial, los localizadores pueden añadir atributos durante la etapa de preparación para la traducción, para evitar los efectos multiplicativos de lidiar con traducciones erróneas en varios idiomas. Esto se puede hacer a través de procesos automatizados, como herramientas de reconocimiento de entidades, que reconocen los nombres propios automáticamente.
También se pueden utilizar archivos externos para (entre otras cosas) apuntar al marcado de lo que no debe ser traducido. Por ejemplo, usted puede querer indicar que todos los elementos span
con un nombre de clase propio no sean traducidos. La especificación Conjunto de Etiquetas de Internacionalización (ITS) describe una forma de hacer esto. Un conjunto de normas como estas puede ser válido para una página o varias páginas al mismo tiempo. Los desarrolladores de contenido y localizadores pueden trabajar conjuntamente en la creación de estas reglas para lograr un proceso de localización más rápido y mejor.
Apoyo con la implementación del comando traducir
Al momento de escribir este artículo, el código translate="no"
se puede utilizar con los servicios de traducción en línea Google, Microsoft y Yandex. El uso de translate="yes"
para permitir la traducción en una parte del documento donde se había anulado la traducción no es compatible con Microsoft, pero sí con los otros dos servicios.
Vea los últimos resultados de la prueba.
El Grupo de Trabajo MultilingualWeb-LT, que ha estado trabajando en la especificación Conjunto de Etiquetas de Internacionalización, ha creado un documento, Metadatos para la Web Multilingüe – Escenarios de Uso e Implementaciones que describe otras aplicaciones y escenarios de uso en los que se reconoce el comando traducir.
Enfoques de sistema heredado para los servicios de traducción en línea
Antes de que se haya definido el atributo translate
, los servicios de traducción en línea de Google y Microsoft apoyaban a diversas formas poco comunes para expresar ideas similares.
Tanto Google como Microsoft utilizan class="notranslate"
, pero sustituir un valor de atributo class
con un atributo que es una parte formal del lenguaje hace que esta aplicación sea mucho más fiable, especialmente en contextos más amplios. Por ejemplo, una herramienta para preparar traducciones sería capaz de confiar en que el significado del atributo de HTML5 translate
siempre sea lo que se espera. También se hace más fácil trasladar el concepto a otros escenarios, como otras interfaces de programación de aplicaciones (APIs) de traducción o estándares de localización como XLIFF.
Aparentemente Microsoft apoya el style="notranslate"
. Esta no es una de las opciones que Google enumera para su servicio en línea, pero por otro lado tiene cosas que no están disponibles a través del servicio de Microsoft.
Por ejemplo, si usted tiene toda una página que no debería ser traducida, puede agregar dentro del elemento
head
de su página y Google no traducirá ningún contenido en esa página. (Sin embargo, también apoya .) Esto no debería ser específico para Google, y hacer esto de una sola forma, es decir
translate="no"
en la etiqueta html
, es mucho más limpio.
Los traductores de Microsoft y Google tampoco traducen el contenido que está dentro de elementos code
. Sin embargo, tenga en cuenta que parece no haber ninguna opción para esto – parece que no hay instrucciones sobre cómo reemplazar esta opción si desea traducir el contenido de su elemento code
.
Como se mencionó antes, el nuevo atributo translate
de HTML5 brinda una aplicación simple y estándar de HTML que puede reemplazar y simplificar todos aquellos métodos diferentes, y ayudará a los autores a desarrollar contenidos que también serán compatibles con otros sistemas.