
RFC 2616 の section 3.10 では、言語タグについて記述されています。
言語タグは、他の人間との情報のコミュニケーションのため、人間によって話され、書かれ、あるいは別の方法で伝えられる自然言語を識別する。 コンピュータ言語は完全に除外される。 HTTP では、Accept-Language や Content-Language 各フィールドにおいて言語タグを使用する。
HTTP 言語タグの構文や登録は、RFC 1766 で定義されたものと同じである。 要約すると、言語タグは、第一の言語タグと空の可能性のあるサブタグのいくつかから成る。
language-tag = primary-tag *( "-" subtag ) primary-tag = 1*8ALPHA subtag = 1*8ALPHAホワイトスペースはタグの中では認められず、すべてのタグで大文字・小文字を区別しない。 言語タグの名前空間は IANA によって管理されている。 例えば、言語タグには以下のような物がは含まれる。
en, en-US, en-cockney, i-cherokee, x-pig-latin第一タグの二文字は、ISO-639 の言語短縮形であり、サブタグの最初の二文字は、ISO-3166 カントリーコードである。 (上記の後ろ三つのタグは登録されていないタグである; しかし、全て将来に登録されるかもしれないタグの例である。)
HTTP において、言語タグとは、メッセージボディで使用されている自然言語を示すために使用します。 そのため、Accept-Language や Content-Language 各フィールドにおいて使用されます。
上記文中の RFC 1766 は、その後 RFC 3066 及び RFC 3282 によって置き換えられました。 その後、現在では RFC 3066 は RFC 4646 と RFC 4647 によって更に置き換えられています。
(※) 当サイトでは、都合上 RFC 3066 及び RFC 3282 に沿った解説を行いますのでご了承下さい。
RFC 2616 の section 3.10 では、HTTP ヘッダでの話に限定されていますが、言語タグはより広い局面で利用が可能です。 その際、リソースの種類によって、その意味合いが少しずつ変わってきますので注意が必要です。 RFC 3066 の section 2.4 をご覧下さい。
タグとそれが関連する情報との間の関係は、それが表れる状況を記述する標準によって定義される。 それ故に、この節ではその使用が可能な例のみを与える。
- 単一の情報オブジェクトに関して、それはその完全なオブジェクトの完全な理解のために必要である言語のセットとして解されるであろう。 例: プレーンテキスト文書。
- 情報オブジェクトの集合に関して、それはその集合の各要素の内部で使用される言語のセットとして解されるべきである。 例: 文書記憶装置及びライブラリ。
- その目的が代替を提供する事であるような情報オブジェクトに関して、それに関連するタグのセットは、その内容が複数の言語で提供され、その言語を見つけるために各代替を調査する必要があるという事のヒントとして見なされるべきである。 この場合、複数の言語のタグは、その文書の完全な理解を得るために複数言語を理解できる必要があるという事は意味しない。 例: MIME multipart/alternative 。
- HTML や XML のようなマークアップ言語では、言語情報は、マークアップ構造によって識別される (文書全体それ自身を含む) その文書の各部分に付加する事ができる。 例えば、ノルウェー語の文書内に <span lang="FR">C'est la vie.</span> と書く事ができる。 すると、ノルウェー語を話すユーザは、マークされる部分が何を意味するかを知るために仏-ノルウェーの辞書を引く事ができるだろう。 もしユーザがスピーチ合成インターフェースを通じてその文書を聞いているのであれば、この構造は、そのテキストの span に、ノルウェー語の規則を誤って適用する代わりに、フランス語のテキスト-発音変換規則を適切に適用するように合成器に信号を送るために使用されるであろう。
最初の例は、最も単純な例です。
HTTP/1.1 200 OK Content-Type: text/plain Content-Language: ja Content-Length: 10 こんにちは
ここでは、「返される text/plain ファイルは日本語で記述されている」という意味を持っています。
2 番目の例は、複数のファイルのパッケージが考えられます。
HTTP/1.1 200 OK Content-Type: application/x-tar Content-Encoding: gzip Content-Language: ja, en (以下略)
ここでは、「返されるアーカイブ内には日本語のリソースと英語のリソースがある」と考えられます。
3 番目の例は、MIME のマルチパートタイプです。
但し、例にある multipart/alternative というタイプは HTTP では、ほとんどみかけないはずなのでここでは省略します。
最後の例は、HTML や XML のようなマークアップ言語の場合です。
HTTP/1.1 200 OK Content-Type: text/html Content-Language: ja (以下ヘッダ略) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> (中略) <p>トイレットペーパーは、中国語では <span lang="zh">手紙</span> と書くそうです。</p> (中略) </html>
ここでポイントとなるのは、ヘッダ内では ja という言語タグを返している事です。
すなわち、この HTML は基本的に、日本語を理解できる人向けに記述されているという事を意味します。
その上で、部分的に日本語以外の言語 (この場合は中国語) を使用しているという事になります。
この他にも、Content-Language について記述されている RFC 3282 に例がいくつか載っているので紹介します。
Liverpool の下町にて録音された声
Content-type: audio/basic Content-Language: en-scouseMingo という、ISO 639 コードを持たないアメリカンインディアンの言語による文書
Content-type: text/plain Content-Language: i-mingo英仏辞典 (※)
Content-type: application/dictionary Content-Language: en, fr (This is a dictionary)公式な欧州委員会の (その公用語のいくつかによる) 文書
Content-type: multipart/alternative Content-Language: da, de, el, en, fr, itStar Trek からの引用
Content-type: video/mpeg Content-Language: i-klingon
(※) RFC 2616 では、Content-Language 中でコメントを使用する事はできないので、ご注意下さい。
このような言語タグの決定には、読者対象もありますが、言語の使用比率もポイントになると考えられます。
従って、例えば「和英辞典」や「和英対訳」のような文書の場合、それが日本人ユーザ向けのものであっても Content-Language: ja, en としたほうが良いと考えられます。
また、Accept-Language を使用すれば、クライアントが望む言語のリソースがある場合にはそれを優先的に返されます。 但し、RFC 2616 では Accept-Language を無配慮に使用する事はセキュリティ上の問題があるとされているので、注意が必要です。
このサイトでは、primary-tag を主要タグと訳します。
主要タグについて、RFC 3066 の section 2.2 をご覧下さい。
主要タグについては以下の規則が適用される:
- 全ての 2 文字サブタグは、ISO 標準 639 "言語名を表すためのコード" [ISO 639] 中に見られる割り当てか、あるいは将来の ISO 639 part 1 の管理機関、あるいはそれを管理する標準化団体による割り当てに従って解釈される。 (注: 改訂は進行中であり、ISO 639-1:2000 として公開されると予想される。)
- 全ての 3 文字のサブタグは、"言語名を表すためのコード -- Part 2:Alpha-3 コード [ISO 639-2]" 中に見られる割り当てか、あるいは将来の ISO 639 part 2 の管理機関、あるいはそれを管理する標準化団体による割り当てに従って解釈される。
- "
i" という値は、IANA に定義され登録済のものとして予約されている。- "
x" という値は、私的使用のために予約されている。 "x" というサブタグは、IANA によっては登録されないだろう。- その他の値は、この標準の改訂版によって以外は割り当てられないであろう。
他の全てのタグが予約されている理由は、新たな ISO 639 の改訂版に向けて制限なくあるべきであるからである; すなわち、"
i" や "x" の使用は最小限我々が当面の要求に直面するようなメカニズムをここで拡張できるためのものである。
主要タグとなりうる値には、いくつか種類がありますが、最も一般的なものは ISO 639 にある 2 文字コードです。 以下の表は、主要タグとそれが示す言語名の対応について、RFC 3066 の参照文献ともなっている ISO 639:1988 に基づいて、当サイトが作成したものです。 以下で定義した言語名は、当サイトが独自に定義した読み方であり、「正しい読み方」を保証するものではない事をご了承下さい。
| 主要タグ値 | 言語名 |
|---|---|
| aa | アファル語 |
| ab | アプカジア語 |
| af | アフリカーンス語 |
| am | アムハラ語 |
| ar | アラビア語 |
| as | アッサム語 |
| ay | アイマラ語 |
| az | アゼルバイジャン語 |
| ba | バシュキール語 |
| be | 白ロシア語 |
| bg | ブルガリア語 |
| bh | ビハール語 |
| bi | ビスラマ語 |
| bn | ベンガル語 |
| bo | チベット語 |
| br | ブルターニュ語 |
| ca | カタロニア語 |
| co | コルシカ語 |
| cs | チェコ語 |
| cy | ウェールズ語 |
| da | デンマーク語 |
| de | ドイツ語 |
| dz | ブータン語 |
| el | ギリシャ語 |
| en | 英語 |
| eo | エスペラント |
| es | スペイン語 |
| et | エストニア語 |
| eu | バスク語 |
| fa | ペルシャ語 |
| fi | フィンランド語 |
| fj | フィジー語 |
| fo | フェロー語 |
| fr | フランス語 |
| fy | フリジア語 |
| ga | アイルランド語 |
| gd | スコットランド・ゲール語 |
| gl | ガリシア語 |
| gn | グアラニー語 |
| gu | グジャラト語 |
| ha | ハウサ語 |
| he | ヘブライ語 |
| hi | ヒンディー語 |
| hr | クロアチア語 |
| hu | ハンガリー語 |
| hy | アルメニア語 |
| ia | インタルリンガ |
| ie | 国際語 |
| ik | イヌピア語 |
| id | インドネシア語 |
| is | アイスランド語 |
| it | イタリア語 |
| iu | イヌイット語 |
| ja | 日本語 |
| jv | ジャワ語 |
| ka | グルジア語 |
| kk | カザフ語 |
| kl | グリーンランド語 |
| km | カンボジア語 |
| kn | カンナダ語 |
| ko | 韓国語 |
| ks | カシミール語 |
| ku | クルド語 |
| ky | キルギス語 |
| la | ラテン語 |
| ln | リンガラ語 |
| lo | ラオス語 |
| lt | リトアニア語 |
| lv | ラトビア語 |
| mg | マダガスカル語 |
| mi | マオリ語 |
| mk | マケドニア語 |
| ml | マラヤーラム語 |
| mn | モンゴル語 |
| mo | モルダビア語 |
| mr | マラッタ語 |
| ms | マレー語 |
| mt | マルタ語 |
| my | ビルマ語 |
| na | ナウル語 |
| ne | ネパール語 |
| nl | オランダ語 |
| no | ノルウェー語 |
| oc | オキタン語 |
| om | オロモ語 |
| or | オリア語 |
| pa | パンジャブ語 |
| pl | ポーランド語 |
| ps | パシュト語 |
| pt | ポルトガル語 |
| qu | クエチュア語 |
| rm | レトロマンス語 |
| rn | キルンディ語 |
| ro | ルーマニア語 |
| ru | ロシア語 |
| rw | キニャルワンダ語 |
| sa | サンスクリット語 |
| sd | シンド語 |
| sg | サングロ語 |
| sh | セルボ・クロアチア語 |
| si | シンハラ語 |
| sk | スルバキア語 |
| sl | スロベニア語 |
| sm | サモア語 |
| sn | ショナ語 |
| so | ソマリ語 |
| sq | アルバニア語 |
| sr | セルビア語 |
| ss | シスワティ語 |
| st | セソト語 |
| su | スーダン語 |
| sv | スウェーデン語 |
| sw | スワヒリ語 |
| ta | タミル語 |
| te | テルグ語 |
| tg | タジク語 |
| th | タイ語 |
| ti | チグリニャ語 |
| tk | トルクメン語 |
| tl | タガログ語 |
| tn | セツワナ語 |
| to | トンガ語 |
| tr | トルコ語 |
| ts | ツォンガ語 |
| tt | タタール語 |
| tw | トウィ語 |
| ug | ウイグル語 |
| uk | ウクライナ語 |
| ur | ウルドゥー語 |
| uz | ウズベク語 |
| vi | ベトナム語 |
| vo | ヴォラピュック語 |
| wo | ウォロフ語 |
| xh | コーサ語 |
| yi | イディッシュ語 |
| yo | ヨルバ語 |
| zh | 中国語 |
| zu | ズールー語 |
また、公的な機関に定義されていない言語名を使用したい場合は、主要タグの先頭に x- をつければ、好きな値を使用する事ができます。
RFC 3066 の section 2.2 では、引き続き、主要タグの直後に続く第二サブタグについて記述されています。
第二サブタグについては以下の規則が適用される:
- 全ての 2 文字サブタグは、[ISO 3166] からの ISO 標準 3166 alpha-2 カントリーコード、あるいは将来の ISO 3166 の管理機関、あるいはそれを管理する標準化団体による割り当てに従って解釈され、この言語の異形体に関係付けられる地域を意味する。
- 3 から 8 文字の第二サブタグを持つタグは、この文書の chapter 5 中の規則に従って、IANA によって登録する事ができる。
- 1 文字の第二サブタグを持つタグは、この標準の改訂版以降によるもの以外では割り当てられないであろう。
第三及びそれ以降のサブタグについて、構文上つけ加えられる規則はない。
その全てがこの章によってその解釈を割り当てられるコードにて構築されるようなタグは、その使用の前に IANA にて登録される必要はない。
サブタグ中の情報は、例えば以下のようであるだろう:
- en-US (この使用法は ISO 639 中に記述される) のような、国の識別
- en-scouse のような、方言あるいは異形の情報
- i-tsolyani のような、
i-接頭辞にて登録する事ができる、任意の列挙される言語の変形でないような ISO 639 中に列挙されない言語- sgn-US-MA (Martha's Vineyard Sign Language, これは米国のマサチューセッツ州で見られる) のような、地域識別
ここでは、4 種類の例が列挙されていますが、最も一般的なものは "言語名-国名" というタイプのものです。 この国名は上にある通り、ISO 3166 に基づいて決定されています。 以下の表は、国名を表すサブタグとそれが示す国名の対応について、RFC 3066 の参照文献ともなっている ISO 3166:1988 に基づいて、当サイトが作成したものです。 以下で定義した国名は、当サイトが独自に定義した読み方であり、「正しい読み方」を保証するものではない事をご了承下さい。
| サブタグ値 | 国名 |
|---|---|
| AD | アンドラ |
| AE | アラブ首長国連邦 (UAE) |
| AF | アフガニスタン |
| AG | アンティグアバーブーダ |
| AI | アンギラ |
| AL | アルバニア |
| AM | アルメニア |
| AN | オランダ領アンティル |
| AO | アンゴラ |
| AQ | 南極 |
| AR | アルゼンチン |
| AS | アメリカ領サモア |
| AT | オーストリア |
| AU | オーストラリア |
| AW | アルバ |
| AZ | アゼルバイジャン |
| BA | ボスニア・ヘルツェゴビナ |
| BB | バルバドス |
| BD | バングラディシュ |
| BE | ベルギー |
| BF | ブルキナファソ |
| BG | ブルガリア |
| BH | バーレーン |
| BI | ブルンジ |
| BJ | ベナン |
| BM | バミューダ諸島 |
| BN | ブルネイ |
| BO | ボリビア |
| BR | ブラジル |
| BS | バハマ諸島 |
| BT | ブータン |
| BV | ブーベ島 |
| BW | ボツワナ |
| BY | べラルーシ |
| BZ | ベリーズ |
| CA | カナダ |
| CC | ココス (キーリング) 諸島 |
| CD | コンゴ民主共和国 |
| CF | 中央アフリカ |
| CG | コンゴ |
| CH | スイス |
| CI | コートジボアール |
| CK | クック諸島 |
| CL | チリ |
| CM | カメルーン |
| CN | 中国 |
| CO | コロンビア |
| CR | コスタリカ |
| CU | キューバ |
| CV | カポベルデ |
| CX | クリスマス島 |
| CY | キプロス |
| CZ | チェコ |
| DE | ドイツ |
| DJ | ジブチ |
| DK | デンマーク |
| DM | ドミニカ |
| DO | ドミニカ共和国 |
| DZ | アルジェリア |
| EC | エクアドル |
| EE | エストニア |
| EG | エジプト |
| EH | 西サハラ |
| ER | エリトリア |
| ES | スペイン |
| ET | エチオピア |
| FI | フィンランド |
| FJ | フィジー |
| FK | フォークランド諸島 |
| FM | ミクロネシア |
| FO | フェロー諸島 |
| FR | フランス |
| FX | フランス・メトロポリタン |
| GA | ガボン |
| GB | イギリス (Great Britain) |
| GD | グレナダ |
| GE | グルジア |
| GF | フランス領ギアナ |
| GH | ガーナ |
| GI | ジブラルタル |
| GL | グリーンランド |
| GM | ガンビア |
| GN | ギニア |
| GP | グアドループ島 |
| GQ | 赤道ギニア |
| GR | ギリシャ |
| GS | 南ジョージ・南サンドイッチ諸島 |
| GT | グアテマラ |
| GU | グアム |
| GW | ギニアビサウ |
| GY | ガイアナ |
| HK | 香港 |
| HN | ホンジュラス |
| HR | クロアチア |
| HT | ハイチ |
| HU | ハンガリー |
| ID | インドネシア |
| IE | アイルランド |
| IL | イスラエル |
| IN | インド |
| IO | イギリス領インド洋領域 |
| IQ | イラク |
| IR | イラン |
| IS | アイスランド |
| IT | イタリア |
| JM | ジャマイカ |
| JO | ヨルダン |
| JP | 日本 |
| KE | ケニア |
| KG | キルギスタン |
| KH | カンボジア |
| KI | キリバス |
| KM | コモロ |
| KN | セントキッツネイビス |
| KP | 北朝鮮 |
| KR | 韓国 |
| KW | クウェート |
| KY | ケイマン諸島 |
| KZ | カザフスタン |
| LA | ラオス |
| LB | レバノン |
| LC | セントルシア |
| LI | リヒテンシュタイン |
| LK | スリランカ |
| LR | リベリア |
| LS | レソト |
| LT | リトアニア |
| LU | ルクセンブルク |
| LV | ラトビア |
| LY | リビア |
| MA | モロッコ |
| MC | モナコ |
| MD | モルドバ |
| MG | マダガスカル |
| MH | マーシャル諸島 |
| MK | マケドニア |
| ML | マリ |
| MM | ミャンマー |
| MN | モンゴル |
| MO | マカオ |
| MP | 北マリアナ諸島 |
| MQ | マルチニーク |
| MR | モーリタニア |
| MS | モントセラト |
| MT | マルタ |
| MU | モーリシャス |
| MV | モルディブ |
| MW | マラウイ |
| MX | メキシコ |
| MY | マレーシア |
| MZ | モザンビーク |
| NA | ナミビア |
| NC | ニューカレドニア |
| NE | ニジェール |
| NF | ノーフォーク諸島 |
| NG | ナイジェリア |
| NI | ニカラグア |
| NL | オランダ |
| NO | ノルウェー |
| NP | ネパール |
| NR | ナウル |
| NU | ニウエ |
| NZ | ニュージーランド |
| OM | オマーン |
| PA | パナマ |
| PE | ペルー |
| PF | フランス領ポリネシア |
| PG | パプアニューギニア |
| PH | フィリピン |
| PK | パキスタン |
| PL | ポーランド |
| PM | サンピエール・ミクロン |
| PN | ピトケアン |
| PR | プエルトリコ |
| PT | ポルトガル |
| PW | パラオ |
| PY | パラグアイ |
| QA | カタール |
| RE | レユニオン島 |
| RO | ルーマニア |
| RU | ロシア |
| RW | ルワンダ |
| SA | サウジアラビア |
| SB | ソロモン諸島 |
| SC | セーシェル |
| SD | スーダン |
| SE | スウェーデン |
| SG | シンガポール |
| SH | セントヘレナ |
| SI | スロベニア |
| SJ | スバールバル・ヤンマイエン諸島 |
| SK | スロバキア |
| SL | シエラレオネ |
| SM | サンマリノ |
| SN | セネガル |
| SO | ソマリア |
| SR | スリナム |
| ST | セントメ・プリンシペ |
| SV | エルサルバドル |
| SY | シリア |
| SZ | スワジランド |
| TC | タークス・カイコス諸島 |
| TD | チャド |
| TF | フランス南方領 |
| TG | トーゴ |
| TH | タイ |
| TJ | タジキスタン |
| TK | トケラウ |
| TM | トルクメニスタン |
| TN | チュニジア |
| TO | トンガ |
| TP | 東ティモール |
| TR | トルコ |
| TT | トリニダード・トバゴ |
| TV | ツバル |
| TW | 台湾 |
| TZ | タンザニア |
| UA | ウクライナ |
| UG | ウガンダ |
| UK | イギリス (United Kingdom) |
| UM | アメリカ合衆国外諸島 |
| US | アメリカ |
| UY | ウルグアイ |
| UZ | ウズベキスタン |
| VA | ヴァチカン市国 |
| VC | セントビンセント・グレナディン |
| VE | ベネズエラ |
| VG | イギリス領ヴァージン諸島 |
| VI | アメリカ領ヴァージン諸島 |
| VN | ベトナム |
| VU | バヌアツ |
| WF | ワリス・フツナ諸島 |
| WS | サモア |
| YE | イエメン |
| YT | マイヨット |
| YU | ユーゴスラビア |
| ZA | 南アフリカ |
| ZM | ザンビア |
| ZR | ザイール |
| ZW | ジンバブエ |
第二サブタグ以降には、国名だけでなく、地域名を入れる場合もあります。 従って、例えば沖縄の言葉で記述された文書の Content-Language には、ja-okinawa や ja-JP-okinawa 等として受信者に通知する事ができます。