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