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/