mentor/po-parser

PHP 的 Gettext *.PO 文件解析器。

4.2.1 2015-06-09 08:01 UTC

README

最新稳定版本 总下载量 许可证 构建状态 代码覆盖率 Scrutinizer 质量得分 ![Gitter](https://badges.gitter.im/Join Chat.svg)

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 格式的字符串。

查看完整变更日志

文档

查看 v4 文档

测试

测试使用 PHPUnit 完成。要执行测试,请在命令行中输入

php vendor/bin/phpunit

通过 composer 安装

编辑您的 composer.json 文件,包括以下内容

{
    "require": {
        "sepia/po-parser": "dev-master"
    }
}