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, Trusted Translations, Inc.
Audiencia de destino: Creadores de contenido XHTML/HTML (ya sea que para su creación usen editores o lenguajes de secuencia de comandos), programadores de secuencias de comandos (PHP, JSP, etc.), creadores de esquemas (DTD, XML Schema, RelaxNG, etc.) o de plantillas XSLT, directores de proyectos para la Web, implementadores de estándares y todo aquel que necesite ayuda en relación con la construcción de los valores de las etiquetas de idioma.
Terminología
En este artículo nos referiremos al valor de un atributo de idioma, por ejemplo fr-CA, como una etiqueta de idioma. Los componentes fr y CA se denominan subetiquetas
cuando se los describe como partes de una etiqueta. Cuando se los describe como miembros de una lista ISO de idiomas o países, fr y
CA se denominan códigos.
Las etiquetas de idioma pueden (y deberían) emplearse para indicar el idioma en el que está escrito el texto en documentos
HTML y XML. En HTML 4, las etiquetas de idioma se indican en el atributo
lang. En XML, las etiquetas de idioma se indican en el atributo
xml:lang. En ambos casos, la información sobre el idioma se hereda por toda la jerarquía del documento; es decir, basta indicarla una
sola vez, si todo el documento está escrito en un solo idioma; pero el idioma se puede modificar allí donde atributos interiores sustituyan el valor
de atributos exteriores.
La sintaxis de las etiquetas de idioma se encuentra definida en la BPC 47 de la IETF. BCP significa 'Best Current Practise' (mejor práctica actual) y es un nombre duradero para una serie de RFC cuyos números cambian conforme se actualizan. El último RFC donde se describe la sintaxis de las etiquetas de idiomas es el RFC 4646, Tags for the Identification of Languages, que reemplaza a los RFC anteriores 3066 y 1766. Antes, para hallar las etiquetas había que consultar las listas de códigos presentes en diversos estándares de la ISO, pero ahora se pueden hallar todas las etiquetas en el IANA Registro de subetiquetas de idioma. Describiremos más adelante este nuevo registro.
En su mayoría, las etiquetas de idioma están formadas por una subetiqueta de idioma compuesta por dos o tres letras. En ocasiones, a esta subetiqueta le sigue otra, de dos letras o tres dígitos, que indica la región. El RFC 4646 también permite cierta cantidad de subetiquetas adicionales allí donde sea necesario. Estas subetiquetas, que explicaremos brevemente en el apartado siguiente, incluyen las subetiquetas de sistema de escritura, variante, extensión y uso privado.
A continuación se presentan algunos ejemplos:
| Código | Idioma | Subetiquetas |
|---|---|---|
| en | Inglés | language |
| mas | Masai | language |
| fr-CA | El francés hablado en Canadá | idioma+región |
| es-419 | El español hablado en América Latina | idioma+región |
| zh-Hans | El chino escrito con caracteres simplificados | idioma+sistema de escritura |
La regla dorada para la creación de etiquetas de idioma es mantenerlas tan cortas como sea posible. Las subetiquetas de
región, sistema de escritura, etc., deben evitarse, excepto cuando añadan información distintiva útil. Por ejemplo, para referirse al japonés debe
usarse ja, y no ja-JP, a menos que exista una razón particular por la que haya que expresar que el idioma en cuestión es el
japonés tal como se lo habla en Japón.
El XML también proporciona un mecanismo para impedir la herencia de la propiedad "idioma", por medio de la cadena vacía, es decir
xml:lang=""
En esencia, esto significa: no deseo asociar ningún idioma con esta información.
En el resto de este artículo proporcionaremos más detalles respecto de cómo construir las etiquetas de idioma.
Obsérvese que la especificación del HTML aún recomienda usar el RFC 1766 para la identificación de idiomas; no obstante, se debería usar el RFC 4646, a pesar de lo que diga la especificación actual del HTML.
Algunos de los cambios principales que supone el pasar del RFC 3066 al RFC 4646 son:
Básicamente, el RFC 3066 permitía componer tres tipos de etiquetas de idioma: un código de idioma sin más acompañamiento; un código de idioma más un código de país; o una etiqueta tomada de una pequeña lista de valores registrados especialmente en un registro de etiquetas de idioma de la IANA.
El RFC 4646 hace lugar a más tipos de subetiquetas y permite combinarlas de diversas maneras. Aunque parezca que esto complica mucho las cosas, en términos generales, elegir las etiquetas de idioma sigue siendo sencillo; sólo que allí donde el usuario necesite más flexibilidad, la tendrá. De hecho, para la mayor parte de la gente, debería haber varios motivos para considerar que el RFC 4646 simplifica las cosas; aunque más no sea, porque ahora todas las subetiquetas válidas pueden encontrarse en un solo lugar.
La lista que se reproduce a continuación muestra los diversos tipos de subetiquetas disponibles. En los apartados que siguen, iremos viendo uno por uno los diversos tipos de subetiqueta y mostrando cómo usarlos.
idioma-sistema de escritura-región-variante-extensión-usoprivado
Las entradas en el registro siguen ciertas convenciones en relación con el uso de mayúsculas y minúsculas; por ejemplo, las etiquetas de idioma están en minúsculas, las subetiquetas alfabéticas de región están en mayúsculas, y las etiquetas de sistema de escritura empiezan en mayúscula. ¡Pero esto es sólo una convención! Cuando use las subetiquetas puede hacerlo con entera libertad.
Como ya hemos dicho, antes para hallar las etiquetas se consultaban las listas de códigos en los diversos estándares de la ISO, pero ahora se pueden hallar todas las etiquetas en un solo lugar. El registro de la IANA parece un poco complejo a primera vista, en comparación con las listas de códigos de la ISO, pero en cuanto se comprende su estructura es muy fácil de usar.
El registro es un largo archivo de texto. Para hallar una subetiqueta de idioma, debe buscarse el nombre del idioma en inglés. Por ejemplo, buscando 'French' (francés), hallamos un registro que se ve así:
%% Type: language Subtag: fr Description: French Added: 2005-10-16 Suppress-Script: Latn %%
Observe que este registro está indicado como de tipo 'language'. Lo que buscamos es el código señalado como 'Subtag', es decir 'fr'.
Las otras etiquetas pueden hallarse del mismo modo. Por ejemplo, si queremos crear una etiqueta fr-CA (correspondiente al francés hablado en Canadá), lo próximo que haríamos sería buscar 'Canada' [el nombre del país en inglés] y verificar que la etiqueta hallada sea del tipo 'region'.
Deberían evitarse las subetiquetas que el registro describa como redundantes o desaprobadas (deprecated).
En el futuro puede que haya otras interfaces para acceder a esta información, pero por ahora el único método disponible es buscar en el texto.
En los apartados que siguen se proporcionan más detalles respecto de las diversas subetiquetas.
Idioma
en
ast
Todas las etiquetas de idioma deben empezar con una subetiqueta de idioma.
Algunos ejemplos de etiquetas que sólo indican el idioma son:
Estos códigos de idioma vienen de la lista ISO 639 y se actualizan a la par de ella. Dado que el RFC 3066 no proporcionaba una lista de subetiquetas válidas y simplemente remitía a los usuarios al estándar ISO 639, en ocasiones había confusiones respecto de cómo indicar los idiomas cuando las listas de códigos de la ISO contenían tanto códigos de dos letras como códigos de tres letras (y en ocasiones, más de uno del último tipo). Ahora todas las subetiquetas válidas se encuentran enumeradas en un unico registro de la IANA, que adopta un solo valor de las listas ISO para cada idioma. Si existe un código ISO de dos letras, es el que figurará en el registro. De lo contrario, el registro contendrá un código de tres letras. Con esto se deberían facilitar las cosas.
A continuación, un ejemplo de cómo aparece en el registro el código de idioma correspondiente al español (es):
%% Type: language Subtag: es Description: Spanish Description: Castilian Added: 2005-10-16 Suppress-Script: Latn %%
Aunque en los códigos no se distingue entre mayúsculas y minúsculas, por lo general se los escribe en minúsculas, pero esto no es más que una convención.
Sistema de escritura
zh-Hans
az-Latn
Algunos ejemplos de etiquetas de idioma con subetiqueta de sistema de escritura:
La subetiqueta de sistema de escritura es una novedad introducida en el RFC 4646. Las subetiquetas vienen de la lista ISO 15924 de códigos de sistema de escritura y se actualizan a la par de ella.
Las etiquetas de idioma sólo pueden contener una subetiqueta de sistema de escritura, que debe aparecer inmediatamente a continuación de la subetiqueta de idioma. La subetiqueta de sistema de escritura siempre está compuesta por cuatro letras.
Las subetiquetas de sistema de escritura sólo deben usarse cuando sea necesario para establecer una distinción. Como coautor del RFC 4646, Addison Phillips escribe: "En casi cualquier contenido que en la actualidad no use una etiqueta de sistema de escritura, lo mejor es seguir sin usarla en el futuro".
De hecho, en muchas de las entradas del registro para las subetiquetas de idioma, el uso de subetiquetas de sistema de escritura se
desalienta decididamente, por medio de la inclusión de una línea 'Suppress script'. En el ejemplo correspondiente al español, que hemos dado arriba,
aparece esta línea; indica que el español normalmente se escribe en caracteres latinos, de modo que normalmente no debería usarse la subetiqueta
Latn con el código es.
Este ejemplo muestra la entrada del registro para el sistema de escritura en caracteres cirílicos, Cyrl, que se usa para
el ruso además de otros idiomas:
%% Type: script Subtag: Cyrl Description: Cyrillic Added: 2005-10-16 %%
Aunque en las aplicaciones comunes de las etiquetas de idioma es improbable que haya necesidad de explicitar el sistema de escritura, existen unas pocas situaciones donde desde hace algún tiempo se sentía la necesidad de algún mecanismo como éste. Un ejemplo es el idioma chino. Este idioma tiene muchos dialectos, que con frecuencia son mutuamente ininteligibles, pero todos ellos se escriben con uno de dos sistemas de escritura: los caracteres simplificados o los caracteres tradicionales. Usualmente los autores de textos en chino desean rotularlos como "simplificado" o "tradicional", pero hasta hace poco tiempo no tenían cómo hacerlo. Los autores tenían que forzar el sistema de etiquetado, usando zh-CN (que corresponde al chino hablado en China) cuando querían indicar "chino simplificado" y zh-TW (que corresponde al chino hablado en Taiwán) para indicar "chino tradicional". Pero algunas personas indican el chino tradicional usando zh-HK. La disponibilidad de los códigos zh-Hans y zh-Hant para referirse al chino escrito con caracteres simplificados o tradicionales, respectivamente, debería representar una mejora en coherencia y exactitud, y es un cambio que ya está empezando a usarse comúnmente.
Región
en-GB
es-005
zh-Hant-HK
Algunos ejemplos de etiquetas de idioma con subetiquetas de región:
Las subetiquetas de región en el RFC 3066 adoptaron sus valores de los códigos de país del estándar ISO 3166. El nuevo registro de la
IANA conserva estos códigos de dos letras, pero también incluye los códigos de región M.49 de 3 dígitos usados por las Naciones Unidas. La ventaja de
estos códigos es que pueden representar no solamente países. Por ejemplo, desde hace algún tiempo podía ocurrir que un equipo de localización, tras
haber compuesto una esmerada traducción al español, quisiera señalarla como español latinoamericano, en vez de español de algún país particular. El
RFC 4646 ahora lo hace posible. (la etiqueta de idioma que corresponde es es-419).
Las etiquetas de idioma sólo pueden contener una subetiqueta de región, que debe aparecer inmediatamente a continuación de la
subetiqueta de idioma (o la subetiqueta de sistema de escritura, si la hay). La subetiqueta de región es un código compuesto por dos letras o por
tres dígitos. Obsérvese que se puede poner un código de región inmediatamente después del código de idioma, como era habitual para el caso de
etiquetas de idioma tales como en-US.
Una vez más, las subetiquetas de región sólo deben usarse cuando sea necesario para establecer una distinción. A menos que haya que
destacar específicamente que un texto está escrito en italiano como se habla en Italia, el idioma italiano debería representarse con la
etiqueta it, no con it-IT. Lo mismo vale para cualquier otra combinación posible.
Estos ejemplos tomados del registro muestran los códigos correspondientes a Austria, AT, y África del Norte,
015:
%% Type: region Subtag: AT Description: Austria Added: 2005-10-16 %% Type: region Subtag: 015 Description: Northern Africa Added: 2005-10-16 %%
Variante
sl-nedis
sl-IT-nedis
de-CH-1901
Las subetiquetas de variante son valores que se usan para indicar dialectos o variaciones del sistema de escritura que escapen al alcance de las combinaciones de subetiquetas de idioma, sistema de escritura y región. Si usted considera que es necesario agregar uno de estos valores al registro, debe seguir el procedimiento de registro que se describe en RFC 4646. Las subetiquetas de variante deben aparecer después de cualquier subetiqueta de idioma, sistema de escritura o región que esté presente en la etiqueta; pero no es necesario haya subetiquetas de sistema de escritura o región antes de la subetiqueta de variante.
A menos que usted trabaje en un área especializada, es improbable que necesite utilizar subetiquetas de variante.
Los ejemplos siguientes tal vez ayuden a comprender la función de estas subetiquetas.
Este ejemplo del registro muestra el código para el dialecto esloveno de la región del Natisone/Nadiza, nedis:
%% Type: variant Subtag: nedis Description: Natisone dialect Description: Nadiza dialect Added: 2005-10-16 Prefix: sl %%
En el registro, estas subetiquetas están vinculadas a un idioma concreto por medio de la línea 'Prefix'. La subetiqueta
nedis del ejemplo anterior sólo se puede usar con el esloveno. Si usted necesita expresar algún matiz dialectal o de escritura en
particular, debería proponer la inclusión de una subetiqueta de variante en el registro.
Uso privado
en-US-x-twain
Mencionaremos al pasar estas otras subetiquetas, pero si considera que realmente necesita usarlas, debería leer la especificación, en vez de este artículo.
Las subetiquetas de extensión permiten agregar futuras extensiones a la etiqueta de idioma, y por el momento, no hay ninguna registrada.
Las subetiquetas de uso privado no figuran en el registro de subetiquetas y su elección y mantenimiento corren por cuenta de un acuerdo privado entre las partes.
Las subetiquetas de extensión y uso privado van precedidas de una etiqueta de una sola letra. La que se usa para referirse al uso
privado es x.
Las subetiquetas de uso privado deben emplearse con suma caución, ya que interfieren con la interoperabilidad cuyo fomento es la razón de ser del RFC 4646.
El ejemplo siguiente de una subetiqueta de uso privado permite identificar un tipo particular de inglés americano, pero sólo dentro del ámbito de una comunidad cerrada. Fuera de los límites de ese acuerdo privado, el significado de la subetiqueta no es algo en que se pueda confiar.
La correspondencia de diferentes etiquetas de idioma es importante para diversas aplicaciones. Según la BCP 47, 'en' puede considerarse equivalente a 'en-GB'. Por ejemplo, el siguiente fragmento de CSS muestra en color rojo todo el texto escrito en inglés, en navegadores compatibles con el seudoatributo :lang.
:lang(en) { color: red; }
En el siguiente fragmento de HTML, el texto descrito como lang="en-GB" aparecerá en color rojo.
<p>En janvier, toutes les boutiques de Londres affichent des panneaux <span lang="en-GB">SALE</span>, mais en fait ces magasins sont bien propres!</p>
Por otra parte, dada la siguiente declaración CSS:
:lang(en-GB) { color: red; }
la palabra 'SALE' en el siguiente fragmento no debería aparecer en rojo.
<p>En janvier, toutes les boutiques de Londres affichent des panneaux <span lang="en">SALE</span>, mais en fait ces magasins sont bien propres!</p>
Con la introducción de las etiquetas adicionales en el RFC 4646, la correspondencia es un poco más complicada. Además, la especificación acompañante, RFC 4647 Matching of Language Tags, describe más de un mecanismo de correspondencia posible. La correspondencia de las etiquetas se describirá en otro artículo.
En un futuro cercano se realizarán otros cambios al mecanismo de etiquetado de idiomas. Estos cambios deberían haber entrado en el RFC 4646, pero dependen de que se complete el estándar ISO 639-3. Cuando esto ocurra, se harán algunas pequeñas correcciones al RFC 4646 con el objetivo de incorporar las ampliaciones previstas. Si todo va bien, esto no será mucho después de la publicación del RFC 4646.
El cambio principal será el agregado de una subetiqueta de extensión de idioma, que irá inmediatamente después de la subetiqueta de idioma y antes de cualquier subetiqueta de sistema de escritura que pueda haber.
Su función principal será la subdivisión de lo que se conoce como macroidiomas, un ejemplo de los cuales es el idioma chino. En realidad,
el nombre 'chino' abarca un amplio conjunto de dialectos que a menudo son mutuamente ininteligibles, de modo que catalogarlos a todos como
zh no es realmente muy informativo. Los nuevos códigos ISO 639-3 permitirán hacer referencia a dialectos específicos del chino, por
ejemplo el mandarín, el hakka, el cantonés, etc.
Los ejemplos siguientes tal vez ayuden a comprender la función de estas subetiquetas.
Las etiquetas de idioma para el HTML se definieron formalmente por primera vez en el RFC 2070, F. Yergeau, et.al. Internationalization of the Hypertext Markup Language. El RFC 2070 se incluyó en HTML 4, y se lo ha reclasificado como histórico.
Obsérvese que se han realizado cambios a los códigos ISO de idiomas. En 1989 se retiraron los códigos iw, in y ji, y se los reemplazó con he, id y yi. Más recientemente, el código ISO de país cs, que representaba a Checoslovaquia, pasó a representar a Serbia y Montenegro. Estos cambios pueden producir confusión al comparar los códigos asignados a textos a lo largo de un período prolongado. El nuevo registro de subetiquetas de la IANA permite pasar etiquetas a la categoría de desaprobadas, y reemplazarlas con otras nuevas, pero nunca eliminará ni cambiará el significado de una subetiqueta. Se espera que la ISO siga una política similar en el futuro.
Muchas otras especificaciones del W3C o relacionadas con la Web usan etiquetas de idioma:
lang y en el atributo
XML xml:lang, así como en el atributo hreflang.Obsérvese además que se puede añadir información sobre el idioma a objetos tales como imágenes y archivos de audio adjuntos.
Dinos qué piensas (en Inglés).
Traducción del original en inglés del 2006-11-09. Última modificación de la traducción 2006-11-09 15:18 GMT
Para ver el historial de cambios del documento, busque article-language-tags en la bitácora de internacionalización.
Copyright © 2006-2007 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.