Pythonによる国際化プログラミング

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も紹介頂いたようです。


トップ   編集 凍結解除 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-11-30 (金) 17:03:00