La tecla de acceso 'n' lleva a la navegación de la página. Ir al inicio del contenido.

Este documento es una traducción. En caso de discrepancias o errores, la única versión normativa es el último original en inglés. Los derechos de autor originales corresponden al W3C, como puede verse al final de la página.

Traductor: Spanish Translation Team, Spanish Translation US.

s_gotoW3cHome Internacionalización
 

Identificación del idioma en XHTML y HTML

Audiencia de destino: Autores de contenido de HTML/XHTML y CSS. Este material se aplica para la creación de documentos en un editor o mediante secuencia de comandos. Se asume que usted posee un conocimiento básico de HTML y CSS.

Nota: Desde la traducción de este documento se han producido modificaciones en el original en Inglés. Consulte el registro de cambios.

¿Por qué debería leer esto?

La información sobre el idioma en uso de una página es importante por cuestiones de accesibilidad, estilo, búsqueda y otras razones. Además, la información sobre el idioma, que normalmente se transmite entre el agente de usuario y el servidor, puede utilizarse para ayudar a mejorar la navegación de los usuarios y la capacidad de localizar su sitio. Este tutorial lo ayudará a aprovechar las oportunidades disponibles, ahora y en un futuro próximo, mediante la información adecuada sobre el idioma.

Objetivos

Al finalizar el tutorial, será capaz de:

Si tiene prisa y simplemente desea saber qué hacer, sin leer la teoría, comience en la sección Identificación del idioma de procesamiento de textos.

¿Por qué identificar el idioma?

Las aplicaciones pueden utilizar información sobre el idioma del contenido para enviar a los usuarios la información que sea más adecuada, o para presentarla de la manera más adecuada. Cuanto más contenido se etiquete de la manera correcta, más útiles y extendidas serán las aplicaciones.

La información sobre el idioma es útil por cuestiones relacionadas con accesibilidad, herramientas de autoría, herramientas de traducción, selección de fuente, visualización de página, búsqueda y secuencia de comandos.

Desde el primer momento, la información sobre el idioma de un documento es extremadamente importante para los lectores de pantalla y la accesibilidad. Estas aplicaciones necesitan saber si pueden generar resultados a partir del texto o si, tal vez, necesitan cambiar a un modo de idioma diferente.

Las herramientas de autoría pueden utilizar información sobre el idioma para acciones tales como corrección ortográfica y gramatical. En el caso de la autoría de contenido web, para obtener el tipo de respaldo que brindaban productos como Microsoft Office, es esencial que los autores sepan cómo relacionar sus documentos y textos con la información sobre el idioma, y que lo hagan.

Aquí hay un ejemplo de cómo un navegador puede utilizar información sobre el idioma. Una página codificada en idiomas Unicode, chino simplificado, chino tradicional, japonés y coreano puede compartir los mismos puntos de código de los caracteres ideográficos. Sin embargo, los hablantes de estos idiomas tienen la expectativa de que, en los glifos utilizados, haya pequeños detalles que varíen de un idioma a otro. Algunos navegadores utilizan información sobre los idiomas para asignar fuentes a éstos de manera automática, en caso de que no se haya identificado el estilo. La ilustración que aparece abajo muestra cómo el texto se ve afectado al cambiar nada más que la etiqueta del idioma en un navegador como Firefox o Internet Explorer. (Puede intentar hacerlo usted mismo mediante la página de prueba de la cual proviene la etiqueta.)

Captura de pantalla de una parte de una página simple, donde el navegador aplica distintas fuentes al mismo carácter, según si el texto se etiqueta como chino simplificado, chino tradicional, japonés o coreano.

El etiquetado de idiomas también le permite aplicar variaciones estilísticas adecuadas que se definen en una hoja de estilo. (Véase Estilos con el atributo idioma (lang).) Por ejemplo, es posible que sea necesario modificar las fuentes o el espaciado de línea para adaptarse a diferentes alfabetos, que las comillas generadas por el estilo deban ser distintas según el idioma, que el énfasis deba expresarse en distintas formas según el idioma, etc.

Etiquetar información sobre el idioma también permite realizar el procesamiento específico de dicho idioma. Por ejemplo, el proceso de XSLT puede utilizarse para extraer texto ordenado de la manera adecuada para el idioma del documento. En forma alternativa, al utilizar la función lang() de XSLT, se puede extraer texto específico del idioma desde un archivo. Otro ejemplo es que puede utilizar información sobre el idioma para aplicar un estilo específico de la cultura, como el énfasis o la sustitución de comillas, durante la conversión a XSL-FO.

En muchos casos, cuando comience a desarrollar su contenido, es posible que considere que estas aplicaciones no son un tema relevante; sin embargo, si bien generalmente es muy fácil agregarlas durante el proceso de creación, resulta mucho más problemático actualizarlas cuando se necesita.

Además, algunas de las aplicaciones para etiquetado de idiomas aún se encuentran en su etapa de desarrollo inicial o no se han comenzado a desarrollar, pero lo mejor es que agregue la información sobre el idioma para su contenido ahora, a fin de poder obtener los beneficios cuando la tecnología se perfeccione.

Esto puede cambiar en el futuro, particularmente a medida que los motores de búsqueda más importantes adquieran mayor interés en los idiomas. Sin embargo, actualmente nos enfrentamos a un problema sin solución. Quienes no ven cuáles son las aplicaciones de la información sobre el idioma no suministran información sobre sus contenidos. Las aplicaciones relacionadas con el idioma se implementan lentamente, hasta que dicha información se aplica al contenido de manera amplia. Este ciclo puede cortarse si los autores de contenido toman medidas para la identificación de la información sobre el idioma.

Como ya se dijo, generalmente esto puede hacerse con facilidad y de manera inmediata, y no trae consecuencias.

Dos tipos de identificación del idioma

Hay dos maneras de referirse al idioma de los contenidos:

  1. Expresar el idioma de una extensión específica de texto, de manera que las aplicaciones que manipulen dicho texto (como motores de texto a voz, hojas de estilo, etc.) puedan comprenderlo o manejarlo correctamente.

  2. asignar el idioma del público esperado del documento. Estos son metadatos acerca del recurso en su conjunto que podrían utilizarse para la negociación del contenido, etc.

El primer tipo de identificación se refiere a lo que denominamos idioma de procesamiento de textos. Necesariamente, deberá referirse a un solo idioma a la vez, aunque esa identificación pueda ser invalidada por un fragmento incorporado en el texto (por ejemplo, una cita en francés dentro de contenido en inglés).

Por otra parte, identificar el idioma del público esperado podría implicar la identificación de más de un idioma, por ejemplo, para documentos que contengan textos paralelos en múltiples idiomas. Sin embargo, no necesariamente enumerará cada idioma que aparezca en dicho documento (por ejemplo, un manual de frases en japonés para turistas ingleses puede contener mucho texto en japonés, pero el idioma del público al que está dirigido es inglés).

Para ver una análisis adicional de las diferencias entre estas dos maneras de describir el idioma, lea Mejores prácticas de internacionalización: especificación del idioma en XHTML & Contenido HTML.

Para HTML y XHTML, vale la pena considerar cómo difieren las estrategias para identificar el idioma en cada uno de los casos arriba mencionados.

Una ilustración de las dos diferentes maneras de describir el idioma en un documento.

Formas de identificar el idioma en XHTML/HTML

Hay cuatro lugares donde se puede identificar información sobre el idioma para un documento XHTML o HTML:

  1. En el encabezado Content-Language (idioma del contenido) HTTP. Este encabezado no forma parte del documento, pero es enviado junto con éste a través de un servidor. Si bien es posible enviar información sobre el idioma, no siempre se envía. El siguiente es un ejemplo de las partes superior e inferior de un encabezado HTTP, que muestra la información sobre el idioma en la línea inferior.

    HTTP/1.1 200 OK
    Date: Wed, 05 Nov 2003 10:46:04 GMT
    Server: Apache/1.3.28 (Unix) PHP/4.2.3
    …
    Content-Type: text/html; charset=utf-8
    Content-Language: en, fr, es
  2. En un atributo de idioma en la etiqueta html. Por ejemplo:

    <html lang="en">
  3. En un metaelemento, en el encabezado del documento con el atributo de contenido configurado en Content-Language. Por ejemplo:

    <meta http-equiv="Content-Language" content="en,fr,es" />
  4. En un atributo de idioma, en un elemento dentro del documento. Por ejemplo:

    <p>La palabra francesa para <em>cat</em> es <em lang="fr">chat</em>.

Encabezado Content-Language de HTTP

El encabezado Content-Language de HTTP se configura en el servidor y se envía con un archivo.

Puede especificar más de un idioma a la vez. Es adecuado para identificar el idioma del público al que está dirigido, pero no para la identificación del idioma de procesamiento de textos, que sólo puede ser un único idioma por vez.

Si el agente de usuario extrae información sobre el idioma del encabezado HTTP, esa identificación será invalidada por cualquier otra que utilice atributos de la etiqueta html.

Si no se identifica ningún idioma en la etiqueta html, algunos pero no todos los navegadores predominantes reconocerán el valor declarado en el encabezado HTTP para las aplicaciones de procesamiento de textos. Sin embargo, aun en un navegador que reconozca esta identificación, la aplicación de esta información tiende a ser algo irregular.

Atributos de idioma

Todos los elementos contenidos heredan la información sobre el idioma que se identifica mediante el atributo lang o xml:lang. Esto significa que identificar la información sobre el idioma en el elemento html configura el idioma de procesamiento de texto predeterminado para todo el documento. Observe, tal como se ha mencionado, que esta clase de declaración invalida toda declaración contradictoria en el encabezado HTTP.

Sólo puede especificar un único idioma por elemento mediante los atributos de idioma. Por esta razón, este enfoque no se ajusta bien a la identificación de idiomas primarios cuando hay múltiples idiomas involucrados. Por otra parte, la restricción a tan solo un idioma por elemento es exactamente lo que se necesita para declarar idiomas de procesamiento de textos.

Puede agregar atributos de idioma a cualquier elemento para indicar que el idioma del texto en ese elemento es diferente al del contexto circundante.

La mayoría de los navegadores predominantes parecen reconocer las identificaciones efectuadas mediante los atributos de idioma para las características admitidas en la información sobre el idioma.

Metaelemento con Content-Language

El uso de un metaelemento en el encabezado del documento con el atributo http-equiv configurado en Content-Language (idioma del contenido) no se menciona directamente en la especificación HTML y, aun así, gran parte de las pautas informales que aparecen en la Web acerca de cómo declarar el idioma para su HTML indican su uso, y algunas herramientas de autoría de HTML bien conocidas crean tales elementos cuando usted especifica la información sobre el idioma mediante cuadros de diálogo.

Desafortunadamente, hay poca o ninguna evidencia de que alguno de los navegadores predominantes reconozca tales identificaciones para la implementación de características de procesamiento de textos. Tampoco existe demasiada evidencia de motores de búsqueda que utilicen esta información como metadatos relacionados con el documento.

Por esta razón, parece lógico evitar el uso de este enfoque por ahora.

Dado que los argumentos del atributo de contenido en el metaelemento permite expresar múltiples idiomas, este enfoque parecería ser adecuado para identificar metadatos sobre el idioma esperado del público que utiliza el documento, en lugar de sobre el idioma de procesamiento de textos. En sí, es el único mecanismo disponible actualmente para que los autores identifiquen tales metadatos dentro del documento y, por lo tanto, es potencialmente útil. Sin embargo, no queda claro hasta qué punto los usuarios de metadatos emplean la información. También se puede analizar si tiene sentido o no tener metadatos dentro del documento.

Identificación del idioma de procesamiento de textos

En vista de lo expresado en la sección anterior, aquí se incluyen algunas recomendaciones para identificar el idioma de procesamiento de textos para la totalidad o una parte del documento.

Siempre utilice atributos para identificar el idioma de procesamiento de textos en el elemento html. Esto configurará un idioma predeterminado para todos los textos del documento. De ser necesario, tal configuración puede invalidarse en las demás secciones de dicho documento.

Observe que debe utilizar el elemento html en lugar del elemento body, dado que body no incluye todo el texto en el encabezado del documento.

Luego debe utilizar los atributos del idioma en los elementos que rodean a cualquier contenido que esté en un idioma diferente del declarado en el elemento html.

Hay un solo lugar en particular donde tendrá este problema. Si tiene un texto multilingüe en el elemento title, no podrá etiquetar el texto en diferentes idiomas porque el atributo title sólo permite caracteres, y no etiquetas. Lo mismo pasa con el texto en los atributos. No hay una solución efectiva para esto por el momento.

Selección del atributo correcto

Al ejecutar HTML en lugar de XHTML, debe utilizar el atributo lang para identificar el idioma del documento o una extensión de texto. Por ejemplo, la siguiente expresión declara que un documento está en francés canadiense:

<html lang="fr-CA">

Al ejecutar XHTML como text/html, debe utilizar el atributo lang y el atributo xml:lang. El atributo xml:lang es la forma estándar de identificar la información sobre el idioma en XML. El siguiente ejemplo muestra cómo usted etiquetaría el ejemplo anterior para XHTML 1.0 ejecutado como text/html.

<html lang="fr-CA" xml:lang="fr-CA" xmlns="http://www.w3.org/1999/xhtml">

En realidad, el atributo xml:lang no es útil para manejar el archivo como HTML, sino que toma el control a partir del atributo lang siempre que usted procese el documento como XML para, por ejemplo, la secuencia de comandos o la validación.

Si está ejecutando páginas de XHTML 1.0 como XML (es decir, utilizando una etiqueta del tipo MIME como aplicación/xhtml+xml), o ejecutando páginas como XHTML, no necesita el atributo lang, dado que lang es parte del idioma HTML. Bastará con el atributo xml:lang.

<html xml:lang="fr-CA" xmlns="http://www.w3.org/1999/xhtml">

Qué hacer si no hay ningún elemento donde colgar su atributo

Si no hay etiquetado alrededor del texto en un idioma distinto, utilice un elemento span para establecer los límites. Aquí mostramos un ejemplo en XHTML 1.0 ejecutado como text/html:

<p>El título en chino es <span lang="zh-Hans" xml:lang="zh-Hans">中国科学院文献情报中心</span>.</p>

Especificación de metadatos sobre el idioma del público

Si desea identificar metadatos sobre el idioma del público al que está dirigido para las páginas que ejecuta, haga que el servidor envíe la información en el encabezado HTTP.

Observe que este enfoque no es una solución que esté disponible siempre. El empleo del encabezado Content-Language HTTP genera problemas potenciales relacionados con el mantenimiento y el uso de la información del área del servidor. Es posible que a muchos autores les resulte difícil acceder a las configuraciones del servidor, particularmente cuando se trata de un ISP. Además, las páginas no siempre están ubicadas en servidores.

En teoría, podría ser bueno declarar dicho idioma de información en un metaelemento. Agregarlo es fácil para los autores, y permanecería en el documento si no se visualiza desde el servidor. Sin embargo, en la práctica, parece que es poco utilizado por el momento.

Si el público al que se dirige habla más de un idioma, ambos métodos le permitirán suministrar como valor una lista de idiomas separados con comas.

Especificación de valores de idiomas

A fin de asegurarse que todos los agentes de usuario reconozcan a qué idioma se refiere, deberá seguir un enfoque estándar cuando suministre los valores de idioma. También deberá considerar cómo referirse a las diferencias dialectales entre idiomas de una manera estándar; por ejemplo, la diferencia entre inglés estadounidense e inglés británico, que varían significativamente en términos de ortografía y pronunciación.

Las reglas para identificar el idioma se describen actualmente mediante un par de especificaciones IETF, denominadas colectivamente BCP 47. Además de simples etiquetas de idiomas, BCP 47 describe cómo componer etiquetas de idiomas que le permitan especificar dialectos, sistemas de escritura y otras variantes relacionadas con ese idioma.

Las BCP 47 incorporan las normas ISO de idioma y los códigos de país, pero exceden el alcance de éstos. Para buscar códigos relevantes, consulte el Registro de subetiquetas de idioma IANA.

Para obtener una introducción simple pero exhaustiva a su funcionamiento, lea Etiquetas de idiomas en HTML y XML.

Dinos qué piensas (en Inglés).

Suscripción a feed RSS.

Nuevos recursos

Noticias de la página de inicio

Twitter (Noticias de la página de inicio)

‎@webi18n

Lecturas complementarias

De: Richard Ishida, W3C. Traductor: Spanish Translation Team, Spanish Translation US..

XHTML 1.0 válido
CSS válido
Codificado en UTF-8

Traducido del inglés con fecha 2007-03-07. Traducción modificada por última vez el 2010-11-25 11:07 GMT.

Para ver el historial de cambios del documento, busque tutorial-language-decl en la bitácora de internacionalización.