言語部分タグと地域部分タグの組合せ

言語部分タグと地域部分タグの組合せ

[1] IETF言語タグにおける言語部分タグ地域部分タグの組合せはよく使われます。

[2] 例えば米語言語部分タグ en地域部分タグ US を組合せて en-US と記述できます。

[3] 地域部分タグは、明記する必要がない時、省略できるとされます。 地域部分タグ

主に特定の国で使われている言語

[4] 言語が主に特定の地域部分タグで表される地域で使われるとき、 地域部分タグを記述するのは冗長になります。

[5] そのため地域部分タグは省略するべきという考え方があります。

[6] 一方で、他の言語地域言語タグとの一貫性を重視して、 常に省略しないという考え方もあります。

[7] そのため世間一般ではどちらも混在しています。 混在しているためになんとなくどちらかを使っている人、 なんとなく混用している人もいます。

[8] 日本語は主に日本国で使われています。そのため ja-JP は省略して ja と書くことができ、どちらもよく使われています。

[9] このようなケースでは、どちらか一方に対応する実装は、 相互運用性のため両方とも同じ意味と解釈するべきです。

[11] 日本語に対応する実装は、 jaja-JP も同じと解釈するべきです。

[12] ただし日本国日本語と、より広い日本語一般を特に区別して扱うべき応用では、当然そのように解釈するべきです。

[13] WebブラウザーAccept-Languageja-JP を送ってくるものと ja を送ってくるものがどちらも少なからずあることが知られています。

[10] 言語タグ生成時は、使う場面に応じた慣習が存在するなら、 そちらを優先して使うべきです。 特に知られていなければ、 言語部分タグだけの短い言語タグとするべきです。

[15] 言語タグ一致では、部分タグを無視した一致が使われることが多いので 言語タグ 、 短い言語タグの方が一致する可能性が高いです。

[14] 複数指定できるときは、両方を指定するべき場合もあります。

[16] WebブラウザーAccept-Language:jaja-JP の両方を指定していることもあります。 一方にしか対応しないサーバーが無いこともないため、 Web互換性のために両方設定せざるを得ないと考えられます。

[17] 日本語WindowsChromeAccept-Language:ja,en-US;q=0.9,en;q=0.8 でした。

[18] 日本語AndroidChromeAccept-Language:ja-JP,ja;q=0.9,en-US;q=0.8,en;q=0.7 でした。

主要国とその他の国で使われている言語

[19] 言語のメインの利用国のようなものと、その他の国で使われているときにも、 同じように地域部分タグを使うかどうかの判断が分かれることがあります。

[20] 例えば英語en ですが、英国英語は明示するなら en-GB になります。

[21] しかし en英国英語を表すという判断もあります。

[22] 英語の場合事情は特に複雑で、英国が発祥なのに米国の方が勢力が強い (特に情報産業米国の方が発展している) という事情があります。

[23] そのために en米語を表す場合もあります。 そのとき英語en-GB で表すことになり、少し不自然にも見えます。

[24] 不自然さを回避したいのですべて地域部分タグを明示するべきという判断もあり得ます。 ただその場合でも、 (任意の入力を許容する応用では) 地域部分タグなしの言語タグが入力として与えられた時にどうするか、 は決めなければなりません。

[25] つまり出力で常に en-GBen-US を使うと決めても、 入力が en のとき英語米語かは決めておかなければなりません。

無視できない地域差がある言語

[26] 言語部分タグは共通の符号が与えられているにも関わらず、 によって言語に大きな違いが生じているケースがあります。

[27] 中華人民共和国普通話中華民国台湾華語はどちらも zh なので、 zh-CNzh-TW で区別します。 両者は語彙に違いがあるだけでなく、 文字簡体字正體字かでかなり大きな違いがあります。

[28] このようなケースがあるので、 言語タグ言語部分タグだけを処理に使うのでは不十分で、 その他の部分タグ、最低でも地域部分タグを合わせて処理に使える (あるいは言語タグとして出力できる) 必要があります。

[29] 当事者にとって自分の言語が正常に使えないという問題だけでなく (それだけで十分に問題なのですが)、 政治的にセンシティブな問題でもあり、十分考慮する必要があります。

[30] このような場合でもやはり言語部分タグだけの言語タグが入力として与えられた時にどう動作するべきか、 という問題はあります。

[31] 例えば zh と指定されたときにどう理解するべきかは難題です。

メモ