我正在开发一个有翻译问题的Zend Framework 2应用程序。实际上在视图脚本中,a可以使用视图助手Translate
。由于我在Poedit([Poedit menu] -> Catalogue -> Properties... -> Source keywords
)中将“translate”定义为源关键字,因此工具会识别字符串并将其添加到转换列表中。
但是在其他地方也有一些字符串,我不能使用/ a视图助手,例如在表单类或导航中。该如何管理?
一些想法:
创建一个包含此类字符串列表的文件。示例:我们创建文件navigation.i18n
,forms.i18n
等(或只是一个文件),在我们添加到Source keywords
列表的公共Poedit语法中定义我们需要的所有字符串(例如{ {1}}:translate
等),最后添加translate('my label foo'), translate('my label bar')
作为源路径(i18n
)。我们也可以使用已经定义为“源路径”的扩展。
一个类,它提供一个没有任何功能的(静态)方法[Poedit menu] -> Catalogue -> Properties... -> Source paths
。示例:我们使用translate(...)
'label' => 'foo'
醇>
我认为,第二个应用程序更清晰,我更喜欢。我不需要两次写我的密钥,并保持头部,已经翻译/更新的内容。但也许有更好的想法?
答案 0 :(得分:1)
只需将关键字_
添加到Poedit([Poedit menu] -> Catalogue -> Properties... -> Source keywords
)即可。然后使用带有此标签的标签使用函数_
而不是标签。
例如改变
'options' => array(
'label' => 'Username',
),
到
'options' => array(
'label' => _('Username'),
),
并在Poedit中更新Catalog From Sources。就是这样 - 现在你在Poedit中有你的标签。
答案 1 :(得分:0)
我仍然不明白你的问题在哪里:S从我能说的一切,你都试图翻译模型/实体的输出。这是View的一个典型问题!
如果主要关注的是“如何将所有模型输出转换为PoEdit?”,那么我可以告诉你的是:手动或实现数据库翻译......
按照getServiceConfig()
return array( 'factories' => array(
'my-service' => function ($sm) {
$class = new ServiceClass();
$class->setServiceManager($sm);
return $class;
}
));
在上面的示例中,$class
几乎可以成为一切。模型/实体,TableGateway或任何你想要的东西。
答案 2 :(得分:0)
如果您以不同的方式构建表单,请执行以下操作:
$name = new \Zend\Form\Element('name');
$name->setLabel('Your name');
$name->setAttributes(array(
'type' => 'text'
));
$this->add($name);
(http://framework.zend.com/manual/2.0/en/modules/zend.form.quick-start.html)
然后你可以在poedit中注册“setLabel”作为关键字,它会选择标签文本进行翻译。