*言語情報の記憶と伝達 [1] 言語情報は使用されている[[文字]]そのものやその並びからある程度の推定は出来ますが、 完全には不可能です。 ですから、何らかの形で[[メタ情報]]を保持できる環境では言語情報を内容とセットで扱うようにするのが普通になっています。 データの記憶や伝達は階層構造になっているのが現在では一般的です。 その様々な階層で言語情報を保持していることがあります。 [[#comment]] ** ファイル・システム [2] 言語情報を直接保存できる[[ファイル・システム]]は聞きませんが、 [[ファイル名]]の一部として運用上情報を保持していることがあります。 例: -[SAMP(file)[foo.ja.txt]] -[SAMP(file)[bar.html.en]] 例えば [[Apache]] は、この[[接尾辞]]形式の言語情報を扱うことができます。 - [11] [[SGML]] の[[公的公開識別子]]の[[公開文言語]]の指定もこの分類に近いでしょう。 例: [SAMP(SGML)[-//W3C//DTD HTML 4.01//EN]] [[#comment]] ** 転送プロトコル [3] [[MIME]] や [[HTTP]] では、 [CODE[[[Content-Language:]]]] 欄で言語情報を伝達できます。 - [7] 例: [SAMP[Content-Language: ja,en]] - [8] 例: [SAMP(MIME)[=?us-ascii*en?q?Hello!?=]] - [9] >>8 は MIME の [[encoded-word]] の例。 - [10] MIME の[[引数]]の例: [SAMP(MIME)[filename*=us-ascii'en'foo.txt]] - [12] [CODE(MIME)[[[Content-Features]]]] + [[特徴札]] てな方法もあるわな。 [[#comment]] **マーク付け言語 [4] [[HTML]] では、ほとんどの[[要素型]]に存在する [CODE(HTML)[[[lang]]]] 属性で言語情報を指定できます。 [[XML]] では、 [CODE(XML)[[[xml]]:[[lang]]]] 属性を同様に利用できます。 木構造でこれらの属性を使うと、 言語が入り組んだ文にも適当に言語情報を与えることが出来ます。 例: -[SAMP(HTML)[

彼は、Hello!といいました。

]] -[SAMP(XML)[

こんにちは

Hello

]] - [14] ''HTMLの言語情報に関する覚え書き'' : 文字と言語の関係と、それを明示することについての優れた解説です。1998年という今となっては大昔に書かれた文章ですが、古さを感じさせません。この文章が取り上げている問題が未だにまったく解決されていないのがとても残念です。 [[#comment]] ** 符号化文字集合 [5] [[UCS]] の [[SPP]] にある[[言語タグ]]を使って、 任意の文字列に言語情報を与えられます。 しかし[[文字コード]]の層で言語情報を与えることには批判も多く ([[plain-text]] が plain でなくなる)、 現在では非推奨とされています。 実装もほとんどありません。 - [6] 例: [SAMP[[CODE(char)[LANGUAGE TAG]][CODE(char)[TAG j]][CODE(char)[TAG a]]こんにちは[CODE(char)[LANGUAGE TAG]][CODE(char)[CANCEL TAG]]]] - [13] 何の情報もないときに、文字の種類によっては言語を推定することができる場合もあります。確率的なものになってしまいますし、基本[[ラテン文字]]なんてほとんど無情報だったりはしますが、利用者の少ない用字系なら役に立つ情報かもしれません。 [[#comment]] * 言語情報の指定の精度 [15] 特に[[文書]]を[[マーク付け]]する際に問題となるのは、 どの程度の精度で[[自然言語]]に関する情報を付与するべきであるかです。 例えば[[日本語]]で書かれた[[文章]]の中に[[英語]]で書かれた[[引用文]]が含まれている場合にそれを明示する必要があるのか、 [[英語]]で書かれた部分が1単語だけの場合はどうするべきなのか、 ということが問題になります。 [16] '''すべての言語情報を明示するべきという意見''': もちろん、可能であればすべての[[自然言語]]情報を記述できれば、 それに越したことはありません。それによって[[機械翻訳]]をしたり、 [[利用者]]に[[辞書]]を提供する時の参考にしたり、 [[ハイフン付け]]や[[照合]]など言語によって異なる習慣を正しく処理したりできます。 すべて記述するべきとする意見の例: - [CITE@en[HTML Techniques for WCAG 2.0]] しかし、これは、大部分がある言語で書かれていて、 一部分だけ異なる言語で書かれているのであれば容易に実現できますが、 [[日本語]]で書かれた[[英語]]版ソフトウェアの使用方法の解説のように、 言語の混じり具合が高いと言語情報の記述だけで一苦労です。 [17] 更に、言語情報を細かく記述することは、必然的に使用する言語についての (たぶん必要以上に) 詳細な考察を要求することにもなります。 [[日本語]]のように異言語の語彙を採り入れやすい言語では重大な問題で、 文章を書きながら使用する単語が異言語の語彙なのか、 [[外来語]] (すでに[[日本語]]と課した異言語由来の語) なのか、とわざわざ考えなければなりません。 その判断基準はともすれば論争の種ともなりかねません。 [WEAK[(異言語の単語を片仮名表記したらもう日本語でしょうか? まさか。では[Q[[[カステラ]]]]は日本語ではありませんか? その境界は一体どこにあるのでしょう?)]] 実際のところこのような境界例を[Q[正確]]に記述したところで、 応用上有意義かというとそうでもなさそうです。 [18] '''特に関心のある部分だけ記述する''': [[マーク付け言語]]の出発点に立ち戻って、 [Q[必要ならば記述する]]というのはどうでしょうか。 例えば、 - [[文書]]全体の言語情報があると[[文書]]全体のレンダリングや[[内容折衝]]の役に立ちそうだから記述する - 定義する言葉や略語は索引や辞書絡みで役に立ちそうだから記述する - [[引用文]]も[ABBR[(ry]] 程度の基準を決めておけば、現実に実行可能で、しかも有益そうです。 [[#comment]] *メモ