よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

November 13, 2004 [おもひで]

[Ruby-GNOME2] test_logger が -r gtk2 の時に失敗

まつもとさんの、「GTK+側でsetlocale(LC_ALL, "C");してみれば?」

というコメントがあったので、そういやなんでsetlocaleしたんだろう、

と自問自答しながら試してみると普通に日本語表示ができる。

あり?昔は文字化けしなかったかい?

と一瞬焦ったんだけど、テキスト入力とかで日本語変換できないことがわかってちょっとホッとした(ってオイ(^^;))。

オレが使ってる環境はATOK Xなんだけど、日本語IMが古いからかな。

最新のIMとかだとsetlocale(LC_ALL, "")しなくても動作したりするの?

本日のツッコミ(全6件) [ツッコミを入れる]
通りすがり (November 14, 2004 05:39)

現在標準的に使われているXIMはもろにlocale dependentな設計なので、これを経由して入力する場合はアプリの側も含めてlocaleを適切に設定する必要があります。一方、Gtk+2にはimmoduleという仕組みがあってXIMもモジュール化されていますが、im-jaやgtkimprimeなどのようにこれに直接アクセスする類のIMならsetlocaleをする必要はないはずです。ちなみにIIIMF、uim、SCIMなどもGtk+2用のimmoduleを持っています。

むとぽん (November 14, 2004 18:55)

情報ありがとうございます。

そうなるとまだしばらくは外せないですねぇ。

でも、確かATOK XといえばIIIMFですよね?
それならばimmodule経由だったらうまく行くんでしょうか。
GTK2の時でもATOK XはXIM経由なのかな。

通りすがり (November 14, 2004 20:04)

IIIMGCF(IIIMFのgtk-immodule)が入っていないのかもしれません。テキストウィジェットなどで右クリックすると入力メソッドを切り替えるメニューが出てきます。それで確認してみてください。

むとぽん (November 14, 2004 20:40)

ツッコミありがとうございます。確認してみました。

そこからは「Internet/Intranet Input Method」が選択されています。頭文字から判断するにIIIMFなのではないかと推測します。この状態で、ATOK Xから入力ができます。

次に、Ruby/GTK2の頭の方にsetlocale(LC_ALL, "C");を入れると、上記「Internet/Intranet Input Method」は確かに選択された状態になったままなのですが、テキストウィジェットにフォーカスを当てると、普段「あ連R漢」等と表示される変換ウィンドウが「英文」となってしまいます(中国語?)。
もしかしたら、この状態で「日本語」を選択できると良さそうなのですがその方法はわかりませんでした....。

通りすがり (November 14, 2004 21:30)

GIMLET(GNOME Input Method Language Engine Tool)というアプレットが入っていればそれで入力言語を変更できるはずです。

むとぽん (November 14, 2004 23:05)

 GIMPLETってGNOME Panelにある「Gnome入力方式切り替え器で良いんですか?
これで、日本語選択するようにしたらsetlocale(LC_ALL, "C");で無事選択できました!

ありがとうございました。

でも....Ruby-GNOME2でsetlocale使うかどうか、悩みがまた一つ増えましたです...(T_T)。


編集