用于操作gettext文件(po和mo文件)的库。
项目描述
polib
概述
polib是一个用于操作、创建和修改gettext文件(pot、po和mo文件)的库。您可以加载现有文件,遍历其条目,添加、修改条目、注释或元数据等,或者从头创建新的po文件。
polib支持从2.7到最新3.X版本的任何Python版本。
polib现在相当稳定,并被许多开源项目使用。
项目代码和bug追踪器托管在Github上。
polib有丰富的文档,您可以在在线浏览文档,一个好的开始是阅读快速入门指南。
安装
只需使用pip
$ pip install polib
基本示例
import polib
pofile = polib.pofile('/path/to/pofile.po')
for entry in pofile:
print(entry.msgid, entry.msgstr)
变更日志
版本 1.2.0 (2023/02/23)
添加了模糊属性的setter
转义/反转义 v、b 和 f
添加了错误信息处理解析器符号的路径
确保空的前一个值(msgid和msgstr)被正确保存
修复了注释和翻译者注释的相对顺序
在fuzzy()方法中不计入过时的条目
正确关闭文件
修复了对从字节对象加载mo文件的支持
修复了msgstr_plural的比较
简化的Python版本检查
更新文档
版本1.1.1(2021/03/26)
从文件开头删除UTF-16 BOM(U+FEFF)
支持MO文件的Message上下文(msgctxt)
放弃对Python < 2.7的支持
从Bitbucket切换到Github后更新文档和README
版本1.1.0(2017/11/27)
修复了生成mo文件时条目排序的问题(修复#78)
修复了find方法(修复#84)
重构了POEntry.__cmp__方法(这应该修复问题#60、#65和#79)
修复了合并po文件和pot文件时重复条目的情况(修复#68)
修复了当polib处理字符串中的语法错误时输出“None”字符串的问题(修复问题#66)
为条目添加了模糊属性(修复#76)
比较条目时考虑消息上下文
如果行号不是数字,则不更改出现次数(修复#80和#90)
修复了由于gettext版本0.19.8.1以后,msgfmt跳过“POT-Creation-Date”元数据条目而失败的mo文件测试(修复#86)
修复了主要修订号比较
放弃对python 2.4的支持
版本1.0.8(2016/11/21)
修复了问题#70(Windows路径的实例解析)
修复了问题#71(对于已废弃的条目未保存tcomment和flags)
修复了问题#72(元数据排序错误)
修复了问题#73(无法始终反序列化POFile)
对附加标题(元数据)使用自然排序
修复了各种文档中的错误
版本1.0.7(2015/07/08)
修复了缩进msgstr_plural的错误解析
修复了“Language”元数据条目的排序
如果注释行是空的,则在“#”后删除空格(类似于gettext工具)
修复了错误/语法错误(感谢Jakub Wilk)
当比较条目时考虑msgid_plural(感谢Leonardo Constantino Oliveira)
修复了问题#63(在python3中使用时在bytes实例上使用str())(感谢Jakub Wilk)
版本1.0.6(2015/01/04)
轮支持
将缺失的“Language”和“Plural-Forms”添加到元数据排序
POFile.percent_translated()的更精确的浮点运算
版本1.0.5(2014/08/22)
修复了问题#59:在赋值之前引用了tokens变量
实现了功能请求#56:PO条目中的行号信息
修复了问题#61:polib没有正确处理多行上的先前msgid
版本1.0.4(2014/02/19)
修复了问题#43:改进了确定polib是否处理文件路径或unicode内容的检查
修复了问题#44:polib现在检查MO文件的修订号,并在数字意外时抛出错误
修复了问题#45:正确解析没有标题条目的mo文件
修复了问题#47:为MOEntry添加了标志属性,以与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:在 python3 和 C 区域设置下运行 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 现在支持从 2.4 到最新 3.X 版本的任何 python 版本。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 迁移回 Python 2.6(修复 #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 中的条目过时,该条目再次出现在 .pot 中,并且合并这两个条目时,POFile.merge 出错,
添加了对使用数据而不是文件路径实例化 POFile 对象的支持(感谢 Diego Búrigo Zacarão),
修复问题 #9:POFile.merge 从翻译中删除模糊属性(感谢 Tim Gerundt),
修复问题 #10:查找具有相同 msgid 和不同上下文(msgctxt)的条目。
版本 0.5.2(2010/06/09)
修复问题 #1:untranslated_entries() 也显示模糊消息,
如果 pofile 中存在,则写入模糊标题,
添加了对 previous msgctxt、previous msgid 和 previous 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 的支持,
修复了编译 plural msgids/strs 时的错误,
API 文档不再包含在内,希望下一个版本将包含 sphinx 文档,
在读取 mo 文件时正确解析 msg plural 条目,
修复了问题 #0020 和 #0021:在将条目添加到 po/mo 文件时增加了检查重复的功能,这是一个可选功能,默认不启用,因为它会显著降低库的运行速度,
修复了问题 #0022:转义代码不足,
修复了问题 #0023:将 mo 文件保存为 po 文件时出现编码错误(感谢 sebastien.sable 提供的补丁 !)。
版本 0.4.2 (2009/06/05)
修复了问题 #0007:使用 codecs 模块打开文件,
修复了问题 #0014:plural 形式在 mo 文件中保存不正确(感谢 lorenzo.gil.sanchez 提供的补丁),
修复了问题 #0015:在 tarball 中没有包含 LICENSE 文件,
从 README 中删除了 Version/Date,
将测试 pot 文件添加到 MANIFEST.in 中,
find() 方法中的性能改进(感谢 Thomas !)。
版本 0.4.1 (2009/03/04)
修复了问题 #0006:plural msgstrs 保存时未排序,
修复了问题 #0008:长的注释行破坏了 'save()' 方法,
移除了性能快捷方式:它们实际上效率低下,我被 python profile 模块误导了,感谢 Thomas 让我意识到这一点,
修复了问题 #0010:错误的 polib 版本号,
修复了问题 #0011:occurrences 解析现在更健壮,可以处理奇特的引用格式(例如 eToys OLPC po 文件中的格式),
修复了问题 #0012:改进了 merge() 方法。
版本 0.4.0 (2008/11/26)
修复了错误 #0005:在空 po 文件上 percent_translated 除以 0,
修复了错误 #0004:当不应包装时,带有破折号的 occurrences 被包装了,
处理编码的方式有所变化,
删除了关于 "occurrences" 中的 typo 的弃用警告,
添加了 POEntry.__cmp__() 方法以像 gettext 一样排序条目,
修复了 POEntry.transalated(),
向 POFile 类添加了 merge() 方法,其行为类似于 gettext msgmerge 工具,
废弃的条目现在写入文件末尾,并且只有 msgid/msgstr,就像 gettext 一样,
修复了 mo 文件解析中的某些错误,
将 quote/unquote 函数重命名为 escape/unescape,
各种细微的更改。
版本 0.3.1 (2007/12/13)
修复了错误 #0002:“occurrences” 中的 typo,
修复了错误 #0003:异常实例名称不匹配,
删除了弃用警告,
从 POFile/MOFile 对象中删除了未使用的 charset() 方法,
修复了多字节字符串长度错误(添加了回归测试),
修复了 detect_encoding() 中的错误,
向 _BaseFile 类添加了 find() 方法,
正确处理引号和反引号,
正确处理元数据中的多行字符串
版本 0.3.0 (2007/10/17)
速度改进,
polib 现在可以编译 mo 文件,
支持 unicode,
修复了错误 #0001:在 python 2.3 上未定义全局名称 'sorted'。
版本 0.1.0 (2006-08-08)
初始发布
项目详情
下载文件
下载适用于您平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。