Aussi disponible en : English · Español · Português · العربية
Codes de langue
La liste ISO 639 complète avec les trois formes de code, et une réponse nette sur celle qui va dans votre balisage.
Que sont les codes de langue ISO ?
Un code de langue est l’identifiant court que l’on met dans un attribut lang en HTML, dans un nom de fichier, dans un en-tête Accept-Language ou dans une colonne de base de données. Il en existe trois formes. L’ISO 639-1 est celle à deux lettres, la familière : fr, en, de. L’ISO 639-2 est à trois lettres et couvre bien plus de langues. L’ISO 639-3 va plus loin encore, jusqu’à quelque sept mille.
Cette page liste l’ISO 639-2 en entier, directement depuis la Bibliothèque du Congrès, l’autorité d’enregistrement de la norme. Cela fait 487 lignes : 486 langues plus une entrée qui n’est pas une langue du tout, et que le tableau signale. Chaque ligne affiche son code à deux lettres lorsqu’il existe, ses deux codes à trois lettres, et celui qu’il faut employer.
Cette dernière colonne existe à cause d’une particularité de la norme qui prend beaucoup de monde de court : pour vingt langues, il y a deux codes de trois lettres différents, tous deux officiels et tous deux en vigueur. Aucun n’est une coquille ni un alias hérité.
Comment utiliser cette page
- Cherchez par nom ou par l’un des trois codes. Taper « de », « ger », « deu » ou « allemand » mène à la même ligne, et le nom dans votre langue aussi. Les correspondances exactes de code passent devant, ce qui compte puisque « is » est le code de l’islandais et en même temps une sous-chaîne de dizaines de noms.
- Cochez le filtre pour ne voir que les vingt ambiguës. Ce sont les langues dont les deux codes de trois lettres diffèrent. La liste sous le tableau montre chaque paire côte à côte avec la raison de leur divergence.
- Lisez la colonne « à employer » et copiez depuis là. Elle donne le code à deux lettres quand il existe, et sinon le code terminologique à trois lettres — ce qu’exige la BCP 47, et donc ce qui a sa place en HTML, en HTTP et dans tout ce que lit un navigateur.
Pourquoi vingt langues ont deux codes
L’ISO 639-2 attribue ses codes selon deux principes distincts qui, pour vingt langues, ne concordent pas. Le code bibliographique suit le nom anglais de la langue : l’allemand est ger, le français fre, le chinois chi, le néerlandais dut, le gallois wel. Le code terminologique suit le nom que les locuteurs donnent eux-mêmes à leur langue : Deutsch donne deu, français donne fra, Zhōngwén donne zho, Nederlands donne nld, Cymraeg donne cym.
Les codes bibliographiques existent parce que les catalogues de bibliothèque ont été bâtis dessus bien avant que quiconque ait besoin d’étiqueter la langue d’une page web, et les changer aurait cassé tous les fichiers du monde. Les codes terminologiques existent parce que nommer une langue comme la nomment ses locuteurs est le meilleur principe. Les deux ont survécu, donc les deux sont en vigueur, et lequel est « le bon » dépend de si l’on catalogue un livre ou si l’on étiquette un document.
Les vingt sont l’albanais, l’arménien, le basque, le birman, le chinois, le tchèque, le néerlandais, le français, le géorgien, l’allemand, le grec, l’islandais, le macédonien, le malais, le maori, le persan, le roumain, le slovaque, le tibétain et le gallois. Toutes les autres langues de la norme — 466 — ont un seul code de trois lettres et aucune ambiguïté.
Un motif mérite d’être relevé, et ce n’est pas un hasard : les vingt sont des langues dont le nom anglais s’écarte nettement de celui que leurs locuteurs emploient. Personne n’a eu à choisir entre deux codes pour le japonais, puisque jpn convient des deux côtés.
Lequel employer réellement ?
Pour le web, ni l’un ni l’autre. Employez celui à deux lettres, et ce n’est pas une préférence : c’est ce que dit la spécification. La BCP 47, la norme derrière l’attribut lang du HTML, l’en-tête Accept-Language et toutes les API de langue des navigateurs, exige la sous-étiquette la plus courte disponible. Lorsqu’une langue possède un code ISO 639-1, ce code est la seule étiquette correcte et les formes à trois lettres sont tout bonnement fausses dans ce contexte.
Cela règle l’ambiguïté entièrement, et la raison en est une propriété plutôt qu’une coïncidence : les vingt langues à deux codes de trois lettres possèdent toutes aussi un code à deux lettres. Nous le vérifions au lieu de l’affirmer, car une seule exception ruinerait la règle. Le web n’a donc jamais à trancher entre ger et deu : il emploie de, et les deux graphies à trois lettres se canonisent exactement en cela, ce que nous vérifions également.
L’ambiguïté ne vous atteint que si vous travaillez en codes de trois lettres : notices MARC, certains formats de sous-titres, bases terminologiques anciennes, tout ce qui est calqué sur la pratique des bibliothèques. La convention y est le plus souvent bibliographique, et la prudence consiste à indiquer dans votre schéma laquelle des deux vous employez plutôt que de supposer votre lecteur du même avis.
Limites honnêtes
La plupart des langues n’ont pas de code à deux lettres. Seules 183 des 486 en ont un ; les 303 autres ont trois lettres et rien de plus court. Le cebuano, parlé par plus de vingt millions de personnes, est ceb et n’a aucune forme ISO 639-1. Une colonne char(2) ne peut donc pas stocker la majorité des langues du monde, et un sélecteur de langue bâti sur la liste à deux lettres en exclut discrètement la plupart.
Une ligne du fichier n’est pas une langue. L’entrée qaa-qtz est une plage représentant 520 codes réservés à un usage privé : chacun peut les employer en interne pour une langue que la norme ne couvre pas, et aucun ne sera jamais attribué. Le tableau la montre comme une ligne et l’étiquette, plutôt que de la faire passer pour une langue ou de l’écarter en silence.
Les noms localisés viennent d’Unicode CLDR, qui ne nomme pas toutes les entrées. Les codes collectifs comme « langues bantoues » et bien des langues anciennes ou construites n’ont de nom CLDR dans aucune langue, si bien que ces lignes retombent sur le nom anglais de l’autorité d’enregistrement. Environ 419 des 486 sont nommées dans chaque langue, et le chiffre exact varie légèrement de l’une à l’autre — c’est exactement l’allure d’une véritable lacune dans les données, par opposition à une recherche défaillante.
Enfin, ceci est l’ISO 639-2 et non la 639-3. La norme plus vaste couvre quelque sept mille langues, à peu près toutes celles jamais documentées, et elle est maintenue à part par SIL International. S’il vous manque une langue ici, c’est là qu’il faut regarder.
Pourquoi est-ce gratuit ?
Parce que c’est un tableau et un champ de recherche. La liste entière se trouve dans la page que vous avez déjà chargée, la recherche s’exécute dans votre navigateur, et rien de ce que vous tapez n’en sort.
Il n’y a donc ni compte, ni inscription, ni rien de réservé. Le générateur qui construit tout cela depuis la liste de la Bibliothèque du Congrès et depuis Unicode CLDR se trouve dans le dépôt, à côté de la page, avec les 2 011 vérifications qui contrôlent les codes, les vingt paires ambiguës et la propriété BCP 47 — y compris les contrôles négatifs qui empêchent ces tests de passer pour la mauvaise raison.