2009年10月19日月曜日

gettext

gettextモジュールを使う

/home/yoshi/python/hello.py
# -*- coding: utf-8 -*-

import gettext

# /home/yoshi/python/ja/LC_MESSAGES/messages.mo ファイルがないといけない
gettext.bindtextdomain("messages", "/home/yoshi/python")
_ = gettext.gettext

print _("hello")

実行すると
ハロー

messages.moファイルの生成方法

  1. pygetextコマンドでhello.pyからmessages.potファイルを生成する
  2. messages.potをmessages.poにリネームしファイルの内容を変更する
  3. msgfmtコマンドでmessages.poからmessages.moファイルを生成する

1. pygetextコマンドでhello.pyからmessages.potファイルを生成する

作業ディレクトリを移動
$ cd /home/yoshi/python
pygettextコマンドでhello.pyからmessages.potを生成する
$ pygettext hello.py
/home/yoshi/python/messages.pot が生成される
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR , YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2009-10-19 22:08+JST\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"


#: hello.py:10
msgid "hello"
msgstr ""

2. messages.potをmessages.poにリネームしファイルの内容を変更する

ファイル名を変更する
mv messages.pot messages.po
/home/yoshi/python/messages.po 変更した部分は赤字
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR , YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2009-10-19 22:08+JST\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"


#: hello.py:10
msgid "hello"
msgstr "ハロー"

3. msgfmtコマンドでmessages.poからmessages.moファイルを生成する

msgfmtコマンドでmessages.poからmessages.moを生成する
$ msgfmt messages.po
messages.moを移動するディレクトリを作成する
ディレクトリ名は決まっている(jaはjapanese)
$ mkdir -p ja/LC_MESSAGES
messages.moを移動する
$ mv messages.mo ja/LC_MESSAGES

詳細はドキュメントで

0 件のコメント:

コメントを投稿