社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python-i18n 的 "Hello World" 教程

Py站长 • 11 年前 • 3622 次点击  

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
 
3622 次点击