如何通过PHP数组或DocBlock中的xgettext识别可翻译字符串(没有方法调用)?

如何通过PHP数组或DocBlock中的xgettext识别可翻译字符串(没有方法调用)?,php,gettext,poedit,xgettext,Php,Gettext,Poedit,Xgettext,我使用poEdit和xgettext解析器来解析PHP源文件并检测所有可翻译字符串。默认情况下,xgettext只识别函数调用中的字符串,如translatefoo, 如果将translate指定为xgettext的关键字 现在我在PHP数组中有一些可翻译字符串,比如 array( 'label' => 'foo', ); 或者像这样的块 /** * @FormElement(type="text", options={ * "label"="Foobar", *

我使用poEdit和xgettext解析器来解析PHP源文件并检测所有可翻译字符串。默认情况下,xgettext只识别函数调用中的字符串,如translatefoo, 如果将translate指定为xgettext的关键字

现在我在PHP数组中有一些可翻译字符串,比如

array(
    'label' => 'foo',
);
或者像这样的块

/**
 * @FormElement(type="text", options={
 *     "label"="Foobar",
 * })
 */
如何使用xgettext识别这些可翻译字符串foo或Foobar


提前谢谢

您可以创建虚拟转换方法,并在创建数组时使用该方法:

function dummy_translate ($string)
{
    return $string;
}

$array = array
(
    'label' => dummy_translate('foo')
);
并提取以下内容:

xgettext --keyword=dummy_translate:1
另外,由于xgettext关键字必须形成有效的C标识符,因此不能在数组之前执行此操作:

$dummy_method = function ($string)
{
    return $string;
}
只要找一个好地方放你的虚拟方法

除了文档,没有使用docblock,所以对此不确定,但我想类似的方法也应该适用于此


另外,额外函数调用的性能可以忽略不计,请不要浪费时间进行微优化

你找到解决办法了吗?@OytunTez在下面的答案中看到我的建议。谢谢你的更新,@RaduMaris。