From: Masao Mutoh Date: 2005-09-08T01:22:42+09:00 Subject: [ruby-dev:26981] Re: about Ruby-GetText むとうです。 On Wed, 7 Sep 2005 02:20:50 +0900 Yukihiro Matsumoto wrote: > まつもと ゆきひろです > > In message "Re: [ruby-dev:26968] Re: about Ruby-GetText" > on Wed, 7 Sep 2005 01:35:33 +0900, Masao Mutoh writes: > > |それは、内部的にsetlocaleを使っている点です。 > > |以前、setlocale周りで何回か問題が起こったことがあったかと認識しています。 > |この辺ってやっぱりまずいでしょうか。 > > ドイツなどヨーロッパ系のロケールで小数点などが変わってしまう > ために、動作がおかしくなります。1.9ではロケールに依存する関 > 数はずいぶん取り除いて自前の関数で置き換えましたが、まだ残っ > てるかもしれません。 Ruby-GetText-PackageではLC_CTYPEだけ呼んでます。 私の理解では、ctype.hに載ってる関数が影響を受けるだけなので、 数値関係は大丈夫なんじゃないかと....。影響受けるのは isalnum, isalpha, isascii, isblank, iscntrl, isdigit, isgraph, islower, isprint, ispunct, isspace, isupper, isxdigit あたりでしょうか。 #認識が間違えていたらご指摘ください。 まぁ、でも、「まだ残ってるかも」ということは、残っていることが わかったら、Ruby側で対処して頂けると言うことでしょうか。 それなら、呼ぶこと自体は問題なさそうですね。 ---- それと、ちょっと脱線しちゃうのですが質問があります。 今後、RubyのLocale関係って何かイメージされたものがありますか? 実装するとしたら、どんな実装が良いのでしょう。 1. setlocaleに依存 2. setlocaleに非依存 2-1. 環境変数LANG/LC_ALL等が設定されていたら、現在のStringやDateの 各メソッド等が返す文字列自体をローカライズして返してしまう。 2-2. StringやDateの既存メソッドを上書きしてしまうといつどんなロケール    で変な動きをするか、元のプログラマは想定できない場合が多い。    ロケール関係はせいぜい表示時に変換できればいいだろうから、    例えば、Locale.date(Date)みたいにロケール関係を集めたモジュール    を作る。 2-3. 2-2.と同様だけど、例えば、Date#to_localeみたいなメソッドも追加    する。 ホントに質問したい内容は、1.か、2.か、というところです。 あとの2-1,2,3は単なる興味です(個人的には2-2,3かなとは思ってますが)。 質問の意図としては、Ruby-GetText-Packageに含まれるLocaleというモジュール の扱いをどうしようかというところです。 1.ならば、LocaleモジュールをRuby-GetText-Packageとは別に昇格させようと 思います。 2.ならば、GetText固有のLocaleモジュール(できればundocumentedな)に変更 して機能も極小化させた方がいろいろと問題がなさそうでいいかなぁ、と 思っています。 > どうしたもんでしょうねえ。まあ、Gtkなどもsetlocale呼んでいる > ので気にしてもしょうがないのかもしれませんが。 う、なんか、両方とも私がメンテしてるところですね。恐縮です(苦笑)。 -- .:% Masao Mutoh