artonです。

実験的な拡張ライブラリですが、NLizeというものを作ってみました。
Ruby-1.8.7-p72(メッセージを変えなければ1.8.7系は共通で利用できるとは思
います)のNameErrorのメッセージなどをRuby-GetTextを利用して多国語対応さ
せるものです。

例1 irb)
c:\home\arton\test>irb -rubygems
irb(main):001:0> require 'nlize'
=> true
irb(main):002:0> x
NameError: 'x'はmain:Objectの未定義のローカル変数かメソッドです
        from (irb):2
        from c:/PROGRA~2/ruby-1.8/lib/ruby/gems/1.8/specifications/gettext-1.92.
0.gemspec:11
irb(main):003:0> Integer(3,2,1)
ArgumentError: 引数の数が不正です(3は1であるべきです)
        from (irb):3:in `Integer'
        from (irb):3
        from c:/PROGRA~2/ruby-1.8/lib/ruby/gems/1.8/specifications/gettext-1.92.
0.gemspec:11

現在のところ、抽出したメッセージの半分くらいは日本語に翻訳してあります。
ただし、すべてのメッセージを網羅しているわけではありません。syntax errorはほと
んど対応できていません(抽出できていない)。
また、i386以外には未対応です。

特徴:
 拡張ライブラリとして実装してあるので、既存のRubyバイナリには影響しませ
ん。
インストール方法:
 http://github.com/arton/nlize/tree/master
 からレポジトリを取ってきて、ruby setup.rb でインストールするのがベスト
です。理由は後述
 または、http://arton.no-ip.info/data/nlize にMSWin32-60用gem(so付き)
と、普通のgemをコピーしてありますので、ダウンロードしたディレクトリ上で、
gem install nlize -l してください。
なお、依存関係がspecに記述してあるので、Ruby-GetTextをインストールしてい
ない場合は、ローカルへコピー後、-l抜きで実行するとRuby-GetTextのインストー
ルも行えます。

使い方
 require 'nlize'
するだけです。翻訳があるメッセージは自動的に翻訳されます。
setup.rbでインストールした場合は、ruby -rnlize のみで有効となります。
ただし、gemを使ってインストールした場合は、
irb -rubygems -rnlize では有効にできますが、
ruby -rubygems -rnlize では、まだRubyGemsのrequireフックが利かないので
nlizeのLoadErrorとなります。(これはそういうものでしたっけ?)

制限事項
現在(誰かが手伝ってくれない限り、将来的にも。ただしx64は除く)i386以外
には対応していません。無理にsetupしてもエラーチェックが甘いのでsegvしま
す。
cコンパイラがvsnprintf_lを利用できない環境では、vsnprintfをvsprintfで置
き換えるため、長い文字列によってバッファオーバーフローを引き起こします。

テストした環境
MSWin32-60 (この環境では、上記のvsprintfへの置き換えが行われます)
OS X 10.5 (この環境では、vsnprintf_lで代用するためnlizeによる危険の導入
はないはずです)

お願い
githubにリポジトリを置いてあるので、翻訳の修正や追加、CPUサポートや
extconf.rbによるコード分岐パッチなどは自由に作ってください。基本的には
pullします。

-- 
arton <artonx / yahoo.co.jp>

--------------------------------------
Enjoy MLB with MAJOR.JP! Ichiro, Matsuzaka, Matsui, and more!
http://pr.mail.yahoo.co.jp/mlb/