Pythonはgettextをサポートしているので、poを利用した国際化プログラミングが可能である。では、実際にやってみよう。hello.pyを作成する。
import gettext gettext.install("hello") print _("test")
このスクリプトの実行結果は、
$ python hello.py test
となる。gettext.install("hello")でコンテキスト名を指定すると、_関数で国際化されたメッセージを表示できるようになる。次にxgettextで国際化メッセージを作成するためのpoファイルを生成する。
$ xgettext.exe -k_ hello.py $ cat messages.po ... #: hello.py:4 msgid "test" msgstr ""
ここでは、-k_で_関数の中の文字列を国際化することを指定しpoファイルを生成している。msgstrに日本語メッセージを入力する。 ...
#: hello.py:4 msgid "test" msgstr "テスト"
poファイルからmoファイルを生成する。gettextはmoファイルからローカライズされたメッセージを生成する。
$ msgfmt message.po $ ls message.mo message.mo
このmessage.moをpythonのインストールディレクトリの下のshare/locale/ja_JP/LC_MESSAGES/hello.moとしてインストールする。 LANG変数をja_JPにしてhello.pyを実行すると、日本語メッセージが表示される。
$ python hello.py テスト
msgmergeを利用すると、poファイルを最新のスクリプトを反映した状態にアップデートすることができる。
@ [Trac]ITpro Challenge ITpro Challengeでまちゅさんが発表されたようです。Trac Offで話した内容をLightning Talkで3分で話されたようです。やはり、肝はSVNのコミットログとTracのタスクの紐づけによる作業の見える化ですかね。
最後にShibuya.tracも紹介頂いたようです。