1

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

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

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

或 DocBlocks 之类的

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

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

提前致谢!

4

1 回答 1

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 用于文档之外,所以对此不确定,但我想类似的方法应该可以在那里工作。

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

于 2015-06-24T16:49:42.273 回答