[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: /usr/pkg/man/ja_JP.EUC
>>>>> On Tue, 12 Jul 2005 14:38:34 +0900, OBATA Akio <obata@lins.jp> said:
>> MAN_DIR.ja_JP.eucJP=ja
>> あるいは
>> MAN_SUBDIR.ja_JP.eucJP=ja
>> とするのがいいような気がしますがどうでしょう。
> そうですね。
> ついでに、この名前の問題、
> ・share/locale の下
> ・share/nls の下
> ・Xのリソースファイルのパス
> にもあると思うんですが、これも定義なのかなぁ?
> (manの場合と値が異なってきますよね?)
アプリケーションごとに見ていかないといけないと思いますが、まず問題にな
るのは、GNU gettext のメッセージカタログと、X Toolkit のリソースファイル
ですよね。
GNU gettext のメッセージカタログの方は、pkgsrc で細工するのではなく、
gettext 付属の make ルールに任せてしまう方が良いように思います。直すの
なら、pkgsrc でパッチを当てるのではなく、gettext 本家にパッチを送って
直してもらうのが筋ではないでしょうか。
この、メッセージカタログのインストールに使う make ルールは、gettext
に付属のものを どのアプリケーションでもそのまま利用しているようですし、
pkgsrc で管理するか否かに関わらず、OS 依存のディレクトリに、正しくメッ
セージカタログをインストールできないといけない筈ですから。
gettext は *.mo ファイルを
share/locale/%l_%t.%c/LC_MESSAGES/%N.mo
share/locale/%l_%t/LC_MESSAGES/%N.mo
share/locale/%l/LC_MESSAGES/%N.mo
といった順序で探し、現在の locale とコードセットが異なるカタログならば
自動的に iconv() するようになっていると思うので、既に現状のルールのま
まで、ほとんどの OS で正しく動作すると思います。
ただ、%l が大文字のことがある AIX で正しく動作するのかどうかだけは疑問
があるんですが、AIX でも日本語 EUC を使っている限りは問題ないんで、
あまり気づかれてないのかもしれません。
X Toolkit のリソースファイルの方は、自動コードセット変換がないので、
コードセット名を含んだパス名、すなわち locale 名をその一部として含んだ
パスにインストールする他なさそうです。
この場合は、X Toolkit 専用の定義をするよりも、むしろその OS での
locale 名そのものを pkgsrc で定義しておき、それをパス名でも利用する方
が良さそうです。make 変数名としては ${LOCALE_NAME.ja_JP.eucJP} あたり
でしょうか。
既知の OS について表にすると、以下の通りでしょうか。
(ご存じの方、??? の部分を埋めてください。_o_)
LOCALE_NAME.ja_JP.eucJP MAN_SUBDIR.ja_JP.eucJP
AIX ja_JP ja_JP???
BSDOS Japanese-EUC??? Japanese-EUC???
Darwin 日本語EUC localeはない? 日本語EUC localeはない?
DragonflyBSD FreeBSDと同じ? FreeBSDと同じ?
FreeBSD ja_JP.eucJP ja
HP-UX ja_JP.eucJP, japanese.euc (*1) ja_JP.eucJP, japanese.euc (*1)
IRIX ja_JP.EUC??? ja_JP.EUC???
Interix ??? ???
Linux 系 ja_JP.eucJP ja
OSF1 (Tru64) ja_JP.eucJP ja_JP.eucJP
OpenBSD NetBSDと同じ? NetBSDと同じ?
SunOS (Solaris) ja_JP.eucJP, ja (*2) ja_JP.eucJP, ja (*2)
UnixWare ??? ???
(*1) もともとサポートしていた locale 名は「ja」だが、
のちに「ja_JP.eucJP」もサポートするようになったため、
実体は ja に置き、ja_JP.eucJP → ja というシンボリック
リンクを張っている。
pkgsrc でも同様なシンボリックリンクを張るべき?
(*2) 今、HP testdrive (http://www.testdrive.hp.com/) で
提供されている HP-UX のマシンを見てみたんですが、
HP-UX 11.0 でも、実はまだ /usr/share/man/japanese.euc
→ ja_JP.eucJP というシンボリックリンクが残っていました。
ということは、公式表明とは違い、japanese.euc という locale
でもまだ動作するということだと思います。(まあ商用製品では
互換性は絶対なので、当たり前と言えば当たり前ですが)
pkgsrc でも同様なシンボリックリンクを張るべき?
後の問題は NetBSD ではどうするかですね。
もし、将来、
- man コマンドでの iconv による自動変換をサポートし、
かつ、
- 日本語マニュアルとしては eucJP のものを置く
ということであれば、
LOCALE_NAME.ja_JP.eucJP MAN_SUBDIR.ja_JP.eucJP
NetBSD ja_JP.eucJP ja
すなわち、FreeBSD や Linux と同じの方がいいでしょうし、
あるいは、このどちらか片方でも成り立たないのであれば、
LOCALE_NAME.ja_JP.eucJP MAN_SUBDIR.ja_JP.eucJP
NetBSD ja_JP.eucJP ja_JP.eucJP
すなわち、Tru64、最近の HP-UX や Solaris と同じにしておいた方が良いと
いうことになると思います。
う〜ん、どうしましょう…
P.S.
最後に訂正です。
>>>>> On Tue, 12 Jul 2005 12:52:31 +0900 (JST),
SODA Noriyuki <soda@sra.co.jp> said:
> /usr/pkg/man/%L/ にあるマニュアルからコード変換するというやり方が
> いいんじゃないでしょうか。
ここは、/usr/pkg/man/%L/ ではなく /usr/pkg/man/%l/ の誤りでした。
> 限らない (%L すなわち、locale 名のうちの言語部分だけが使われることがあ
> る。例えば RedHat-8 では、ディレクトリ名は「ja/」なんですが、locale 名
同様に、
「%L すなわち、locale 名のうちの言語部分」
は
「%l すなわち、locale 名のうちの言語部分」
の誤りでした。
--
<soda@sra.co.jp> (株)SRA ReSIC中部システムサービス部 曽田哲之 (SODA Noriyuki)