作者: Kazuhiro NISHIYAMA
日時: 2010/6/04(08:49)
西山和広です。

At Tue, 01 Jun 2010 23:34:36 +0900 (JST),
Zazel wrote:
> 
> スクリプトを読んでいて、strftime("%B") では環境によっては“ 66月”
> のような表示になりはしないかと思ったのですが、RubyはCロケール固定
> なんですね。知らなかった。Perlだと問答無用にロケール適用、Pythonは
> localeモジュールを使えば適用と三者三様で興味深いです。

少なくともruby 1.8では「RubyはCロケール固定」ではないです。

> ただ、RubyとPythonのオンラインドキュメントのstrftimeの記述が言葉足らず
> だなと思いました。どちらも読み方によってはデフォルトでロケールが適用
> されるように勘違いしそうです。
> 
> http://www.ruby-lang.org/ja/man/html/Time.html
> | 現在の実装では、このメソッドは、システムの strftime(3)  をそのまま使用しています。

以下のように誰か(以下の例ではgtk2)がsetlocale(3)を呼べば変わるので、
その説明の通りです。

% ruby -e 'puts Time.now.strftime("%B")'
June
% ruby -r gtk2 -e 'puts Time.now.strftime("%B")'
6月
%

1.9 だと strftime.c を自前で持っているので、
「Cロケール固定」かもしれません。


-- 
|ZnZ(ゼット エヌ ゼット)
|西山和広(Kazuhiro NISHIYAMA)