[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:13360] Re: xearth の国際化



くぼたです。

xearth の地名ファイルですが、以下のようになってますね。

/etc/X11/app-defaults/XEarth に、以下の行が記述してある
   XEarth.markerfile: /etc/xearth.markers

/etc/X11/ja_JP.eucJP/app-defaults/XEarth に、以下の行が記述してある
   XEarth.markerfile: /etc/xearth.markerfile.jp

というわけで、地名はリソースに直接書かれているのではなく、
地名ファイルをリソースで指定するという形になっています。

この設計そのものは悪くないと思うのですが、地名ファイルのファイル名が
よろしくないです。オリジナルと整合性が悪い。これは改善しましょう。
それから、日本語のファイルであって、日本国のファイルではないのだから、
jp じゃなくて、ja にしましょう。まとめると、

xearth.markerfile.jp  -->  xearth.markers.ja

ですね。ちなみに、LC_MESSAGES カテゴリのロケール名の最初の2文字を
使って地名ファイル名を自動的に作れないこともないですが、そうすると
リソースファイルの書式変更を伴うので、リソースファイルは /etc の
下にあるので設定ファイル扱いなのでその書式変更はユーザーから見える
部分の仕様変更に相当するので、これは、やめとくことにします。

それから、懸案 (?) の gettext 化ですが、markers.c というファイルの
中に、地名データを見付けてしまいました。というわけで、これは
原理的には gettext 化が可能です。ただ、このまま gettext 化すると
緯度も経度もコメントもぜんぶごっちゃになってしまうので、なんらかの
工夫が必要ですね。(gettext 化するのは地名だけにしたい、でしょう?)
これはちょっと大変そうですね。

ところで、アップストリームの xearth には、リソースファイルを読む
機能も地名ファイルを読む機能もあるけど、リソースファイルも地名
ファイルも存在しないみたいですね。

それから、日本語用リソースファイルにおける、
  XEarth*international: TRUE
  XEarth*fontSet: -*-fixed-medium-r-normal--16-*
は、不要です。そのかわり、
  XEarth*font: r24
は、
  XEarth*font: -*-fixed-medium-r-normal--16-*
と変更してください。ただし、個人的には、
  XEarth*font: -*-fixed-medium-r-normal--14-*
のほうがおすすめだと思います。

# たぶん、international とか fontSet とかは、Xaw で使うのでは、
# と思っているのですが、正しいでしょうか?

   --- * --- * ---

ところで、リソースとはなんぞや、ということについて、ちょっと実験
してみました。xearth では、まず、x11.c のなかで

   XrmDatabase db = XtDatabase(dsply);

とやって、リソースデーターベースなるものを取得しています。つぎに、
個々のリソースは、resource.c のなかで、

   XrmGetDatabase(db, full_name, full_class, &type, &value);

というふうにして取得しています。で、こいつはどのロケールカテゴリーに
従って動作するんだろう、という疑問があります。というわけで、ためしに、

   LANG=ja_JP.eucJP LC_ALL=ko_KR.eucKR xearth

というふうにしてみたら、なんと化ける化ける。日本語の地名を
韓国語のフォントを使って表示してしまいます。私が作った日本語
パッチは LC_CTYPE ロケールに従って動作するので、LC_ALL=ko_KR.eucKR
に素直に従うのですが、リソースの読み込みは、そうじゃないみたいです。
LANG 環境変数に従っているだけ、という感じです。

これって、X の設計が悪いんじゃないの、って思うのですけど、じゃあ
どのカテゴリーに従うべきなのか、というと、どれとも答えようが
ないんですよね... まあ、実際に使われている用途の頻度から言えば、
LC_MESSAGES が妥当かな、というところですが、そんなのを X に実装
するなんて、汚すぎていやっぽいですよね。けっきょく、カテゴリー別に
設定できる C のロケールと、なんでも格納できてしまう X のリソースとは、
うまく統合できないのでしょうか。

---
久保田智広 Tomohiro KUBOTA <kubota@debian.org>
http://surfchem0.riken.go.jp/~kubota/
リニューアル中: "Introduction to I18N"
http://www.debian.org/doc/manuals/intro-i18n/