Ruby言語やLinuxのネタが多いです。
July 31, 2005 [おもひで]
■ [Ruby-GNOME2] Ruby-GNOME2-0.13.0 is out!
リリースしました。いやー、いつもながら大変だー、こりゃ。
大変だっただけに良いものになってるはず!?
みなさん、特に学生さんは一人1スクリプト、夏休みの宿題と言うことで!
もちろん、提出先は私で!
....冗談です。まぁ、ともかくRuby-GNOME2を使ってみてくださいな。最近、Webプログラミングに押されまくりではありますが、GUIプログラミングも結構楽しいですよ。
■ にしても。Win32はとりあえず32bit版のバイナリを用意したけど近い将来は64bit版も用意しなきゃいけなくなるんだろうなぁ。この作業、誰かやってくれないかしらん。
■ [Ruby] Ruby-GNOME2 + Ruby-GetText-Packageメモ
オレが過去に作った何点かのRuby-GetText-Package対応アプリケーションやruby-glade-create-templateでは、以下のような仕掛けを入れてある。これで、Ruby-GetText-Packageが無い環境であっても、一応は英語でアプリを起動することができる。
begin
require 'gettext'
rescue LoadError
unless defined? GetText
module GetText
module_function
def _(msgid); msgid; end
def N_(msgid); msgid; end
def n_(msgid, msgid_plural, n)
n == 1 ? msgid : msgid_plural
end
def s_(msgid, div = '|')
if index = msgid.rindex(div)
msgid = msgid[(index + 1)..-1]
else
msgid
end
end
def bindtextdomain(domainname, path = nil, locale = nil, charset = nil)
end
end
end
end
■ Ruby-GetText-PackageのメンテナでもあるオレにとってはRuby-GetText-Package必須で!と言いたいところだが、Ruby-GNOME2のメンテナであるオレにとってはこうすることで少しでもアプリケーションの依存関係を(必要でないならば)減らしていける工夫は大切だと思ってもいる。
■ 一方、Ruby-GNOME2でL10n化しようとすると、Ruby-GetText-Packageはほぼデファクトスタンダードになっている。
(1) 過去のGNU GetTextとGTK+の関係の延長でRubyでも似たようなインタフェースが慣れてる。
(2) msgmergeなど、メンテナンスを考えるとGetTextはとっても有利。
(3) LibgladeがGetTextの仕組みで動作するので、少なくともLibgladeを使ってL10n化を考えるとGetTextの仕組みが必須。ならばあえて別のL10n化の仕組みを入れるまでもない。
(4) どちらもメンテナがオレ(^^;)
などが理由に挙げられる。ってか(2)(3)が大きなアドバンテージだろうな。
■ で、次のRuby/GLib(のglib2.rb)に、上記コードをそのまま入れてしまうのはどうだろう、と思うに至った。
であれば、Ruby-GNOME2ベースのアプリケーションは、何も気にせずGetTextの仕組みを用いたコードを書くことができ、それはもちろん、GetTextが無い環境でも動作するわけだ。英語圏の人はわざわざRuby-GetText-Packageなんて入れたくないだろうしね。
デメリットといえば、L10n化の仕組みが完全にRuby-GetText-Packageに依存するようになるってことだと思うけど、現時点では有力な対抗馬もいないことだし、ムリに使わなくても大丈夫だし、まぁ、よしとするかな。
もう一つのデメリットは、このコードの後にrequire 'gettext'すると、-wオプション付きでそのスクリプトを実行したときに"warning: method redefined"というWarningが出ることか...。こっちはちょっとイヤだなぁ。なんか回避策無いかな。
■ そうそう、このコード、Ruby-GetText-Packageにも含めた方が良いかもね。miscとかいうディレクトリ作ってそこに置けば良いのかな。

お疲れさまでした.
夏休みの宿題は...ちょっと...無理かも...です...X<
"warning: method redefined"ってどういう時にでるんですか?
コードの後にrequire 'gettext'を付け加えたファイルをruby -wしてもでないんですが...
Ruby-GetText-Packageをインストールしてあるから???
単に requireしてるかどうかの判断なら
$".include?('gettext.rb') でいけるけど
そういうことじゃない?
あれ?大丈夫かな>Warning
意図としては以下のようなコードを追加するイメージです。
require 'gettext'
module GetText
module_function
def _(str); str; end
end
でも、こういう風な場合って通常の使い方としては想定できないかも。
#宿題の件は冗談ですので、念のため(笑)