También disponible en: English · Português · Français · العربية
Códigos de idiomas
La lista ISO 639 completa con las tres formas de código, y una respuesta clara sobre cuál va en tu marcado.
¿Qué son los códigos ISO de idiomas?
Un código de idioma es el identificador corto que se pone en un atributo lang de HTML, en un nombre de archivo, en una cabecera Accept-Language o en una columna de base de datos. Hay tres formas. La ISO 639-1 es la de dos letras, la conocida: es, en, de. La ISO 639-2 es de tres letras y cubre muchos más idiomas. La ISO 639-3 llega aún más lejos, hasta unos siete mil.
Esta página lista la ISO 639-2 entera, directamente de la Biblioteca del Congreso, que es la autoridad de registro de la norma. Son 487 filas: 486 idiomas más una entrada que no es un idioma en absoluto y que la tabla señala. Cada fila muestra su código de dos letras cuando existe, sus dos códigos de tres letras y cuál conviene usar.
Esa última columna existe por algo que la norma hace y que pilla a mucha gente: para veinte idiomas hay dos códigos de tres letras distintos, ambos oficiales y ambos vigentes. Ninguno es una errata ni un alias heredado.
Cómo usar esta página
- Busca por nombre o por cualquiera de los tres códigos. Escribir «de», «ger», «deu» o «alemán» lleva a la misma fila, y el nombre en tu idioma también. Las coincidencias exactas de código van primero, lo cual importa porque «is» es el código del islandés y a la vez una subcadena de decenas de nombres.
- Marca el filtro para ver solo los veinte ambiguos. Son los idiomas en los que los dos códigos de tres letras difieren. La lista bajo la tabla muestra cada pareja con el motivo de la diferencia.
- Fíjate en la columna «usa este» y copia de ahí. Da el código de dos letras cuando existe y el terminológico de tres letras en caso contrario, que es lo que exige BCP 47 y por tanto lo que va en HTML, en HTTP y en cualquier cosa que lea un navegador.
Por qué veinte idiomas tienen dos códigos
La ISO 639-2 asigna códigos siguiendo dos principios distintos que, en veinte idiomas, no coinciden. El código bibliográfico sigue el nombre inglés del idioma: el alemán es ger, el francés fre, el chino chi, el neerlandés dut, el galés wel. El código terminológico sigue el nombre que los hablantes le dan: Deutsch da deu, français da fra, Zhōngwén da zho, Nederlands da nld, Cymraeg da cym.
Los códigos bibliográficos existen porque los catálogos de biblioteca se construyeron sobre ellos mucho antes de que nadie necesitara etiquetar el idioma de una página web, y cambiarlos habría roto todos los ficheros del mundo. Los terminológicos existen porque nombrar un idioma como lo llaman sus hablantes es el principio mejor. Sobrevivieron los dos, así que los dos están vigentes, y cuál es «el correcto» depende de si estás catalogando un libro o etiquetando un documento.
Los veinte son el albanés, el armenio, el vasco, el birmano, el chino, el checo, el neerlandés, el francés, el georgiano, el alemán, el griego, el islandés, el macedonio, el malayo, el maorí, el persa, el rumano, el eslovaco, el tibetano y el galés. Todos los demás idiomas de la norma —466— tienen un solo código de tres letras y ninguna ambigüedad.
Hay un patrón que conviene notar, y no es casualidad: los veinte son idiomas cuyo nombre en inglés difiere mucho del que usan sus propios hablantes. Nadie tuvo que elegir entre dos códigos para el japonés, porque jpn sirve por ambos caminos.
¿Cuál hay que usar de verdad?
Para la web, ninguno de los dos. Usa el de dos letras, y esto no es una preferencia: es lo que dice la especificación. BCP 47, la norma que hay detrás del atributo lang de HTML, de la cabecera Accept-Language y de todas las API de idioma de los navegadores, exige la subetiqueta más corta disponible. Cuando un idioma tiene código ISO 639-1, ese código es la única etiqueta correcta y las formas de tres letras son sencillamente erróneas en ese contexto.
Eso resuelve la ambigüedad del todo, y el motivo es una propiedad, no una casualidad: los veinte idiomas con dos códigos de tres letras tienen además un código de dos letras. Lo comprobamos en vez de afirmarlo, porque una sola excepción rompería la regla. Así que la web nunca tiene que elegir entre ger y deu: usa de, y ambas grafías de tres letras se canonizan exactamente en eso, cosa que también verificamos.
La ambigüedad solo te alcanza si trabajas con códigos de tres letras: registros MARC, algunos formatos de subtítulos, bases de datos terminológicas antiguas, cualquier cosa modelada sobre la práctica bibliotecaria. Allí la convención suele ser la bibliográfica, y lo prudente es decir en tu esquema cuál de las dos usas en lugar de suponer que quien lo lea comparte tu criterio.
Límites honestos
La mayoría de los idiomas no tiene código de dos letras. Solo 183 de los 486 lo tienen; los otros 303 tienen tres letras y nada más corto. El cebuano, que hablan más de veinte millones de personas, es ceb y no tiene forma ISO 639-1. De modo que una columna char(2) no puede guardar la mayor parte de los idiomas del mundo, y un selector de idioma construido con la lista de dos letras está excluyendo en silencio a la mayoría.
Una fila del archivo no es un idioma. La entrada qaa-qtz es un rango que representa 520 códigos reservados para uso privado: cualquiera puede usarlos internamente para un idioma que la norma no cubre, y ninguno se asignará jamás. La tabla la muestra como una fila y la etiqueta, en vez de fingir que es un idioma o descartarla sin decirlo.
Los nombres localizados vienen de Unicode CLDR, que no tiene nombre para todas las entradas. Los códigos colectivos como «lenguas bantúes» y muchos idiomas antiguos o construidos no tienen nombre en CLDR en ningún idioma, así que esas filas recurren al nombre inglés de la autoridad de registro. Unos 419 de los 486 están nombrados en cada idioma, y la cifra exacta difiere ligeramente entre ellos, que es justo el aspecto que tiene un hueco real en los datos frente a una búsqueda que falla.
Por último, esto es ISO 639-2 y no 639-3. La norma mayor cubre unos siete mil idiomas, casi todos los que se han documentado, y la mantiene aparte SIL International. Si te falta un idioma aquí, ahí es donde hay que mirar.
¿Por qué es gratis?
Porque es una tabla y un buscador. La lista entera está en la página que ya has cargado, la búsqueda se ejecuta en tu navegador y nada de lo que escribes sale de ahí.
Así que no hay cuenta, ni registro, ni nada reservado. El generador que construye esto desde la lista de la Biblioteca del Congreso y desde Unicode CLDR está en el repositorio junto a la página, con las 2011 comprobaciones que verifican los códigos, las veinte parejas ambiguas y la propiedad de BCP 47, incluidos los controles negativos que impiden que esas pruebas pasen por el motivo equivocado.