国際化(i18n)メモ

gettextという仕組みを使えるようになってる。gettextはC言語などでも利用可。

日本語化の例を追って見ていく*1

日本語化対象アプリ

test.py

import sys
import gettext
gettext.install("test","/usr/share/locale")
i=1
sys.stdout.write(_("test %d") % i)

実行結果:
test 1
と表示されるだけ。

国際化対象にしたい文字列を_(...)で囲む。
今回は_("test %d")となってる。

gettext.installで、国際化メッセージファイル(moファイル)の位置を指定
/usr/share/locale/|言語名|/LC_MESSAGES/test.mo
からmoファイルを読むようになる。

pygettext.pyでpotファイルを生成

pygettext.pyはpython-toolsパッケージに入ってる。

$ pygettext.py test.py
message.potというファイルが生成。
これは国際化メッセージファイルの雛型のようなものらしい。

日本語翻訳者にはこのファイルを「ja.po」という名前で配布(これが俗に言うpoファイル)
今回は日本語化したいので
$ cp message.pot ja.po

ja.poのヘッダ編集

"Language-Team: LANGUAGE \n"

  • >

"Language-Team: japanese\n"
"Content-Type: text/plain; charset=CHARSET\n"

  • >

"Content-Type: text/plain; charset=UTF-8\n"

*1:日本語化は、正しくいうとi18nとはいわずlocalization(l10n)だなぁ