# Codice di lingua IETF

I codici di lingua IETF sono codici ed etichette (tag) che, soprattutto nei linguaggi di programmazione, identificano le lingue.
Sono definiti dalla raccomandazione BCP 47 dell'IETF, attualmente composta dalle RFC 5646 (succeduta alla RFC 4646) ed RFC 4647, che ne precisa la sintassi normativa, la definizione e l'utilizzazione.
I codici sono associati ad un registro internazionale delle sottoetichette di codificazione delle lingue, mantenuto ed ospitato dal gruppo di lavoro IANA (ormai integrato nell'ICANN).

## Sintassi

Sintassi generale in ABNF:
Un'etichetta è composta da sezioni da 1 a 8 caratteri legati da trattini. Un'etichetta completa può corrispondere (lista non esaustiva) ad uno dei seguenti formati:
* Il formato normalizzato codifica nell'ordine le seguenti sezioni:
** Un solo codice ISO 639 (codice di lingua): obbligatorio, di 2 o 3 lettere: quando esistono vari codici per una lingua, o se un codice è reso obsoleto, si utilizza quello più corto e quello più standard, gli altri sono degli alias sinonimi (non necessari).
** Zero o vari codici (iscritti nel registro IANA) di estensione di lingua (extlang): opzionali, 3 lettere ciascuno, specifiche secondo il codice ISO 639 di base; a partire dalla normalizzazione dell'ISO 639-3, questi codici non sono più necessari e ogni insieme autorizzato di sezioni (lingua più estensioni) è diventato un alias sinonimo di un altro codice lingua ISO 639 normalizzato.
** Zero o un solo codice ISO 15924 (codice di scrittura): opzionale, 4 lettere.
** Zero o un solo codice ISO 3166-1 (codice di paese) o UN M.49 (codice di regione geografica, salvo il paese e le regioni economiche): opzionale, 2 lettere o 3 cifre; quando esistono vari codici per un paese o una regione, si utilizza quello più corto, gli altri sono alias sinonimi non necessari.
** Zero o varie sezioni codificanti varianti dialettali od ortografiche (iscritte nel registro IANA, e specifiche per una o varie lingue): di 4 caratteri alfanumerici o più ciascuno (5 caratteri minimo se non vi è alcuna cifra). Certi di questi codici, utilizzati con codici lingua standard in un'etichetta completa, sono diventati obsoleti e l'insieme corrispondente lingua + varianti (ordinate) è stato sostituito da un altro codice lingua standard, diventando l'insieme un'etichetta sinonima.
** Zero o varie coppie di codici di estensione normalizzati: 1 lettera (salvo x) per la prima sezione codificante il tipo di estensione, e 2 caratteri alfanumerici o più nella seconda sezione codificante il suo valore in funzione del tipo di estensione normalizzata; le estensioni possono essere riordinate automaticamente nell'ordine crescente dei tipi di estensione. A partire dalla normalizzazione dell'ISO 639-3, i codici di regione non sono più raccomandati per la rappresentazione delle lingue umane (ma continuano ad essere utilizzati per codificare preferenze di localizzazione diverse dalla lingua). Questo tipo di estensione non dovrebbe essere utilizzato su Wikipedia.
** Un'eventuale estensione privata: una sezione costante x, seguita da 1 o varie sezioni alfanumeriche, destinate a codificare varianti dialettali od ortografiche non normalizzate, o altri tipi di dati. Questo tipo di estensione privata non dovrebbe essere utilizzata su Wikipedia.
* Un vecchio formato normalizzato utilizzato nel registro IANA, servito a codificare lingue assenti dall'ISO 639. Questo formato non dovrebbe più essere utilizzato su Wikipedia, tutte le etichette utilizzanti questo formato avendo ricevuto un codice ISO 639 utilizzabile nel formato normalizzato. Questo vecchio formato si compone delle seguenti sezioni:
** Una sola sezione costante i (per registro «IANA»).
** Una o varie altre sezioni per codificare insiemi in una lingua specifica.
* Un formato privato, che non dovrebbe essere utilizzato su Wikipedia e che si compone a sua volta delle seguenti sezioni:
** Una sola sezione costante x (per «eXtensione privata»).
** Una o varie altre sezioni per codificare un'informazione privata (non necessariamente una lingua).
Ogni altra etichetta che non risponde ad uno di questi formati non deve essere utilizzata (anche se risponde alla sintassi ABNF generale), perché resta riservata per l'eventuale supporto di norme future e della loro integrazione nella BCP 47.

## Utilizzi

I codici di lingua IETF permettono di fare riferimento ad una lingua e di etichettare linguisticamente dei dati.
i loro utilizzatori più conosciuti in informatica sono i protocolli e gli standard dell'IETF (quali l'HTTP, la posta elettronica e le loro estensioni MIME, ecc.) e del W3C (quali l'HTML, l'XML, CSS, ecc.), o di altri organismi pubblici o privati di normazione nazionali o internazionali (salvo l'ISO che ha sviluppato una norma indipendente con obiettivi diversi dall'IETF, benché i due organismi lavorino ormai di concerto).

## Esempi

* ht creolo haitiano
* ncs lingua dei segni nicaraguense
* fr-be francese belga
* be-cyrl bielorusso scritto in alfabeto cirillico
* hy-arevela armeno orientale
* en-gb-oed inglese britannico con Oxford spelling