This is a multi-part message in MIME format.

--Multipart_Wed__17_Oct_2001_23:49:02_+0900_08335010
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

むとうです。

こんばんわ。

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

これで以下の3つのメドがいました。

String#gettext()
String#dgettext(domainname)
String#dcgettext(domainname, category)

特にString#dgettext(domainname)で複数のドメインを指定できるように
なったので、ライブラリ自身にロケール依存文字列を持たせたい場合
(GUIなんかだと良くあると思うのですが)とかに有効だと思います。
#というかがやりたかったのですが...。

で、String#localize, String#_ も、ぞれ引数が省略可ように
して、上記3メドを使い分けることができるようにしました。

たとえば、

"Hello World"._           -> "Hello World".gettext
"Hello World"._("domain") -> "Hello World".dgettext("domain")
"Hello World"._("domain", Locale::MESSAGES) 
            -> "Hello World".dcgettext("domain", Locale::MESSAGES)

という感じです。

また、上記に伴い、rgettextをちょこっといじりました。
から、examplesにも1つ例を追加しておきました。

というわけで、このパッチ、取り込んでいただけると非常にありがたいの
ですが、いかがでしょうか? > yashiさん


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

では。
--Multipart_Wed__17_Oct_2001_23:49:02_+0900_08335010
Content-Type: application/octet-stream;
 nameuby-gettext.patch"
Content-Disposition: attachment;
 filenameuby-gettext.patch"
Content-Transfer-Encoding: base64

ZGlmZiAtcnVOIHJ1YnktZ2V0dGV4dC0wLjMvZXhhbXBsZS9oZWxsbzJkb21haW4ucmIgcnVieS1n
ZXR0ZXh0LTAuMy5uZXcvZXhhbXBsZS9oZWxsbzJkb21haW4ucmIKLS0tIHJ1YnktZ2V0dGV4dC0w
LjMvZXhhbXBsZS9oZWxsbzJkb21haW4ucmIJVGh1IEphbiAgMSAwOTowMDowMCAxOTcwCisrKyBy
dWJ5LWdldHRleHQtMC4zLm5ldy9leGFtcGxlL2hlbGxvMmRvbWFpbi5yYglXZWQgT2N0IDE3IDIz
OjIwOjM3IDIwMDEKQEAgLTAsMCArMSwyMSBAQAorIyEvYmluL2V2biBydWJ5CityZXF1aXJlICds
b2NhbGUnCityZXF1aXJlICdnZXR0ZXh0JworCitMb2NhbGUuc2V0KExvY2FsZTo6QUxMLCBFTlZb
J0xBTkcnXSkKK0dldFRleHQuYmluZHRleHRkb21haW4oImhlbGxvIiwgIi4iKQorR2V0VGV4dC5i
aW5kdGV4dGRvbWFpbigiaGVsbG8yZG9tYWluIiwgIi4iKQorR2V0VGV4dC50ZXh0ZG9tYWluKCJo
ZWxsbyIpCisKK3ByaW50ICItLS1cbiIKK3ByaW50ICJIZWxsbyBXb3JsZFxuIi5sb2NhbGl6ZQor
cHJpbnQgIkhlbGxvIFdvcmxkXG4iLmxvY2FsaXplKCJoZWxsbzJkb21haW4iKQorcHJpbnQgIkhl
bGxvIFdvcmxkXG4iLmxvY2FsaXplKCJoZWxsbzJkb21haW4iLCBMb2NhbGU6Ok1FU1NBR0VTKQor
cHJpbnQgIi0tLVxuIgorcHJpbnQgIkhlbGxvIFdvcmxkXG4iLl8KK3ByaW50ICJIZWxsbyBXb3Js
ZFxuIi5fKCJoZWxsbyIpCitwcmludCAiSGVsbG8gV29ybGRcbiIuXygiaGVsbG8iLCBMb2NhbGU6
Ok1FU1NBR0VTKQorcHJpbnQgIi0tLVxuIgorcHJpbnQgIkhlbGxvIFdvcmxkXG4iLmRnZXR0ZXh0
KCJoZWxsbzJkb21haW4iKQorcHJpbnQgIkhlbGxvIFdvcmxkXG4iLmRjZ2V0dGV4dCgiaGVsbG8y
ZG9tYWluIiwgTG9jYWxlOjpNRVNTQUdFUykKK3ByaW50ICItLS1cbiIKZGlmZiAtcnVOIHJ1Ynkt
Z2V0dGV4dC0wLjMvZXhhbXBsZS9wby9qYS9oZWxsbzJkb21haW4ucG8gcnVieS1nZXR0ZXh0LTAu
My5uZXcvZXhhbXBsZS9wby9qYS9oZWxsbzJkb21haW4ucG8KLS0tIHJ1YnktZ2V0dGV4dC0wLjMv
ZXhhbXBsZS9wby9qYS9oZWxsbzJkb21haW4ucG8JVGh1IEphbiAgMSAwOTowMDowMCAxOTcwCisr
KyBydWJ5LWdldHRleHQtMC4zLm5ldy9leGFtcGxlL3BvL2phL2hlbGxvMmRvbWFpbi5wbwlXZWQg
T2N0IDE3IDIzOjI4OjMxIDIwMDEKQEAgLTAsMCArMSwxOSBAQAorIyBTT01FIERFU0NSSVBUSVZF
IFRJVExFLgorIyBDb3B5cmlnaHQgKEMpIFlFQVIgT1JHQU5JWkFUSU9OCisjIEZJUlNUIEFVVEhP
UiA8RU1BSUxAQUREUkVTUz4sIFlFQVIuCisjCisjLCBmdXp6eQorbXNnaWQgIiIKK21zZ3N0ciAi
IgorIlByb2plY3QtSWQtVmVyc2lvbjogcnVieS1nZXR0ZXh0IDAuM1xuIgorIlBPVC1DcmVhdGlv
bi1EYXRlOiAyMDAxLTEwLTE3IDIzOjEzOjMyKzA5MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAy
MDAxLTEwLTE3IDIzOjEzOjMyKzA5MDBcbiIKKyJMYXN0LVRyYW5zbGF0b3I6IE1VVE9ILE1hc2Fv
PG11dG9oQGhpZ2h3YXkubmUuanA+XG4iCisiTGFuZ3VhZ2UtVGVhbTogSmFwYW5lc2VcbiIKKyJN
SU1FLVZlcnNpb246IDEuMFxuIgorIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1l
dWMtanBcbiIKKyJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCisKKyM6IDJkb21h
aW50ZXN0LnJiOjkgMmRvbWFpbnRlc3QucmI6MTAgMmRvbWFpbnRlc3QucmI6MTEgMmRvbWFpbnRl
c3QucmI6MTIKK21zZ2lkICJIZWxsbyBXb3JsZFxuIgorbXNnc3RyICKks6TzpMGkz6GqXG4iCmRp
ZmYgLXJ1TiBydWJ5LWdldHRleHQtMC4zL3JiZ2V0dGV4dC5jIHJ1YnktZ2V0dGV4dC0wLjMubmV3
L3JiZ2V0dGV4dC5jCi0tLSBydWJ5LWdldHRleHQtMC4zL3JiZ2V0dGV4dC5jCUZyaSBBcHIgMTQg
MTM6MjQ6MzQgMjAwMAorKysgcnVieS1nZXR0ZXh0LTAuMy5uZXcvcmJnZXR0ZXh0LmMJV2VkIE9j
dCAxNyAyMzoxMTo1MSAyMDAxCkBAIC03Niw2ICs3Niw0OCBAQAogICAgIHJldHVybiByYl9zdHJf
bmV3Mihtc2dzdHIpOwogfQogCitzdGF0aWMgVkFMVUUKK2d0X2RnZXR0ZXh0KHNlbGYsIGRvbWFp
bm5hbWUpCisgICAgVkFMVUUgc2VsZiwgZG9tYWlubmFtZTsKK3sKKyAgICBjaGFyKiBtc2dzdHI7
CisKKyAgICBtc2dzdHIgPSBkZ2V0dGV4dChTVFIyQ1NUUihkb21haW5uYW1lKSwgU1RSMkNTVFIo
c2VsZikpOworCisgICAgcmV0dXJuIHJiX3N0cl9uZXcyKG1zZ3N0cik7Cit9CisKK3N0YXRpYyBW
QUxVRQorZ3RfZGNnZXR0ZXh0KHNlbGYsIGRvbWFpbm5hbWUsIGNhdGVnb3J5KQorICAgIFZBTFVF
IHNlbGYsIGRvbWFpbm5hbWUsIGNhdGVnb3J5OworeworICAgIGNoYXIqIG1zZ3N0cjsKKworICAg
IG1zZ3N0ciA9IGRjZ2V0dGV4dChTVFIyQ1NUUihkb21haW5uYW1lKSwgU1RSMkNTVFIoc2VsZiks
IE5VTTJJTlQoY2F0ZWdvcnkpKTsKKworICAgIHJldHVybiByYl9zdHJfbmV3Mihtc2dzdHIpOwor
fQorCitzdGF0aWMgVkFMVUUKK2d0X2xvY2FsaXplKGFyZ2MsIGFyZ3YsIHNlbGYpCisgICAgaW50
IGFyZ2M7CisgICAgVkFMVUUgKmFyZ3Y7CisgICAgVkFMVUUgc2VsZjsKK3sKKyAgICBWQUxVRSBk
b21haW5uYW1lLCBjYXRlZ29yeTsKKyAgICBWQUxVRSBtc2dzdHI7CisKKyAgICByYl9zY2FuX2Fy
Z3MoYXJnYywgYXJndiwgIjAyIiwgJmRvbWFpbm5hbWUsICZjYXRlZ29yeSk7CisgICAgaWYgKCFO
SUxfUChjYXRlZ29yeSkpIHsKKyAgICAgICAgbXNnc3RyID0gZ3RfZGNnZXR0ZXh0KHNlbGYsIGRv
bWFpbm5hbWUsIGNhdGVnb3J5KTsKKyAgICB9IGVsc2UgaWYgKCFOSUxfUChkb21haW5uYW1lKSkg
eworCW1zZ3N0ciA9IGd0X2RnZXR0ZXh0KHNlbGYsIGRvbWFpbm5hbWUpOworICAgIH0gZWxzZSB7
CisJbXNnc3RyID0gZ3RfZ2V0dGV4dChzZWxmKTsKKyAgICB9CisgICAgcmV0dXJuIG1zZ3N0cjsK
K30KKwogdm9pZCBJbml0X2dldHRleHQoKQogewogICAgIG1HZXRUZXh0ID0gcmJfZGVmaW5lX21v
ZHVsZSgiR2V0VGV4dCIpOwpAQCAtODQsNyArMTI2LDggQEAKICAgICByYl9kZWZpbmVfbW9kdWxl
X2Z1bmN0aW9uKG1HZXRUZXh0LCAidGV4dGRvbWFpbiIsIGd0X3RleHRkb21haW4sIDEpOwogCiAg
ICAgcmJfZGVmaW5lX21ldGhvZChyYl9jU3RyaW5nLCAiZ2V0dGV4dCIsIGd0X2dldHRleHQsIDAp
OwotCi0gICAgcmJfZGVmaW5lX2FsaWFzKHJiX2NTdHJpbmcsICJfIiwgImdldHRleHQiKTsKLSAg
ICByYl9kZWZpbmVfYWxpYXMocmJfY1N0cmluZywgImxvY2FsaXplIiwgImdldHRleHQiKTsKKyAg
ICByYl9kZWZpbmVfbWV0aG9kKHJiX2NTdHJpbmcsICJkZ2V0dGV4dCIsIGd0X2RnZXR0ZXh0LCAx
KTsKKyAgICByYl9kZWZpbmVfbWV0aG9kKHJiX2NTdHJpbmcsICJkY2dldHRleHQiLCBndF9kY2dl
dHRleHQsIDIpOworICAgIHJiX2RlZmluZV9tZXRob2QocmJfY1N0cmluZywgImxvY2FsaXplIiwg
Z3RfbG9jYWxpemUsIC0xKTsKKyAgICByYl9kZWZpbmVfYWxpYXMocmJfY1N0cmluZywgIl8iLCAi
bG9jYWxpemUiKTsKIH0KZGlmZiAtcnVOIHJ1YnktZ2V0dGV4dC0wLjMvcmdldHRleHQgcnVieS1n
ZXR0ZXh0LTAuMy5uZXcvcmdldHRleHQKLS0tIHJ1YnktZ2V0dGV4dC0wLjMvcmdldHRleHQJTW9u
IE9jdCAgMSAxNTo0Nzo0MCAyMDAxCisrKyBydWJ5LWdldHRleHQtMC4zLm5ldy9yZ2V0dGV4dAlX
ZWQgT2N0IDE3IDIyOjM4OjE3IDIwMDEKQEAgLTEzNCw3ICsxMzQsNyBAQAogICAgIEdldFRleHQu
dGV4dGRvbWFpbigicmdldHRleHQiKQogCiAgICAgIyBpbnN0YW5jZSB2YXJpYWJsZXMKLSAgICBA
Z2V0dGV4dF9pZCA9IFsnZ2V0dGV4dCcsICdfJywgJ2xvY2FsaXplJ10KKyAgICBAZ2V0dGV4dF9p
ZCA9IFsnZ2V0dGV4dCcsICdfJywgJ2xvY2FsaXplJywgJ2RnZXR0ZXh0JywgJ2RjZ2V0dGV4dCdd
CiAgICAgQGhhc2ggPSBIYXNoLm5ldwogICBlbmQKIAo-Multipart_Wed__17_Oct_2001_23:49:02_+0900_08335010--