mentor / po-parser
PHP 的 Gettext *.PO 文件解析器。
4.2.1
2015-06-09 08:01 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
- squizlabs/php_codesniffer: 1.5.*
README

PoParser 是一个个人项目,以满足我个人的需求:使用 PHP 解析 Gettext 可移植文件 (*.po 文件) 并编辑其内容。
PoParser 允许您从任何来源(内置的文件和字符串)读取 PO 数据,更新它并将更新后的内容存储回文件(或获取编译后的字符串)。
它支持以下解析功能:
- 头部部分。
- msgid,包括单行和多行。
- msgstr,包括单行和多行。
- msgctxt(消息上下文)。
- msgid_plural(复数形式)。
- #, keys(标志)。
-
keys(翻译者注释)。
- #. keys(从源代码提取的注释)。
- #: keys(引用)。
- #| keys(先前未翻译的),包括单行和多行。
- #~ keys(旧条目),包括单行和多行。
用法
// Parse a po file
$fileHandler = new Sepia\FileHandler('es.po');
$poParser = new Sepia\PoParser($fileHandler);
$entries = $poParser->parse();
// $entries contains every entry in es.po file.
// Update entries
$msgid = 'Press this button to save';
$entries[$msgid]['msgstr'] = 'Pulsa este botón para guardar';
$poParser->setEntry($msgid, $entries[$msgid]);
// You can also change translator comments, code comments, flags...
变更日志
v5.0(WIP)
- 类现在是流式的。
- 命名空间重新组织。
- 为了支持
flags
而移除了fuzzy
索引。 - 在解析错误时显示行号而不是行内容。
- 添加了对
#~|
条目的兼容性。 - 将
parseString()
和parseFile()
转换为工厂方法。 - 为了支持
setEntry()
而移除了方法updateEntry()
。
v4.2.2
- 更多的 PHPDocs 修复。
- 在安全的地方使用了严格的比较。
- 修复了
writeFile
的示例。 - 支持 EOL 行格式化。
v4.2.1
- 支持复数条目的多行。
v4.2.0
- 添加了添加复数和上下文到现有条目的功能(感谢 @Ben-Ho)。
- 添加了更改条目消息 ID 的能力(感谢 @wildex)。
v4.1.1
- 修复了多标志条目的问题(感谢 @gnouet)。
v4.1
- 构造函数现在接受选项,用于定义多行 msgid 条目中使用的分隔符。
- 新增方法
getOptions()
。
v4.0
- 新增方法 parseString() 和 parseFile() 替换了旧的 parse()`。
- 新增方法 writeFile() 替换了旧的 write()。
- 新增方法 compile(),该方法将所有解析条目转换回 PO 格式的字符串。
文档
测试
测试使用 PHPUnit 完成。要执行测试,请在命令行中输入
php vendor/bin/phpunit
通过 composer 安装
编辑您的 composer.json 文件,包括以下内容
{
"require": {
"sepia/po-parser": "dev-master"
}
}