从gettext中清理PO文件以进行版本控制
项目描述
sanpo
sanpo
是一个用于从gettext中清理PO文件以进行版本控制的命令行工具。
问题
gettext工具从源代码中收集要翻译的文本,并将其放入可以发送给翻译人员的PO文件中。这些文件包含有关项目的元数据,在使用基于电子邮件的工作流程时可能很有用。
当第一次创建PO文件时,这些元数据看起来像这样
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-09-06 16:16+0200\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"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
然而,当PO文件在版本控制下时,这些元数据会碍手碍脚。其中大部分都可以从提交历史中获取。当在构建过程中自动运行gettext
时,即使没有任何消息更改,PO-Revision-Date
也会每次更新,导致PO文件被无端修改,而实际上没有任何值得提交的更改。
解决方案
因为你的本地化软件不直接使用PO文件,而是使用从它们编译的MO文件,所以可以删除这些无用的元数据。这正是sanpo
所做的事情。
典型的构建链如下所示
- gettext - 收集PO文件
- msgfmt - 编译成MO文件
- sanpo - 从PO中移除无用的元数据
- 提交PO文件中的可能更改
sanpo
简单地接受一个或多个PO文件作为参数,例如
sanpo locale/de/LC_MESSAGES/django.po locale/en/LC_MESSAGES/django.po locale/hu/LC_MESSAGES/django.po
在此之后,剩余的元数据是
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
使用特殊模式**
,可以递归地扫描文件夹。
要为某个文件夹中的所有语言清理PO文件,例如
sanpo locale/**/django.po
Django
对于Django项目,典型的工流程是
- django-admin makemessages
- django-admin compilemessages
- sanpo
- 提交PO文件中的可能更改
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
sanpo-0.2.1.tar.gz (4.8 kB 查看哈希值)
构建分发
sanpo-0.2.1-py3-none-any.whl (5.7 kB 查看哈希值)
关闭
sanpo-0.2.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8a90ab5497af1033a530a9d99f1063ef12ebd467ddafa042bf083c815ada5116 |
|
MD5 | 0f5a808e0e61826eee2025d99dddfe43 |
|
BLAKE2b-256 | 93ba0c8cbd0e65884bdd7a6c06d620f6461ee172b50e43643b08241155378886 |
关闭
sanpo-0.2.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 15c84198fccdfd318cce9309cf98c942d18ea2a6cea1d1245f96b4c883b4567c |
|
MD5 | e2d317baaee92e09a7f70d3d60f0efe1 |
|
BLAKE2b-256 | 352c2c6c9fdee1336ea68d1246dbf4e5bd9644544b82ad404d23e2f82bd1c7f5 |