言語処理の優先順位 言語処理の諸問題 一番単純なモデルは「このMLは日本人用と設定しているなら、メッセージは 常に日本語で返す」というものです。このモデルでは、ML作成時に何言語用 かを指定する必要があります。また、間違って(日本語が読めない人から)送ら れてきたメールに対しても、日本語でエラーを返します。 しかしながら、日本人だからといって、今、メールを読んでいる環境で日本語 が使えないかも知れないし、Accept-Language: を無視するのもよろしくあり ません。とはいえ、みんながちゃんとAccept-Language:をつけているわけでは ないので、問題はいろいろと山積みです。 たとえば、Accept-Language: ja などとしてある場合は ja が優先だと分かり ます。しかしながら、そういったものがなく、かつ、「日本人が help という メールを送ってきた」場合、返事を us-ascii なのか iso-2022-jp で返すべ きなのか?が、プログラムには良く分かりません。たとえば、こんなメールで は、どう判断するのが正しいでしょう? 例: From: rudo@example.co.jp Subject: help mime-version: 1.0 content-type: text/plain; charset=us-ascii help charsetを素直に考えると、英語で返すべきですが、これは本文が英語だけな ので charset=us-ascii になっているだけです。しょうがないので、このML が(日本人相手のため)日本語優先と設定されているなら、日本語と英語のメッ セージ両方を返すべきでしょう。英語のMLなら、英語を返すだけでいいです。 逆に、Accept-Lanaguage: が指定されていれば、それを尊重するべきです。英 語のML(language_preference_order = en)の場合でも、Accept-Lanaguage: ja なら(できるだけ)日本語で返事をするべきでしょう。&fml8; 標準のメッ セージであれば、この動作が可能です。なので、そうするべきと考えます。 日本語優先のML language_preference_order という変数があります。 日本語がデフォルトのMLでは、これが、次のように指定されています。 language_preference_order = ja en このヒントを使い、以下のような処理をするようにしています。 Accept-Language: ja, en 日本語(だけ)で返すと判断する。 Accept-Language: en 英語(だけ)で返すと判断する。 Accept-Language: はなし、Content-Type: では charset=iso-2022-jp 日本語(だけ)で返すと判断する。 Accept-Language: はなし、Content-Type: では charset=us-ascii 日本語(だけ)で返していいと判断できない。 日本語と英語のコンビで返すべきだとおもう。 Accept-Language: はなし、Content-Type: もなし 日本語(だけ)で返していいと判断できない。 日本語と英語のコンビで返すべきだとおもう。 英語優先のML language_preference_order という変数があります。 これが、次のように指定されています。 language_preference_order = en このヒントを使い、以下のように処理をするようにしています。 Accept-Language: ja, en 日本語(だけ)で返すと判断する。 Accept-Language: en 英語(だけ)で返すと判断する。 Accept-Language: はなし、Content-Type: では charset=iso-2022-jp 日本語(だけ)で返すと判断する。 Accept-Language: はなし、Content-Type: では charset=us-ascii 英語(だけ)で返すと判断する。 Accept-Language: はなし、Content-Type: もなし 英語(だけ)で返すと判断する。