IETF言語タグ
IETF言語タグ（）は、BCP 47（現在は RFC 5646 と RFC 4647）により定義される技術仕様である。これは HTTP、HTML、XML、PNG、のような多くの技術標準において使われている。
言語タグは、ハイフンによって分けられる、1つ以上の「下位タグ 」から構成される。一般には下位タグは次の順番で書かれる。
よって、書式はおおよそ次のようになる。（このうち タグのみ必須）
それぞれの下位タグは以下の規格から派生している。
IANA によって管理されている Language Subtag Registry（言語下位タグレジストリ）には、現在公開されている有効な下位タグの一覧がある。
下位タグにおいてはアルファベットの大文字小文字を区別しないが、仕様では言語下位タグレジストリと同じ方法で、つまり 下位タグについてはすべて大文字で、 下位タグについては頭文字のみを大文字で、その他すべての下位タグについては小文字で、記すよう推奨している。
言語タグの使い方としてよく見られるスタイルは、単に 下位タグのみを使うか、 下位タグと 下位タグを使う方法である。例えば、codice_1 は単一の 下位タグ（ISO 639-1より）から構成され、英語を表す。一方、codice_2 は、 下位タグの後に 下位タグ codice_3（ISO 3166-1 より）をくっつけて構成され、カナダ英語を表す。
IETF言語タグは、1995年5月発行の RFC 1766 で初めて定義された。これは2001年1月に RFC 3066 で置き換えられた。これは ISO 639-2 コードを追加し（以前は ISO 639-1 コードのみが許容されていた）、初めて下位タグに数字を使うことを認めた。
仕様の次の版は、2006年9月発行の RFC 4646（仕様の主要部分）と RFC 4647（マッチングの振る舞いについて）であった。RFC 4646 は言語タグにより構造化された書式を導入し、以前から用いられていた ISO 639（part 1と2）と ISO 3166 に加えて ISO 15924 と UN M.49 を利用しており、下位タグのレジストリを古いものから新しいものに置き換えている。なおこれ以前に定義されていたタグで、新しい構造に適合しないものについては、RFC 3066 との互換性を維持するために継承されている。
IETFワーキンググループは仕様の次の版を準備しているところであり、現在承認作業中である。この版の主な目的は言語下位タグレジストリに ISO 639-3 を取り入れることにある。
以下は BCP47 から抜粋したものである。