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: English to Spanish Translation Team, Spanish Translation US.
Audiencia de destino: Los codificadores de XHTML/HTML (usando editores o lenguaje de script), los desarrolladores script (PHP, JSP, etc.), los codificadores de CSS y todos aquellos que quieran utilizar información vinculada a los idiomas para aplicar estilos CSS a etiquetas.
Nota: Desde la traducción de este documento se han producido modificaciones en el original en Inglés. Consulte el registro de cambios.
¿Cuál es la forma más adecuada de asociar estilos CSS con un texto en un idioma particular dentro de un documento XHTML/HTML plurilingüe?
Generalmente, se usan los estilos de presentación para controlar los cambios de fuente, los tamaños de fuente y las alturas de las líneas cuando se producen cambios de idioma en el documento. Esto puede resultar útil particularmente cuando se trata de chino simplificado versus chino tradicional, en cuyo caso los usuarios prefieren fuentes diferentes, aunque quizás estén usando muchos de los mismos caracteres. También puede servir para armonizar mejor el aspecto de fuentes específicas de un sistema de escritura mezcladas, como cuando se combinan fuentes árabes y latinas.
En esta página se analizan las opciones disponibles para hacerlo de manera más efectiva.
Existen cuatro formas de aplicar diferentes estilos a diferentes idiomas en un documento plurilingüe mediante el uso de CSS2. Se encuentran enumeradas aquí en orden de preferencia.
Al momento de escribirse este documento, Firefox 1.0, Mozilla 1.7.2, Netscape 8.0 y Opera 8.0.2* admiten estos selectores. Desafortunadamente, el uso interoperable de estos tres selectores se ve obstaculizado por el hecho de que Internet Explorer no los admite. Esto significa que una gran parte del público general no verá los resultados deseados de sus estilos si utiliza los selectores, y usted deberá usar el selector genérico de identificación o clase en cada etiqueta a la que quiera asignar un estilo. Para obtener más información sobre la compatibilidad con estos selectores, consulte los resultados de la prueba.
El resto de esta página explica y brinda ejemplos de los modos en que difiere el uso de estos selectores.
Una diferencia significativa entre :lang y los otros métodos es que reconoce el idioma del contenido del elemento aun si se indica el idioma fuera del elemento en cuestión.
Supongamos que, por ejemplo, en el futuro en un documento escrito en inglés, que contenga texto en japonés al que usted quisiera aplicar un estilo, se enfatiza el texto en japonés mediante propiedades CSS3 asiáticas, en lugar de usar letra cursiva (que no siempre funciona bien con los caracteres complejos del idioma japonés). Tal vez tenga las siguientes reglas en su hoja de estilo:
em { font-style: italic; }
em:lang(ja) { font-style: normal; font-emphasize: dot before; }
Ahora suponga que tiene el siguiente contenido, que el agente de usuario admite :lang y que la etiqueta html indica que se trata de un documento en inglés.
This is English, but これは日本語です。
Usted esperaría ver la palabra English enfatizada en cursiva, y la palabra japonés enfatizada en texto regular con pequeños puntos sobre cada carácter, algo así como:
![]()
El punto que se debe destacar en esta sección es que esto no será posible si se utilizan los selectores [lang|="..."] o [lang="..."]. Para que funcionen, debe indicar el idioma de manera explícita en cada etiqueta em en japonés.
Es una diferencia importante entre la utilidad de estos distintos selectores.
:lang()El fragmento XHTML:
<p>Es gentil darle la bienvenida a la gente en su propio idioma:</p>
<ul>
<li xml:lang="zh-Hans" lang="zh-Hans">欢迎</li>
<li xml:lang="zh-Hant" lang="zh-Hant">歡迎</li>
<li xml:lang="el" lang="el">Καλοσωρίσατε</li>
<li xml:lang="ar" lang="ar">اهلا وسهلا</li>
<li xml:lang="ru" lang="ru">Добро пожаловать</li>
<li xml:lang="din" lang="din">Kudual</li>
</ul>
podría tener los siguientes estilos:
body {font-family: "Times New Roman", serif;}
:lang(ar) {font-family: "Traditional Arabic", serif; font-size: 1.2em;}
:lang(zh-Hant) {font-family: PMingLiU,MingLiU, serif;}
:lang(zh-Hans) {font-family: SimSum-18030,SimHei, serif;}
:lang(din) {font-family: "Doulos SIL", serif;}
Observe que el griego y el ruso usan los estilos asignados al elemento body.
Ésta sería la manera ideal de aplicar estilo a los fragmentos de un idioma, pero es el único selector que puede aplicar estilos al contenido de un elemento cuando el idioma de ese contenido se indicó previamente en una página.
La regla para :lang(zh) coincidiría con elementos con un valor de idioma de zh. También podría coincidir con especificaciones más concretas del idioma, como zh-Hant, zh-Hans y zh-HK.
El selector :lang(zh-Hant) sólo coincidirá con elementos que tengan un valor de idioma de zh-Hant o que hayan heredado ese valor de idioma. Si la regla CSS especificó :lang(zh-HK), la regla no coincidiría con nuestro párrafo de muestra.
[lang|="..."] que coincide con el comienzo de un valor de un atributoEn el caso del ejemplo anterior sobre etiquetas, la hoja de estilo se podría escribir de la siguiente manera:
body {font-family: "Times New Roman", serif;}
*[lang|="ar"] {font-family: "Traditional Arabic", serif; font-size: 1.2em;}
*[lang|="zh-Hant"] {font-family: PMingLiU,MingLiU, serif;}
*[lang|="zh-Hans"] {font-family: SimSum-18030,SimHei, serif;}
*[lang|="din"] {font-family: "Doulos SIL", serif;}
Los selectores para chino usan valores específicos y sólo coincidirán con los valores indicados, mientras que los otros selectores del atributo de idioma son más genéricos. Por ejemplo, [lang|="en"] coincidirá satisfactoriamente con en-NZ.
Éste y el próximo selector funcionarán siempre y cuando indique el idioma del elemento al que quiere aplicarle estilo en el elemento en sí, a diferencia de .
Existe una diferencia significativa entre [lang="en"] y [lang|="en"]. El primer selector de idioma sólo coincidirá los elementos con un atributo de idioma igual a en, mientras que el segundo selector coincidirá cualquier elemento con un atributo de idioma que empiece con en. Por lo tanto, el segundo selector coincidirá con en-US, en-HK o en-CA. De hecho, lang(en) es una forma equivalente a [lang|="en"].
[lang|="..."] que coincide con el valor de un atributoEl tercer método de especificación de reglas es usar un selector de atributos que coincida exactamente con el valor del atributo.
En el caso del ejemplo anterior sobre etiquetas, la hoja de estilo se podría escribir de la siguiente manera:
body {font-family: "Times New Roman", serif;}
*[lang="ar"] {font-family: "Traditional Arabic", serif; font-size: 1.2em;}
*[lang="zh-Hant"] {font-family: PMingLiU,MingLiU, serif;}
*[lang="zh-Hans"] {font-family: SimSum-18030,SimHei, serif;}
*[lang="din"] {font-family: "Doulos SIL", serif;}
Tenga en cuenta que el uso de esta técnica en no coincidirá con en-AU. La coincidencia deber ser exacta.
Actualmente, el método más compatible es utilizar un selector de CSS común de identificación o clase.
Funciona con la mayoría de los exploradores que admiten CSS. La desventaja es que agregar los atributos de clase consume tiempo y ancho de banda.
En el caso del ejemplo previo, esto implicaría que cambiemos el código XHTML mediante el agregado de atributos de clase como a continuación:
<p>Es gentil darle la bienvenida a la gente en su propio idioma:</p>
<ul>
<li class="zhs" xml:lang="zh-Hans" lang="zh-Hans">欢迎</li>
<li class="zht" xml:lang="zh-Hant" lang="zh-Hant">歡迎</li>
<li xml:lang="el" lang="el">Καλοσωρίσατε</li>
<li class="ar" xml:lang="ar" lang="ar">اهلا وسهلا</li>
<li xml:lang="ru" lang="ru">Добро пожаловать</li>
<li class="din" xml:lang="din" lang="din">Kudual</li>
</ul>
Luego podríamos tener los siguientes estilos:
body {font-family: "Times New Roman", serif;}
.ar {font-family: "Traditional Arabic", serif; font-size: 1.2em;}
.zht {font-family: PMingLiU, MingLiU, serif;}
.zhs {font-family: SimSum-18030,SimHei, serif;}
.din {font-family: "Doulos SIL", serif;}
Utilicé los códigos de idioma "zh-Hant" y "zh-Hans". Estos códigos de idioma no representan idiomas específicos. "zh-Hant" indicaría chino escrito en el sistema de escritura chino tradicional. De manera similar, “zh-Hans” representa el chino escrito en el sistema de escritura chino simplificado. Esto podría hacer referencia al mandarín o a muchos otros idiomas chinos.
Hasta hace poco tiempo, los códigos "zh-TW" y "zh-CN" se usaban para indicar versiones tradicionales o simplificadas de escritura china, respectivamente. En realidad, "zh-TW" indicaría el chino hablado en Taiwán, aunque en Taiwán se habla más de un idioma chino. Del mismo modo, "zh-CN" representa el chino hablado en China (RPC). Esto podría hacer referencia al mandarín o a cualquier otro idioma chino.
Algunos de los exploradores web modernos usarán la presencia de las etiquetas de idioma "zh-CN" y "zh-TW" para seleccionar las fuentes predeterminadas para mostrar el texto cuando el diseñador de la página web no indique una fuente (para obtener más información, consulte los resultados de la prueba).
Si tiene que usar etiquetas de idioma para diferenciar entre los idiomas chinos, el registro de subetiquetas de idioma IANA tiene códigos de idioma más precisos para una serie de idiomas chinos.
Dinos qué piensas (en Inglés).
Traducción del original en inglés del 2005-08-03. Última modificación de la traducción 2009-08-25 19:04 GMT
Para ver el historial de cambios del documento, busque qa-css-lang en la bitácora de internacionalización.
Copyright © 2003-2009 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply. Your interactions with this site are in accordance with our public and Member privacy statements.