/
991.txt
204 lines (144 loc) · 6.31 KB
/
991.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
[1]
[[IETF言語タグ]]における[[言語部分タグ]]と[[地域部分タグ]]の組合せはよく使われます。
[EG[
[2]
例えば[[米語]]は[[言語部分タグ]] [CODE[en]] と[[地域部分タグ]] [CODE[US]]
を組合せて
[CODE[en-US]]
と記述できます。
]EG]
[3]
[[地域部分タグ]]は、明記する必要がない時、省略できるとされます。
[SEE[ [[地域部分タグ]] ]]
* 主に特定の国で使われている言語
[4]
[[言語]]が主に特定の[[地域部分タグ]]で表される[[地域]]で使われるとき、
[[地域部分タグ]]を記述するのは冗長になります。
[5]
そのため[[地域部分タグ]]は省略するべきという考え方があります。
[6]
一方で、他の[[言語]]や[[地域]]の[[言語タグ]]との一貫性を重視して、
常に省略しないという考え方もあります。
[7]
そのため世間一般ではどちらも混在しています。
混在しているためになんとなくどちらかを使っている人、
なんとなく混用している人もいます。
[EG[
[8]
[[日本語]]は主に[[日本国]]で使われています。そのため
[CODE[ja-JP]]
は省略して
[CODE[ja]]
と書くことができ、どちらもよく使われています。
]EG]
[9]
このようなケースでは、どちらか一方に対応する実装は、
[[相互運用性]]のため両方とも同じ意味と解釈するべきです。
[EG[
[11]
[[日本語]]に対応する実装は、
[CODE[ja]]
も
[CODE[ja-JP]]
も同じと解釈するべきです。
[12]
ただし[[日本国]]の[[日本語]]と、より広い[[日本語]]一般を特に区別して扱うべき[[応用]]では、当然そのように解釈するべきです。
]EG]
[EG[
[13] [[Webブラウザー]]は [CODE[Accept-Language]] に
[CODE[ja-JP]] を送ってくるものと
[CODE[ja]] を送ってくるものがどちらも少なからずあることが知られています。
]EG]
[10]
[[言語タグ]]の[[生成]]時は、使う場面に応じた[[慣習]]が存在するなら、
そちらを優先して使うべきです。
特に知られていなければ、
[[言語部分タグ]]だけの短い[[言語タグ]]とするべきです。
;; [15] [[言語タグ]]の[[一致]]では、[[部分タグ]]を無視した[[一致]]が使われることが多いので
[SEE[ [[言語タグ]] ]]、
短い[[言語タグ]]の方が[[一致]]する可能性が高いです。
[14] 複数指定できるときは、両方を指定するべき場合もあります。
[EG[
[16]
[[Webブラウザー]]は
[CODE[Accept-Language:]]
に
[CODE[ja]] と [CODE[ja-JP]]
の両方を指定していることもあります。
一方にしか対応しない[[サーバー]]が無いこともないため、
[[Web互換性]]のために両方設定せざるを得ないと考えられます。
]EG]
[EG[
[17]
[[日本語]]の[[Windows]] の [[Chrome]] で
[CODE[Accept-Language:]]
は
[CODE[[[ja]],en-US;q=0.9,en;q=0.8]]
でした。
[TIME[2023-05-17T11:52:51.300Z]]
]EG]
[EG[
[18]
[[日本語]]の[[Android]] の [[Chrome]] で
[CODE[Accept-Language:]]
は
[CODE[[[ja-JP]],[[ja]];q=0.9,en-US;q=0.8,en;q=0.7]]
でした。
[TIME[2023-05-17T11:52:51.300Z]]
]EG]
* 主要国とその他の国で使われている言語
[19]
[[言語]]のメインの利用国のようなものと、その他の国で使われているときにも、
同じように[[地域部分タグ]]を使うかどうかの判断が分かれることがあります。
[EG[
[20]
例えば[[英語]]は [CODE[en]] ですが、[[英国]]の[[英語]]は明示するなら
[CODE[en-GB]] になります。
[21]
しかし [CODE[en]] で[[英国]]の[[英語]]を表すという判断もあります。
]EG]
[EG[
[22]
[[英語]]の場合事情は特に複雑で、[[英国]]が発祥なのに[[米国]]の方が勢力が強い
(特に[[情報産業]]は[[米国]]の方が発展している) という事情があります。
[23]
そのために [CODE[en]] で[[米語]]を表す場合もあります。
そのとき[[英語]]は [CODE[en-GB]] で表すことになり、少し不自然にも見えます。
]EG]
[24]
不自然さを回避したいのですべて[[地域部分タグ]]を明示するべきという判断もあり得ます。
ただその場合でも、 (任意の入力を許容する[[応用]]では)
[[地域部分タグ]]なしの[[言語タグ]]が入力として与えられた時にどうするか、
は決めなければなりません。
[EG[
[25]
つまり出力で常に [CODE[en-GB]] か [CODE[en-US]] を使うと決めても、
入力が [CODE[en]] のとき[[英語]]か[[米語]]かは決めておかなければなりません。
]EG]
* 無視できない地域差がある言語
[26]
[[言語部分タグ]]は共通の[[符号]]が与えられているにも関わらず、
[[国]]によって[[言語]]に大きな違いが生じているケースがあります。
[EG[
[27]
[[中華人民共和国]]の[[普通話]]と[[中華民国]]の[[台湾華語]]はどちらも
[CODE[zh]] なので、 [CODE[zh-CN]] と [CODE[zh-TW]] で区別します。
両者は[[語彙]]に違いがあるだけでなく、
[[文字]]が[[簡体字]]か[[正體字]]かでかなり大きな違いがあります。
]EG]
[28]
このようなケースがあるので、
[[言語タグ]]の[[言語部分タグ]]だけを処理に使うのでは不十分で、
その他の[[部分タグ]]、最低でも[[地域部分タグ]]を合わせて処理に使える
(あるいは[[言語タグ]]として出力できる) 必要があります。
[29]
当事者にとって自分の[[言語]]が正常に使えないという問題だけでなく
(それだけで十分に問題なのですが)、
[[政治的]]にセンシティブな問題でもあり、十分考慮する必要があります。
[30]
このような場合でもやはり[[言語部分タグ]]だけの[[言語タグ]]が入力として与えられた時にどう動作するべきか、
という問題はあります。
[EG[
[31] 例えば [CODE[zh]] と指定されたときにどう理解するべきかは難題です。
]EG]
* メモ