言語処理の優先順位
言語処理の諸問題
一番単純なモデルは
「このMLは日本人用と仮定している。
よって、自動応答メッセージは、つねに日本語で返す」
というものです。
もちろん、さまざまな問題が考えられます。
第一に、このモデルでは、ML作成時に何言語用かを指定する必要があります。
第二に、間違って(日本語が読めない人から)送られてきたメールに対しても、
日本語でエラーメッセージを返します。
第三に、日本人がメールを送ってきていたとしても、
今、メールを読んでいる環境で日本語が使えないかもしれませんし、
メールヘッダの Accept-Language: がアテになるでしょうか?
おそらく、少しはアテになるでしょう。
よって、メールヘッダの 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: も無し
英語(だけ)で返すと判断する。