<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><section><h1>言語情報の記憶と伝達</h1><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:">文字</anchor>そのものやその並びからある程度の推定は出来ますが、
完全には不可能です。
ですから、何らかの形で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メタ情報</anchor>を保持できる環境では言語情報を内容とセットで扱うようにするのが普通になっています。</p><p>データの記憶や伝達は階層構造になっているのが現在では一般的です。
その様々な階層で言語情報を保持していることがあります。</p><hr></hr><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> 普通、<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>も参照。</p><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>を含める方法は各種の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データ形式</anchor>にそれぞれ決められていて、
いろいろな手法があります。</p><figure class="short list"><figcaption><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語情報</anchor>の記述法</figcaption><ul><li><code>lang=&quot;&quot;</code></li><li><code>Content-Language</code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグ付き文字列</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PDFの言語エスケープシーケンス</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語指定コード</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アプリリソース</anchor></li></ul></figure><section><h1>ファイル・システム</h1><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> 
<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>の一部として運用上情報を保持していることがあります。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><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> 例:<ul><li><samp class="file">foo.ja.txt</samp></li><li><samp class="file">bar.html.en</samp></li></ul></p></example><p><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> 
例えば <cite>Apache</cite>
は、この<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>Content-Language:</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>に使います。</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="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> しかし後続のサーバー、例えば <cite xmlns="http://www.w3.org/1999/xhtml"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">nginx</anchor></cite> はこれを踏襲していません。</comment-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:">資源</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>の欄が含まれることがあります。</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:">SGML</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>の指定がこれに該当します。 </p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><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> 例: <samp class="SGML">-//W3C//DTD HTML 4.01//EN</samp></p></example><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:">HTTP(S) URL</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL path</anchor> に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語</anchor>を含めることがあります (c.f. <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;34</anchor-internal>) が、
<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><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor>
では、 <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Language:</anchor></code>
欄で言語情報を伝達できます。</p><ul><li><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> 例: <samp>Content-Language: ja,en</samp></li><li><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> 例: <samp class="MIME">=?us-ascii*en?q?Hello!?=</samp></li><li><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> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal> は MIME の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoded-word</anchor> の例。</li><li><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> MIME の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor>の例: <samp class="MIME">filename*=us-ascii'en'foo.txt</samp></li><li><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> <code class="MIME"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Features</anchor></code> + <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">特徴札</anchor> てな方法もあるわな。
<form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></li></ul></section><section><h1>マーク付け言語</h1><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:">HTML</anchor> では、ほとんどの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素型</anchor>に存在する
<code class="HTML"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lang</anchor></code> 属性で言語情報を指定できます。</p><p><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> では、 <code class="XML"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">xml</anchor>:<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lang</anchor></code>
属性を同様に利用できます。</p><p>木構造でこれらの属性を使うと、
言語が入り組んだ文にも適当に言語情報を与えることが出来ます。
例:<ul><li><samp class="HTML">&lt;p xml:lang=&quot;ja&quot;&gt;彼は、&lt;q xml:lang=&quot;en&quot;&gt;Hello!&lt;/q&gt;といいました。&lt;/p&gt;</samp></li><li><samp class="XML">&lt;Alt&gt;&lt;p xml:lang=&quot;ja&quot;&gt;こんにちは&lt;/p&gt;&lt;p xml:lang=&quot;en&quot;&gt;Hello&lt;/p&gt;&lt;/Alt&gt;</samp></li></ul></p><ul><li><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> <em>HTMLの言語情報に関する覚え書き</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.asahi-net.or.jp/~wq6k-yn/lang.html">http://www.asahi-net.or.jp/~wq6k-yn/lang.html</anchor-external> : 文字と言語の関係と、それを明示することについての優れた解説です。1998年という今となっては大昔に書かれた文章ですが、古さを感じさせません。この文章が取り上げている問題が未だにまったく解決されていないのがとても残念です。
<form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></li></ul></section><section><h1>符号化文字集合</h1><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:">UCS</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SPP</anchor>
にある<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語タグ<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">Unicode言語タグ</title></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>を与えられます。</p><p><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> 
しかし<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コード</anchor>の層で言語情報を与えることには批判も多く
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">plain-text</anchor> が plain でなくなる)、
現在では非推奨とされています。
実装もほとんどありません。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><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> 例: <samp><code class="char">LANGUAGE TAG</code><code class="char">TAG j</code><code class="char">TAG a</code>こんにちは<code class="char">LANGUAGE TAG</code><code class="char">CANCEL TAG</code></samp></p></example><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> 何の情報もないときに、文字の種類によっては言語を推定することができる場合もあります。確率的なものになってしまいますし、基本<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="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</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>:
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TRONコード</anchor>,
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">skf内部コード</anchor></p></section></section><section><h1>言語情報の指定の精度</h1><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>
特に<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>が含まれている場合にそれを明示する必要があるのか、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">英語</anchor>で書かれた部分が1単語だけの場合はどうするべきなのか、
ということが問題になります。</p><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> <strong>すべての言語情報を明示するべきという意見</strong>:
もちろん、可能であればすべての<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>など言語によって異なる習慣を正しく処理したりできます。</p><p>すべて記述するべきとする意見の例:<ul><li><cite xml:lang="en">HTML Techniques for WCAG 2.0</cite>
<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/TR/2005/WD-WCAG20-HTML-TECHS-20050630/#lang-att_change">http://www.w3.org/TR/2005/WD-WCAG20-HTML-TECHS-20050630/#lang-att_change</anchor-external></li></ul></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>版ソフトウェアの使用方法の解説のように、
言語の混じり具合が高いと言語情報の記述だけで一苦労です。</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>
更に、言語情報を細かく記述することは、必然的に使用する言語についての
(たぶん必要以上に) 詳細な考察を要求することにもなります。
<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>と課した異言語由来の語) 
なのか、とわざわざ考えなければなりません。
その判断基準はともすれば論争の種ともなりかねません。
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(異言語の単語を片仮名表記したらもう日本語でしょうか? まさか。では<q xmlns="http://www.w3.org/1999/xhtml"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">カステラ</anchor></q>は日本語ではありませんか? その境界は一体どこにあるのでしょう?)</weak>
実際のところこのような境界例を<q>正確</q>に記述したところで、
応用上有意義かというとそうでもなさそうです。</p><p><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> <strong>特に関心のある部分だけ記述する</strong>:
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク付け言語</anchor>の出発点に立ち戻って、
<q>必要ならば記述する</q>というのはどうでしょうか。
例えば、<ul><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>全体のレンダリングや<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容折衝</anchor>の役に立ちそうだから記述する</li><li>定義する言葉や略語は索引や辞書絡みで役に立ちそうだから記述する</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引用文</anchor>も<abbr>(ry</abbr></li></ul></p><p>程度の基準を決めておけば、現実に実行可能で、しかも有益そうです。</p></section><section><h1>言語情報の利用</h1><figure class="short list"><figcaption><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:">言語情報</anchor>の用途</figcaption><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">グリフの選択</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容折衝</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">自然言語処理</anchor>の辞書やアルゴリズムの選択</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コードの判定</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ロケール</anchor></li></ul></figure></section><section><h1>言語情報によるレンダリングの変化</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</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>によって違った形で使われていることがあります。
従って<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>が必要となります。</p><p><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> 
<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:">メトリクス<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">OpenTypeの座標</title></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>の位置、
その他周辺の諸事項にも<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語情報</anchor>の影響が及びます。</p><p><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>言語情報によるフォント選択</anchor>, <anchor>言語情報によるグリフ選択</anchor> </sw-see></p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><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>  
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode言語タグ</anchor>をフォント選択に使えることとされていました。</p></example></section><section><h1>重層的な言語情報の利用</h1><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</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>lang=&quot;&quot;</code>, <code>xml:lang=&quot;&quot;</code>)
を与えることができます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">木構造</anchor>に応じて解釈されます。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>lang=&quot;&quot;</anchor> </sw-see></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> 等には <code>Content-Language:</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:">HTML</anchor> の <code>lang=&quot;&quot;</code> 等、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語情報</anchor>を与えることができます。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>Content-Language:</anchor>, <anchor>lang=&quot;&quot;</anchor> </sw-see>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> は両方が指定された場合の処理方法を定めていますが、
プロトコルの組み合わせによっては明確な規定がないこともあります。</p></section><section><h1>言語の折衝</h1><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:">HTTP</anchor> の <code>Accept-Language</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:">希望を記述<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">能力の記述</title></anchor>し<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">折衝<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">内容折衝</title></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="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:">言語</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>を選ぶ一般化された実装は案外難しいものです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語範囲</anchor>, <code>Accept-Language</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>も参照。</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> <cite xml:lang="ja">言語と地域の解決の概要 | Android デベロッパー | <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Android</anchor> Developers</cite>, <time>2022-09-02T09:24:09.000Z</time>, <time>2022-09-03T08:46:11.165Z</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.android.com/guide/topics/resources/multilingual-support">https://developer.android.com/guide/topics/resources/multilingual-support</anchor-external></p></section><section><h1>言語情報と一致 (検索) の関係</h1><ed xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"></ed><p><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> 失敗事案: <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></section></body></html>