[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)