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

December 05, 2005 [長年日記]

[Ruby-GNOME2] JLDrill

日本語学習用のツールだそうです。Ruby/GTK2を使って頂いてます。

Nihongo Benkyoに似てるような気がするんですがちょっと違うみたいです。

両者が協力してデータベースとかを共有できたらおもしろいかもしれませんね。

本日のツッコミ(全3件) [ツッコミを入れる]

Mathieu Blondel [今、Windowsでは日本語学習用のツールがすごく多いです。なんでNihongo Benkyoを始めたかは、Linu..]

むとう [へー。学習ソフトってそれなりにニーズがあるんだね。 知らなかったよ。 自分で新しいツールを作りたいという気持ちは、プ..]

Mathieu Blondel [Nihongo Benkyoの中に、Benkyoがあるね。その学習、まだしなかったけど。 そういう気持ちはよく分かる..]


December 18, 2005 [長年日記]

[Ruby] Ruby-GetText-Package

遅ればせながら次のリリースを来週ターゲットとした。ひとまず機能的な実装は一段落。

いろんな言語に対応させたいのでruby-talkで翻訳者を募ってみたところ、新たにCatalan, Czechの2言語について応募があった。

英語入れて11言語になるのかな。もっと応募者が増えると良いのだけど。

ところで、いくつかRuby-GetText-Packageを利用してL10n化しているツールで、まだ日本語化されていないものを3つほど見つけてみました。

http://rcms.oopen.de/

http://mailr.org/

http://fox.gentoo-clan.org/

どなたか日本語化してみませんか?

[Ruby] XREAのRubyが不安定?

なんかたまにSegFaultでコケるようになってきた気がするんだけどどうしたんだろう。


December 19, 2005 [長年日記]

[Ruby] Ruby-GetText-Package(2)

残念ながらCatalanの翻訳者がキャンセル。

しかし、他にDutch, Finnish, Greek, Russian/Ukrainianについて翻訳者応募があった。

これで、全部が揃うとすると、Czech, Dutch, English, Finnish, French, Greek, German, Italian, Japanese, Korean, Portuguese(Brazil), Spanish, Russian, Ukrainian の14言語をカバーできる・・・できると良いなぁ。


December 23, 2005 [長年日記]

[Misc] しっかし

最近コメントスパム多いなぁ。カウンタファイルが壊れたのも、どうもこれのおかげっぽい。うーん。


December 25, 2005 [長年日記]

[Ruby] Rake のPackageTaskが動かない?

どうも、以下のrakeタスクが動かなくなってる。

Rake::GemPackageTask.new("myapp", "1.0.0") do |p|
  p.need_tar_gz = true
  p.need_zip = false
end

具体的には、no such option: noopというエラーメッセージが出て異常終了してしまう。

ググって見たところ、FileUtilsの仕様変更が原因らしい。。ここの内容に従って、rakeのベータ版を入れ直したところうまく動いた。ふぅ。


December 29, 2005 [長年日記]

[Ruby] Ruby-GetText-Package-1.1.0

リリースしました。今回は2つの点を大きく強化しました。

1つは、メンテナンスのしやすさの強化、そしてもう一つはRuby on Railsサポートの強化です。

まず、メンテナンスのしやすさの強化、ですが、L10n化されたアプリケーションの開発を継続して行う場合に、とにかく重要になるのがメンテナンスのしやすさです。

Ruby-GetText-Packageを使わない場合(例えば、HikiやtDiaryもそうなのですが)、各ロケール毎にあるファイル(カタログファイル:ロケール毎になくても良いですが)を、ローカライズしたい文字列が増えるたびに自分で追加したり、変更していかなければならないでしょう。このことは小さなアプリケーションではあまり問題にならないとは思いますが、比較的大きなアプリケーションではとても煩雑でいらいらする作業です。

Ruby-GetText-Packageではrgettextというコマンドを用いてローカライズ対象の文字列を自動抽出できるようになっています。

でも、これだけだと実はまだ足りません。

アプリケーションがアップデートされる度に、以前のカタログファイルとの差分というものをマージしてくれるようなツールが必要になります。

Ruby-GetText-Packageでは、現状、GNU GetTextに入っているmsgmergeというツールを使うことを想定しています。

このツールはかなり強力に過去のバージョンと新しいバージョンの差分を抽出してくれます。

この機能までサポートできて初めて、L10nライブラリ(というより文字列のローカライズに限定されますが)としてはまともに機能するようになります。

上記の機能までは今までのRuby-GetText-Packageでもサポートできていたのですが、毎回手作業で、rgettext/msgmergeを使うのはかなり面倒くさい作業なため、実際には、アプリケーション開発者がさらにrgettext/msgmergeを使ったshellスクリプトやsetup.rb向けの設定ファイルなどを書いていました。

今回のリリースで用意した'gettext/utils'は、GetText.create_mofiles, .update_ppofilesという二つの関数を提供しますが、この2つを使うとこれらの手間がほとんどかからないようになります。詳しくは「HOWTO maintain po/mo filesを参照してください。

#今のところ英語版しか用意できてません。

もう一つの機能がRuby on Railsのサポート、とりわけ、ActiveRecordのサポートの強化です。

Ruby on Railsでは、データベースのカラム名(やモデルのクラス名)をそのまま表示文字列としてエラーメッセージなどに使っています。

しかし、それらはもちろん日本語であるはずもなく、エラーメッセージとして出力されたところで「わけわからん」メッセージになっています。

この問題に対し、Rubyist Magazine 12号でも紹介されているActiveHeartではset_field_nameという関数を追加することで、一つ一つ指定できるようにしてこの問題に対応しようとしています。

これに対し、Ruby-GetText-Packageでは、rgettextで全ての該当する文字列をmsgidと言う形で抽出するようになり、それらを使うことができるようになりました(それらはApplicationControllerと同じテキストドメインとして扱われ、各modelファイルにtextdomain等の記述をする必要はありません)。

つまり、開発者自身が「全く手を加えずに」、Ruby on Railsのapp/model/を翻訳対象にできます。

#もちろん、po以下に抽出されたカラム名などは、それぞれ翻訳する必要があります。

なお、デフォルトのエラーメッセージについてもローカライズされますので、実はRubyist Magazine 12号の内容のうち、TransSid、Iso2022jpMailer以外の多くはRuby-GetText-Packageが提供する機能と重複します。ActiveHeartの内容はあくまでも日本語化であって地域化ではないので、上記の重複する機能についてはぜひともRuby-GetText-Packageを使うことをオススメします。

それから、Ruby-GetText-Packageの翻訳状況ですが、いろいろな人が手をあげてくれたものの、結局は、Czech, Dutch, French, German, Japanese, Korean, Portuguese(Brazil), Spanishの8言語のみが最新としてアップデートされるにとどまりました。ItalianやSwedishのバージョンは以前のままです。しかしながら、上記8言語については先述したデフォルトのエラーメッセージなども全て翻訳済みですので、多くの人が恩恵にあずかれるのではないかと思っています。

[Ruby] Ruby-GetText-Packageの新規ドキュメント

まだ、英語版しか用意できていませんが、ここ最近、Ruby-GetText-Package周りでいくつかドキュメントを用意したので紹介します。誰か翻訳してくれませんか?(いや、まぢで)

  1. documents for Translators
    翻訳者向けドキュメント。あなたが開発者であれば、翻訳者にメールを出すときにこのURLを参考にしてね、と書いて出すといろいろとスムーズに翻訳作業が進むかもしれません。
  2. HOWTO maintain po/mo files
    先述したとおり、翻訳ファイルをメンテナンスするための便利なHOWTOです。
  3. HOWTO for Ruby on Rails
    Ruby on Rails向けのドキュメントです。本家にあるUsing Gettext To Translate Your Rails Application よりもシンプルにしてみました。Using...の方も私の方でアップデートかけて作者には送ってあるのでそのうちアップデートされるとは思いますが、今のところこのドキュメントが最新になります。Using... に書いてあるような1.0.0の状況と1.1.0の状況ではかなり違いがありますので、これから始める人はこちらを試してみてください。