libintl-perl を使ってみる ― 2007年09月23日 01時27分08秒
Namazu では GNU gettext を利用して、メッセージの言語切り替えを行っています。 namazu や namazu.cgi は GNU gettext の libintl を使って、mknmz では独自のルーチンを使って(gettextを使わずに)メッセージカタログにアクセスしています。
このため、処理の違いにより不具合が生じることがあります。 例えば、mknmz では日本語でメッセージが出るのに、namazu.cgi では英語になるといったことです。 これは微妙な処理の違いや、GNU gettext の仕様変更によるものであったりします。
これらの微妙な差をなくすためには、mknmz の独自ルーチンをやめて、mknmz でも gettext を使うというのが正しい選択でしょう。
namazu, namazu.cgi で GNU gettext を使うのですから、mknmz で GNU gettext を使うようにしても、インストールの手間はそれほどかからないはずです。
mknmz は Perl によるプログラムですから、gettext の Perl モジュールが必要となります。そこで、いろいろ調べてみると libintl-perl というものを見つけました。 試しに libintl-perl-1.16 を使ってみました。
#!/usr/bin/perl use Locale::TextDomain qw (namazu); print __("Invalid query"); print "\n"; print N__("Invalid query"); print "\n";
このプログラムを Namazu がインストールされている環境で実行すると、
$ perl test-libintl-perl.pl 不正な検索式です Invalid query
と、表示されました。 これだけ動けば mknmz で使うのに十分でしょう。
ただ、ローケルファイルのあるディレクトリを指定した場合に正しく動いてくれませんでした。何か設定のミスだとは思いますが、はてさて。
コメント
トラックバック
このエントリのトラックバックURL: http://namazu.asablo.jp/blog/2007/09/22/1813337/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。