Skip to main content

用于操作 gettext 文件(po 和 mo 文件)的库。

项目描述

政策

特拉维斯建立 编解码器图像 文件状态 pypi 版本 Python 版本

概述

polib 是一个用于操作、创建、修改 gettext 文件(pot、po 和 mo 文件)的库。您可以加载现有文件、遍历其条目、添加、修改条目、评论或元数据等……或从头开始创建新的 po 文件。

polib 支持开箱即用的任何 python 版本,从 2.7 到最新的 3.X 版本。

polib 现在相当稳定,被许多 开源项目使用。

项目代码和 bugtracker 托管在 Github上。

polib 文档丰富,您可以在线浏览文档,一个好的开始是阅读 快速入门指南

安装

只需使用pip

$ pip install polib

基本示例

import polib

pofile = polib.pofile('/path/to/pofile.po')

for entry in pofile:
    print(entry.msgid, entry.msgtxt)

变更日志

版本 1.1.1 (2021/03/26)

  • 从文件开头剥离 UTF-16 BOM (U+FEFF)

  • MO 文件的消息上下文 (msgctxt) 支持

  • 放弃了对 Python < 2.7 的支持

  • 从 Bitbucket 切换到 Github 后更新了文档和 README

版本 1.1.0 (2017/11/27)

  • 修复了生成 mo 文件时的条目排序(修复 #78)

  • 修复了查找方法(修复 #84)

  • 重构 POEntry.__cmp__ 方法(​​这应该解决问题 #60、#65 和 #79)

  • 修复了将 po 文件与 pot 文件合并时的重复条目(修复 #68)

  • 修复了当 polib 处理字符串中的语法错误时输出“None”字符串(修复问题 #66)

  • 为条目添加了模糊属性(修复 #76)

  • 比较条目时考虑消息上下文

  • 如果行号不是数字,则保持发生不变(修复 #80 和 #90)

  • 修复了对 mo 文件的测试失败,因为自 gettext 版本 0.19.8.1 以来,msgfmt 跳过了“POT-Creation-Date”元数据条目(修复 #86)

  • 修复了主要修订号比较

  • 放弃了对 python 2.4 的支持

版本 1.0.8 (2016/11/21)

  • 修复了问题 #70(Windows 路径解析的出现)

  • 修复了问题 #71(未为过时条目保存 tcomment 和标志)

  • 修复了问题 #72(错误的元数据排序)

  • 修复了问题 #73(不能总是 unpickle POFile)

  • 对附加标题(元数据)使用自然排序

  • 修复了各种文档中的错别字

版本 1.0.7 (2015/07/08)

  • 修复了缩进 msgstr_plural 的错误解析

  • 修复了“语言”元数据条目的顺序

  • 如果注释行为空,则删除标题中“#”后的空格(如 gettext 工具)

  • 修正错别字/语法错误(感谢 Jakub Wilk)

  • 比较条目时如果需要考虑 msgid_plural(感谢 Leonardo Constantino Oliveira)

  • 修复了问题 #63(使用 python3 时字节实例上的 str())(感谢 Jakub Wilk)

版本 1.0.6 (2015/01/04)

  • 车轮支撑

  • 将缺失的“语言”和“复数形式”添加到元数据排序中

  • POFile.percent_translated() 更准确的浮点运算

版本 1.0.5 (2014/08/22)

  • 修复问题 #59:赋值前引用的 tokens 变量

  • 实现的功能请求 #56:采购订单条目中的行号信息

  • 修复了问题 #61:polib 无法正确处理多行上的先前 msgid

版本 1.0.4 (2014/02/19)

  • 修复了问题 #43:改进了确定 polib 是否正在处理文件路径或 unicode 内容的检查

  • 修复了问题 #44:polib 现在检查 MO 文件的修订号,如果该数字是意外的,则会引发错误

  • 修复了问题 #45:正确解析没有标题条目的 mo 文件

  • 修复问题 #47:为 MOEntry 添加 flags 属性以与 POEntry 保持一致

  • 修复问题 #49:对 msgstr_plural 键使用整数而不是字符串

  • 修复问题 #51:如果 PO 文件以注释结尾,polib 在末尾添加虚假的空条目

  • 修复了问题 #52:在大端平台上编写的错误幻数

  • 修复问题 #53:向 POEntry 和 MOEntry 类添加了 __hash__() 方法

  • 修复了问题 #54:使用小写字母作为状态标识符。这修复了某些语言环境和 string.lower() 的问题

  • 修复问题 #58:使用 io.open() 而不是 codecs.open() 因为后者不能很好地处理通用行结尾

  • 确保 mo 文件在垃圾收集时关闭,这可以防止在使用 python >= 3.2 运行测试时对未关闭的文件发出警告

  • 测试字节顺序的更好方法

  • polib 下载 URL 现在在 Pypi 上

版本 1.0.3 (2013/02/09)

  • 修复了问题 #38:当您尝试添加具有相同 msgid 和不同 msgctxt 的新条目时,POFile.append() 引发重复异常(仅当 check_for_duplicates 选项设置为 True 时)

  • 修复问题 #39:为方便起见,添加了 __init__.py 文件

  • 修复了问题 #41:使用 C 语言环境在 python3 上运行 setup.py build 时出现 UnicodeDecodeError

  • polib 现在完全符合 PEP8

  • 小改进:删除未使用的“typ”变量(感谢 Rodrigo Silva),改进 Makefile,确保 _BaseFile.__contains__ 返回布尔值

版本 1.0.2 (2012/10/23)

  • 允许空注释、标志或出现行

版本 1.0.1 (2012/09/11)

  • 加快 POFile.merge 方法(感谢@encukou)

  • 允许以两个“#”字符开头的评论(感谢@goibhniu)

版本 1.0.0 (2012/06/08)

是的……在将近 6 年之后,polib 达到了稳定状态 :) 此版本中的更改和修复:

  • polib.pofile 和 polib.mofile 函数现在可以返回自定义类(感谢 Craig Blaszczyk)

  • polib 现在可以找到元数据条目,无论它位于何处(感谢 François Poirotte)

  • 修复了问题 #28(读取过时的“previous msgid”条目时出现 IOError)(感谢 James Ni)

版本 0.7.0 (2011/07/14)

这个版本增加了对 python 3 的支持(感谢 Vinay Sajip)。polib 现在支持开箱即用的任何 python 版本,范围从 2.4 到最新的 3.X 版本。polib 现在已经 5 岁了;)所以 0.7.X 分支将是 1.X 稳定分支之前的最后一个分支。

版本 0.6.4 (2011/07/13)

  • 更好的 api,autodetected_encoding 不再需要显式设置编码(修复问题 #23),

  • 修复了问题 #24 支持缩进 PO 文件(感谢 François Poirotte)。

版本 0.6.3 (2011/02/19)

  • 修复了问题 #19(由于 textwrap 模块导致换行符消失),

  • 确保包装按预期工作。

版本 0.6.2 (2011/02/09)

  • 支持在 Python 2.6 中添加的 drop_whitespace 参数的向后移植 textwrap.TextWrapper._wrap_chunks(修复 #18:与 python 2.5 的兼容性受损,感谢@jezdez)。

版本 0.6.1 (2011/02/09)

  • 修复了阻止 POFile 初始化从数据工作的回归(问题 #17)。

版本 0.6.0 (2011/02/07)

  • polib 现在已完全记录在案

  • 从 doctests 切换到单元测试以保持 polib.py 文件干净,

  • 修复了问题 #7(包装问题,感谢@jezdez),

  • 向 _BaseFile 添加了一个 __eq__ 方法(​​感谢@kost BebiX),

  • 编译 mo 文件时正确处理 msgctxt,

  • 编译的 mo 文件现在与不使用哈希表的 msgfmt 编译的文件完全相同。

版本 0.5.5 (2010/10/30)

  • 删除了多行处理代码,这是一团糟,是问题 #11 等潜在错误的根源,

  • 修复了 README 和 CHANGELOG 中的错字,修复了问题 #13。

版本 0.5.4 (2010/10/02)

  • 修复了 detect_encoding() 的问题,在某些情况下它可能会返回无效的字符集。

版本 0.5.3 (2010/08/29)

  • 正确地对包含 \\n 和 \n 的行进行转义(感谢 Martin Geisler),

  • 固定问题 #6:__str__() 方法返回 unicode 而不是 str,

  • 修复了问题 #8:当 .po 中的条目已过时时出现 POFile.merge 错误,该条目重新出现在 .pot 中并且我们将两者合并,

  • 添加了对使用数据而不是文件路径来实例化 POFile 对象的支持(感谢 Diego Búrigo Zacarão),

  • 修复问题 #9:POFile.merge 从翻译中删除模糊属性(感谢 Tim Gerundt),

  • 已修复问题 #10:查找具有相同 msgid 和不同上下文 (msgctxt) 的条目。

版本 0.5.2 (2010/06/09)

  • 修复问题 #1:untranslated_entries() 也显示模糊信息,

  • 如果pofile中存在模糊标题,则写回,

  • 添加了对以前的 msgctxt、以前的 msgid 和以前的 msgid_plural 注释的支持(修复问题 #5),

  • 更好地处理换行。

版本 0.5.1 (2009/12/14)

  • 已修复问题 #0025:setup.py 需要 CHANGELOG,但它在 polib-0.5.0-tar.gz 中不存在

版本 0.5.0 (2009/12/13)

  • 已修复问题 #0017:编写 mo 文件时出现 UnicodeDecodeError,

  • 已修复问题 #0018:实现了对 msgctxt 的支持,

  • 修复了编译复数 msgids/strs 时的错误,

  • 不再包含 API 文档,希望下一个版本将附带 sphinx 文档,

  • 读取 mo 文件时正确解析 msg 复数条目,

  • 修复了问题 #0020 和 #0021:添加了在向 po/mo 文件中添加条目时检查重复项的功能,这是可选的,默认情况下不启用,因为它会大大降低库的速度,

  • 已修复问题 #0022:未转义代码不足,

  • 修复了问题 #0023:将 mo 文件保存为 po 文件时出现编码错误(感谢 sebastien.sable 的补丁!)。

版本 0.4.2 (2009/06/05)

  • 修复问题 #0007:使用编解码器模块打开文件,

  • 修复问题 #0014:复数形式未正确保存在 mo 文件中(感谢 lorenzo.gil.sanchez 的补丁),

  • 已修复问题 #0015:tarball 中不包含许可证文件,

  • 从 README 中删除了版本/日期,

  • 将测试罐文件添加到 MANIFEST.in,

  • find() 方法的性能改进(感谢 Thomas!)。

版本 0.4.1 (2009/03/04)

  • 已修复问题 #0006:多个 msgstrs 未排序保存,

  • 已修复问题 #0008:长注释行破坏了 'save()' 方法,

  • 删除了性能捷径:它们实际上效率低下,我被 python 配置文件模块误导了,感谢 Thomas 让我意识到,

  • 修复问题 #0010:错误的 polib 版本号,

  • 已修复问题 #0011:事件解析现在更加健壮,可以处理奇怪的引用格式(例如在 eToys OLPC po 文件中),

  • 已修复问题 #0012:改进的 merge() 方法。

版本 0.4.0 (2008/11/26)

  • 修复了错误 #0005:percent_translated 在空 po 文件上除以 0,

  • 修复了错误 #0004:有连字符的事件在不应该被换行时被换行,

  • 编码处理方式的变化,

  • 删除“发生”上错字的弃用警告,

  • 添加 POEntry.__cmp__() 方法来像 gettext 那样对条目进行排序,

  • 固定 POEntry.transalated(),

  • 向 POFile 类添加了一个 merge() 方法,其行为类似于 gettext msgmerge 实用程序,

  • 过时的条目现在写在文件的末尾,只有 msgid/msgstr 像 gettext 一样,

  • 修复了 mo 文件解析中的一些错误,

  • 将引用/取消引用函数重命名为转义/取消转义,

  • 各种外观变化。

版本 0.3.1 (2007/12/13)

  • 修复了错误 #0002:“发生”上的错字,

  • 修复了错误 #0003:异常实例名称不匹配,

  • 删除了弃用警告,

  • 删除 POFile/MOFile 对象中未使用的 charset() 方法,

  • 修复了多字节字符串长度的错误(添加了回归测试),

  • 修复了 detect_encoding() 中的一个错误,

  • 为 _BaseFile 类添加了一个 find() 方法,

  • 正确处理引用和取消引用,

  • 正确处理元数据中的多行字符串

版本 0.3.0 (2007/10/17)

  • 速度改进,

  • polib 现在可以编译 mo 文件,

  • Unicode 支持,

  • 修复了错误 #0001:在 python 2.3 上未定义全局名称“排序”。

版本 0.1.0 (2006-08-08)

初始发行

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

polib-1.1.1.tar.gz (154.6 kB 查看哈希

已上传 source

内置分布

polib-1.1.1-py2.py3-none-any.whl (20.2 kB 查看哈希

已上传 2 7