艺术工作室 / potools
用于处理gettext PO文件的工具。
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-14 13:02:24 UTC
README
PHP中处理gettext PO文件的一系列工具集合。
类
POString
以所有可能的属性表示PO文件中的一个条目。
目录
按类别、领域和上下文对POString
对象进行分组和分类。合并重复出现的字符串的属性。可以使用POWriter
将目录输出到磁盘。
POWriter
将一个POString
实例写入gettext PO格式的流中。
脚本
update
将POT文件的目录结构合并到PO文件中。
使用/工作流程
gettext工作流程需要/期望您已安装平台上的gettext工具(https://gnu.ac.cn/software/gettext/),包括msginit
、msgmerge
和msgfmt
命令行工具。对于完整的手册,请参阅https://gnu.ac.cn/software/gettext/manual/gettext.html。
在OS X上,通过Homebrew(http://mxcl.github.com/homebrew/)安装这些工具是最简单的方法。
$ brew install gettext
大多数Linux软件包管理器应该会使这变得同样简单。
Kunststube\POTools是为以下情况设计的:gettext的xgettext
工具不起作用或不充分,例如对于xgettext
不支持语法的模板。在这些情况下,可以快速编写自定义解析器/提取器,同时使用Kunststube\POTools来处理gettext文件格式的细节。对于工作流程的其余部分,可以使用常规的gettext工具。
完整的工作流程看起来可能如下所示
- 通过将它们包裹在gettext函数中来准备源代码中的字符串。
- 使用适当的解析器从源代码中提取字符串,为每个创建
POString
对象。 - 将
POString
对象添加到目录
中。 - 将
目录
写入区域目录作为源/主区域POT文件。- 4b. 第一次只:使用
msginit
实用程序创建本地化PO文件。
- 4b. 第一次只:使用
- 翻译PO文件。
- 使用
update
脚本来保持PO文件与更新的POT文件同步。 - 使用
msgfmt
实用程序进行质量检查并将PO文件编译为MO文件。 - 重洗,重复。
创建主目录POT文件
// Extraction of strings from source is not part of Kunststube\POTools, // bring your own extractor specific to your needs. $extractedStrings = my_string_extractor('template.php'); $catalog = new Kunststube\POTools\Catalog('My Project 1.0', 'en_US'); foreach ($extractedStrings as $extractedString) { $POString = new Kunststube\POTools\POString($extractedString); // set as many additional attributes as you can extract $POString->setDomain('errors'); ... $catalog->add($POString); } $catalog->writeToDirectory('locale/en_US');
此过程创建的目录结构应该看起来像这样
locale/
en_US/
...
LC_MESSAGES/
messages.pot
...
LC_MONETARY/
messages.pot
...
创建和更新PO文件
最初,使用msginit
实用程序为所有目标区域创建PO文件。当您随后更改和更新源文件时,重复提取过程以重新创建主POT文件,然后使用update
脚本来将更新传播到每个区域。假设目录结构如下
locale/
en_US/
LC_MESSAGES/
messages.pot
LC_MONETARY/
messages.pot
de_DE/
LC_MESSAGES/
messages.po
LC_MONETARY/
messages.po
fr_FR/
LC_MESSAGES/
messages.po
LC_MONETARY/
messages.po
像这样运行update
脚本
update path/to/locale en_US
第一个参数(path/to/locale
)是整个locale
目录的路径,第二个参数(en_US
)是包含主POT文件的区域目录的名称。update
脚本将迭代主区域目录中的所有POT文件,并将更改合并到其他区域目录中同名PO文件中。
需要msgmerge
实用程序在shell $PATH
中。