Les étiquettes d’identification de langues IETF sont issues d’un code standardisé qui permet d’attribuer des étiquettes structurées et hiérarchisées permettant d’identifier les langues ou familles et collections de langues ou variétés linguistiques de ces langues. Elles ne sont pas réservées aux seules données et documents écrits, mais peuvent étiqueter aussi des contenus audio, multimédia, ou tout type de données de localisation dépendantes de la langue et d’autres paramètres de nature linguistique.
Elles sont définies par la recommandation standard BCP 47 de l’IETF, qui est mis à jour régulièrement et référence toujours les dernières RFC normatives applicables (et leurs corrections et errata éventuels), qui en précise la syntaxe normative, la définition, la validité et l’utilisation dans les logiciels (notamment pour établir des correspondances et équivalences entre étiquettes) ; cette recommandation est actuellement composée des RFC 5646 (successeur de RFC 4646) et RFC 4647.
Elles sont associées à un registre international des étiquettes et sous-étiquettes d’identification des langues, maintenu et hébergé par le groupe de travail IANA (désormais intégré à l’ICANN). D’autres RFC informatives sont également publiées lors de mises à jour majeure du registre mais non remises à jour de façon exhaustive, le registre assurant lui-même pour le compte de l’IETF la maintenance des données qu’il contient, selon la politique et les protocoles définis dans les RFC normatives.
Une étiquette de langue complète (Language-Tag
) est composée de sous-étiquettes (Subtag
), chacune sur 1 à 8 caractères alphanumériques de 0
à 9
ou de a
à z
(la casse recommandée est, sauf indication contraire, en minuscules, même si elle est non significative) et séparées par des tirets simples (-
). La syntaxe générale (simplifiée) en ABNF correspond à :
Language-Tag = Subtag *( "-" Subtag ) Subtag = 1*8alphanum
Cependant une étiquette complète doit correspondre de façon plus précise à l’un des formats suivants (liste exhaustive), reconnaissable selon la première sous-étiquette utilisée :
Le format standard codifie, dans l’ordre, les ensembles de sous-étiquettes suivants :
Language:
de Type:Subtag
) :Extlang:
de Type:Subtag
) :Script:
de Type:Subtag
) :Region:
de Type:Subtag
) :Variant:
de Type:Subtag
et avec l’indication des langues pour lesquelles la variante est applicable avec Prefix:
) :x
) dans la première sous-étiquette dite « singleton » pour coder le type d’extension normalisée (inscrite dans le registre IANA avec dans une entrée Singleton:
de Type:Subtag
), et de 2 à 8 caractères alphanumériques dans la (ou les) sous-étiquette(s) suivantes pour coder des valeurs qui seront interprétées selon le type d’extension normalisée ; les extensions normalisées peuvent être réordonnées automatiquement ensemble par ensemble (préférablement dans l’ordre ascendant des types d’extension), mais ne doivent apparaître qu’une seule fois (si nécessaire, on codera plusieurs valeurs dans la même extension). Notes : u
(dans l’état actuel de la normalisation, ce type d’extension ne devait pas être encore utilisé sur Wikipédia).x
, suivie d'une ou plusieurs sous-étiquettes alphanumériques de 1 à 8 caractères alphanumériques, destinées à coder des variantes dialectales et orthographiques non normalisées ou d’autres types de données (ce type d’extension privé ne devrait pas être utilisé sur Wikipédia).Un ancien format utilisé dans le registre IANA a servi à coder des langues qui était alors non mentionnées dans la norme ISO 639. Cet ancien format se compose des sous-étiquettes suivantes :
i
(pour le registre « IANA »).Language:
avec Type:Tag
), pour coder ensembles (et dans l’ordre mentionné dans le registre) une langue spécifique.Ces étiquettes historiques sont encore valides, mais sont devenues des alias synonymes (non recommandés) d'une étiquette au format standard : toutes les langues qui étaient auparavant représentées dans le registre IANA uniquement avec des étiquettes dans ce format sont aujourd’hui maintenant représentables avec une étiquette au format standard mentionnée dans le registre lui-même (cet ancien format ne devrait plus être utilisé sur Wikipédia).
Le format d’utilisation privé (private use, non inscrit dans le registre IANA), se compose des sous-étiquettes suivantes :
x
(pour « eXtension privée »).On peut noter que le format standard inclut aussi toutes les sous-étiquettes d’utilisation privée, définies pour les langues, familles et collections de langues, pour les systèmes, styles ou familles d’écriture, et pour les régions géographiques (provenant des normes ISO où elles ont été définies en tant qu’identifiants avant d’être importées dans le registre IANA), ainsi que des sous-étiquettes d’extension.
Ce format devrait être évité sur la plupart des sites Internet pour identifier des langues (y compris dans les pages Wikipédia, en dehors de certaines utilisations internes invisibles au lecteur et indépendantes des logiciels utilisés) car il ne permet pas l’interopérabilité sans convention préalable reconnue et acceptée à la fois par le lecteur et l’auteur de ces contenus. L’utilisation de telles étiquettes est plutôt réservé à d’autres usages spécifiques (et généralement locaux pour certains traitements internes) que la simple identification des langues.
Toute autre étiquette qui ne répond pas à un des formats ci-dessus ne doit pas être utilisée (même si elle répond à la syntaxe ABNF générale), car cela reste réservé pour le support éventuel de normes futures et leur intégration dans une mise à jour future de la recommandation BCP 47.