ZF2:如何翻译表单注释


ZF2: how to translate Form annotations?

这是翻译文档注释的一种方法吗?

下面是我实际代码的一个例子:

  /**
     *
     * The Item Name
     * @var string
     * @Annotation'Options({"label":"Name"})
     * @Annotation'Attributes({"type":"text"})
     * @ORM'Column(type="string", length=128, nullable=false, unique=true)
     */
    private $name;

要翻译我的模板文件中生成的表单标签(我使用trick):

 <label for="{{field.getName()}}">
    {{translate(field.getLabel())}}:
 </label>

它工作得很好,只是像POEdit这样的解析器不能用这种方式来定义术语"名称"。目前,我在模型中使用了一个私有方法来通知解析器术语的存在。。。但是它很脏。。

/**
 * Unused in the software, used by external parser.
 */
private final function parseTranslations()
{
    $this->translate('Name');
    return null;
}

有没有更好的解决方案来解决这个问题并翻译文档注释中的术语?

没有办法强制poedit从注释中识别要翻译的文本。Poedit使用xgettext来解析文件,而这个只是忽略注释行。

考虑编写自己的解析器来修复这种行为。创建.po文件并不像看上去那么困难。接下来,您必须使用msgfmt工具将其编译为.mo二进制格式。