Python-i18n 的 "Hello World" 教程。
1. 创建po文档
在当前目录下创建locale文件夹,下面分别建 en_US/LC_MESSAGES/ 和 zh_CN/LC_MESSAGES/
目录。
创建tpl目录,创建 demo.html,其文件内容如下:
<html>
<head>
<title>${_('title')}</title>
</head>
<body>
<a href=''>${_('body')}</a>
</body>
</html>
进入tpl目录,打开命令行窗口,输入
pygettext.py -a -v -d messages -o messages.po \*.py \*.html
完成后,在当前目录生成 messages.po 文件。
打开message.po 会看到其中的格式内容:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2013-07-05 16:38+�й��ʱ��\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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"
#: demo.html:3
msgid "title"
msgstr ""
#: demo.html:6
msgid "body"
msgstr ""
2. 翻译字符资源
将message.po更改为
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2013-07-05 16:38+�й��ʱ��\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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"
#: demo.html:3
msgid "title"
msgstr "标题"
#: demo.html:6
msgid "body"
msgstr "主体"
将message.po移动至 locale\zh_CN\LC_MESSAGES 目录下。
3. 生成mo文件
在locale\zh_CN\LC_MESSAGES目录下,执行
那么,将会在 locale\zh_CN\LC_MESSAGES 目录下存在messages.po文件。
最终的目录结构是:

4. 测试
在与locale同级的目录下创建test.py,内容如下:
#coding=utf-8
'''
Created on 2013-7-5
'''
# pygettext.py -a -v -d messages -o messages.po \*.py \*.html
# msgfmt.py messages.po
import gettext
#Setup message catalog access
gettext.translation('messages', './locale', languages = ['zh_CN']).install(True)
print _('title'), _('body'), _('hello')
执行结果是: