[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mhc:02258] Re: gemcal on gtk2



On December 18, 2006, [mhc:02240],
nom (at quickhack.net) wrote:

> mhc-kconv のパッチを取り込んだので,today の画面表示が
> 環境に関わらず UTF-8 になってしまっています.

mhc-gtkではUTF-8固定にしつつ、ほかではlocaleに応じた表示になるといい
のでしょうね。下記のパッチでeucJP, SJIS, UTF-8 localeに対応できるもの
と思います。いかがでしょうか。

(mhc-gtkでMhcKconv::todispを再定義するのではなく、mhc-gtk専用に別の
関数を用意する方がいいのかもしれませんが、とりあえず、元のコードに
沿った形にしてみました)

----
--- mhc.orig/ruby-ext/lib/mhc-gtk.rb.in
+++ mhc/ruby-ext/lib/mhc-gtk.rb.in
@@ -17,13 +17,10 @@
 require 'mhc-signal'
 
 module MhcKconv
-  if RUBY_PLATFORM =~ /mswin32|cygwin|mingw/
-    require 'uconv'
-    def todisp(string)
-      Uconv::euctou8(Kconv::toeuc(string))
-    end
-    module_function :todisp
+  def todisp(string)
+    Kconv::kconv(string, Kconv::UTF8, Kconv::AUTO)
   end
+  module_function :todisp
 end
 
 Gtk.init
--- mhc.orig/ruby-ext/lib/mhc-kconv.rb
+++ mhc/ruby-ext/lib/mhc-kconv.rb
@@ -9,7 +9,14 @@
 require 'kconv'
 
 module MhcKconv
-  DISP_CODE = Kconv::UTF8
+  env = ENV['LC_ALL'] || ENV['LC_CTYPE'] || ENV['LANG']
+  if env =~ /euc/i
+    DISP_CODE = Kconv::EUC
+  elsif env =~ /sjis|shift_jis/i
+    DISP_CODE = Kconv::SJIS
+  else
+    DISP_CODE = Kconv::UTF8
+  end
 
   def todisp(string)
     Kconv::kconv(string, DISP_CODE, Kconv::AUTO)
----

-- 
木下達也