[12] [[言語タグ]]の[[拡張]]「[CODE(lang)@en[[[t]]]]」は、[[翻訳]]、[[転写]]など変形の方法を記述するものです。

* 仕様書

[REFS[
- [5] [CITE@en[RFC 6497 - BCP 47 Extension T - Transformed Content]] ([TIME[2013-09-15 12:12:25 +09:00]] 版) <http://tools.ietf.org/html/rfc6497>
- [10] [CITE@en-us[UTS #35: Unicode Locale Data Markup Language]] ([TIME[2013-09-18 20:02:34 +09:00]] 版) <http://unicode.org/reports/tr35/#Locale_Extension_Key_and_Type_Data>
- [11] [CITE@en-us[UTS #35: Unicode Locale Data Markup Language]] ([TIME[2013-09-18 20:02:34 +09:00]] 版) <http://unicode.org/reports/tr35/#Transformed_Content_Data_File>
- [2] <http://unicode.org/repos/cldr/trunk/common/bcp47/>
-[4]  <http://www.iana.org/assignments/language-tag-extensions-registry/language-tag-extensions-registry>
]REFS]

* 構文

[21] [CODE(lang)@en[[[t]]]] [[拡張]]は、それを表す [CODE(lang)@en[[[t]]]] という[[部分タグ]]の後に、
[[言語タグ]]と[[欄]]をつなげたものです。[[言語タグ]]は変換元の[[言語]]を表しますが、省略できます。
[[欄]]は変換についての追加情報を表し、任意の個数記述できます。ただし[[言語タグ]]を省略した場合は、
最低1つは[[欄]]が必要です。 [SRC[>>5]]

[46] [[大文字]]と[[小文字]]は区別しませんが、 [[小文字]]が[[正準形]]です [SRC[>>5]]。

* 変換元の言語タグ

[13] 変換元として [CODE(lang)@en[[[t]]]] [[拡張]]内に埋め込まれる[[言語タグ]]は、[[正規]]かつ[[妥当]]かつ[[正準形]]で[['''なければなりません''']]。
また、[[拡張]]や[[私用]]は含んでは[['''なりません''']]。 [SRC[>>5]] なおここで「[[正規]]」とは、
[CODE(ABNF)[[[irregular]]]] でなく [CODE(ABNF)[[[regular]]]] に[[一致]]することをいいます。

;; [14] これらの制限により、1文字の[[部分タグ]] ([CODE(lang)[[[i]]]], [CODE(lang)@en[[[x]]]],
[CODE(lang)@en[[[u]]]] など) が含まれることはありません。1文字の[[部分タグ]]は[[拡張]]や[[私用]]の区切りとして使われるので、
[CODE(lang)@en[[[t]]]] [[拡張]]内に含めることは原理上できません。更に、 [[RFC 3066]] までに [[IANA]]
に登録され、 [[RFC 4646]] 以後の[[正規]]な[[言語タグ]]の構文に合致しないタグや、
未登録のタグや[[正準形]]でないタグは使えないことになります。この辺りは少し厳し目ですね。なお、
[[大文字]]と[[小文字]]の違いは[[正準形]]か否かとは独立しているので、問題となりません。

[15] [[用字系]]だけを指定したい時は、[[言語部分タグ]]として [CODE(lang)@en[[[und]]]] を使います [SRC[>>5]]。

* 追加情報欄

[18] 変換についての追加情報を任意の個数、「[RUBYB[[[欄]]]@en[field]]」として含めることができます。
欄は先頭の[[部分タグ]]として[[ラテン文字]]と[[数字]]の2文字を使って表します。
この先頭の[[部分タグ]]を[DFN[[RUBYB[[[欄分離子]]]@en[field separator]]]]といいます。 [SRC[>>5]]

;; [20] [[ラテン文字]]の後に[[数字]]が来る2文字の[[部分タグ]]は、[[拡張]]や[[私用]]を除き[[言語タグ]]の他の部分で使われることがないので、変換元の[[言語タグ]]の指定と明確に区別できます。

[22] 各[[欄]]は、[[欄分離子]]のあと、3-8文字の[[ラテン文字]]や[[数字]]で構成する[[部分タグ]]が1つ以上必要です。
[SRC[>>5]] それらの[[部分タグ]]の意味は[[欄]]の種類により異なります。

[EG[
[19] 例えば [CODE(lang)[und-Cyrl-t-und-latn-m0-ungegn-2007]] は [[UNGEGN]] の2007年版の[[転写法]]を用いて[[ラテン文字]]から変換した[[キリル文字]]を表します。
]EG]

[23] 同じ[[欄分離子]]を1つの[[言語タグ]]で複数回使っては[['''なりません''']]。
[[欄]]同士の順序には意味はありませんが、[[アルファベット順]]で[[整列]]したものを[[正準形]]とします。 [SRC[>>5]]

;; [24] [[アルファベット順]]というのは、 [[ASCII]] 順ということでいいのでしょうか。

[FIG(short list)[
[FIGCAPTION[
[26] [[欄]]の一覧
]FIGCAPTION]

- [CODE(lang)@en[[[d0]]]]
- [CODE(lang)@en[[[i0]]]]
- [CODE(lang)[h0][t-h0]]
- [CODE(lang)@en[[[k0]]]]
- [CODE(lang)@en[[[m0]]]]
- [CODE(lang)@en[[[s0]]]]
- [CODE(lang)@en[[[t0]]]]
- [CODE(lang)@en[[[x0]]]]

[HISTORY[
- [CODE(lang)[h1][t-h1]]
]HISTORY]
]FIG]

[27] [[欄]]の定義は [[LDML]] で規定されることになっていますが、実際には [[XML]] ファイルの構文が定義されているだけで、
その意味は [[XML]] ファイル中に簡単に説明されているだけです。 

;; [CODE(lang)@en[[[u]]]] [[拡張]]はもっと詳しい説明があります。

[28] [CODE(lang)@en[[[t]]]] [[拡張]]の定義は <http://unicode.org/repos/cldr/trunk/common/bcp47/transform.xml>
に含まれると説明されていますが、実際には[[欄]]ごとに別のファイルに含まれています。

* [CODE(lang)@en[m0]] 欄

[29] [DFN[[CODE(lang)@en[[[m0]]]]]] [[欄]]は変換方式を表します [SRC[>>5, >>35]]。

[REFS[
- [35] <http://unicode.org/repos/cldr/trunk/common/bcp47/transform.xml>
]REFS]

[30] この[[欄]]は最初に定義されたもので、 [[RFC 6497]] にも説明があります。 [[RFC]] 
は他の場所の定義を要約したような体になっていますが、実際には [[RFC]] が最も詳しい説明のようです・・・。

[31] この[[欄]]に属する[[部分タグ]]で[[数字]]だけで構成するものは、[[日付]]を表すことになっています。
その場合、他の[[部分タグ]]が[['''なければならず''']]、最後の[[部分タグ]]で[['''なければならず''']]、
4桁で[[年]]を表すか、6桁で[[年月]]を表すか、8桁で[[年月日]]を表すかのいずれかで[['''なければならず''']]、
できるだけ短くする[['''べきです''']]。この[[日付]]自体、必要な時だけ使う[['''べきです''']]。 [SRC[>>5]]

;; [32] この[[日付]]の表現が [[XML]] ファイルに定義されなくても使っても良いものなのかどうかは明確ではありません。
勝手に使っても良いとは書いてありませんが、現時点では [[RFC]] で例示されているものも含め、
[[XML]] ファイルには[[日付]]付きの値は登録されていません。

[EG[
[33] 例えば [CODE(lang)[und-Hebr-t-und-latn-m0-ungegn-1977]] は [[UNGEGN]] の1977年版[[転写法]]により[[ラテン文字]]を[[ヘブライ文字]]にしたものを表します。
]EG]

* [CODE(lang)@en[i0]] 欄

[36] [DFN[[CODE(lang)@en[[[i0]]]]]] [[欄]]は [[IME]] を表します [SRC[>>37]]。

[REFS[
- [37] <http://unicode.org/repos/cldr/trunk/common/bcp47/transform_ime.xml>
]REFS]

* [CODE(lang)@en[k0]] 欄

[38] [DFN[[CODE(lang)@en[[[k0]]]]]] [[欄]]は[[鍵盤]]を表します [SRC[>>39]]。

[REFS[
- [39] <http://unicode.org/repos/cldr/trunk/common/bcp47/transform_keyboard.xml>
]REFS]

* [CODE(lang)@en[t0]] 欄

[40] [DFN[[CODE(lang)@en[[[t0]]]]]] [[欄]]は[[機械翻訳]]を表します [SRC[>>40]]。

[REFS[
- [41] <http://unicode.org/repos/cldr/trunk/common/bcp47/transform_mt.xml>
-- [55] 移転確認 [TIME[2024-04-05T12:47:53.200Z]]
-- [56] 
[CITE@en[cldr/common/bcp47/transform.xml at main · unicode-org/cldr · GitHub]], [TIME[2024-04-05T12:46:58.000Z]] <https://github.com/unicode-org/cldr/blob/main/common/bcp47/transform.xml>

]REFS]

* [CODE(lang)@en[s0]] 欄

[47] [DFN[[CODE(lang)@en[s0]]]] 欄は、
[[アクセント]]処理、適切な[[引用符]]の選択、
[[十六進数]]表記といったような種々の変形(元)を表します。
「Transform source for non-languages/scripts.」と説明されています。

[FIG(short list)[
- [CODE[zawgyi]]
]FIG]

* [CODE(lang)@en[d0]] 欄

[47] [DFN[[CODE(lang)@en[d0]]]] 欄は、
[[正規化]]、[[case folding]]、[[アクセント]]処理、適切な[[引用符]]の選択、
[[十六進数]]表記といったような種々の変形(先)を表します。
「Transform destination for non-languages/scripts.」と説明されています。

* [CODE(lang)[h0][t-h0]] 欄

[48] 「Language mixed into hybrid language tag」を表すと説明されています。

[49] 値は[[妥当な言語タグ]]でなければなりません。

[EG[
[50] [CODE[es-t-h0-en]] は [[Spanglish]] を表すとされています。
]EG]

[HISTORY[
* [CODE(lang)[h1][t-h1]] 欄

[51] 「Language mixed into hybrid translation source」を表すと説明されています。

[52] 値は[[妥当な言語タグ]]でなければなりません。

[53] 「-t- subtag」 ([CODE[t]] 直後) も[[妥当な言語タグ]]でなければなりません。

[EG[
[54] [CODE[es-t-hi-h1-en]] は [[Hinglish]] から翻訳された [[Spanish]] を表すとされています。
]EG]
]HISTORY]

* [CODE(lang)@en[x0]] 欄

[42] [DFN[[CODE(lang)@en[[[x0]]]]]] [[欄]]は[[私用]]です [SRC[>>43]]。

[REFS[
- [43] <http://unicode.org/repos/cldr/trunk/common/bcp47/transform_private_use.xml>
]REFS]

[44] 構文的に適切な任意の[[部分タグ]]の列を使うことができます [SRC[>>43]]。すなわち、
3-8文字の英数字の[[部分タグ]]を任意個指定できます。

* 適合性

[45] [CODE(lang)@en[[[t]]]] [[拡張]]の構文やその他の要件は [[RFC]] にいくつもありますが、
[[BCP 47]] のいう「[[拡張]]の[[妥当性]]」には明確に言及されていません。例えば未登録の[[欄]]を使うと[[拡張]]は[[非妥当]]となるのかは不明瞭です。

* 拡張と安定性

[25] 新たな[[欄]]や値の定義は [[Unicode]] [[CLDR]] [[技術委員会]]の手続きにより [[LDML]] に追加することで行われるとされています。 [SRC[>>5]]

[34] 構文や意味を変更する場合には [[RFC]] が必要なものの、そのような安定性を損なう変更は [[Unicode Consortium]]
の方針に反するとされています。 [SRC[>>5]]

;; [[おまいう]]...

* 歴史

[58] 
開発初期には拡張 [CODE[s]] と拡張 [CODE[t]] でわけて記述する案もありました。
[SRC[>>57]]

[3] 
[TIME[2011-12-16]]付けで [[IANA]] に登録されています [SRC[>>4]]。

[REFS[
- [57] 
[CITE@en[draft-falk-transliteration-tags-01]], [TIME[2024-04-05T12:56:50.000Z]] <https://datatracker.ietf.org/doc/html/draft-falk-transliteration-tags-01>
- [1] '''[CITE@en[draft-davis-t-langtag-ext - BCP 47 Extension T - Transformed Content]] 
<http://tools.ietf.org/html/draft-davis-t-langtag-ext>'''
- [6] [CITE[CLDR: #3976 (Add data/spec for transform specification in language tags) – CLDR]] ([TIME[2013-10-14 06:54:26 +09:00]] 版) <http://unicode.org/cldr/trac/ticket/3976>
- [7] [CITE@en[CLDR 21.0.2: New T Extensions for language/locale identifiers from announcements_at_unicode.org on 2012-06-07 (Unicode Mail List Archive)]] ([[announcements_at_unicode.org (announcements_at_unicode.org)]] 著, [TIME[2012-06-07 20:57:22 +09:00]] 版) <http://www.unicode.org/mail-arch/unicode-ml/y2012-m06/0088.html>
- [9] [CITE[New BCP47 Extension T Fields - CLDR - Unicode Common Locale Data Repository]] ([TIME[2013-10-04 05:16:43 +09:00]] 版) <http://cldr.unicode.org/development/development-process/design-proposals/t-extension-fields>
]REFS]

* 例

[EG[
[8] >>7 より:
>
- "zh-t-i0-pinyin", to indicate Chinese text generated with a pinyin input method 
- "en-t-k0-dvorak", to identify a Dvorak keyboard for English 
- "it-t-k0-osx-extended", to request an extended Mac keyboard for Italian 

[[私用]]のタグの例:

>
- "ru-t-en-x0-mobile", to indicate a translation from English to Russian for use on a mobile device, or 
- "ja-t-de-m0-und-x0-medical", to identify a machine translation  from German to Japanese with a specialized dictionary for medical terms. 
]EG]

[EG[
[16] >>5 より:
- ja-t-it は[[イタリア語]]から変換した[[日本語]]
- ja-Kana-t-it は[[イタリア語]]から変換した[[日本語]]の[[カタカナ]]表記
- und-Latn-t-und-cyrl は[[キリル文字]]から変換した[[ラテン文字]]
]EG]

* 関連

[17] [[マーク付け言語]]などで変換の前後の[[言語タグ]]をそれぞれ記述できるときには [CODE(lang)@en[[[t]]]]
[[拡張]]は使う必要はありません [SRC[>>5]]。

* メモ

[59] [CITE@en['''['''ICU-12077''']''' Add some code to handle BCP47 aliases for transforms (added by CLDR) - Unicode Consortium]], [TIME[2025-08-16T14:30:39.000Z]] <https://unicode-org.atlassian.net/browse/ICU-12077>
