Py学习  »  Python

Python-i18n 的 "Hello World" 教程

Py站长 • 13 年前 • 3836 次点击  

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目录下,执行

msgfmt.py messages.po

那么,将会在 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')

执行结果是:

标题 主体 hello
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/196