やすしです。

At Wed, 17 Oct 2001 23:49:02 +0900,
MUTOH Masao wrote:

> yashiさんのruby-gettextにdgettext, dcgettextを追加してみました。
> #個人宛の方が良かったかな...。

ぉぉ、ありがとうございます

[...]

> "Hello World"._           -> "Hello World".gettext
> "Hello World"._("domain") -> "Hello World".dgettext("domain")
> "Hello World"._("domain", Locale::MESSAGES) 
>             -> "Hello World".dcgettext("domain", Locale::MESSAGES)
> 
> という感じです。

# String#_が引数を取るのって、綺麗じゃないですねぇ…

> また、上記に伴い、rgettextをちょこっといじりました。
> それから、examplesにも1つ例を追加しておきました。
> 
> というわけで、このパッチ、取り込んでいただけると非常にありがたいの
> ですが、いかがでしょうか? > yashiさん

えと、originalの *gettext()って C なので関数名を変えているんじゃないか
なと思うんですよね。しかも ruby-gettextは組み込み class の Stringに
methodを追加する仕様になっているのでやたらめったら methodを足していく
のってどうかなと思うわけなのですが。

もちろん methodを分ければ引数の数を checkしてくれるというメリットもあ
るんですが、現実問題として数の checkがないからハマるって事ってあるもん
でしょうか?

> P.S.
> それから、これってRAAには登録されていないんですか?
> もったいないなぁ。登録しませんか?

う〜ん…。ruby-gettextって平田さんの Ruby-intlのパクリなんですよ(^^;
# dgettext(), dcgettext()も Ruby-intlにはすでに入っているし

userも二人だけですし、RAAに登録するほどじゃないかと…。
--
         yashi


--- ruby-gettext-0.3/rbgettext.c Fri Apr 14 13:24:34 2000 +++ ruby-gettext-0.4/rbgettext.c Fri Oct 19 16:19:11 2001 @@ -66,12 +66,22 @@ } static VALUE -gt_gettext(self) +gt_gettext(argc, argv, self) + int argc; + VALUE *argv; VALUE self; { - char* msgstr; + char *msgstr; + VALUE domainname, category; + char *dom; + int cat; - msgstr = gettext(STR2CSTR(self)); + rb_scan_args(argc, argv, "02", &domainname, &category); + + dom = NIL_P(domainname) ? NULL : STR2CSTR(domainname); + cat = NIL_P(category) ? LC_MESSAGES : NUM2INT(category); + + msgstr = dcgettext(dom, STR2CSTR(self), cat); return rb_str_new2(msgstr); } @@ -83,7 +93,7 @@ rb_define_module_function(mGetText, "bindtextdomain", gt_bindtextdomain, 2); rb_define_module_function(mGetText, "textdomain", gt_textdomain, 1); - rb_define_method(rb_cString, "gettext", gt_gettext, 0); + rb_define_method(rb_cString, "gettext", gt_gettext, -1); rb_define_alias(rb_cString, "_", "gettext"); rb_define_alias(rb_cString, "localize", "gettext");