gettextで日本語化の検討(2)
昨日の、日本語表示はされるが英語表示に戻せなくなる問題。
http://d.hatena.ne.jp/gymno/20090420/1240245430
http://wiki.wxpython.org/Internationalization#Example_1
↑この通りにやれば、ちゃんと日本語表示される。Linuxで動作確認できた。moファイルが無い場合には、英語表示になることを確認した。
ソースコードprogress.pyは以下のように書く。
import wx import os import sys import gettext basepath = os.path.abspath(os.path.dirname(sys.argv[0])) localedir = os.path.join(basepath, "locale") domain = "progress" langid = wx.LANGUAGE_DEFAULT mylocale = wx.Locale(langid) mytranslation = gettext.translation(domain, localedir, [mylocale.GetCanonicalName()], fallback = True) mytranslation.install() app = wx.PySimpleApp() progressMax = 15 dialog = wx.ProgressDialog(_("A progress box"), _("Time remaining"), progressMax, style=wx.PD_ELAPSED_TIME | wx.PD_REMAINING_TIME | wx.PD_AUTO_HIDE) keepGoing = True count = 0 while keepGoing and count < progressMax: count = count + 1 wx.Sleep(1) keepGoing = dialog.Update(count) dialog.Destroy()
poファイルの作成は、xgettextを使う。
$ xgettext progress.py
これでmessages.poファイルが作成される。このpoファイルの中で、charset=UTF-8に書き変える。その他、msgstrに日本語訳を書く。
今度は、moファイルを作成する。
$ msgfmt -o progress.mo messages.po
これで、progress.moファイルができるので、./locale/ja/LC_MESSAGES/ディレクトリに置く。
あとは、ソースファイルが複数あるときにどうやるか。