[107] [[言語]][[部分タグ]]が[[言語]]の大分類を表す時に、[[言語]]の小分類を表すものとして、
2番目の[[部分タグ]]に[DFN[[RUBYB[拡張言語]@en[extended language]]]]を指定することができます。

;; [109] 例えば、[[中国語]]に対する[[広東語]]や[[手話]]に対する[[日本手話]]のようなものです。

;; [280] [[言語タグ]]全体については「[[言語タグ]]」の項も参照してください。

* 語彙

[111] [[拡張言語]]は、3文字の[[ラテン文字]]であって、 [[ISO 639-3]]
で割り当てられている[[言語符号]]のいくつかを [[IANA]] に登録したものです。
[SRC[[[RFC 5646]] 2.2.2.]]

;; [112] [[ISO 639-5]] で定義されているような[[言語]]の[[集成]]やグループは含まれていません。
[SRC[[[RFC 5646]] 2.2.2.]]

[EG[
[118] 例えば、[[マクロ言語]]である[[中国語]] ([CODE(lang)[[[zh]]]]) 
には、[[贛語]] ([CODE(lang)[[[gan]]]])、[[広東語]] ([CODE(lang)[[[yue]]]])、
[[官话]] ([CODE(lang)[[[cmn]]]]) などの[[方言]]が含まれています。
これらは単独の[[言語]]として [CODE(lang)[[[gan]]]] のように表しても構いませんし、
[[拡張言語]]を使って [CODE(lang)[[[zh-gan]]]] のように表しても構いません。
ただし前者の表記が望ましいとされています。しかし従来 [CODE(lang)[[[zh]]]]
を使っていたなら、互換性のために [CODE(lang)[[[zh-gan]]]]
とした方がよいことも多いでしょう。もっとも、単に[[中国語]]一般を表したい時は単に
[CODE(lang)[[[zh]]]] と表記して構いません。 [SRC[[[RFC 5646]] 2.2.2., 4.1.2.]]
]EG]

;; [229] 元々[[言語]]の区分は客観的なものというよりは恣意的なものなので、
[[中国語]]の各方言の差異は異なる[[言語]]と言って良いほどで、
逆に[[欧州]]の一部の[[言語]]の差異は単なる[[方言]]と言える程度のものだったりします。
[[ISO 639]] は[[中国語]]のような大きなくくりは「[[マクロ言語]]」
として扱い、[[広東語]]などの細かな括りも独立した[[言語符号]]を割り振っています。
そうすると、これまで単に [CODE(lang)[[[zh]]]] と表してきた[[中国語]]ですが、
個別の各言語として表現することもできるようになったわけですが、
慣習的にはやはり [CODE(lang)[[[zh]]]] にまとめた方が便利で受け入れやすいわけで、
[[拡張言語]]はそのへんの妥協の産物なのでしょう。しかし
[CODE(lang)[[[zh-gan]]]] のような現在の慣習と親和性の高い表記法よりも
[CODE(lang)[[[gan]]]] のような一般的でない表記をより好ましいとする辺り、
有用性よりも理論的一貫性を重視する方針は今回の改訂でも継続中のようです。

[254] [[マクロ言語]]のすべてが[[言語]]と[[拡張言語]]の組み合わせで使えるわけではなく、
[[LTRU Working Group]] が選んだ [CODE(lang)[[[ar]]]] (Arabic), [CODE(lang)[[[kok]]]] (Konkani), 
[CODE(lang)[[[ms]]]] (Malay), [CODE(lang)[[[sw]]]] (Swahili), [CODE(lang)[[[uz]]]] (Uzbek), 
[CODE(lang)[[[zh]]]] (Chinese) についてのみ[[拡張言語]]が登録されています
[SRC[[[RFC 5645]] 2.2.]]。

[255] また、[[手話]]は[[マクロ言語]]ではなく言語の種類ですが、これまで
[CODE(lang)[[[sgn-US]]]] のような[[言語タグ]]で表してきた経緯から、
[[拡張言語]]が登録されています [SRC[[[RFC 5645]] 2.2.]]。

* 言語部分タグと拡張言語部分タグ

[110] [[拡張言語]]はいずれも一次[[言語]][[部分タグ]]として単独で使うこともできます。
[[言語タグ]]では[[拡張言語]][[部分タグ]]よりも一次[[言語]][[部分タグ]]を使う[['''べきです''']]
[SRC[[[RFC 5646]] 2.2.2.]]。

[114] [[拡張言語]]は [[IANA]] 登録簿で [[Preferred-Value]] 欄が定義されていなければ[['''ならず''']]、
その値は [[Subtag]] 欄と同じでなければ[['''なりません''']]。 [SRC[[[RFC 5646]] 2.2.2.]]
従って >>110 の通り、[[拡張言語]]としてではなく[[言語]]として使うことが好ましいということになります。

[113] [[拡張言語]]は [[IANA]] 登録簿で [[Prefix]] 欄が1つだけ定義されていなければ[['''なりません''']]
[SRC[[[RFC 4646]] 2.2.2., [[RFC 5646]] 2.2.2.]]。すなわち、[[拡張言語]][[部分タグ]]を使う時は、
必ずそれに対応する一次[[言語]][[部分タグ]]が1つだけ決まっていて、それを使わなければなりません。

[278] これらの規則から[[拡張言語]] (とその前の[[言語]]) は特定の[[言語]]に無条件に書き換えられるように思えますが、
実際にはそれによって非妥当になってしまう[[言語タグ]]もあります。

[EG[
[279] 例えば [CODE(lang)[zh-yue-Latn-pinyin]] は[[妥当]]な[[言語タグ]]ではありますが、
[[拡張言語]]を使うべきではないという要件に違反しています。そこで 
[CODE(lang)[yue-Latn-pinyin]] と書き換えると、[[拡張言語]]はなくなりますが、 
[[異体]] [CODE(lang)[pinyin]] の [[Prefix]] として [CODE(lang)[yue]] は登録されていないので、
[[接頭辞]]を含める必要があるとの要件に違反してしまいます。
]EG]

[115] [[ABNF]] 構文上は更に2つ (つまり合計3つ) [[部分タグ]]を連ねることができる
[SRC[[[RFC 4646]] 2.2.2., [[RFC 5646]] 2.2.2.]] とされていますが、
これは使っては[['''ならず''']]、永続的に予約されていて非妥当であり続ける、とされています
[SRC[[[RFC 5646]] 2.2.2.]] 。

;; [116] これでは何のために構文をわざわざ定義して予約しているのか意味不明ですね・・・。

* 歴史

[119] 拡張言語は [[RFC 4646]] で初めて構文のみ規定されましたが、その意味は規定されておらず、
将来の版で拡張するために使うとされていました。拡張言語は [[IANA]] 
には登録しては[['''ならない''']] [SRC[[[RFC 4646]] 2.2.2.]]
とされていました。

[281] [[RFC 5646]] で[[拡張言語]]の1つ目を使う方法が規定され、2つ目と3つ目は使わないとされました。

[282] この間3年ありますが、 [[ISO 639-3]] の標準化作業中だったために時間差が生じたようです。

* 関連

[283] [[Unicode言語識別子]]・[[Unicodeロケール識別子]]では[[拡張言語]]の使用が認められていません。
