Ruby言語やLinuxのネタが多いです。
August 16, 2004
■ [Ruby-GNOME2] GnomeFiles
たむらさん、安部さん、他、協力してくださったみなさん、どうもありがとうございます。
おかげさまでいい感じで上位に食い込んでいるようです(私が見たときにBest Ratedが2位)。
バージョンが0.10.1になったことでまたVoteできるようになっていたのでまたまたRating 10(best)でVoteしちゃいました。
もうVoteしちゃった方も、まだの方も、是非、あなたの一票を!.....Ratingは10でよろぴくね(^^;)
#思いっきり組織票だな....。でも良いんです。目立つことが大事なのですっ!
■ [Ruby] sgettext
ふと、相花さんが和訳されたlibglade リファレンスマニュアルを読んでて(いつもお世話になってます)、libglade を使った国際化の章に、ナニゲにおもしろいことが書いてあるのに気づいた。
リンク先のGNU GetTextのドキュメントを見てもらえば詳細はわかると思うんだけど、GUIでありがち(?)な「表示文字は同じなんだけど機能が違うもの」があった場合の扱いが書いてある。
■ たとえば、GUIのメニューで、Fileメニュー → Openって言うメニューとPrinterメニュー → Openって言うメニューがあるとする。
通常のGetTextでは、表示文字列が同じOpenなのだから、これらは同じmsgid(つまり同じ訳)になってしまう。でも、実はOpenを訳そうとすると両方とも意味が違うので、両方とも「開く」ではちょっと気持ち悪い。
そんな時に、GetTextに渡す文字列を_("Menu|File|Open")とか、_("Menu|Printer|Open")って感じにして、デフォルト(つまり翻訳語が見つからないときに)表示するのは一番最後の"|"より右側の文字(この場合はOpen)にする、というものだ。もちろん、翻訳語がヒットした場合はそれをそのまま使う。
■ 正直、あまり使い道はなさげ、というか、おそらく最初にツールを作る人が英語ネイティブな人だときっと気づかないと思うしGNU GetTextには実装されていないみたいなんだけど、なかなかおもしろそうなのでRuby-GetText-Packageでも実装してみようかな。セパレータは選択できるようにして、こんな感じでどうだろう?
def sgettext(msgid, div = '|')
msg = gettext(msgid)
if msg == msgid
if index = msg.rindex(div)
msg = msg[(index + 1)..-1]
end
end
msg
end
■ ってか未だにGNU GetTextの仕様書を全部読み切れてないオレって...(汗。
