[gettext-u-ja] GetText 標準添付に向けて

speakillof speakillof at yahoo.co.jp
Fri Sep 9 06:00:19 EDT 2005


speakillof と言います。

RailsのMLでむとうさんが一人で苦戦されていましたが、
Rubyに Ruby-GetText が標準添付されそうだということで、
少し安心しています。

標準添付にあたって Ruby っぽい仕様かどうかの検討が
必要ということですので、ここで議論できればと思っています。
過去のむとうさんの日記とすずきさんの日記

http://www.yotabanana.com/lab/20050331.html
http://www.spice-of-life.net//diary/?date=20050622
http://www.spice-of-life.net//diary/?date=20050629
http://www.spice-of-life.net//diary/?date=20050630


の議論を踏まえると、

* textdomain(メッセージの格納場所)とその呼び出し元を関連付ける方法が問
題
** 現在はファイル名を使って関連付ける
** でも、ファイル名が付かない eval の中で _() などが呼ばれると困る

この eval 問題に対処するために現状の Ruby-GetText では

* GetText::Container を使う
** GetText::Container は textdomain とその呼び出し元をクラスで関連付け
る

となっています。個人的には関連付けの方法が
GetText::Container の include によって変化するのは
直感に反するという印象があります。
そこで下記の点についてお聞きしたいです。

* 現状、GetText @@__textdomain に textdomain を複数保持しているが、
  それらをマージして大きな textdomain にしては駄目なのか?
  これなら関連付けの方法を考えなくて良い。
** メッセージの衝突という可能性はありうるが、
   衝突しても同じメッセージなので、大きな問題にはならない?
(この方法が駄目だろうということは分かっているのですが、念のため)

* 呼び出し元の self によって関連付けるのはどうか?
** ファイル名よりは Ruby っぽい(気がする)
** Ruby-1.8.x では呼び出し元の self を取得するメソッドがない(これが最大
のネック)
** 過去の ruby-list, dev で binding(n) を導入するという議論があり、
   これが実現されれば self での関連付けは可能。
   http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/15999



self で関連付けする方法については 
Ruby-1.8.x におけるリファレンス実装を添付したので、
試していただければと思います。

実行するには

  ruby msg.rb 

とします。gettext2.rb がライブラリです。
メッセージの呼び出しは

  _('hogehoge')

となっているところを

  _('hogehoge'){self}

にします。(これがRuby-1.8.xにおける制限)
実行時のコストなど、いろいろ問題がありますが、
それについてはソースを読んでいただければと思います。


ご検討のほどよろしくお願いします。


__________________________________
 Take an action against poverty
 http://pr.mail.yahoo.co.jp/whiteband/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: get.tgz
Type: application/x-compressed
Size: 1131 bytes
Desc: get.tgz
Url : http://rubyforge.org/pipermail/gettext-users-ja/attachments/20050909/15782046/get.bin


More information about the gettext-users-ja mailing list