蝉は、やがて死ぬる午後に気づいた。ああ、私たち、もっと仕合せになってよかったのだ。:2009年09月26日分

2009/09/26(Sat)

[NetBSD] gettext-tool

@

ゲゲゲgettext ひとりーではー

@

そもそもgettextの*.moのフォーマットはMIかつOS非依存なので
いちいちmsgfmtで(1)*.poからビルドさせるのも時間の無駄なんだよな。
だったらふつーにsrc tarballにコンパイル済*.moを同梱しとけという。

つまりはgettext-toolがインストールされていることを期待する
configure scriptは[お察しください]ということです。

しかしGNU gettextは過去に何度か互換性壊してやがるのでOSにインストールされてる
libintlのバージョンによっては読めない*.moになるという自爆テロ問題があるんだよな。

たぶんそれがあるから*.poだけ用意してmake時に*.moをコンパイルしてんじゃないかと推測。
でもOSにインストールされてるgettext-toolとlibintlってふつー同じバージョンなので意味 JAXANASA。

そもそも^2 gettextize(1)はOSにlibintlが存在しない場合を考慮して
intlというディレクトリ以下にlibintlをごっそりコピーしてきてるので
こいつをちょっと弄ってOSのlibintlのバージョンがsrc tarballに同梱の
*.moのバージョンと互換性がない場合も同様にbuiltinにすればいいだけだと思うんだが。

まー時代はcatgets(3)だよねー(さすがにそれはない)。

@

あとgettext-0.17ってglib2にlibxmlにlibcrocoまで自前で抱え込んでるんだが
どうしてこうなった、やっぱりBSDL gettext-toolかなぁ。

続 lib/42124

@

これの続き、LANG=jaの場合、LC_MESSAGESだけsetlocaleに成功してるのは
NetBSD-4.0までLC_MESSAGESの実装がないけれどもcatgets(3)は存在したので
ディレクトリがあれば、常に成功するkludgeが入ってたからでんな、この 差分参照。

ちうことでlibcは送ったpatchでもおkなんだけど、LANG=jaをLANG=ja_JP.eucJPへの
aliasとかsymlinkにする必要があるってやつ。

gettext自体はLC_MESSAGES=ja_JP.eucJPだったらそこからja_JP -> jaを探すという処理が
入ってたはずなので、aliasにしなくても本来は問題なかったはず。