我正在寻找一种让PoEdit理解PHP注解的方法。下面是我希望PoEdit提取并放入目录中的代码示例:
class MyController extends Controller {
/**
* @Title "Home"
*/
public function index() {
...
}
}有趣的部分是@Title注释。它在前端控制器中被访问,并被分配给主视图,有效地结束在<title>...</title>标记中。
现在我需要翻译该字符串,但是PoEdit似乎只理解_()表达式,并且将@Title添加到关键字不起作用。这可能是因为PHP中的注释位于注释块中。
有没有办法强制PoEdit理解注释?
发布于 2012-07-24 14:59:09
简而言之,你不能。
POEdit使用xgettext来扫描您的文件,因此使用特定的语法,忽略注释行。
例如,如果您的关键字是_,则以下示例将被解析为:
测试字符串‘_('test');’
测试字符串‘_("test");’
测试字符串‘_('test'’
_ 'test ->没有捕获
_('test ->没有捕获
_(test) ->没有捕获
_($test) ->没有捕获
//_('test'); ->没有捕获
/*_('test');*/ ->没有捕获
您可以使用其他参数执行xgettext,但我不确定您是否能够实现您的目标。
一个简单的解决方法(不是标准的ofc)是添加其他关键字,如placeholder,并使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-22 02:00:22
如果你真的想这样做,那么你可以从php文件中提取你需要的字符串到一个外部文件中,同时用_(string);替换注释部分来匹配每个匹配项,并在该文件上运行Poedit。
您可以将其与.*\*\s\@(\w+)\s\"(\w+)\".*匹配- $1将是注释(标题),$2将是值:(主页)
https://stackoverflow.com/questions/11563403
复制相似问题