2012-07-19 105 views
6

我正在寻找一种方法来使PoEdit了解PHP注释。这是我想对PoEdit软件捡起并放入目录的代码示例:PoEdit和PHP注释

class MyController extends Controller { 

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

} 

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

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

有没有办法强制PoEdit理解注释?

+4

我不喜欢使用的意见实际上做的东西上的文档。注释应该保留为可读的文本来理解代码,也许可以帮助IDE选择变量类型。它不应该在应用程序中服务任何功能。 – 2012-07-21 15:38:50

+0

这是在PHP中进行注释的唯一方式,它实际上由语言中的反射子系统支持。请参阅各种Reflection类的getDocComment()方法。另外,它们对于人类来说确实是可读的 - 在上面的例子中,替代操作代码中的PageView :: getInstance() - > setTitle(“Home”)就是。 – 2012-07-21 18:00:57

+0

我同意@Truth那里,使用注释做东西就像保存变量作为空白文件的文件名;你可以做到这一点,但它只是尴尬。此外,仅仅为了读取值而以文本形式访问文件似乎是一种浪费,当您可以设置一个普通变量(例如公共类属性)时,可以使用任何需要的值。 – Mahn 2012-07-27 20:48:11

回答

0

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

3

简短的回答,你不能:在比赛$1将注释(标题),$2将价值 -

你可以用.*\*\s\@(\w+)\s\"(\w+)\".*与之匹敌。

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)即可翻译您的标题。

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

假设$标签=“标题”和$值=“家”

echo '<'.$tag.'>'._($value).'</'.$tag.'>';