Studying HTTP

Help

Language Tags

言語タグとは

RFC 2616 の section 3.10 では、言語タグについて記述されています。

言語タグは、他の人間との情報のコミュニケーションのため、人間によって話され、書かれ、あるいは別の方法で伝えられる自然言語を識別する。 コンピュータ言語は完全に除外される。 HTTP では、Accept-LanguageContent-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-LanguageContent-Language 各フィールドにおいて使用されます。

上記文中の RFC 1766 は、その後 RFC 3066 及び RFC 3282 によって置き換えられました。 その後、現在では RFC 3066 は RFC 4646RFC 4647 によって更に置き換えられています。

(※) 当サイトでは、都合上 RFC 3066 及び RFC 3282 に沿った解説を行いますのでご了承下さい。

リソースに応じた言語タグの意味とその使用例

RFC 2616 の section 3.10 では、HTTP ヘッダでの話に限定されていますが、言語タグはより広い局面で利用が可能です。 その際、リソースの種類によって、その意味合いが少しずつ変わってきますので注意が必要です。 RFC 3066 の section 2.4 をご覧下さい。

タグとそれが関連する情報との間の関係は、それが表れる状況を記述する標準によって定義される。 それ故に、この節ではその使用が可能な例のみを与える。

最初の例は、最も単純な例です。

 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 では、ほとんどみかけないはずなのでここでは省略します。

最後の例は、HTMLXML のようなマークアップ言語の場合です。

 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-scouse

Mingo という、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, it

Star Trek からの引用

 Content-type: video/mpeg
 Content-Language: i-klingon

(※) RFC 2616 では、Content-Language 中でコメントを使用する事はできないので、ご注意下さい。

このような言語タグの決定には、読者対象もありますが、言語の使用比率もポイントになると考えられます。 従って、例えば「和英辞典」や「和英対訳」のような文書の場合、それが日本人ユーザ向けのものであっても Content-Language: ja, en としたほうが良いと考えられます。

また、Accept-Language を使用すれば、クライアントが望む言語のリソースがある場合にはそれを優先的に返されます。 但し、RFC 2616 では Accept-Language を無配慮に使用する事はセキュリティ上の問題があるとされているので、注意が必要です。

ISO 639 に基づく主要タグの値

このサイトでは、primary-tag主要タグと訳します。 主要タグについて、RFC 3066 の section 2.2 をご覧下さい。

主要タグについては以下の規則が適用される:

他の全てのタグが予約されている理由は、新たな ISO 639 の改訂版に向けて制限なくあるべきであるからである; すなわち、"i" や "x" の使用は最小限我々が当面の要求に直面するようなメカニズムをここで拡張できるためのものである。

主要タグとなりうる値には、いくつか種類がありますが、最も一般的なものは ISO 639 にある 2 文字コードです。 以下の表は、主要タグとそれが示す言語名の対応について、RFC 3066 の参照文献ともなっている ISO 639:1988 に基づいて、当サイトが作成したものです。 以下で定義した言語名は、当サイトが独自に定義した読み方であり、「正しい読み方」を保証するものではない事をご了承下さい。

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- をつければ、好きな値を使用する事ができます。

ISO 3166 に基づくサブタグの値

RFC 3066 の section 2.2 では、引き続き、主要タグの直後に続く第二サブタグについて記述されています。

第二サブタグについては以下の規則が適用される:

第三及びそれ以降のサブタグについて、構文上つけ加えられる規則はない。

その全てがこの章によってその解釈を割り当てられるコードにて構築されるようなタグは、その使用の前に IANA にて登録される必要はない。

サブタグ中の情報は、例えば以下のようであるだろう:

ここでは、4 種類の例が列挙されていますが、最も一般的なものは "言語名-国名" というタイプのものです。 この国名は上にある通り、ISO 3166 に基づいて決定されています。 以下の表は、国名を表すサブタグとそれが示す国名の対応について、RFC 3066 の参照文献ともなっている ISO 3166:1988 に基づいて、当サイトが作成したものです。 以下で定義した国名は、当サイトが独自に定義した読み方であり、「正しい読み方」を保証するものではない事をご了承下さい。

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-okinawaja-JP-okinawa 等として受信者に通知する事ができます。

参照文献


Copyright © 1999-2010 H-Hash, All Rights Reserved. Valid HTML 4.01 Strict 正当なCSSです!