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

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS