Ruby言語やLinuxのネタが多いです。
May 07, 2002
■ [Tools] gettextの話
ちょっと補足。こちらの話ですが 、gettext-0.10.36からiconvを使うようになったみたいです。moファイルをUTF-8なpoファイルから作って、#{prefix}/share/locale/ja/LC_MESSAGE/配下に置けば、内部的にその環境の文字コードに変換してくれるみたいです。
■ これを使えば、Linuxであれば、UTF-8のmoファイルからEUC-JPを、Win32な環境だとSJISを返してくれる....はず(未確認)。
■ で、現在のRuby-GetText-Packageは?
この変換をやっていません。うーむ、中田さんのiconvを使って実装すべきか、gettextのラッパにすべきか...悩ましー。
■ まぁ、それはさておき、これにGTK+が絡むとどうなるか?
実は、GTK+のWin32版(及び、次期GTK+?)は内部ではUTF-8を使うんだそうです。
参考:http://www.geocities.co.jp/SiliconValley/3097/learning_gtk_win/learn_gtk_win-2.html#sect2.3
■ ということは、Win32の環境では、通常のgettextはSJISを返し、GTK+の時に限ってはUTF-8を返す必要があります...。
■ で、私はこの先、全く未確認なのですが、実際のところはこの辺うまくやってるのでしょうか?あるいは、どこかしらで、SJISかUTF-8のどちらを返すのかを判断させないといけないのでしょうか...。
例えば、アプリケーション側で、Win32な場合は、UTF-8なmoファイルからgettextを使ってSJISに変換された文字を受け取って、さらにそれをUTF-8に変換してGTK+に渡す必要がある....ってことは無いですよね...。
■ うーん、でも、これでさらにRuby/GTKが絡む場合はどうなるんだろう。微妙だ...。
そんなわけで、SJISなmoファイルを用意すればいけそうと書いたのは怪しいです。UTF-8なファイルかも。
■ この辺は、落ち着いたら調べてみます。連休中にやろうと思ってたんだけど、すっかりtDiaryにはまってました(^^;)。
つーか、知ってる人は教えてください。
#私のWin32な環境って会社のPCだけなんすよね...。
#しかもHDD容量が少なくてなかなか環境作れないんです(T_T)。
May 07, 2006
■ [Ruby] Ruby-GetText-Package-1.5.0
リリースしました。ロシア語のリソースが追加されました。これで11(+2)言語サポートです!
また、アプリケーションを起動したままカタログファイル(moファイル)を更新した場合に、カタログファイルを再読込するオプションを追加しました。
この機能はruby -dでrubyを起動するか、GetText::TextDomain.check_mo=(true)を設定と使えるようになります。サーバ型アプリケーションを起動しっぱなしで開発したい場合に便利です。
なお、Ruby on Railsのではdevelopmentモードであれば自動的にこのモードになります。
この機能を使っていない場合(つまり通常の場合)、高速化のため、一度読み込まれたmoファイルはメモリ上にキャッシュされるようになっています。
エンジョイ!

▲ さかい [localeのエンコーディングと違う文字列が必要な場合は、 明示的にbind_textdomain_codeset(..]
▲ むとぽん [なるほどそのために使うんですね、bind_textdomain_codesetって。ちなみに、通常はGTK+のアプリ..]