6

我正在寻找一种让 PoEdit 理解 PHP 注释的方法。这是我希望 PoEdit 拾取并放入目录的代码示例:

class MyController extends Controller {

    /**
     * @Title "Home"
     */
    public function index() {
        ...
    }

}

有趣的部分是@Title注释。它在前端控制器中访问并分配给主视图,有效地在<title>...</title>标签内结束。

现在我需要翻译该字符串,但 PoEdit 似乎只能理解_()表达式,并且添加@Title到关键字不起作用。这可能是因为 PHP 中的注释位于注释块中。

有什么方法可以强制 PoEdit 理解注释吗?

4

2 回答 2

3

简短的回答,你不能。

POEdit 使用xgettext扫描您的文件,因此使用特定语法,忽略注释行。

例如,如果您的关键字是_以下示例,则将被解析为:

_('test');-> 字符串“测试”

_("test");-> 字符串“测试”

_('test'-> 字符串“测试”

_ 'test-> 没有抓到

_('test-> 没有抓到

_(test)-> 没有抓到

_($test)-> 没有抓到

//_('test'); -> 没有抓到

/*_('test');*/-> 没有抓到

您可以xgettext使用其他参数执行,但我不确定您是否能够实现目标。


一个简单的解决方法(不是标准的 ofc)是添加其他关键字 likeplaceholder并制作一个 php 函数

function placeholder($string){}

并使用它,以便 POEdit 可以解析它

class MyController extends Controller {

    /**
     * @Title "Home"
     */
    public function index() {
      placeholder('Home');  
      ...
    }

}

在您的前端解析器中,只需使用简单的_($value),您将翻译您的标题。

不知道您的代码如何,但会假设它与此类似。

假设 $tag = 'title' 和 $value = 'Home'

echo '<'.$tag.'>'._($value).'</'.$tag.'>';
于 2012-07-24T06:59:09.173 回答
0

如果您真的想这样做,那么您可以将所需的字符串从 php 文件中提取到外部文件中,同时将注释部分替换为 _(string); 对于每场比赛并在该文件上运行 Poedit。

您可以将其与.*\*\s\@(\w+)\s\"(\w+)\".*-$1在匹配中匹配将是注释(标题),$2将是值:(主页)

于 2012-07-21T18:00:21.630 回答