<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> <dfn><code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-Encoding:</anchor></code></dfn> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>は、
受け入れ可能な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">自然言語</anchor>を示すものです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="415" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[415]</anchor-end> この<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容折衝</anchor>の仕組みの一つです。</p><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> <strong><cite xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7231</anchor> - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</cite> (<time>2014-06-07 01:55:45 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc7231#section-5.3.5">https://tools.ietf.org/html/rfc7231#section-5.3.5</anchor-external></strong></li></ul></refs></section><section><h1>意味</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> における <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-Encoding:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>において好ましいと考える<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">自然言語</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">集合</anchor>を示すものです
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;35</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-Language:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>のない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>がどの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>でも受け入れることを示しています <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;35</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RTSP</anchor>/1.0 (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2326</anchor>) は、その適用先は内容ではなく<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル要素</anchor>であるとしています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="59" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[59]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者の言語</anchor>も参照。</p></section><section><h1>文脈</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> では、このヘッダーは、複数指定できます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[46]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSocket handshake</anchor> でも使うことができます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">電子メール</anchor>では複数指定できるかどうか、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3282</anchor> には言及がありません。
複数指定しないほうが安全です。</p></section><section><h1>構文</h1><section><h1>HTTP の場合</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">欄値</anchor>は、1つ以上の値の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リスト</anchor> (<code class="HTTP">#</code>) です <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;35</anchor-internal></src>。</p><figure class="railroad"><ol><li>言語と重み</li><li>*<ol><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OWS</anchor></li><li><code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">,</anchor></code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OWS</anchor></li><li>言語と重み</li></ol></li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> それぞれの値は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">基本言語範囲</anchor>か、その後に <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">q</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>を指定したものです <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;35</anchor-internal></src>。</p><figure class="railroad"><ol><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">基本言語範囲</anchor></li><li>?<ol><li><code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">;</anchor></code></li><li>|<ol><li><code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">q</anchor></code></li><li><code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Q</anchor></code></li></ol></li><li><code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">=</anchor></code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">品質値</anchor></li></ol></li></ol></figure><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">
<anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2616</anchor> では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空白</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LWS</anchor>) をどこに挿入可能か明確に言及されていませんでした。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字句</anchor>間どこにでも認めているようです。 </p></section><section><h1>822 メッセージの場合</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> RFC 3282 の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ABNF</anchor> による構文規則によれば、</p><ul><li><code class="ABNF"><dfn>Accept-Language</dfn> = &quot;Accept-Language:&quot; [CFWS] language-q *( &quot;,&quot; [CFWS] language-q )</code></li><li><code class="ABNF"><dfn>language-q</dfn> = language-range [&quot;;&quot; [CFWS] &quot;q=&quot; qvalue <title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">CFWS] </title></code></li><li><code class="ABNF"><dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">qvalue</anchor></dfn> = ( &quot;0&quot; [ &quot;.&quot; 0*3DIGIT ] ) / ( &quot;1&quot; [ &quot;.&quot; 0*3(&quot;0&quot;) ] )</code></li><li><code class="ABNF"><dfn>Obs-accept-language</dfn> = &quot;Accept-Language&quot; *WSP &quot;:&quot; [CFWS] obs-language-q *( &quot;,&quot; [CFWS] obs-language-q ) [CFWS] </code></li><li><code class="ABNF"><dfn>obs-language-q</dfn> = language-range [ [CFWS] &quot;;&quot; [CFWS] &quot;q&quot; [CFWS] &quot;=&quot; qvalue ] </code></li><li><code class="ABNF"><dfn>language-tag</dfn> := &lt;<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BCP47</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC3066</anchor> language-tag (See <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語札</anchor>)&gt;</code></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> 読む側の実装は構文 <code class="ABNF">obs-Accept-Language</code>
を理解出来なければ<strong>なりません</strong>。
出力側の実装は構文 <code class="ABNF">Accept-Language</code>
に沿わなければ<strong>なりません</strong>。</p></section></section><section><h1>引数</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">q</anchor></code> に構文上は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">quoted-string</anchor> が使えないようにも見えますが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor> は対応しているようです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> 構文上は <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">q</anchor></code> 以外の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>を指定できないように見えますが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor> は他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>にも対応している (無視する) ようです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">quoted-string</anchor> に <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">,</anchor></code> が含まれていても、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor>
はちゃんと <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">quoted-string</anchor> として字句解析してるみたいです。しかし <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">quoted-pair</anchor>
には対応していないようです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor> は <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">q</anchor></code> の先頭の小数以外は無視するみたいです。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">整数</anchor>部分が二桁以上あっても最初の一桁だけとみなすようです。
小数点以下は3桁までで、それ以上あっても無視するようです。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</anchor>
より大きな値は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</anchor> とみなすようです。</p></section><section><h1>処理</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源鯖</anchor>は、利用可能な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>のいずれの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語</anchor>も指定された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語範囲</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一致</anchor>しない場合には、
この<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>を無視して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容折衝</anchor>の対象でないものとして扱うこともできますし、
<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">406</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を送ることもできます <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;35</anchor-internal></src>。
ただし <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">406</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>を送ってしまうと、
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">翻訳</anchor>ソフトウェアを使うなど) <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>が何らかの形で使うことができるかもしれない内容にアクセスできなくなってしまいますから、
<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">推奨<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">encourage</rt></rubyb>しません <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;35</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="408" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[408]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグ</anchor>の一致については、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4647</anchor> に複数の一致方法が定義されており、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> の実装はそれぞれの要件により好きな方法を使うことができる <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;35</anchor-internal></src> とされています。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="409" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[409]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2616</anchor> では、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4647</anchor> のうち<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">基本濾過</anchor>に相当するものが定義されていました
<src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;35</anchor-internal></src>。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="407" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[407]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">受信者</anchor>によっては、(特に <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">q</anchor></code> 値が等しい場合には)
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語範囲</anchor>の指定の順序を優先順とみなすことがありますが、
そう解釈されるとは限りませんから、一貫性と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相互運用性</anchor>のため、
多くの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>はそれぞれに異なる <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">q</anchor></code>
値を指定し、大きいものから小さいものへと並べます <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;35</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">q</anchor> 値が同じ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語</anchor>が複数指定されているとき、
<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LanguagePriority</anchor></code> の順序に従って解釈します。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">従って <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3287</anchor> の <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;7</anchor-internal> の解釈とは異なります。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="56" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[56]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語の折衝</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者の言語</anchor>も参照.</p></section><section><h1>利用者インターフェイス</h1><p><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>利用者の言語</anchor> </sw-see></p></section><section><h1>プライバシー</h1><p><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>利用者の言語</anchor> </sw-see></p></section><section><h1>実装</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <cite xml:lang="ja">mod_negotiation - Apache HTTP サーバ</cite>
(<time>2009-10-04 03:10:28 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://httpd.apache.org/docs/2.2/ja/mod/mod_negotiation.html">http://httpd.apache.org/docs/2.2/ja/mod/mod_negotiation.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <cite xml:lang="ja">Google ウェブマスター向け公式ブログ: 多言語ウェブサイトの作成について</cite>
( (<time>2013-01-15 07:02:21 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://googlewebmastercentral-ja.blogspot.jp/2011/11/blog-post.html">http://googlewebmastercentral-ja.blogspot.jp/2011/11/blog-post.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> <cite xml:lang="en">Accept-Language Header for Internet Explorer 7 - IEBlog - Site Home - MSDN Blogs</cite>
( (<time>2013-03-15 07:38:22 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://blogs.msdn.com/b/ie/archive/2006/10/17/accept-language-header-for-internet-explorer-7.aspx">http://blogs.msdn.com/b/ie/archive/2006/10/17/accept-language-header-for-internet-explorer-7.aspx</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="57" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[57]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PHP</anchor>: <code>locale_accept_from_http</code></p></section><section><h1>歴史</h1><section><h1>HTTP</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="58" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[58]</anchor-end> 
<cite>Mosaic-L10N: Changes</cite>, <time>2017-09-14T23:06:30.000Z</time>, <time>2024-08-16T07:47:05.422Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://takadat.com/i/Mosaic-l10n/changes.html">http://takadat.com/i/Mosaic-l10n/changes.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <cite>Request Headers in the HTTP protocol</cite>
( (<time>2001-11-29 11:01:38 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#z12">http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#z12</anchor-external></p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> RFC 1945 (HTTP/1.0) D.2.4; RFC 2068・2616 (HTTP/1.1) 14.4 Accept-Language</figcaption><blockquote><p>The Accept-Language request-header field is similar to Accept, but
restricts the set of natural languages that are preferred as a
response to the request. <ins><ins>{2616}</ins> Language tags are defined in section 3.10.</ins></p></blockquote><p><code class="HTTP">Accept-Language</code> 要求頭欄は、
<code class="HTTP">Accept</code> と同様ですが、要求に対する応答として優先させる自然言語の集合を制限します。 <ins><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語札</anchor>は 3.10 節で定義しています。</ins></p><insert xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><blockquote xmlns="http://www.w3.org/1999/xhtml"><p><ins>{2068,2616}</ins><ul><li>Accept-Language = &quot;Accept-Language&quot; &quot;:&quot; 1#( language-range [ &quot;;&quot; &quot;q&quot; &quot;=&quot; qvalue ] )</li><li>language-range  = ( ( 1*8ALPHA *( &quot;-&quot; 1*8ALPHA ) ) | &quot;*&quot; )</li></ul></p></blockquote><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>Each language-range MAY be given an associated quality value which
represents an estimate of the user's preference for the languages
specified by that range. The quality value defaults to &quot;q=1&quot;. For example,<ul><li>Accept-Language: da, en-gb;q=0.8, en;q=0.7</li></ul></p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">各 <code class="ABNF">language-range</code> は、その範囲により指定される言語についての利用者の優先の見積もりを表現する、関連付ける品質値を与えても<strong>構いません</strong>。
品質値の既定値は <code class="HTTP">q=1</code> です。
例えば、<ul><li>Accept-Language: da, en-gb;q=0.8, en;q=0.7</li></ul></p><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>would mean: &quot;I prefer Danish, but will accept British English and
other types of English.&quot; A language-range matches a language-tag if
it exactly equals the tag, or if it exactly equals a prefix of the
tag such that the first tag character following the prefix is &quot;-&quot;.
The special range &quot;*&quot;, if present in the Accept-Language field,
matches every tag not matched by any other range present in the
Accept-Language field.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">は「私はデンマーク語を希望しますが、
イギリス英語及びほかの種類の英語も受け付けます。」
を意味します。 <code class="ABNF">language-range</code>
は、 language-tag と正確に等しいか、または tag
の接頭辞と正確に等しく、その接頭辞に続く最初の tag 
の文字が <code class="char">-</code> である
とき<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一致</anchor>します。
特殊な範囲 <code class="HTTP">*</code> が <code class="HTTP">Accept-Language</code>
欄に示された時は、 <code class="HTTP">Accept-Language</code>
欄に示された他のどの範囲にも一致しない各 tag
と一致します。</p><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>Note: This use of a prefix matching rule does not imply that
language tags are assigned to languages in such a way that it is
always true that if a user understands a language with a certain
tag, then this user will also understand all languages with tags
for which this tag is a prefix. The prefix rule simply allows the
use of prefix tags if this is the case.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">注意 : 接頭辞一致規則をこのように使用するからといって、
利用者がある tag の言語を理解するとしたらこの利用者がその tag
を接頭辞とする tag の全ての言語をも理解するということが常に真であるように言語札が言語に割り当てられることを求めるものではありません。
この接頭辞規則は、単にこれがそうである場合に接頭辞 tag の使用を認めるに過ぎません。</p><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>The language quality factor assigned to a language-tag by the
Accept-Language field is the quality value of the longest language-range 
in the field that matches the language-tag. If no language-range 
in the field matches the tag, the language quality factor
assigned is 0. If no Accept-Language header is present in the
request, the server SHOULD assume that all languages are equally
acceptable. If an Accept-Language header is present, then all
languages which are assigned a quality factor greater than 0 are acceptable.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml"><code class="HTTP">Accept-Language</code> 欄により language-tag 
に割り当てられる言語品質因子は、 language-tag
に一致する欄中の最長の <code class="ABNF">language-range</code>
の品質値です。欄中のどの <code class="ABNF">language-range</code>
も tag に一致しなければ、割り当てられる言語品質因子は <code class="HTTP">0</code>
です。陽宮中に <code class="HTTP">Accept-Language</code> 頭が示されていなければ、
鯖は全ての言語が等しく受入れ可能と仮定する<strong>べきです</strong>。
<code class="HTTP">Accept-Language</code> 頭が示されていれば、
<code class="HTTP">0</code> より大きな品質因子が割り当てられている全ての言語が受入れ可能です。</p><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>It <del><ins>{2068}</ins> may</del> <ins><ins>{2616}</ins> might</ins> be contrary to the privacy expectations of the user to send an
Accept-Language header with the complete linguistic preferences of
the user in every request. For a discussion of this issue, see
section <del><ins>{2068}</ins> 15.7</del> <ins><ins>{2616}</ins> 15.1.4</ins>.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">利用者の完全な言語的好みを要求毎に <code class="HTTP">Accept-Language</code>
頭で送るのは、個人情報に関する利用者の期待と反対かもしれません。
この問題についての議論は、 15.* 節をご覧下さい。</p><blockquote xmlns="http://www.w3.org/1999/xhtml"><p><del>Note:</del>
As intelligibility is highly dependent on the individual
user, it is recommended that client applications make the choice of
linguistic preference available to the user. If the choice is not
made available, then the Accept-Language header field <del>must not</del> <ins>MUST NOT</ins>
be given in the request.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">了解度は個々の利用者に高く依存しているので、
クライアント応用は利用者が利用可能な言語的好みの選択を行うことができるようにすることを推奨します。
選択が利用可能にできない場合、 <code class="HTTP">Accept-Language</code>
頭欄は要求中に与えては<strong>なりません</strong>。</p><insert><blockquote xmlns="http://www.w3.org/1999/xhtml"><p>Note: When making the choice of linguistic preference available to
the user, we remind implementors of  the fact that users are not
familiar with the details of language matching as described above,
and should provide appropriate guidance. As an example, users
might assume that on selecting &quot;en-gb&quot;, they will be served any
kind of English document if British English is not available. A
user agent might suggest in such a case to add &quot;en&quot; to get the
best matching behavior.</p></blockquote><p xmlns="http://www.w3.org/1999/xhtml">注意 : 利用者に利用可能な言語的好みの選択を行わせる時、
利用者は前述の言語一致の詳細に詳しくないかもしれないことに利用者は注意し、
適切な案内を提供するのがよいでしょう。例えば、
利用者が <code class="lang">en-gb</code> を選択していると仮定すると、
イギリス英語が利用可能でないときに任意の種類の英語の文書を供給するでしょう。
利用者エージェントはそのような場合に最善の一致動作が得られるように
<code class="lang">en</code> を追加することを勧めるといいでしょう。</p></insert></insert></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> RFC 2326 (RTSP) 12.3 Accept-Language</figcaption><blockquote><p>See [H14.4]. Note that the language specified applies to the
presentation description and any reason phrases, not the media
content.</p></blockquote><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> [H14.4] を参照。
なお、言語指定は表現説明及び理由語句に適用されるものであって、媒体内容に適用されるものではありません。</p></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> RFC 2068 15.7, RFC 2616 15.1.4 (HTTP/1.1) Privacy Issues Connected to Accept Headers</figcaption><blockquote><p>Accept request-headers can reveal information about the user to all
servers which are accessed. The Accept-Language header in particular
can reveal information the user would consider to be of a private
nature, because the understanding of particular languages is often
strongly correlated to the membership of a particular ethnic group.
User agents which offer the option to configure the contents of an
Accept-Language header to be sent in every request are strongly
encouraged to let the configuration process include a message which
makes the user aware of the loss of privacy involved.</p></blockquote><p><code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept</anchor></code> 要求頭群は、
利用者についての情報をその接続したサーバーすべてに暴くことができます。
<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-Language</anchor></code> 頭は特に、利用者が私的な性質であると考えているかもしれない情報を晒し得ます。
なぜなら、特定言語の理解はしばしば特定の民族集団の一員であることと強い関連があるからです。
要求毎に送信する <code class="HTTP">Accept-Language</code> 頭の内容を設定する選択肢を提供している<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>は、
設定過程において利用者が個人情報の流出に気づくようなメッセージを含めることを強く推奨します。</p><blockquote><p>An approach that limits the loss of privacy would be for a user agent
to omit the sending of Accept-Language headers by default, and to ask
the user whether <del>it should</del> <ins>or not to</ins> start sending Accept-Language headers to a
server if it detects, by looking for any Vary response-header fields
generated by the server, that such sending could improve the quality of service.</p></blockquote><p>個人情報の流出を限定するために、利用者エージェントが既定では
<code class="HTTP">Accept-Language</code> 頭を送信せずに、
サーバーによって生成される <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Vary</anchor></code> 応答頭欄を見て
<code class="HTTP">Accept-Language</code> 頭を送ることでサービスの質を向上できるだろうと判断した場合には利用者に <code class="HTTP">Accept-Language</code> 頭を送信することを開始するかどうかをたずねるという方法もあるでしょう。</p><blockquote><p>Elaborate user-customized accept header fields sent in every request,
in particular if these include quality values, can be used by servers
as relatively reliable and long-lived user identifiers. Such user
identifiers would allow content providers to do click-trail tracking,
and would allow collaborating content providers to match cross-server
click-trails or form submissions of individual users. Note that for
many users not behind a proxy, the network address of the host
running the user agent will also serve as a long-lived user
identifier. In environments where proxies are used to enhance
privacy, user agents <del>should</del> <ins>ought to</ins> be conservative in offering accept
header configuration options to end users. As an extreme privacy measure,
proxies could filter the accept headers in relayed requests. General
purpose user agents which provide a high degree of header
configurability <del>should</del> <ins>SHOULD</ins> warn users about the loss of privacy which can be involved.</p></blockquote><p>利用者が緻密に調整した受入れ頭欄群を要求毎に送信すると、特に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">品質値</anchor>が含まれている場合には、鯖がこれを比較的信頼でき長生きする利用者識別子として使うことができます。
この利用者識別子で内容提供者は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">かちっ</anchor>跡追跡を行ったり、共同内容提供者が個々の利用者のかちっ跡や入力欄提出をサーバー間で一致させたりすることができるでしょう。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">串</anchor>に隠れていない多くの利用者については利用者エージェントが走っているホストのネットワーク番地も長生きする利用者識別子として供給されることに注意してください。
個人情報保護向上のために串を使う環境では、
利用者エージェントは末端利用者に受入れ可能頭設定選択肢を提供することに慎重になるべきです。極度の個人情報保護の観点から、
串は中継する要求の受入れ可能頭群を濾過できるでしょう。
高度な頭設定可能性を提供する一般目的利用者エージェントは、
個人情報の流出があることを利用者に警告する<strong>べきです</strong>。</p></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <em>ブラウザの言語を自動認識</em> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.ybi.co.jp/koike/qa2000/qa2033.htm">http://www.ybi.co.jp/koike/qa2000/qa2033.htm</anchor-external>: 色々な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WWWブラウザ</anchor>での <code class="HTTP">Accept-Language:</code> 欄の実装状況</p></section><section><h1>電子メール</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3282</anchor></li></ul></refs><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> 元々 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 1945</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2068</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2616</anchor>) 
で定義されていたものですが、
<time>平成14(2002)年5月<attrvalue xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2002-05</attrvalue></time>末に 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3282</anchor> により再定義されました。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> 以前から <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NN</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MUA</anchor> などが
<code class="822"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">X-Accept-Language</anchor>:</code> 欄を吐いていたのは有名ですが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3282</anchor>
により<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">電子メイル</anchor>などの世界でもこの欄の使用が公式に認められたことになります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3282</anchor>
は現実の実装にあわせてやや解釈を変更するとしています。
具体的には、要求度 (<code class="ABNF"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">qvalue</anchor></code>) 
が指定されていない場合に、左側 (先頭側)
に指定された言語ほど要求度が高いと見なします。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> の実装も、この新しい解釈を採用して差し支えないでしょう。</p><p><weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3282 には、 HTTP で <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP">Accept-Language:</code> 欄を使う場合の定義を更新するとは残念ながら明記されていません。<q xmlns="http://www.w3.org/1999/xhtml">Web 文書で使われる</q>という曖昧に言及されているのみです。</weak></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end>
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 電子メイルでの <code class="822">Accept-Language:</code> の使用についての議論が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ietf-822</anchor> の <q>Is Accept-language an email header field?</q>
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="mid:5.1.0.14.2.20040406163449.0258c008@127.0.0.1">mid:5.1.0.14.2.20040406163449.0258c008@127.0.0.1</anchor-external>
から始まるスレ (2004年4月)
で議論されています。</p><p>内容を要約すると、<ul><li>電子メイルで使用するには曖昧な点がある。
たとえば、 <code class="822"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">From</anchor>:</code> や <code class="822"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Cc</anchor>:</code> の宛先が複数ある時に、 <code class="822">Accept-Language:</code> の適用対象が不明。</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">国際化</anchor>は面倒だ。 <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(←それは関係なかろう)</weak></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語札</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">部分札</anchor>つきのは扱いが面倒だ。 <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(←それも事実だが関係なかろう)</weak></li><li><code class="822">Accept-Language:</code> の実装はそれなりにある。 <code class="822"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">X-Accept-Language</anchor>:</code> や <code class="822"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Preferred-Language</anchor>:</code> というのも使われている。 <code class="822">X-Accept-Language:</code> が一番多い気がする。 <code class="822">q</code> 引数は滅多に使われない。</li><li>悪い設計でも市場で広がったらどうしようもない。 <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(← いまさら <anchor>MIME</anchor> の反省かよ)</weak></li></ul></p><p><time>2004-04-20 08:28:59 +00:00</time></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NN</anchor> は昔から<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">電子メイル</anchor>でも <dfn><code class="822"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">X-Accept-Language</anchor>;</code> </dfn>
欄を出力していまして、内容は HTTP 
のものと同じなんですが
(ただし <code class="HTTP">q</code> 引数は用いない)、
こっちは未だに応用があるのか謎です。</p><p>多言語化の時代ですから、
人間相手の情報としても有用かもしれません。
よくある<kbd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アドレス帳</anchor>に追加</kbd>みたいな機能を選んだらこの欄から自動的に情報を採って載せてくれるみたいな。</p></section><section><h1>サーバー側</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> この <code class="HTTP">Accept-Language:</code>
欄ってクライアント側ではかなり昔、遅くても <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NN2</anchor> 
では実装されていたんですが、鯖では長く上手く使えていませんでした。せいぜい 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CGI</anchor> とかの鯖側スクリプト系の仕組みで利用する程度。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> それが、数年前に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor> 
が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル名</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">接尾辞</anchor> base 
の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">conneg</anchor> を実装してから一変。
利用者の言語に応じた資源を提供するのが楽になって、
それを利用しているサーバーも激増中。</p></section></section><section><h1>例</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end>
<strong>1つの言語を指定する例</strong><pre class="HTTP example code"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-Language</anchor>: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ja</anchor></pre></p><p><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日本語</anchor>を希望することを示します。<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">q</anchor></code>が省略されているので、<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">q</anchor>=1</code>とみなされます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end>
<strong>複数の言語を指定する例</strong><pre class="HTTP example code">Accept-Language: ja, en</pre></p><p><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日本語</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">英語</anchor>を希望することを示します。
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">q</anchor></code>が省略されているので、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日本語</anchor>も<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">英語</anchor>も<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">q</anchor>=1</code>とみなします。</p><p><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2616</anchor>までの規定だけでは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日本語</anchor>も<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">英語</anchor>も同じくらいの希望度であることがわかるだけで、両方がある場合どちらを提供するべきかは明らかではありませんが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3282</anchor>の規定 (<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;7</anchor-internal>) によれば<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日本語</anchor>の方をより優先するものと理解するべきとなります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end>
<strong>優先度付きで複数の言語を指定する例</strong><pre class="HTTP example code">Accept-Language: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">en</anchor>; <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">q</anchor>=0.1, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ja</anchor>; <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">q</anchor>=1.0</pre></p><p><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日本語</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">英語</anchor>を希望することを示します。その中でも特に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日本語</anchor>が好ましいことが<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">q</anchor></code>値によって示されています。この場合、記述の順序は意味を持ちませんから、<pre class="HTTP example code">Accept-Language: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ja</anchor>; <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">q</anchor>=1.0, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">en</anchor>; <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">q</anchor>=0.1</pre></p><p>でも同じ意味です。</p></section><section><h1>テストケース</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <cite>Accept-Language parsing</cite> (<time>2012-02-26 18:26:03 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://suika.suikawiki.org/~wakaba/test/web/http/accept-language/conneg-1.html">http://suika.suikawiki.org/~wakaba/test/web/http/accept-language/conneg-1.html</anchor-external></li></ul></refs></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="417" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[417]</anchor-end> この<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>に相当する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">API</anchor> として、
<code class="JS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">navigator.language</anchor></code> と <code class="JS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">navigator.languages</anchor></code>
があります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="414" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[414]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-Language:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>によって<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語</anchor>を指定すると、
通常は選択された言語が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>の <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Language:</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>で示されることになります。</p></section><section><h1>メモ</h1><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end> <cite>Versioning &amp; Internationalization</cite>
(<time>2015-03-05 17:36:55 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://developer.foursquare.com/overview/versioning">https://developer.foursquare.com/overview/versioning</anchor-external></figcaption><blockquote><p>You can specify the locale by setting the Accept-Language HTTP header in your request. Alternatively, you can add a locale=XXX parameter to your request but HTTP header specification is preferred. We currently support en (default), es, fr, de, it, ja, th, tr, ko, ru, pt, and id.</p></blockquote></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end> <cite xml:lang="en">Set Accept/Accept-Language in Fetch per #43 · whatwg/fetch@d095fdc</cite>
(<time>2015-05-05 11:13:27 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/fetch/commit/d095fdcf284cd36e9ddee526ad6faa6fda4ecc00">https://github.com/whatwg/fetch/commit/d095fdcf284cd36e9ddee526ad6faa6fda4ecc00</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</anchor-end> <cite xml:lang="en">Accept/Accept-Language handling is now done in Fetch · whatwg/xhr@7e8e1d8</cite>
(<time>2015-05-05 11:33:59 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/xhr/commit/7e8e1d887c2b16ba4665c849e7034a45ab826ec3">https://github.com/whatwg/xhr/commit/7e8e1d887c2b16ba4665c849e7034a45ab826ec3</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="47" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[47]</anchor-end> <cite xml:lang="ja">Googlebot による地域認識クロール - Search Console ヘルプ</cite>
(<time>2015-06-17 00:08:26 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://support.google.com/webmasters/answer/6144055?hl=ja">https://support.google.com/webmasters/answer/6144055?hl=ja</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="48" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[48]</anchor-end> <cite xml:lang="en">Clarify requirements around Accept and Accept-Language · whatwg/fetch@69eda57</cite>
(<time>2015-11-12 11:30:29 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/fetch/commit/69eda57af99fd5762162f24739da1895bd2130f4">https://github.com/whatwg/fetch/commit/69eda57af99fd5762162f24739da1895bd2130f4</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[49]</anchor-end> <cite xml:lang="en">Expand Request.destination · whatwg/fetch@6b9cdaa</cite>
(<time>2016-02-16 11:15:21 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/fetch/commit/6b9cdaa9be7acd2b8074c74823981ef994d17857">https://github.com/whatwg/fetch/commit/6b9cdaa9be7acd2b8074c74823981ef994d17857</anchor-external></p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="53" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[53]</anchor-end> <cite xml:lang="en">Fitbit Web API Basics — Fitbit Web API Docs</cite>
(<time>2016-10-05 06:00:11 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://dev.fitbit.com/docs/basics/">https://dev.fitbit.com/docs/basics/</anchor-external></figcaption><blockquote><p>API calls reveal and log resource values in one of the unit systems based on the value of the Accept-Language header. If an endpoint respects the Accept-Language header, it is explicitly mentioned in the endpoint details.</p><p>Accept-Language	Unit System</p><p>en_US	US</p><p>en_GB	UK</p><p>none of the above or not provided	METRIC</p></blockquote></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="54" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[54]</anchor-end> <cite xml:lang="en">Strengthen requirements on CORS-safelisted request-headers</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">annevk</anchor>著, <time>2018-05-25 18:19:35 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/fetch/commit/9288c8f85c809a0ac371be6843ad2cf4046ee35b">https://github.com/whatwg/fetch/commit/9288c8f85c809a0ac371be6843ad2cf4046ee35b</anchor-external></p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="55" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[55]</anchor-end> <cite xml:lang="ja">SORACOM API 利用ガイド | SORACOM Users</cite>
(<time>2020-03-26 00:33:24 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://dev.soracom.io/jp/docs/api_guide/#errormessage">https://dev.soracom.io/jp/docs/api_guide/#errormessage</anchor-external></figcaption><blockquote><p>API 呼び出しリクエストのヘッダーに X-Soracom-Lang: を含めると、その言語コードに対応している場合はエラーメッセージもその言語になります。(未対応の言語に対しては英語にフォールバックします)</p><p>現在対応している言語は en(英語), ja(日本語) の 2 つです。</p></blockquote></figure></section></body></html>