未加星标

gettext: Python本地/国际化模块

字体大小 | |
[开发(python) 所属分类 开发(python) | 发布者 店小二04 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏

gettext是兼用GNU gettext的国际化模块,使用纯python实现。如果你不熟悉gettext,看: linux下的本地/国际化gettext 。

简单的示例

first_gettext.py:

# Python3 importgettext # 一些设置 t = gettext.translation( 'first', 'locale', fallback=True, ) _ = t.gettext# 一般使用_,简单方便 print(_('This message is we want to translate.'))

运行:


gettext: Python本地/国际化模块

我们还没有添加其它的语言支持,在这种情况下如果fallback为True,那么直接使用内置_中的字符串。如果fallback为False,返回“找不到翻译文件”异常:

Traceback (mostrecentcalllast): File "first_gettext.py", line 6, in <module> fallback=False, File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/gettext.py", line 417, in translation raiseOSError(ENOENT, 'No translation file found for domain', domain) FileNotFoundError: [Errno 2] Notranslationfilefoundfor domain: 'first_domain'

下面我们来创建翻译文件。

提取源文件中使用的字符串(使用pygettext.py,或使用GUN gettext中的工具):

$ xgettext -o first.po first_gettext.py --from-codeutf-8

生成的first.po,文件名和代码中translation第一个参数对应:

# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <[email protected]>, YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-10-09 17:15+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <[email protected]>\n" "Language-Team: LANGUAGE <[email protected]>\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: first_gettext.py:10 msgid "This message is we want to translate." msgstr ""

修改文件中META信息,姓名、邮件、版本等等;charset改为:UTF-8;然后翻译:

msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-10-09 17:15+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Snail <[email protected]>\n" "Language-Team: Snail <[email protected]>\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: first_gettext.py:10 msgid "This message is we want to translate." msgstr "这是我们要翻译的消息"

代码中translation第二个参数代表翻译文件保存路径,创建目录结构:

$ mkdir -p locale/zh_CN/LC_MESSAGES# zh_CN对应语言 $ mv first.po locale/zh_CN/LC_MESSAGES $ cd locale/zh_CN/LC_MESSAGES

创建mo文件:

$ msgfmt -o first.mo first.po# 或使用pygettext.py

设置LANGUAGE/LC_ALL/LC_MESSAGES/LANG 环境变量或更改系统语言进行测试:


gettext: Python本地/国际化模块
gettext模块文档: https://docs.python.org/3/library/gettext.html

本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程

主题: PythonLinuxUTSAGEUATIAUTFUAU变量
分页:12
转载请注明
本文标题:gettext: Python本地/国际化模块
本站链接:http://www.codesec.net/view/480518.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(python) | 评论(0) | 阅读(46)