python中gettext文件格式_16.3. gettext — 翻译消息

目的:用于国际化的消息目录API。

gettext模块提供了与GNU gettext 库兼容的纯 Python 实现,用于消息翻译和目录管理。 Python 源分发版提供的工具使您能够从一组源文件中提取消息,构建包含翻译的消息目录,并使用该消息目录在运行时为用户显示适当的消息。

消息目录可用于为程序提供国际化的界面,以适合用户的语言显示消息。它们还可以用于其他消息自定义,包括为不同包装程序或合作伙伴“设置”界面外观。

注意

尽管标准库文档说 Python 随附了所有必需的工具,但即使使用适当的命令行选项,pygettext.py也无法提取包装在ngettext调用中的消息。这些示例改用GNU gettext工具集中的xgettext。

翻译工作流程概述

设置和使用翻译的过程包括五个步骤。

在源代码中标识并标记包含要翻译的消息的文字字符串。

首先确定程序源中需要翻译的消息,并标记文字字符串,以便提取程序可以找到它们。

提取消息。

在源中识别出可翻译字符串后,使用xgettext提取它们并创建一个.pot文件或翻译模板。模板是一个文本文件,其中包含所有已标识字符串的副本以及其翻译的占位符。

翻译消息。

将.pot文件的副本提供给翻译器,将扩展名更改为.po。 .po文件是可编辑的源文件,用作编译步骤的输入。翻译人员应更新文件中的标题文本,并提供所有字符串的翻译。

“翻译”来自翻译的消息目录。

转换器将已完成的.po文件发送回时,请使用msgfmt将文本文件编译为二进制目录格式。运行时目录查找代码使用二进制格式。

*在运行时加载并激活适当的消息目录。

最后一步是向应用程序添加几行,以配置和加载消息目录并安装翻译功能。有两种方法可以实现此目的,同时需要进行权衡取舍。

本节的其余部分将从需要的代码修改开始,对这些步骤进行更详细的研究。

从源代码创建消息目录

gettext的工作方式是在翻译数据库中查找文字字符串,然后提取适当的翻译字符串。通常的模式是将适当的查找函数绑定到名称“ _”(单个下划线字符),以使代码不会因调用多个具有较长名称的函数而混乱。

消息提取程序xgettext查找在对目录查找功能的调用中嵌入的消息。它了解不同的源语言,并为每种语言使用适当的解析器。如果查找功能是别名或添加了其他功能,请在提取消息时给xgettext名称以考虑其他符号。

该脚本只有一条消息可供翻译。

gettext_example.py

import gettext

# 设置消息目录访问

t = gettext.translation(

'example_domain', 'locale',

fallback=True,

)

_ = t.gettext

print(_('This message is in the script.'))

文本"This message is in the script."是要从目录中替换的消息。启用了回退模式,因此,如果在没有消息目录的情况下运行脚本,则会打印内联消息。

$ python3 gettext_example.py

This message is in the script.

下一步是使用pygettext.py或xgettext提取消息并创建.pot文件。

$ xgettext -o example.pot gettext_example.py

产生的输出文件包含以下内容。

example.pot

#一些描述性标题。

#版权所有(C)套餐的版权持有人

#此文件与PACKAGE软件包使用相同的许可证分发。

#第一作者,年份。

#

#,模糊

msgid ""

msgstr ""

"Project-Id-Version: PACKAGE VERSION."

"Report-Msgid-Bugs-To: ."

"POT-Creation-Date: 2018-03-18 16:20-0400."

"PO-Revision-Date: YEAR-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值