如果不在 PHP 中,是否可以使用一些命令行工具将 PO 文件转换为某种结构化格式,例如 XML 或其他我可以在 PHP 中简单处理的格式?
问问题
6731 次
2 回答
6
更新:截至 2018/05,最佳选择是:
- https://github.com/oscarotero/Gettext
- https://symfony.com/doc/current/components/translation.html
- https://docs.zendframework.com/zend-i18n/translation/
见http://www.phptherightway.com#i18n_l10n_title
有一些:
- https://github.com/jyxo/php/tree/master/Jyxo/Gettext
- https://github.com/clinisbut/PHP-po-parser
- http://code.google.com/p/php-po-parser/
- http://pear.php.net/package/File_Gettext/redirected
- http://drupalcode.org/project/drupal.git/tree/HEAD:/core/lib/Drupal/Component/Gettext
最后一个是 Drupal 的一部分,它可能是维护得最多的。
于 2013-05-24T21:46:15.293 回答
2
一些简单的正则表达式将允许您解析 .PO/.POT 文件。我最近做了类似的事情。从我最近编写的脚本中获取以下正则表达式:
$poMsgIdAndMsgStrRegex = '/^#\s*(.+?)\nmsgid "(.+?)"\nmsgstr "(.+?)"/m';
这确实只捕获了最后的评论行,但到目前为止它已经适合我的目的。您可能需要对其进行调整。
无论如何,您可以使用上面的正则表达式preg_match_all()
将所有字符串捕获MsgId
到MsgStr
匹配数组中。一旦你有了数组,你就可以把它变成你想要的任何格式。
可能有这样做的图书馆,但我没有看到任何图书馆。
编辑:您可能还想查看“可能重复”注释中提到的用于转换 .po 文件 .mo 格式的 PHP 类。听起来它不会解决您的问题(因为您想将 .po 文件转换为 XML),但无论如何都值得研究。这对我帮助很大。
于 2011-12-08T16:03:34.980 回答