我正在使用 PHP 的 gettext 函数进行本地化。我正在使用 Poedit 进行实际翻译,并且凭借其“从源代码更新”功能,可以很容易地提取所有需要翻译的字符串 - 除了从 heredoc 语法内部。
Poedit 使用 xgettext 程序从 PHP 源文件生成 .po 文件。当 PHP 代码如下所示时,它可以很好地工作:
echo "<h1>". _("test") ."</h1>";
但没有提取以下内容(注意需要使用伪 t 对象):
echo <<<EOD
<h1>{$->_('test')}
EOD;
在 PHP 代码中,您可以通过以下方式解决该问题:
<?php
$t = _('test');
echo <<<EOD
<h1>$t</h1>
EOD
?>
但我真的更希望 xgettext 程序可以从 heredoc 块中提取字符串。
PHP 文档注释中建议了一种解决方法。解决方法是告诉 xgettext 程序将 PHP 源文件视为 Python 代码。但是在 Poedit 中使用这种方法会给我带来很多来自 xgettext 解析器的语法错误。
有谁知道让 xgettext 从 PHP heredoc 语法中提取翻译的解决方法?
gettext 项目的票证系统上已经打开了一个有点相关的票证:http : //savannah.gnu.org/bugs/?27740 这表明对heredoc 语法的支持可以改进?