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

时间:2013-04-10 10:07:47

标签: php gettext poedit xgettext

我正在使用poEdit和xgettext-Parser来解析我的PHP源文件并检测所有可翻译的字符串。默认情况下,xgettext仅识别函数调用中的字符串,如translate("foo"), 如果“translate”被指定为xgettext的关键字。

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

array(
    'label' => 'foo',
);

或类似

的DocBlocks
/**
 * @FormElement(type="text", options={
 *     "label"="Foobar",
 * })
 */

如何设法用xgettext识别这些可翻译字符串“foo”或“Foobar”?

提前致谢!

1 个答案:

答案 0 :(得分:0)

您可以创建一个虚拟翻译方法,并在创建数组时使用它:

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;
}

找到一个放置虚拟方法的好地方。

没有使用DocBlocks而不是文档,所以不确定,但我想类似的方法应该在那里工作。

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

相关问题