よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

September 10, 2006 [おもひで]

[Ruby] rmsgmergeとmsgmerge

日経ソフトウェア10月号のRuby on Railsの紹介記事でRuby-GetText-Packageを1ページにまるっと使って紹介して頂いています。ありがとうございました。

1点、"GNU gettextが無い場合はrmsgmergeを使う"という部分がありましたが、ちょっと補足しておきたいと思います。

rmsgmergeはGNU gettextに含まれるツールの1つであるmsgmergeのRuby実装版で、古いpoファイルと新しいpoファイルを(単純にではなくいろいろと器用に)マージしてくれるというものです。

あまり私が紹介したことのないrmsgmergeを取り上げて頂いたのはうれしいような気もしないでもないですが、実は今まで紹介しなかった(あるいはmsgmergeを呼び出しているGetText.update_pofilesメソッドの中でrmsgmergeを代わりに呼び出していない)のには、2つ理由があります。

まず1点目としては、rmsgmergeはmsgmergeの持つ非常に重要な機能であるfuzzyマージ機能をサポートできていないことです。これは、「似たようなmsgidにすでに翻訳文字列があった場合、それをとりあえず翻訳文字列としてセットした上でfuzzyマークを付けてくれる」というものです。すでにupdatepoタスクを繰り返された方は"fuzzy"とついたmsgid/msgstrを見て便利だなぁ、と感じて頂けたのではないかと思います。

2点目は、一般に開発に使われるOSでmsgmerge(GNU gettext)をインストールするのはそんなに大変ではない、ということです。多少のディスクスペースは取りますが、fuzzyがサポートされる利点を考えるとインストールすべきです。

Linux等のフリーUNIX系ではおそらく最初から入っているでしょうし、入っていない場合でも追加パッケージにあると思います。MS Windowsの場合は、Glade/GTK+ for WindowsにあるDevelopment Environmentを使うと良いと思います。これはインストーラ付きでパスなども自動で設定してくれるので便利ですよ。

#ついでにruby-gtk2のバイナリパッケージをインストールするとMS WindowsでRuby/GTK2が使えるようにあるという特典付きです;p。

繰り返しになりますが、"fuzzy"マージ機能という便利な機能を使うために、GNU gettextをインストールすることを強く推奨しますが、もし、どうしてもGNU gettextがインストールできない、ということであれば、紹介されているようにrmsgmergeを使うこともできます。その場合は環境変数のMSGMERGE_PATHにrmsgmergeコマンドのパスを指定します。

ホントはrmsgmergeがmsgmergeと同等の機能になればまさにGNU gettextが不要になるんですけどねー。あ、msginitは必要か。ボクの中での優先度は高くないです。誰か、rmsgmergeにfuzzyマージ機能を追加してくれるって人いませんか?

[Rails] rails edgeでRuby-GetTextが動かない件

こういうことのようでした。助かったー。次のリリースに間に合ったよ。

それにしても、append_featuresってdeprecatedなの!?


編集